![]() |
1
3
首先,这个
因为要么它是一个mbuf链,但该链的第一个mbuf应该有一个paket头,这个paket头包含整个mbuf链的大小(没有这样的头的链根据定义是断开的),要么它只是一个单一的mbuf,但只需询问这一个mbuf的大小就足够了。在整个内核代码中,mbuf链的大小是由我上面的代码检索的。
那么请理解什么
因此,校验和计算是否转移到硬件并不重要,一旦调用该函数,数据包就应该具有正确的校验和。如果您随后修改数据包,则由您再次修复校验和。您可以通过从头开始重新计算校验和来做到这一点,一旦您完成了修改,或者通过“修复”现有的校验和(例如,如果您知道哪些旧数据变成了哪些新数据,则可以“修复”旧校验和以匹配新数据,而不必从头开始计算所有内容,这有点复杂,但会使计算更快)。
|
![]() |
2
0
|
![]() |
Ian Newson · 协议缓冲区、C#和网络流:永远不会收到消息 3 年前 |
![]() |
Evantoki Alfa · 线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:演示时为0。查找。main(Lookup.java:19) 3 年前 |
![]() |
ê¹ì¼í · 如何发送带有引号的关键数据的POST方法? 3 年前 |
![]() |
TiDu · 使用EKS设置出口网关的最简单方法,无需Istio 3 年前 |
![]() |
Nop · 无法关闭键盘中断(Python)上的套接字连接 3 年前 |