【问题标题】:Big endian or Little endian on net?网络上的大端还是小端?
【发布时间】:2010-11-03 02:40:20
【问题描述】:

网络上的数据传输是按什么字节顺序进行的?是小端还是大端?数据到达主机后如何转换为相应的字节顺序?

【问题讨论】:

  • 你能再解释一下吗? tcp/udp?
  • 从哪里/如何到达主机?

标签: network-protocols endianness


【解决方案1】:

“网络字节顺序”是 Big Endian,TCP 等协议将其用于整数字段(例如端口号)。可以使用htons、ntohs等函数进行转换。

数据本身没有任何字节顺序,它完全由应用程序定义,除非您使用的是 Presentation Layer,例如 XDR。

【讨论】:

    【解决方案2】:

    它以您发送它的任何顺序传输。

    传统上,互联网协议使用大端,因为进行大部分通信的机器都是大端。

    但是,如果您定义自己的结构以通过网络发送,则无需遵循该约定。

    在 C 编程中,通常使用 htons 或 ntohs 宏来进行转换。

    【讨论】:

      【解决方案3】:

      如果您使用 tcp,则使用 htons((short)port) 可以让您使用网络安全协议(基本上是大端),并且不关心小端与大端。

      如果您确实需要转换使用 http://www.codeguru.com/forum/showthread.php?t=292902

      解释得很好

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        • 2010-09-26
        • 2011-05-10
        • 2011-02-06
        相关资源
        最近更新 更多