网络字节顺序
网络工程
以太网
ipv4
2021-07-23 20:34:00
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 = 最重要的位 = 首先传输(如果没有另外定义)。
其它你可能感兴趣的问题