【问题标题】:Why is network-byte-order defined to be big-endian? [closed]为什么网络字节顺序定义为大端? [关闭]
【发布时间】:2012-11-10 23:08:59
【问题描述】:

正如标题中所写,我的问题是,为什么 TCP/IP 在传输数据时使用大端编码而不是替代的小端方案?

【问题讨论】:

  • 尽管已经关闭,但这个页面还是很有帮助的
  • 来自this product guide,在Big Endian链接下:网络一般使用big-endian顺序,因此通过网络发送信息时称为网络顺序以通用格式。电话网络在历史上和现在都使用大端顺序;这样做允许在编写电话号码时进行路由。 [...] 大概早期的计算机网络依赖于当时的电话网络,剩下的就是历史了...
  • 在创建“标准”时,大多数服务器都是大端的。现在情况正好相反,但由于向后兼容,我们无法更改 TCP/IP 协议。不过新协议可以使用小端序
  • ...但是如果您正在考虑在您闪亮的新网络协议中使用 little-endian,this should interest you - 人类在根本不同的格式或系统之间切换是一项令人担忧的练习...

标签: networking network-protocols endianness tcp-ip


【解决方案1】:

RFC1700 表示必须如此。 (并将网络字节顺序定义为大端)。

Internet 协议文档中的约定是 以十进制表示数字并以“大端”顺序显示数据 [科恩]。也就是说,字段是从左到右描述的,最多 左边的有效八位字节和最不重要的八位字节 对。

他们的参考是

On Holy Wars and a Plea for Peace 
Cohen, D. 
Computer

可以在IEN-137this IEEE page 上找到摘要。


总结:

选择哪种方式不会做太多 区别。同意一个命令比什么命令更重要 订单已商定。

得出的结论是,大端和小端方案都是可能的。没有更好/更差方案,只要在整个系统/协议中保持一致,就可以使用其中任何一个来代替另一个。

【讨论】:

  • RFC 3232 似乎说“RFC1700 已过时”而没有提供任何替换
  • @Anirudh,这个“答案”是在回避这个问题。问题是询问为什么选择 bigendian 而不是替代方案的根本原因(s)。关于“选择哪种方式没有太大区别”,这是错误的,因为实际上它很重要,因为性能很重要(而且这样的标准根深蒂固于最底层网络通信)。
  • @Pacerier 在性能方面不会有差异,这是链接论文详细讨论的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
相关资源
最近更新 更多