回答
該帖子的作者說,在他的評論
」 ......的第一個參數是包含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