为何以太网帧要求最小负载 46 字节?
什么是以太网,除了以太网还有哪些网?
1. 什么是以太网(Ethernet)
- 定义:以太网是一种计算机局域网(LAN)的通信技术标准。
- 起源:由施乐公司(Xerox)在 1970 年代提出,后来由 IEEE 制定成 IEEE 802.3 标准。
- 特点:
- 使用 帧(frame) 传输数据。
- 常见物理介质:双绞线、光纤。
- 支持速率从 10 Mbps、100 Mbps、1 Gbps 到 10/40/100 Gbps 甚至更高。
- 采用 MAC 地址 作为设备标识。
- 应用:现在绝大多数局域网(家庭网、公司内部网、数据中心内部网)都是以太网。
2. 除了以太网,还有哪些“网”
根据应用场景和通信标准,除了以太网还有很多不同类型的网络:
(1)局域网/接入层的其他技术
- Wi-Fi(无线局域网,WLAN):基于 IEEE 802.11 标准,用无线电波代替网线。
- Token Ring(令牌环网):IBM 推广过的技术,现在几乎淘汰。
- FDDI(光纤分布式数据接口):用光纤环形结构的局域网标准,早期常用于校园网/城域网,已被以太网替代。
(2)广域网(WAN)技术
- MPLS(多协议标签交换):运营商骨干广域网常用。
- ATM(异步传输模式):90年代主流,现在已基本淘汰。
- 帧中继(Frame Relay):早期的广域网技术。
- PPP/HDLC:点对点广域网链路技术(常用于早期拨号、专线)。
(3)无线/移动网络
- 蜂窝移动网络(2G/3G/4G/5G):广域无线通信。
- 蓝牙(Bluetooth):短距离无线个人网(PAN)。
- ZigBee、LoRa、NB-IoT:常用于物联网(IoT)。
(4)更大范围的网络
- 互联网(Internet):全球最大的“网”,是无数以太网、广域网互联起来的。
- 卫星网络:通过卫星链路传输数据,例如 Starlink。
在以太网里,最大MTU与最小MTU是?
在以太网(Ethernet)里,MTU(Maximum Transmission Unit,最大传输单元)指的是单个以太网帧中可以承载的最大数据量(不包括以太网帧头和尾部)。我们仔细分析一下:
1. 以太网标准 MTU
以太网有几个常用标准:
类型 | 最大 MTU | 说明 |
---|---|---|
标准以太网 (Ethernet II, IEEE 802.3) | 1500 bytes | 这是最常用的局域网 MTU。即单个 IP 数据包最大承载 1500 字节的数据部分。 |
巨帧/ Jumbo Frame | 一般 9000 bytes 左右(可配置) | 数据中心或高速局域网中,为减少 CPU 处理负载而扩展。 |
最小 MTU | 46 bytes | 以太网帧要求最小负载 46 字节(数据部分),不足 46 字节时会填充(padding)。 |
2. 以太网帧结构回顾
字段 | 长度 |
---|---|
前导码 + SFD | 8 bytes |
目标 MAC | 6 bytes |
源 MAC | 6 bytes |
类型/长度 | 2 bytes |
数据(Payload) | 46–1500 bytes(标准) |
CRC 校验 | 4 bytes |
所以 MTU = Payload 最大长度 = 1500 bytes(标准以太网)。
如果数据小于 46 字节,会自动填充至 46 字节,保证帧长度满足最小要求。
为何最小要46字节?最大1500字节?
以太网帧的设计初衷,主要是为了保证 冲突检测(CSMA/CD)可靠工作。我给你详细解释一下:
1. 最小帧长度的公式来源
以太网(尤其是早期的 10 Mbps 以太网)使用 CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/碰撞检测)协议:
- 当两台设备同时发送数据时,会产生 碰撞(collision)。
- 发送端必须在发送完成前 检测到碰撞,否则以为发送成功。
以太网规定最小帧长度是 64 字节(含头部和 CRC):
- 头部 + 数据 + CRC = 64 bytes
- 其中:
- 头部 18 bytes(目标 MAC 6 + 源 MAC 6 + 类型/长度 2 + 前导码/帧开始 8)
- 数据部分 46–1500 bytes
- CRC 4 bytes
- 所以 最小数据字段为 46 bytes。
2. 为什么是 46 字节?
公式:
最小数据长度≥2 × 传播延迟 × 带宽\text{最小数据长度} \ge \text{2 × 传播延迟 × 带宽}最小数据长度≥2 × 传播延迟 × 带宽
解释:
- 以太网的 最远距离(10Base5)约为 2500 m,信号往返需要一定时间。
- 如果帧太短,发送完就结束了,而碰撞可能还没到达发送端,发送端无法检测到碰撞 → 导致网络不可靠。
- 经过计算,这对应 最小数据字段 46 bytes,加上头部 18 bytes 和 CRC 4 bytes,总帧长 64 bytes。
简单说:帧太短,碰撞可能无法被发送端及时检测到,网络会出问题。
3. 现代以太网为什么还保留这个限制?
即使现在大多数以太网是 交换式以太网(Full-duplex, 无碰撞),仍然保留了最小帧长度标准,以保证与老设备兼容,并满足标准 IEEE 802.3。
而最大1500 字节是 标准以太网的历史设计限制,有其原因:
4. 标准以太网最大 MTU = 1500 bytes 的来源
以太网最初由 Xerox PARC(1970s) 设计:
- 当时局域网速度只有 10 Mbps(10Base5,厚同轴电缆)。
- 为了效率和硬件实现简单,需要:
- 帧不要太大,否则:
- 占用总线太久(10 Mbps 时代总线共享,其他设备会阻塞)
- 碰撞检测延迟增大
- 帧不要太小,否则碰撞检测无法可靠工作(前面讲过的最小 64 bytes)。
- 帧不要太大,否则:
计算得出:
- 64 bytes(最小帧)– 以保证碰撞检测可靠
- 1500 bytes(最大帧)– 确保总线占用时间合理,硬件实现简单
后来 IEEE 802.3 正式规定 标准以太网 MTU = 1500 bytes,成为全世界广泛兼容的默认值。
5. 为什么有人用更大的 MTU?
为了提高 高速局域网(1 Gbps / 10 Gbps / 数据中心) 的效率:
- CPU 处理帧头和中断的开销比较大,如果每个帧的数据少,CPU 负载高。
- 巨帧(Jumbo Frame) 被提出:
- Payload 可达 9000 bytes 左右(不同厂商略有差异)
- 优点:减少 CPU 处理帧的次数,提高吞吐量
- 缺点:所有网络设备必须支持,否则会丢包或分片
6. 现代以太网最大 MTU
类型 | 最大 MTU |
---|---|
标准以太网 | 1500 bytes |
Jumbo Frame(千兆/万兆局域网) | 9000 bytes 左右 |
超大帧(某些数据中心) | 12000–96000 bytes(仅特定硬件支持) |