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

dav*_*ave 0 ethernet

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

max*_*axy 6

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

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

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

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


小智 5

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

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

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

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

时间 =数据包大小/带宽

对于10M,Bandwdith = 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。

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