我正在使用原始套接字来创建我自己的套接字。我需要设置 tcp_checksum。
我尝试了很多参考资料,但都不起作用(我正在使用wireshark进行测试)。
请问你能帮帮我吗。
顺便说一句,我在某处读到如果你设置 tcp_checksum=0。然后硬件会自动为您计算校验和。这是真的?我尝试过,但在wireshark中tcp_checksum给出的值为0X000并表示tcp卸载。我还阅读了有关 tcp 卸载的内容,但不明白,是否只是wireshark无法检查卸载的tcp校验和,但有一个正确的校验和?
编辑:我意识到,如果将 tcpChecksum 设置为 0,那么网卡将设置它,而不是操作系统。我正在使用wireshark和虚拟机进行测试,所以这解释了为什么校验和是0x000(因为数据包甚至没有传递到网卡。)
但我仍然对手动计算 tcp_checksum 感到好奇......有任何帮助或链接吗?
本文 http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htm试图解释它是如何完成的。
另一个值得一看的地方是Linux内核源码,从文件开始net/ipv4/tcp__ipv4.c http://lxr.free-electrons.com/source/net/ipv4/tcp_ipv4.c#L516
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)