[英]what kind of fields in network packets should be converted to network byte order
我知道主機和網絡上的endianess可能不同,但為什么字節順序很重要?
我認為有兩個原因:
1為路由器檢查ip頭(likeaddresses),路由器只識別big-endian命令(網絡字節順序)2,以便接收主機識別數據包的字節順序。 由於接收主機不知道發送主機的字節順序,如果字節順序沒有轉換為網絡字節順序,則它不知道數據包字節順序。
我對嗎?
所以對於以下字段,應該轉換為字節順序,為什么?
1 TCP/UDP Header options, like MSS, timestamps
2 TCP/UDP header checksum
3 TCP sequence number
4 UDP/TCP data fields
作為長度超過單個字節的二進制數據(特別是非ASCII)發送/存儲的每個字段都需要具有明確定義的字節順序。 否則,如您所示,接收方不知道如何解釋發送方發送的內容。
您的具體問題的答案是#1,#2和#3需要按網絡字節順序排列。 至於UDP / TCP有效載荷中的字段(#4),這取決於你。 建議使用網絡字節順序(大端),以便與幾乎所有其他協議保持一致,但如果要定義協議,則可以根據需要選擇小端。 有些人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.