计算机网络中最短帧长的概念
这是一个在共享式以太网(如使用集线器的网络)中至关重要的概念,其核心目的是为了检测冲突。
一、核心问题:为什么需要最短帧长?
想象一个经典的共享式以太网场景(比如10BASE5,使用同轴电缆),多个设备连接在同一根总线上。它们使用CSMA/CD协议来协调发送数据:
- 载波监听:设备在发送前先监听总线是否空闲。
- 边发边听:即使开始发送,它也会继续监听总线。
- 冲突检测:如果在发送过程中检测到有别的设备也在发送(即发生冲突),它会立即停止发送,并发送一个强化冲突信号,然后等待一段随机时间后重试。
现在,我们考虑一个极端情况:
假设A和B是两个位于网络两端的设备,信号从A传到B需要的时间是 τ。
- 在
t0时刻,A监听到网络空闲,开始发送一个非常短的帧。 - 在
t0 + τ - ε时刻(即A的信号即将到达B的前一瞬间),B也监听到网络空闲(因为A的信号还没传过来),于是B也开始发送帧。
问题来了:
A发送的短帧在 t0 + τ 时刻就结束了。而B发送的帧会在 t0 + τ 时刻与A的帧发生冲突,这个冲突信号需要再经过时间 τ 才能传回A。
所以,A会在 t0 + 2τ 时刻检测到冲突。
关键点: 如果A发送的帧太短,在冲突信号传回A之前(即 t0 + 2τ 之前),A已经发完了整个帧。那么A就会错误地认为帧已经成功发送,而不知道其实发生了冲突。这个帧最终会因为冲突而被破坏,但发送方A却无从知晓,也不会重传。
二、解决方案:定义最短帧长
为了解决这个问题,以太网标准规定了一个最短帧长。这个长度必须保证:即使是在最坏的情况下(网络两端的两个设备同时发送),发送方也能在帧发送完毕之前检测到冲突。
这个“最坏情况”就是上面描述的场景:信号往返一次的时间,即 2τ。
- 2τ 被称为 冲突窗口。
- 发送方必须在整个冲突窗口内都持续发送,这样才能保证在窗口内任何时刻发生的冲突都能被检测到。
因此,最短帧长的传输时间必须 ≥ 冲突窗口(2τ)。
三、具体数值是如何计算的?
在标准的10Mbps以太网中,对这个时间做出了具体规定:
- 冲突窗口(2τ) 被设定为 51.2微秒。
现在我们来计算帧的长度:
-
计算在51.2微秒内可以发送多少比特?
- 传输速率 = 10 Mbps = 10,000,000 bit/s
- 时间 = 51.2 μs = 51.2 × 10⁻⁶ s
- 比特数 = 速率 × 时间 = 10,000,000 bit/s × 51.2 × 10⁻⁶ s = 512 bit
-
转换为字节:
- 512 bit / 8 = 64 字节
结论: 在传统以太网(10Mbps)中,最短帧长被规定为64字节。
这个64字节包括了:
- 目标MAC地址(6字节)
- 源MAC地址(6字节)
- 长度/类型字段(2字节)
- 数据载荷(46 ~ 1500字节)
- 帧校验序列FCS(4字节)
注意: 如果上层传来的数据不足46字节,MAC子层会在后面添加填充字段,使整个“数据+填充”部分达到46字节,从而保证整个帧长不小于64字节。
四、在现代网络中的意义
虽然现在主流的网络都是使用交换机(工作在数据链路层)的全双工交换式以太网,每个端口是一个独立的冲突域,甚至使用光纤,从根本上避免了冲突,但最短帧长的规定依然被保留了下来。
主要原因有:
- 向后兼容性:保持与早期设备的兼容。
- 标准统一:所有以太网设备都遵循同一个帧格式标准,简化了互操作性。
- 性能考量:过短的帧会导致传输效率低下,因为每个帧都有固定的开销(前导码、帧间隔等),有效数据占比(即效率)会很低。
总结
| 方面 | 解释 |
|---|---|
| 根本目的 | 确保在CSMA/CD机制下,发送方能够在帧发送完成前检测到任何可能发生的冲突。 |
| 决定因素 | 网络的往返延迟(2τ),即冲突窗口。 |
| 经典数值 | 64字节(在10Mbps以太网中,对应51.2微秒的冲突窗口)。 |
| 组成部分 | 6字节目的MAC + 6字节源MAC + 2字节类型 + 46~1500字节数据与填充 + 4字节FCS。 |
| 现代意义 | 尽管冲突已很少见,但作为以太网标准的核心部分被保留,保证了兼容性和效率。 |

浙公网安备 33010602011771号