为什么最小以太网帧是 64 字节?

Why is the minimum ethernet frame 64 bytes?

也许这最好问电子工程师,因为它可能与物理层的某些事情有关,而不是编程。但我们都使用以太网,我知道最小帧大小是 64 字节,但我从来没有费心去问为什么会这样。到目前为止!那么有人可以帮我吗?为什么它必须是 64 字节长?

因为早期的以太网基础设施使用的是半双工通信(集线器而不是交换机,共享介质而不是单独的 receive/transmit 通道)。

设备可以在网络空闲时随时开始发送帧,因此它必须检查是否与同时开始的其他发送方发生冲突。帧需要一些时间来传播,具体取决于 HUB 的数量和电缆长度。您希望在完成发送帧之前检测到碰撞,因此您可以插入干扰代码以正确中止。为此,您需要一个最小帧大小。

今天对于交换网络这不再是问题,但以太网标准的黄金法则之一是帧格式永远不会改变。

此外,以当今的网络速度,每个数据包的处理时间可能成为一个性能问题。使用最小尺寸,您至少有一些保证的时钟周期数可用于在下一帧到达之前处理每一帧(例如用于切换)。标准 Linux PC 在面对 100Mbit/s 的最小帧流时通常会死机。

很久以前看过一篇文章。我喜欢这个解释。

10/100M 的以太网最小数据包大小为 64 字节,1000M 的最小数据包大小为 512 字节。 选择最小数据包大小的基础是在半双工的情况下,发送方应该能够在完成发送帧之前检测到冲突。

信号充其量以光速 (3*10^8 m/s) 通过自由 space 传播(辐射)。相反,通过双绞线或同轴电缆的传播速度是该值的 2/3(2*10^8 m/s)。

2*两台主机之间的最大距离=双绞线中的光速*时间

时间=数据包size/Bandwidth

对于10M,带宽 =10^7bps

时间=8*64bits/10^7bps=51.2us

所以两个主机之间的最大距离=(2*10^8)*(51.2*10^-6)/2=5.12km

对于 10Mbps,这个 LAN 长度绰绰有余。

对于 100Mbps,LAN 长度为 512m,也足够了。

但对于 1Gbps,LAN 长度只有 51.2m。所以提出的解决方案是将最小以太网数据包大小增加到 4096 位,即 512 字节。

因此最大 LAN 长度变为 409.6m。

我不知道他们为什么只选择这个长度。