网络字节顺序

网络工程 以太网 ipv4
2021-07-23 20:34:00

根据大端字节顺序或网络字节顺序,位按此顺序传输:首先是位 0-7,然后是位 8-15,然后是 16-23,最后是位 24-31。这是否意味着来自版本、标识、TTL 等的位先行,然后是来自下一个字段的位?

在此处输入图片说明

3个回答

这里有一个混乱。网络字节顺序不指定比特如何通过网络传输。它指定值如何存储在多字节字段中。

示例

总长度字段由两个字节。它以字节为单位指定数据包的大小。

假设我们有该字段的值 500。使用网络字节顺序,它将像这样通过线路看到,从左到右传输:

00000001 11110100

如果我们使用 little endian 格式,那么它会像这样通过网络看到:

11110100 00000001

在构建整个数据包后,这些位将从报头的最低寻址位(位 0)开始发送,因此传输将从版本字段开始

这里要说明的最后一点是,正如您所提到的,网络字节顺序是大端顺序。这是任意选择的,以具有所有网络协议和实现的通用格式。

很容易认为互联网数据包以一种非常简单的“串行端口”方式传输。在实践中,它没有任何内在的连续性。

如果你考虑一些接口细节,它可能会让这更清楚:

  • 考虑并行端口 IP,它实际上通过四根线一次发送 4 位数据。https://en.wikipedia.org/wiki/Parallel_Line_Internet_Protocol
  • 实际的 100baseTX 会加扰 4 位块并将它们作为 5 位串行发送,但原始数据在输出中不可见,因此关于它们进入的顺序的问题没有答案。https://en.wikipedia.org/wiki/4B5B
  • 当您通过环回接口发送数据包时,它可能会在计算机总线内一次复制 64 位;或者实际上只是通过内存重新映射,这实际上是并行的整个数据包。

当然并口IP并不常见,但它说明了这一点;另外两个是无处不在的。

希望有帮助

乔纳森。

其他协议可能不同,但以太网首先传输最重要的八位字节/字节,并且在每个字节内首先传输最低有效位因此,传输 16 位字段 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7(0=最低有效位,15=最高有效位)。检查 IEEE 802.3 条款 3.1.1、3.2.6 和 3.3。

(这适用于纯串行以太网 - 根据物理层,最多可以同时传输 8 位。此外,位顺序仅适用于未编码的第 1 层。)

IPv4 也首先使用最重要的八位字节,请检查 RFC 791。但是,IETF RFC 中的编号是按传输顺序进行的,比特编号与以太网相反:位 0 = 最重要的位 = 首先传输(如果没有另外定义)。