3

我正在使用原始套接字来创建自己的套接字。我需要设置 tcp_checksum。
我已经尝试了很多参考,但都没有工作(我正在使用wireshark进行测试)。
请问你能帮帮我吗。
顺便说一句,我在某处读到如果您设置 tcp_checksum=0。然后硬件会自动为您计算校验和。这是真的?我试过了,但在wireshark中,tcp_checksum给出的值为0X000并说tcp offload。我还阅读了有关 tcp 卸载的信息,但不明白,仅仅是wireshark 无法检查卸载的 tcp 校验和,但有一个正确的吗?

编辑:我意识到如果您将 tcpChecksum 设置为 0,那么网卡将设置它而不是操作系统。我正在使用wireshark和虚拟机进行测试,所以这解释了为什么校验和为0x000(因为数据包甚至没有传递到网卡。)
但我仍然对手动计算tcp_checksum感到好奇......任何帮助或链接?

4

1 回答 1

3

本文试图解释它是如何完成的。

另一个值得一看的地方是 Linux 内核源代码,从文件开始net/ipv4/tcp__ipv4.c

于 2010-03-23T07:03:51.533 回答