大/小尾数转换在哪一层完成?

时间:2019-06-20 09:11:02

标签: sockets network-programming endianness

假设一个数据包是由UDP发送的。我想知道有效负载的大/小尾数转换在哪一层完成。

2 个答案:

答案 0 :(得分:1)

您为什么认为 完成了?传输协议没有您的数据概念,它传输 bytes 。作为应用程序协议设计者,您将必须决定并确保以一定的字节序发送数据。

例如,

UDP不知道数据包中某处的四个连续字节形成一个32位整数。它们也可能形成四个1字节的值,例如UTF-8代码点。您是否要UDP随机反转您的字符串?

另请参阅Sending UDP packets in the correct Endianness

答案 1 :(得分:0)

协议的“字节序转换”通常在处理协议的层中完成。

例如:NTP程序/库本身在将消息传递到UDP层(=发送)之前,以网络字节顺序创建NTP消息。 UDP层将按网络字节顺序创建UDP标头,但不会更改有效负载(= NTP消息)。

下层协议不知道并不在乎有效载荷中携带哪种上层协议。很少有例外或临界情况,例如NIC中的校验和卸载。