回答
该帖子的作者说,在他的评论
” ......的第一个参数是包含IP报头分组的字节阵列(已经形成的,但与所述校验和字段设置为零[两个字节])。 “
所以你应该设置两个校验和字节(字节7和8)为零,然后发送头的全部8个字节来计算校验和。
至于UDP/IP校验和,它们是两个不同的东西,作者声明这个计算专门用于IP头校验和创建。
所以我可以使用此功能的UDP校验? – user3637066
不可以。如最后一句所述,作者说这是IP头校验和。这无疑会为UDP校验和产生错误的值。请参阅此SO帖子,了解有关UDP校验和的信息:http://stackoverflow.com/questions/1480580/udp-checksum-calculation – GEEF
请参阅我的更新 – user3637066
您是否尝试将其设置为零?根据RFC 768,它是可选的。
http://tools.ietf.org/html/rfc768
“的所有零发送校验和值意味着发送器不产生校验和(调试或对于不关心更高级别的协议)”。
如果你真的想计算它,你可以试试看FreeBSD的assemble_udp_ip_header函数:http://svnweb.freebsd.org/base/head/sbin/dhclient/packet.c?view=markup。
你不应该只用一个6字节的数组来调用它,因为校验和过程应该在伪头上运行。虽然你可以使用你在伪头文件中提到的函数,但是我怀疑它有一个错误,即如果length参数不是偶数,它可以访问数组的末尾。
您计算的校验和不正确,因为它需要在psuedo头上计算。您缺少诸如协议,IP地址源,IP地址目标以及实际有效负载等字段。你也只写了你分配的8个字节中的6个。
请参阅我的更新 – user3637066
- 1. UDP校验和计算
- 2. UDP校验和计算蟒蛇
- 3. 校验和计算
- 4. 计算校验
- 5. exFAT校验和的计算
- 6. 如何计算校验和
- 7. 计算校验和android
- 8. NMEA校验和计算
- 9. 计算校验和相似
- 10. 计算UDP校验和时接收端的结果是什么
- 11. 将UDP/TCP校验
- 12. ICMP头和IP头校验和计算
- 13. 从NSData计算iPhone上的校验和
- 14. 在Python中计算IP校验和
- 15. 上传文件时计算校验和
- 16. 代码16K条码 - 校验和计算
- 17. CRC 16程序来计算校验和
- 18. 计算ICMPv6头的16位校验和
- 19. 为ALAsset计算CRC校验和
- 20. IP校验和计算不正确
- 21. 计算列校验和是否存在?
- 22. 在meteor.js中计算sha-512校验和
- 23. 在Python中计算IDAT校验和
- 24. TCP校验和计算出错
- 25. 错误的TCP校验和计算Scapy
- 26. Sqlite中的校验和计算表
- 27. 来自Python的CRC校验和计算
- 28. 在python中计算TCP校验和
- 29. 如何计算二进制校验和?
- 30. 如何计算下面的校验和?
您是否检查维基百科?与algos和所有的好页面。 – TomTom
是的,我检查了 – user3637066
IP校验和只使用头。 TCP/UDP校验和使用标题和数据。 – clcto