将有效负载填充到最小 46 字节以形成 64 字节的以太网帧的原因是什么。
下面说 min 将是 41 个字节。
https://stackoverflow.com/questions/14526139/what-is-the-minimum-packet-size-for-tcp-over-ipv4
我无法连接点,任何人都可以解释这一点。
将有效负载填充到最小 46 字节以形成 64 字节的以太网帧的原因是什么。
下面说 min 将是 41 个字节。
https://stackoverflow.com/questions/14526139/what-is-the-minimum-packet-size-for-tcp-over-ipv4
我无法连接点,任何人都可以解释这一点。
整个帧必须至少为 64 字节。这不仅是有效载荷,还包括标头和帧校验序列。FCS 最后占用 4 个字节。一个以太网报头由两个 6 字节的 MAC 地址和一个 2 字节的类型字段组成,共 14 个字节。64-4-14 = 46。IPv4 数据包在以太网报头之上有一个至少 20 字节的附加报头,使最小有效载荷大小为 26 字节。TCP 和 UDP 在此基础上添加了更多标头。
另一件要注意的事情是,线路上的最小长度帧的大小实际上大于 64 字节——有一个 8 字节的前导码/帧起始定界符和一个 12 字节的帧间间隙附加到每个数据包,使 64字节数据包在线路上占用 64+8+12 = 84 个字节。
另一个问题的 41 字节答案仅考虑 TCP 和 IP 标头。如果你发送一个 0 个数据字节的 TCP 数据包,它将有 40 个字节的头部;不可能使有效的 TCP 数据包小于此值。但是,如果您尝试发送此数据包,它将在连接以太网 FCS 之前将零填充到 46 个字节。
最初使用以太网完成此操作的原因是为了确保线路上的最小帧长度,以便所有设备都能在指定的最大电缆长度上可靠地检测到冲突。这是必需的,因为 10M 以太网的早期版本使用共享同轴介质,并且连接的设备必须能够检测到其中两个同时尝试在共享介质上传输。稍微不那么古老的 10M 和 100M 以太网通过双绞线构建,使用集线器而不是交换机构建,也需要能够检测冲突。然而,大多数现代以太网都是交换式的,不使用共享介质,因此这不再是绝对必要的,但出于兼容性原因,它仍然是规范的一部分。短于 64 字节的帧称为矮帧,
该问题也未指定传输介质。IPv4 几乎可以用于任何事物,例如串行端口。
以太网帧具有最小大小,这也取决于速度:10/100 MBit 最小为 64 字节,而千兆位最小为 512 字节。该传输层无法发送较小的数据包,因此需要填充。
在最初的以太网规范中,64 字节将从端到端填充电缆,从而允许所有主机检测到冲突。最初的以太网标准还指定了 14 个字节的标头和 4 个字节的帧校验序列。那是 18 个字节。从 64 中减去 18,您将得到 46 作为最小有效载荷。从那时起,您可以添加一个四字节的 VLAN 标记。因此,使用 VLAN 标记时,最小负载大小为 42。没有 VLAN 标记时,最小负载大小仍为 46。
最小以太网帧大小是为原始半双工变体定义的。对于半双工,您需要在冲突发生时可靠地检测和传播它们。信号需要在段内两个站之间的最长距离上传播,允许冲突检测,并在干扰信号仍在传输时将干扰信号传播回发送方。将所有内容放在一起,最终会在一个帧中得到 512 位或 64 字节。
对于快速以太网 (100 Mbit/s),放弃了固有的半双工同轴电缆,仅使用支持全双工的介质(=每个方向具有专用信号路径的介质)。这大大加快了冲突检测的速度,并允许使用相同的最小帧大小,即使快速以太网上的帧在时间上要短得多。
千兆以太网最初包括半双工模式,需要填充以增加最小以太网数据包大小(而不是帧大小)。半双工 GbE 实际上并没有在任何地方使用,现在已经过时了。
交换式全双工以太网使这些考虑变得过时。然而,以太网建立在兼容性的基础上——所有物理层变体都可以共存并相互交互。因此,最小帧大小从未改变,古老的 10 Mbit/s 半双工节点仍然可以毫不费力地在现代多千兆网络中工作。
然而,关于这些细节有很多混乱,而且很多引用都是错误的。参考是 IEEE 802.3 Clause 4.4.2 MAC parameters。