一、协议背景

最早的以太网是总线网络,当一台计算机发送数据时,总线上所有计算机都能检测到这个数据(广
  播通讯方式)。为了通讯的简便,传统总线型以太网采取了以下措施:

  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字节的数据。

*注意:由《时延对载波监听的影响》一图,可知数据b到达A端时,只有当A端的数据a还
           没发完的时候,数据a依旧和数据b的前段发生电磁波干涉,A端才能检测出碰撞。

数据a的长度过小,在数据b到达A端之前就脱离了A端主机,那么数据b到达A端
           时,数据b不会产生异常信号电压,A端便不会认为这是碰撞。 所以这就需要当t = 2τ
           时数据a还未发完或恰好发完,即发送的数据的长度不能小于64字节。若原数据很
           短,就会加入填充字节填充至64字节。

同样,如果发生碰撞,那一定是在2τ前发生的,因为发送端立即停止发送,此时已经
           发送出的帧一定小于64字节。因此凡是收到长度小于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次仍不能成功发送,则停止重传并上报错误。

CSMA/CD协议详解相关推荐

  1. CSMA/CD协议详解!!!

    最早的以太网是将许多计算机都连接到一根总线上. 总线的特点 当一台计算机发送数据的时候,总线上的所有计算机都能检测到这个数据.这就是广播通信方式.当我们需要在总线上进行一对一通信的时候,就需要使每一台 ...

  2. CSMA/CD 协议 详解

    数据链路层的三个基本问题:封装成帧.差错检错.透明传输,不管是PPP协议还是CSMA/CD协议,只要是数据链路层上的协议都要解决这三个基本问题. 一.名字由来 CSMA/CD协议,其英文全称是:Car ...

  3. CSMA/CD协议 详解

    作用 在同一时刻只能允许一台主机在总线上发送数据,否则就会产生冲突.CSMA/CD协议就是用来解决这种问题. 协议要点 1.多点接入. 即总线上接入多台主机 2.载波监听.在发送前和发送中不停的检测信 ...

  4. CSMA/CA协议详解

    参考:(20条消息) CSMA/CA协议详解[计算机网络]_蓝莓派Alex的博客-CSDN博客_csma/ca 笔记: 无线电波能够向所有的方向传播,且其传播距离受限.当电磁波在传播过程中遇到障碍物时 ...

  5. CSMA/CA协议详解【计算机网络】

    [读书笔记]2018年9月5日17:13:26  <计算机网络>第六版 谢希仁 虽然CSMA/CD协议已成功地应用于使用有线连接的局域网,但无线局域网能不能也使用CSMA/CD协议呢? 显 ...

  6. CSMA/CD技术详解

    CSMA/CD(CarrierSenseMultipleAccesswithCollisionDetection)即带冲突检测的载波监听多路访问技术(载波监听多点接入/碰撞检测).在传统的共享以太网中 ...

  7. 【csma/ca协议和csma/cd协议的matlab仿真详解】

    首先你的熟悉csma/ca协议,csma/cd协议: csma/ca协议: 点击打开链接 csma/cd协议: 点击打开链接 这个课题有几个难点部分: 1.就是需要考虑各种情况,并对每一种情况都必须做 ...

  8. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  9. modbus通讯协议详解

    1.Modbus协议简介 Modbus协议是一种广泛应用于当今工业控制领域的通用通信协议.通过此协议,控制器相互之间.或者控制器经由网路(如以太网)可以和其他设备之间进行通信.Modbus协议使用的是 ...

  10. modbus通讯协议详解(转载)

    转载自:https://www.cnblogs.com/The-explosion/p/11512677.html modbus通讯协议详解 1.Modbus 协议简介  Modbus协议是一种已广泛 ...

最新文章

  1. 解决fixed在苹果手机抖动问题/头部底部固定布局
  2. ipad和android平板应用程序,Android平板要比iPad差吗?
  3. 写了 30 多个 Go 常用文件操作的示例,收藏这一篇就够了
  4. oracle merge 效率慢,更新语句的效率比较(merge into )
  5. java俄罗斯方块旋转,俄罗斯方块旋转算法研究
  6. POJ2976-Dropping tests-01分数规划
  7. Vue 使用clipboard复制文本信息
  8. LFS6.3安装全过程(一)
  9. python美化excel_【Python】Excel-4(样式设置)
  10. 未定义jm matlab,math – 使用Jm 1 = 2mj(m)-j(m-1)公式在MATLAB中计算bessel函数
  11. 从PHP门外汉---菜鸟---高手的进阶之路
  12. 如何根据MAC地址获取设备厂商
  13. Unity中实现3D拾取功能及其原理
  14. 柑曼怡推出非凡特酿系列;舒肤佳健康传中国“手护”新年期待助力2022年冬奥会 | 知消...
  15. cmos逻辑门传输延迟时间_Verilog设计与逻辑综合实例解析(低功耗)
  16. Source Insight设置黑色背景
  17. NVIDIA NCCL 源码学习(四)- 建图过程
  18. python姿态检测实现多人多姿态识别python行为识别openpose行为骨骼框架检测动作识别动作检测行为动作分类
  19. numpy 分块矩阵
  20. vb.net利用listbox控件与excel文件相结合统计数据

热门文章

  1. css pseudo elements,CSS 伪元素 (Pseudo-elements)
  2. 【Codex】Evaluating Large Language Models Trained on Code
  3. Java算法之 循序搜寻法
  4. STM32F103Cx用芯片tlc5615做DAC转换
  5. WAV高清语音格式音频
  6. 泰拉瑞亚 1.4 搭建服务器教程
  7. 解除计算机屏保密码设置密码,win10屏保密码怎么取消_如何取消Windows10锁屏密码...
  8. 揪出手机耗电元凶——高德地图缓存数据
  9. 计算机硬件实验报告怎么写,计算机硬件的认识与组装实验报告怎么写?
  10. jmeter(一)-上传图片