CSMA/CD 协议 :
① 全称 : Carrier Sense Multiple Access With Collision Detection , 载波监听多点接入 / 碰撞检测 协议 ;
② CS : Carrier Sense , 载波监听 , 每个站点 发送数据前 , 和 发送数据过程中 , 先检测总线上是否有其它 站点 在发送数据 ;
③ MA : Multiple Access , 多点接入 , 多个 主机 连接在同一条 总线 上 ; 该协议 应用于 总线型网络 中 ;
④ CD : Collision Detection , 碰撞检测 , 适配器 一边发送 , 一边监听 , 检测信道上电压变化 用于 判断本站点发送数据 时 , 其它站点是否也在发送你数据 ; 由此可以看出 , 该协议用于 半双工网络 中 ;
电磁波传输时间导致冲突 : 先监听了信道 , 但是还是会发生冲突 , 电磁波在信道上是以有限速度传播的 , 如果电磁波没有到本站点 , 当时检测肯定是没有信号 , 但是等到本站点向外发出数据时 , 突然检测到有信号 , 这里电磁波传输的时间差 , 就造成了这种误差 ;
ALOHA 协议 与 CSMA 协议 对比 :
ALOHA 协议 , 不听就说 ;
CSMA 协议 , 先听再说 ;
CSMA/CD 协议 , 先听再说 , 边听边说 ;
传播时延对于 载波监听 的影响 :
① 前提 : 信道 两端 是 A , B A, B A,B 两台主机 , 两个站点 单程 端到端 , 电磁波 从 A A A 到 B B B 传播 , 需要 t t t 纳秒 ;
② A A A 发送数据到 B B B 一半 : 0 0 0 纳秒 时刻 , A A A 向 B B B 发送数据时 , 预计 t t t 纳秒后 , 到达到 B B B 站点 ;
③ B B B 发送数据到 A A A : B B B 在 t 2 \cfrac{t}{2} 2t 纳秒 时刻 , 突然 A A A 发送数据 , 此时检测到信道没有电磁波 , 因为此时电磁波还没有到达 B B B 站点 ; 因此检测到信道没有信号传输 ;
④ 出现冲突 : B B B 如果传输数据 , 肯定会在某时刻与 A A A 已经发送的数据 产生冲突 ; 此时时刻时 3 t 4 \cfrac{3t}{4} 43t 纳秒
⑤ 碰撞 : B B B 的信号 与 A A A 的信号叠加在一起 , 称为碰撞 ; 此时两个信号都被污染了 , 无法解析使用 ;
⑥ B B B 站点检测到碰撞 : B B B 接收到 碰撞后的信号 , 校验肯定不通过 , 出现帧错误 , 此时检测到发生了碰撞 , B B B 站点暂停数据发送 ; 该时刻是 t t t 纳秒 ;
⑦ A A A 站点检测到碰撞 : A A A 接收到 碰撞后的信号 , 校验肯定不通过 , 出现帧错误 , 此时检测到发生了碰撞 , A A A 站点暂停数据发送 ; 此时时刻时 3 t 2 \cfrac{3t}{2} 23t 纳秒
引入一组概念 :
① 单程端到端传播时延 : 记作 τ \tau τ ;
② 碰撞检测最长时间 : 站点发出数据后 , 最多 两倍的 单程端到端时延 2 τ 2\tau 2τ 后就可以得知出现了碰撞 ;
③ 2 τ 2\tau 2τ 概念 : 又称为 , 总线端到端往返传播时延 , 争用期 , 冲突窗口 , 碰撞窗口 ;
只要经过 2 τ 2\tau 2τ 没有检测到碰撞 , 本次发送 , 一定没有碰撞 ;
截断二进制指数规避算法 :
① 争用期 : 确定基本退避时间 , 也就是争用期 , 两倍的 单程端到端传播时延 2 τ 2\tau 2τ ;
② 重传次数 : 定义参数 k k k , 一定程度上相当于重传次数 ;
③ 取随机数 : 从整数集合 [ 0 , 2 k − 1 ] [0, 2^k - 1] [0,2k−1] 中 , 取出随机数 r r r , 重传时间就是 r × 2 τ r \times 2\tau r×2τ ;
④ 重传次数限制 : 当重传 16 16 16 次都失败时 , 说明网络拥塞严重 , 直接丢弃该帧 , 向上层报告出错 ;
示例 :
① 第 1 1 1 次重传 , k = 1 k=1 k=1 , 从
[ 0 , 1 ] [0, 1] [0,1] 区间中 , 即 { 0 , 1 } \{ 0 , 1\} {0,1}
中随机取一个值 , r r r ;
② 第 1 1 1 次重传 , k = 2 k=2 k=2 , 从
[ 0 , 3 ] [0, 3] [0,3] 区间中 , 即 { 0 , 1 , 2 , 3 } \{ 0 , 1 , 2 ,3\} {0,1,2,3}
中随机取一个值 , r r r ;
③ 第 3 3 3 次重传 , k = 3 k=3 k=3 , 从
[ 0 , 7 ] [0, 7] [0,7] 区间中 , 即 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 } \{ 0 , 1 , 2 ,3 , 4, 5, 6, 7\} {0,1,2,3,4,5,6,7}
中随机取一个值 , r r r ;
在 以太网 二进制回退算法中 , 碰撞 11 11 11 次后 , 随机数 r r r 的选择范围是多少 ? ? ?
随机数 r r r 是根据 参数 k k k 确定的 , 参数 k k k 是重传次数 和 10 10 10 中较小的值 , 重传次数 小于等于 10 10 10 次时 , k = 重 传 次 数 k = 重传次数 k=重传次数 , 重传次数大于等于 11 11 11 次时 , k = 10 k = 10 k=10 ;
随机数 r r r 的取值范围是 [ 0 , 2 k − 1 ] [0, 2^k - 1] [0,2k−1] , 代入 k = 10 k=10 k=10 ;
取值范围是 [ 0 , 2 10 − 1 ] [0 , 2^{10} - 1] [0,210−1] , 随机数 r r r 的 范围 是 [ 0 , 1023 ] [0 , 1023] [0,1023] 之间的值 ;
检测到碰撞时 , 需要暂停帧的发送 , 如果帧太短 , 就会导致一次性发送完毕 , 无法暂停 , 这里需要在检测到碰撞时 , 帧还没有发送结束 ;
帧的传输时延 至少要 大于 2 τ 2\tau 2τ ;
帧 的 传 输 时 延 = 帧 长 度 ( 比 特 ) 数 据 传 输 速 率 帧的传输时延 = \cfrac{帧长度 ( 比特 )}{ 数据传输速率 } 帧的传输时延=数据传输速率帧长度(比特)
帧 长 度 ( 比 特 ) 数 据 传 输 速 率 ≥ 2 τ \cfrac{帧长度 ( 比特 )}{ 数据传输速率 } \geq 2\tau 数据传输速率帧长度(比特)≥2τ
帧 长 度 ( 比 特 ) ≥ 2 τ × 数 据 传 输 速 率 帧长度 ( 比特 )\geq 2\tau \times 数据传输速率 帧长度(比特)≥2τ×数据传输速率
最小帧长度是 2 τ × 数 据 传 输 速 率 2\tau \times 数据传输速率 2τ×数据传输速率 比特 ;
以太网 规定 最短帧长度是 64 字节 , 小于 64 字节的帧都是由于冲突终止的无效帧 ;