我正在使用原始套接字来创建我自己的套接字。我需要设置tcp_checksum。
我尝试了很多参考资料,但都不起作用(我正在使用wireshark进行测试)。
你能帮我一下吗?
顺便说一下,我在某处读到如果你设置tcp_checksum=0。然后硬件会自动为你计算校验和。这是真的吗?我试过了,但在wireshark中,tcp_checksum给出的值是0X000,并显示tcp卸载。我也读过关于tcp卸载的文章,我不明白,只是wireshark不能检查卸载的tcp校验和,但有正确的校验和吗??
编辑:我意识到如果您将tcpChecksum设置为0,那么网卡将设置它,而不是操作系统。我使用wireshark和一个虚拟机进行测试,这就解释了为什么校验和是0x000 (因为数据包甚至没有传递到网卡)。
但我仍然对手动计算tcp_checksum感到好奇……有任何帮助或链接吗?
发布于 2010-03-23 15:03:52
This article试图解释它是如何做到的。
另一个值得一看的地方是Linux内核源代码,从文件net/ipv4/tcp__ipv4.c开始。
https://stackoverflow.com/questions/2497941
复制相似问题