网络数据包中的哪种字段应转换为网络字节顺序

时间:2013-03-20 14:38:13

标签: networking tcp network-programming

我知道主机和网络上的结尾可能会有所不同 但为什么字节顺序很重要?

我认为有两个原因:

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

1 个答案:

答案 0 :(得分:3)

作为二进制数据(特别是ASCII)发送/存储的每个字段长于单个字节需要具有明确定义的字节顺序。否则,如您所示,接收方不知道如何解释发送方发送的内容。

您的具体问题的答案是#1,#2和#3需要按网络字节顺序排列。至于UDP / TCP有效载荷中的字段(#4),这取决于你。建议使用网络字节顺序(大端),以便与几乎所有其他协议保持一致,但如果要定义协议,则可以根据需要选择小端。有些人有。