以太网中的位首先以LSB方式传输,但IPv4数据报将以大端字节顺序传输。
e.g。 假设一个以太网帧,目的地址为12-34-56-78-9A-BC,在数据字段中携带IP数据报。据我所知,以下将是比特传输的顺序:
preamble-SFD-destination addr ----(以太网头的其余部分)----(以太网数据)
preamble-SFD-destination addr ----(其余的以太网头)---- version ---- header length ----(其余的IP数据报)
前言-SFD-12-34-56-78-9A-BC ----(以太网头的其余部分)---- 4 ---- 15 ----(其余的IP数据报)
问题1:以下哪项传输是正确的?
首先在每个字节中用LSB传输以太网帧
前言-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ----(其余以太网头)---- 11110010 ----(其余IP数据报)
首先在每个字节中使用LSB传输以太网帧,但首先在每个字节中将IP头传输为MSB
序言-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ----(其余的以太网头)---- 01001111 ----(其余的IP数据报)
问题2:由于以太网帧首先在每个字节中以LSB传输,所以数据部分中的位(IPv4数据报)是否也会先在每个字节中作为LSB传输?
如果是,为什么我们说IPv4数据报以大端字节顺序传输
答案 0 :(得分:2)
IPv4数据报中的大端字节顺序与线路上的位排序没有任何关系。
逻辑上,将以太网帧视为一系列字节,直到您完全到达物理层。
一些以太网物理层技术(较旧的,较慢的)恰好将每个字节直接转换为线路上的8位,最不重要的位首先。 (一旦达到1G / 10G速度,就不会有这么简单......)
在您的示例中,版本= 4且标头长度= 15,IP数据报的第一个字节将为0x4F,将作为11110010传输。
“Big-endian字节顺序”指的是多字节字段中 bytes 的排序。
例如:IPv4标头中的“总长度”字段是占用字节2和3的16位值。如果总长度为1000字节 - 十六进制的0x3E8 - 这将被发送为0x03(字节2)然后是0xE8(字节3)。 (如果它是little-endian,它将在字节2中为0xE8,在字节3中为0x03。)