注:本文为 “CSMA/CD | 冲突检测” 相关文章合辑。
未整理去重。
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
Srlua小谢于 2024-04-09 23:19:37 发布
CSMA/CD 协议
最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
以太网采用广播方式发送
- 总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
- 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。
- 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
- 在具有广播特性的总线上实现了一对一的通信。
以太网采取了两种重要的措施
为了通信的简便,以太网采取了两种重要的措施:
(1) 采用较为灵活的无连接的工作方式
- 不必先建立连接就可以直接发送数据。
- 对发送的数据帧不进行编号,也不要求对方发回确认。
- 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
以太网提供的服务
以太网提供的服务是不可靠的交付,即尽最大努力的交付。
当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
(2) 以太网发送的数据都使用曼彻斯特 (Manchester) 编码
CSMA/CD协议
CSMA/CD 含义:载波监听多点接入 / 碰撞检测
(Carrier Sense Multiple Access with Collision Detection) 。
“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
碰撞检测
“碰撞检测” 就是计算机边发送数据边检测信道上的信号电压大小。
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
检测到碰撞后
在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
为什么要进行碰撞检测?
**由于电磁波在总线上的传播速率是有限的,**当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。
A 向 B 发出的信息,要经过一定的时间后才能传送到 B。
B 若在 A 发送的信息到达 B 之前发送自己的帧 (因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
碰撞的结果是两个帧都变得无用。
所以需要在发送期间进行碰撞检测,以检测冲突。
信号传播时延对载波监听的影响
CSMA/CD 重要特性
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
争用期
最先发送数据帧的站,在发送数据帧后至多经过时间 2 τ \tau τ (两倍的端到端往返时延) 就可知道发送的数据帧是否遭受了碰撞。
以太网的端到端往返时延 2 τ \tau τ 称为争用期,或碰撞窗口。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
二进制指数类型退避算法 (truncated binary exponential type)
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
基本退避时间取为争用期 2 τ \tau τ 。
从整数集合 [0, 1, … , ( 2 k 2^{k} 2k-1)] 中随机地取出一个数,记为 r。
重传所需的时延就是 r 倍的基本退避时间。
参数 k 按下面的公式计算:
k = Min[重传次数, 10]
当 k τ \tau τ 10 时,参数 k 等于重传次数。
当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
争用期的长度
10 Mbit/s 以太网取 51.2 μs 为争用期的长度。 对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。
这意味着: 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
最短有效帧长
如果发生冲突,就一定是在发送的前 64 字节之内。
由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
强化碰撞
当发送数据的站一旦发现发生了碰撞时:
(1) 立即停止发送数据;
(2) 再继续发送若干比特的人为干扰信号 (jamming signal),以便让所有用户都知道现在已经发生了碰撞。
人为干扰信号
CSMA/CD协议的要点
(1) 准备发送。 但在发送之前,必须先检测信道。
(2) 检测信道。 若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
(3) 检查碰撞。 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。
这里只有两种可能性:
① 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 (1)。
② 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤 (2),继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错。
以太网中的争用期与最大传输时间、最小帧长度设定因素
1. 争用期
在以太网中,争用期(Contention Period)是指计算机在检测到信道空闲后,开始传输数据前的等待时间,其作用是避免数据包碰撞。
不同速率下的争用期
以太网中,不同网络速率对应的争用期如下表所示:
网络速率 | 最小帧长(字节) | 争用期计算公式 | 争用期结果 |
---|---|---|---|
10 Mbps | 64 | 512 bit 10 × 1 0 6 bit/s \frac{512 \text{ bit}}{10 \times 10^{6} \text{ bit/s}} 10×106 bit/s512 bit | 51.2 μs |
100 Mbps | 64 | 512 bit 100 × 1 0 6 bit/s \frac{512 \text{ bit}}{100 \times 10^{6} \text{ bit/s}} 100×106 bit/s512 bit | 5.12 μs |
1000 Mbps | 64 | 512 bit 1000 × 1 0 6 bit/s \frac{512 \text{ bit}}{1000 \times 10^{6} \text{ bit/s}} 1000×106 bit/s512 bit | 0.512 μs |
2. 最大传输时间
最大传输时间是指一个站点发送数据帧所需的最长时间,其计算依据如下:
不同速率下的最大传输时间
不同网络速率对应的最大传输时间如下表所示:
网络速率 | MTU(字节) | 最大传输时间公式 | 最大传输时间 |
---|---|---|---|
10 Mbps | 1500 | ( 1500 × 8 ) bit 10 × 1 0 6 bit/s \frac{(1500 \times 8) \text{ bit}}{10 \times 10^{6} \text{ bit/s}} 10×106 bit/s(1500×8) bit | 1.2 ms |
100 Mbps | 1500 | ( 1500 × 8 ) bit 100 × 1 0 6 bit/s \frac{(1500 \times 8) \text{ bit}}{100 \times 10^{6} \text{ bit/s}} 100×106 bit/s(1500×8) bit | 0.12 ms |
1000 Mbps | 1500 | ( 1500 × 8 ) bit 1000 × 1 0 6 bit/s \frac{(1500 \times 8) \text{ bit}}{1000 \times 10^{6} \text{ bit/s}} 1000×106 bit/s(1500×8) bit | 0.012 ms |
最小帧长度设定因素
以太网中数据帧的长度存在最小限制,这一限制对于保证网络的稳定性和有效性至关重要。
最小帧长度的设定主要基于以下两个关键因素:
- 避免碰撞:早期以太网采用总线拓扑结构,多个设备共享同一物理信道,极易发生碰撞。合理设定最小帧长度,能够有效降低因帧过短而引发的碰撞概率。
- 确保冲突检测:以太网采用的 CSMA/CD 协议要求发送设备在数据帧传输过程中具备检测冲突的能力。最小帧长度应足够长,以确保在信号从发送端传播至接收端并返回的时间内(该时间长度与争用期紧密相关),发送设备能够及时检测到冲突。
以早期传输带宽为 10 Mbps 的以太网为例,其最小帧长度为 64 字节。发送该最小帧所需的时间 t min t_{\text{min}} tmin 计算如下:
t min = 64 × 8 bit 10 × 1 0 6 bps = 51.2 μ s t_{\text{min}} = \frac{64 \times 8 \ \text{bit}}{10 \times 10^{6} \ \text{bps}} = 51.2 \ \mu \text{s} tmin=10×106 bps64×8 bit=51.2 μs
其中,数据帧总位数为 64 字节乘以 8 位/字节,以太网传输速率为 10 Mbps(即 1 0 7 10^7 107 bps),因此发送一个最小长度的数据帧需要 51.2 微秒。
最小帧长度计算公式及参数说明
计算最小帧长度的公式为:
L min = 2 × t prop × R L_{\text{min}} = 2 \times t_{\text{prop}} \times R Lmin=2×tprop×R
公式中各参数含义如下:
- t prop t_{\text{prop}} tprop:传输延迟,即信号从一个站点传播到另一个站点所需的时间,单位为秒(s)。
- R R R:网络的传输速率,单位为比特每秒(bit/s)。
例题分析
在一个采用 CSMA/CD 协议的网络中,传输介质为一根完整的电缆,传输速率 R = 1 Gbps = 1 0 9 bps R = 1 \ \text{Gbps} = 10^9 \ \text{bps} R=1 Gbps=109 bps,电缆中的信号传播速度 v = 200 , 000 km/s = 2 × 1 0 8 m/s v = 200,000 \ \text{km/s} = 2 \times 10^8 \ \text{m/s} v=200,000 km/s=2×108 m/s。若最小数据帧长度减少 800 比特,求最远的两个站点之间的距离至少需要如何变化。
解题思路
-
最小帧长度与距离的关系:
最小帧长度 L min L_{\text{min}} Lmin 与距离 d d d 的关系为:
L min = 2 × t prop × R = 2 × d v × R L_{\text{min}} = 2 \times t_{\text{prop}} \times R = 2 \times \frac{d}{v} \times R Lmin=2×tprop×R=2×vd×R
其中 t prop t_{\text{prop}} tprop 是信号传播时间, v v v 是信号传播速度, R R R 是传输速率。 -
新的最小帧长度:
新的最小帧长度 L new L_{\text{new}} Lnew 为:
L new = L original − 800 bit L_{\text{new}} = L_{\text{original}} - 800 \ \text{bit} Lnew=Loriginal−800 bit -
距离变化的计算:
由最小帧长度公式,可以得到原始距离 d original d_{\text{original}} doriginal 和新距离 d new d_{\text{new}} dnew 的关系:
d original = L original × v 2 × R d_{\text{original}} = \frac{L_{\text{original}} \times v}{2 \times R} doriginal=2×RLoriginal×v
d new = L new × v 2 × R d_{\text{new}} = \frac{L_{\text{new}} \times v}{2 \times R} dnew=2×RLnew×v
距离变化 Δ d \Delta d Δd 为:
Δ d = d original − d new = L original × v 2 × R − ( L original − 800 ) × v 2 × R = 800 × v 2 × R \Delta d = d_{\text{original}} - d_{\text{new}} = \frac{L_{\text{original}} \times v}{2 \times R} - \frac{(L_{\text{original}} - 800) \times v}{2 \times R} = \frac{800 \times v}{2 \times R} Δd=doriginal−dnew=2×RLoriginal×v−2×R(Loriginal−800)×v=2×R800×v
计算过程
代入给定的值
v
=
2
×
1
0
8
m/s
v = 2 \times 10^8 \ \text{m/s}
v=2×108 m/s 和
R
=
1
0
9
bps
R = 10^9 \ \text{bps}
R=109 bps:
Δ
d
=
800
×
2
×
1
0
8
2
×
1
0
9
=
80
米
\Delta d = \frac{800 \times 2 \times 10^8}{2 \times 10^9} = 80 \ \text{米}
Δd=2×109800×2×108=80 米
因此,如果最小数据帧长度减少了 800 比特,最远的两个站点之间的距离至少需要减少 80 米。
via:
-
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析_在以太网中发生冲突时采用退避机制的原因-优快云博客
https://blog.youkuaiyun.com/Srlua/article/details/137571417 -
部分内容,原始出处找不到了