目录

  • 1 前言
  • 2 以太网采取了两种重要的措施
    • 2.1 无连接的工作方式
    • 2.2 使用曼彻斯特 (Manchester) 编码
    • 2.3 存在的问题
  • 3 CSMA/CD协议
    • 3.1 存在的问题
    • 3.2 重要特性
    • 3.3 争用期
    • 3.4 二进制指数类型退避算法 (truncated binary exponential type)
    • 3.5 强化碰撞

1 前言

最初的以太网是将许多计算机都连接到一根总线上。易于实现广播通信。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件,总线上每一个计算机都能检测到其他计算机发出的信号,这就是广播通信方式

但有时我们想一对一的通信,这种情况下就要在发送数据帧的首部中写明接收主机的地址,如图,若B向D发送数据时,可以指明接收主机D的地址,由于只有D的地址和数据中的接收地址相同,所以只有D接收到数据,其他主机检测到不是发给自己的数据则会丢弃数据,这样就在广播通信中实现了一对一的通信

2 以太网采取了两种重要的措施

为了通信的简便,以太网采取了两种重要的措施:

  1. 采用较为灵活的无连接的工作方式
  2. 以太网发送的数据都使用曼彻斯特 (Manchester) 编码

2.1 无连接的工作方式

  • 不必先建立连接就可以直接发送数据
  • 对发送的数据帧不进行编号,也不要求对方发回确认
  • 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的
  • 以太网提供的服务是不可靠的交付,即尽最大努力的交付当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定
  • 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送

2.2 使用曼彻斯特 (Manchester) 编码


关于曼彻斯特 (Manchester) 编码,可参考我的这篇文章 计算机网络-关于信号的调制

2.3 存在的问题

总线型以太网在同一时间内只允许一台计算机发送数据,那么该如何协调各个计算机之间的工作?下面介绍的 CSMA/CD协议 就是解决方案

3 CSMA/CD协议

  • CSMA/CD 含义:载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection)
  • 多点接入”表示许多计算机以多点接入的方式连接在一根总线上
  • 载波监听”是指每一个站在发送数据之前和发送过程中要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞
  • 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号,如上图所示
  • 碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小
  • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
  • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
  • 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
  • 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送

CSMA/CD的工作流程图:

3.1 存在的问题

既然每一个发送站在发送之前都已经检测到信道当前为“空闲”那为何还会出现“碰撞”呢?

这是因为数据电磁波在总线上传输时是以有限的速度传播的,如某个发送站监听到总线是空闲时,总线并非真的是空闲的,如下图中A,B两个站点距离为1km,之间用同轴电缆相连,电磁波在1km电缆上的传播时延大约为5ms,因此从A发向B的信息,大约要经过5ms才能到达B,若B在A发送给自己的消息之前也发送了一个数据出去,则必然在某个时间,B发出的数据会和A发出的数据在总线上发生碰撞

我们把总线上端到端的一趟时间记为 τ,图中当τ为0时A发送数据,B检测到总线为空闲,在时间 τ-δ 时,A发送的数据还没有到达B,B因为检测到总线空闲,就开始发送数据,设在τ-δ/2 时,发生了碰撞,这时由于数据还在总线上传输,A和B都不知道数据发生了碰撞,但当 t=τ 时,A的数据发送到B了,B就检测到碰撞了于是停止发送数据,在时间 t=2τ-δ 时,B发送给A的数据到达了A,A检测到了碰撞,也停止发送了数据

3.2 重要特性

  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)
  • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
  • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率

3.3 争用期

  • 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞
  • 以太网的端到端往返时延 2τ 称为争用期,或碰撞窗口
  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞

争用期的长度:

  • 以太网取 51.2 us 为争用期的长度
  • 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节
  • 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突

最短有效帧长:

  • 如果发生冲突,就一定是在发送的前 64 字节之内
  • 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节
  • 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧

3.4 二进制指数类型退避算法 (truncated binary exponential type)

