一、协议背景
最早的以太网是总线网络,当一台计算机发送数据时,总线上所有计算机都能检测到这个数据(广
播通讯方式)。为了通讯的简便,传统总线型以太网采取了以下措施:
1.提供的服务为不可靠的交付:
(1.采用较为灵活的无连接工作方式,发送数据不必先建立连接
(2.对发送的数据帧不进行编号
(3.不要求接收方发回确认,对有差错的数据帧(用CRC查出有差错),把帧丢掉且什么都不做,
差错帧是否重传由高层来决定。(若高层协议决定重传,则以太网也会当做新的帧传输)
2.数据信号采取曼切斯特编码,利用中间的跳变来区分1和0
3.在半双工通讯方式和随机接入的前提下,利用CSMA/CD减少冲突的发生。
因为总线上只要有数据,传输资源就会被占用。因此传统总线型以太网采取半双工的通讯方式
和最简单的随机接入,且用CSMA/CD协议来减少因随机接入而产生的数据碰撞。
二、CSMA/CD概述
1.概述:
CSMA/CD,载波监听多点接入/碰撞检测,是广播型信道中采用一种随机访问技术的竞争型访
问方法,具有多目标地址的特点。它通过边发送数据边监听线路的方法来尽可能减少数据碰撞
与冲突。采用分布式控制方法,所有结点之间不存在控制与被控制的关系
*注意:在该情形下碰撞不可能完全避免,CSMA/CD只能减少碰撞。
2.三大要点:
(1.多点接入。即作用在总线型网络,许多计算机以多点接入的方法连接在一根总线上
(2.载波监听。即监听信道,检测总线上有没有其他计算机在传输数据,发送前后每个主机都
必须不停地检测信道
(3.碰撞检测。即边发送边监听,适配器边发送数据边检测信道上的信号电压变化情况,以此
判断是否有别人在发送数据。若没有检测到电压,即信道为“空闲”状态,可以
发送数据。若检测到极大或极小的电压,就说明有两个及以上主机的信号发生
了碰撞(电磁波相遇),此时适配器就会立即停止发送。
3.问题:
既然已经能够监听碰撞了,为什么不能完全避免数据在总线上的碰撞呢?
↓↓↓↓ 引出下面的解释 ↓↓↓↓
三、CSMA/CD的碰撞检测详解
依旧会发生碰撞的原因:
一段电磁波在总线上是以有限的速率进行传播的,导致从A端传播到B端的电磁波有时延,B端总是不能立马感知到其附近有数据在传输。
1.时延对载波监听的影响
基础参数极其含义:
* τ ----念"taò",单程的"端到端"传播时延
*记住:电磁波在1km电缆的传播时延约为5μs = 5*10^(-6)s
* δ ----念"deltà",单纯表示时间间隔
文字解释:
(1.t = 0 A端开始发送数据a,由于存在时延τ,t = τ-δ时未到达B端
(2.t = τ-δ 之前,B端监听到其连接的信道为"空闲",于是在t = τ-δ时发送数据b
(3.t = τ-3/2δ 时,数据a和数据b发生碰撞,两者的电磁波均出现错误
(4.t = τ 时,数据a到达B端,B端检测出碰撞
(5.t = 2τ-δ 时,数据b到达A端,此时数据a还没发完,A端检测出碰撞
当t = τ时,若B端准备发送数据,则会接收到数据a的信号电压,从而立即停止发送动作。而当
0<t<τ时,若B端开始准备发送数据,则B端不会检测到数据a,从而发送数据b造成碰撞。所以产
生碰撞的参数δ的范围为:δ∈( 0 , τ ]。
2.解决方法
(1.争用期/碰撞窗口
* 定义:由《时延对载波监听的影响》一图,可得,A端检测到碰撞的时间 t = 2τ-δ∈[ τ , 2τ ),也就是说A端在发送数据后经历 2τ
这个时间后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。因此定义这个 2τ 为争用期
* 具体的争用期时间是固定值,为51.2μs。对于10Mbit/s的以太网来说,在争用期内可发送51.2μs*10Mbit/s = 512bit
,即64字节的数据。
(2.退避时间
* 定义:以太网使用 截断二进制指数退避算法 来确定碰撞后的重传时机,即检测到碰撞立即停
止后,推迟(退避)一个随机的时间段,再重新准备发送数据。
* *退避的算法:
I.基本退避时间为 2τ
II.根据重传的次数,定义参数k,按下面的公式计算:
k = Min[重传次数,10]
计算出k之后,再从离散的整数集合[0,1,...,(2^k-1)]之中随机取出一个数,记作r,那么此次
重传应推迟/退避的时间为 r*2τ。可见当重传次数小于10次时,参数k等于重传次数本身;但
当重传次数超过10次时,参数k变一直等于10,而整数集合也变为了[0,1,...,1023]
III.当重传次数达到16次仍不能成功时(表明同时打算发送数据的站太多,以致连续发生冲
突。),则丢弃该帧,并向高层汇报。
(3.强化碰撞
* 当发送数据的主机一旦发现了发生碰撞,除了立即停止发送数据之外,还要继续发送32bit或48bit的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。
* 对于10Mbit/s的以太网,发送32bit(48bit)的时间需要3.2μs(4.8μs)
四、CSMA/CD过程总结
1.准备发送:
适配器从网络层获得一个分组,封装成帧,放入适配器的缓存芯中等待发送。
发送之前,先检测信道。
2.检测信道:
若检测到信道忙,则不停地检测,一直等到信道转为空闲,并在96bit时间内一直保持空闲(保证
了帧间最小间隔),就发送数据
3.边发送边监听,在发送过程中不停地检测信道:
(1.成功发送:
即在争用期间一直未检测到碰撞时,这个帧必定能够成功发送。发送完毕后什么也不做,继续
返回准备发送步骤
(2.发送失败:
即在争用期间检测到碰撞时,立即中止帧的发送,并按照规定发送人为干扰信号。
之后适配器按规定计算退避时间,等待r*2τ的时间后,再次检测信道并尝试发送(返回步骤2)。
若重传次数达到16次仍不能成功发送,则停止重传并上报错误。