这是一个我很久以前就一直在努力解决的问题。这并不能得到一个特定的语言,尽管对于一些具有指定endianess的vm的人来说,这并不是真正的好处。我知道,像99.9999%使用套接字使用TCP/IP发送数据的人一样,协议为传输元素指定了一个endianess,比如目标地址、端口等等。我不知道的是,它是否要求有效负载采用特定格式以防止不兼容。
例如,假设我开发了一个不是apresentation layer的协议,并且我,由于小endian设备现在的inmense支配地位,决定将其设为小endian(例如,玩家的位置和这样的位置以小endian顺序传输)。例如,一个游戏引擎的网络模块,其中的延迟很重要,字节转换将花费相当多的时间。当然,地址、端口和所有与协议相关的数据都是在big-endian中指定的,这是必需的,我指的是有效负载,仅此而已。
在一台大端机上,该协议是否可以开箱即用(当然,一旦接收到传输,就需要翻译内容)?或者,由于数据的顺序不同,IP协议或类似协议的校验和会被计算错误吗?如果不使用原始套接字,程序员就无法控制这些校验和吗?
由于整个解释可能产生误导,请随时要求澄清。
非常感谢你。

最佳答案

我不知道的是,它是否要求有效负载采用特定格式以防止不兼容。
没有,也没有办法说出来。对于tcp来说,它只是一个字节流。它取决于应用程序协议来决定终结性,而正确实现它则取决于每一端的实现者。使用big endian有一个惯例,但是没有强迫。

关于networking - 通过TCP/IP进行网络数据传输的字节顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14843470/

10-11 18:13