发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据,这个随机时间就要用到二进制指数类型退避算法:

  1. 确定基本退避时间,一般是取为争用期 2τ
  2. 定义重传次数 k ,k ≤ 10,即 k = Min[重传次数, 10]
  3. 从整数集合[0,1,…, ( 2 k 2^k 2k -1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间
  4. 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告

3.5 强化碰撞

当发送数据的站一旦发现发生了碰撞时:

  • 立即停止发送数据
  • 再继续发送若干比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞

计算机网络-CSMA/CD协议相关推荐

  1. 计算机网络·CSMA/CD协议有关计算

    CSMA/CD 一.官方解释 二.争用期 三.二进制退避算法 一.官方解释 如果两个人同时和我们说话,我们是不能够听清说的啥的.计算机也是一样,在同一时间里只能允许一台计算机发送数据,否则各个计算机之 ...

  2. 计算机网络—CSMA/CD协议

    使用广播信道的数据链路 局域网按照拓扑结构可以分为:总线型.环形.星形.树形和网状拓扑结构. 共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源.这在技术上有两种方法: 随 ...

  3. [计算机网络] CSMA/CD 协议限定数据帧最小长度为 64B 不变,根据给定的数据传输速率计算得到争用期长度

    如下图所示, 在Hub再生比特流的过程中会产生1.535us延时, 信号传播速率为200m/us,Hub速率是100Mb/s,不考虑以太网帧的前导码,则H3和H4之间理论上可以相距的最远距离是( ). ...

  4. 计算机网络——数据链路层PPP、CSMA/CD协议

    概述 数据链路层属于计算机网络的低层,数据链路层使用的信道的类型有以下两种: (1)点对点通信:这种信道使用一对一的点对点通信方式 (2)广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂, ...

  5. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★

    文章目录 一. CSMA/CD 协议 二. 传播时延对于 载波监听 的影响 三. 单程端到端传播时延 相关概念 四. 碰撞后重传时机 ( 截断二进制指数规避算法 ) 五.截断二进制指数规避算法 计算示 ...

  6. 计算机网络(十四)-CSMA/CD协议

    一.CSMA/CD协议 载波监听多点接入/碰撞检测CSMA/CD. 1.1 CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据. 1.2 MA:多点 ...

  7. 计算机网络 --- 数据链路层CSMA/CD协议

    CSMA/CD协议 全称为载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection) CSMA/CD协议 ...

  8. 计算机网络之数据链路层:11、CSMA/CD协议-随机访问介质访问控制

    数据链路层:11.CSMA/CD协议 思维导图: 载波监听多点接入/碰撞监听协议(CSMA-CD协议): 如何确定碰撞后的重发时机: 最小帧长问题: 思维导图: 载波监听多点接入/碰撞监听协议(CSM ...

  9. 计算机网络的最短帧长公式,每日一题 | CSMA/CD协议的最短帧长公式

    原标题:每日一题 | CSMA/CD协议的最短帧长公式 苏世计算机考研,程序猿专属的学习分享社区 苏世小课堂,每日一题! 为了帮助大家及时回顾所学知识,特开设本"每日一题"专栏,从 ...

最新文章

  1. fceux源码解析_fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)...
  2. CentOS 7.7 安装cmake3
  3. Python操作SQLite3
  4. JavaOne 2012 – 2400小时! 一些建议
  5. 【音效处理】Delay/Echo 简介
  6. 正弦 sin 余弦 cos
  7. FFmpeg学习(11)——视频转码之-crf参数详解
  8. 「长乐集训 2017 Day1」区间 线段树
  9. 教程 ios 4 以上安装mobile terminal的最简单方法
  10. 免费采集软件智能万能采集数据
  11. 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
  12. 【STL容器讲解—栈队列】
  13. mysql 视图 过程 函数_MySql视图、存储过程、函数、索引
  14. 云虚拟主机bch 和 云服务器bcc,云虚拟主机bch 和 云服务器bcc
  15. spring aop 记录controller层的入参和出参
  16. 鸿蒙生态箐英班,华为联合西北工业大学开设 “鸿蒙生态菁英班”: 50 人左右,锁定终端软件领域...
  17. 移动通信各制式、调制的速率及频谱利用率(2G-4G)
  18. K8S常见故障及解决方法
  19. 金融资管领域知识图谱的构建和应用
  20. C++ AVL树(补充)

热门文章

  1. Sketch算法-CM Sketch、Count Sketch等
  2. 通达信 数据格式 java_通达信日线 数据格式
  3. 如何用cmd命令进入mysql
  4. 【GANs】Wasserstein GAN
  5. CC00042.kafka——|Hadoopkafka.V27|——|kafka.v27|主题管理.v02|
  6. CrashLoopBackOff
  7. 58同城android客户端手机号码解密方法
  8. SIP协议及其简单介绍
  9. 连续分布——正态分布、卡方分布、t分布、F分布
  10. 如何用python编程能实现输入诗句的上句显示下句_Python爬虫之诗歌接龙