或许最好问一下电子工程师,因为它可能与物理层的某些东西有关,而不是编程。但我们都是用户以太网,我知道最小帧大小是64字节,但我从来没有费心去问为什么会这样。到现在!那么有人可以帮助我吗?为什么它必须长64个字节?
答案 0 :(得分:4)
我很久以前读了一篇文章。我喜欢这个解释。
以太网最小数据包大小为10 / 100M时为64字节,1000M时为512字节。 选择最小数据包大小的依据是,在半双工的情况下,发送方应能够在完成发送帧之前检测到冲突。
充其量,信号以光速(3 * 10 ^ 8 m / s)通过自由空间传播(辐射)。相反,通过双绞线或同轴电缆的传播速度是该值的2/3(2 * 10 ^ 8m / s)。
2 *两台主机之间的最大距离=双绞线中的光速*时间
时间 =数据包大小/带宽
对于 10M,Bandwdith = 10 ^ 7bps
<强>时间强> = 8 * 64位/ 10 ^ 7个基点= 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。
我不知道他们为什么只选择这个长度。
答案 1 :(得分:0)
因为早期的以太网基础设施正在使用半双工通信(HUB而不是交换机,共享介质而不是单独的接收/发送通道)。
设备可以在网络空闲时随时开始发送帧,因此必须检查与同时启动的其他发件人的冲突。根据HUB的数量和电缆长度,帧需要一些时间来传播。您希望在完成帧发送之前检测到碰撞,因此可以插入干扰代码以正常中止。为此,您需要最小的帧大小。
今天,对于交换网络,这不再是一个问题,但以太网标准的一个重要原则是帧格式永远不会改变。
此外,对于当今的网络速度,每个数据包的处理时间可能会成为一个性能问题。使用最小尺寸,您可以在下一个帧到达之前至少有一些保证的时钟周期数用于处理每个帧(例如,用于切换)。当面对100Mbit / s的最小尺寸帧流时,标准Linux PC通常会冻结。