6.2 CSMA介质访问控制原理

在总线型网络中,每个站点都能独立地决定帧的发送(没有主站点和从站点之分),很显然,如果两个或多个站点同时向总线上发送帧,就会产生介质访问冲突(仅指在没采用信道复用情况下),导致所发送的帧都出错。因此,在这种总线型网络中,一个用户数据发送的成功与否,很大程度上取决于发送数据时是否会与其它用户发送的数据产生总线介质争用。这时就需要一种能有效避让冲突发生的技术,确保每个站点在向总线上发送数据时,其它站点均不发送数据,也就是如何使各个站点能尽快地检测到总线介质是否空闲。本节所介绍的CSMA(载波侦听多路访问)就是这样一种能比较有效解决总线型网络中介质争用的技术。

CSMA技术也称为LBT(Listen Before Talk,先听后说),也就是先侦听要访问的介质,当发现介质忙时先避让一段时间,不发送数据,仅当侦听到介质空闲时才进行数据发送。在这里就涉及到一个问题,就是在站点侦听到当前信道中有数据在传输时,要避让多长时间才再次侦听,这就是CSMA技术的退避算法。但CSMA可以采用的退避算法有几种,也可算是对应类型的CSMA,那就是:非-坚持CSMA(no persistent CSMA)、1-坚持CSMA(1-persistentes CSMA)、P-坚持CSMA(P-persistant CSMA)。下面是这些算法的具体诠释。

6.2.1 非-坚持算法

“非-坚持”中的“非”的意思就是指各站点不连续侦听总线介质是否空闲,即在发现介质忙时,先停止侦听,等过一段时间再来侦听。具体来讲,“非-坚持CSMA”就是某站点发现总线介质上没有数据在传输时(处于闲状态),立即发送在等待发送的数据;如果检测到总线介质上有数据在传输时(处于忙状态),则等待一段时间再来侦听,再忙时再等待一段时间来侦听,以此类推,直到发现总线介质处于空闲时本站点才可发送数据。

如图6-7所示的是一个“非-坚持CSMA”介质访问控制示例。示例中某站点准备要发送一个数据帧Fi。它第一次检测时发现总线是处于忙状态,于是隔了一段时间t1后,再来侦听,还发现总线介质是处于忙状态,于是它再隔一段时间t2来侦听,终于在第三次侦听时发现总线介质是处于闲状态,于是这个站点立即把Fi帧发送出去。

图6-7 “非-坚持CSMA”介质访问控制示例

这时大家可能已经有疑问了,那就是这个“非-坚持CSMA”算法中,在上次侦听发现介质处于忙状态时需要等待多长时间再来侦听介质的状态呢?答案是不固定的,这个等待的时间是根据“非-坚持CSMA”算法随机产生的(具体产生机制大家可不必深究)。如果采用TDM(时分复用)传输方式,则这个延迟时间就是一个时隙长度。

虽然“非-坚持CSMA”算法可以在一定程度上减少冲突的发生,但还是不能完全消除冲突的发生,因为毕竟每个站点发送的数据速度不一样,数据在信道中传输是需要时间的,而且等待的时间也不一定就可以满足一个帧完全传输完毕,所以尽管每个站点都是在检测到介质空闲时才发送数据,但仍可能存在前一个帧还在信道中传输时,后一个站点的帧就追上来了,发生冲突。

另外,“非-坚持CSMA”算法还存在一个明显的缺点,这就是一旦侦听到介质忙就马上延迟一个随机时间再重新侦听,但很可能在再次侦听之前信道就已经空闲了。也就是“非坚持CSMA”不能把信道刚一变成空闲的时刻找出,影响了信道利用率的提高。所以这种算法主要适用于小型的总线,或者树形拓扑结构网络中,不适用于像现在大型的树形结构以太网中。为了克服这一缺点,可采用下面介绍的两种“坚持CSMA”。

6.2.2 1-坚持算法

“1-坚持”中的“1”有两层含义:一是指发现总线介质忙时一直持续、不间断侦听,直到发现介质处于闲状态;二是在侦听到介质处于空闲状态后一定(也就是100%)发送数据。前面介绍的“非-坚持CSMA”算法是在发现介质忙后,即随机等待一个延时,然后继续侦听,发现介质处于闲状态后立即发送数据;而此处的“1-坚持CSMA”算法中是在发现介质忙时不等待、继续侦听,一旦发现空闲即立即发送数据;在数据传送过程中发生冲突时放弃当前的数据传送任务,才等待一个延时后再继续侦听。

如图6-8所示的是一个“1-坚持CSMA”介质访问控制示例。示例中某站点准备要发送一个数据帧Fi。它第一次检测时发现总线是处于忙状态,于是继续侦听(不等待),第二次侦听还是还发现总线介质是处于忙状态,于是它再继续侦听,一直到第n次侦听时才发现总线介质是处于闲状态,于是这个站点立即把Fi帧发送出去。

图6-8  “1-坚持CSMA”介质访问控制应用示例

很明显,这种算法相对前面介绍的“非-坚持”算法来说的优点就是提高了介质的利用率,每个站点都在抓住一切有利时机发送数据,因为在没有发生冲突时是无需等待一个随机延迟就立即进行继续侦听,不会出现介质处于空闲状态仍没有站点发送数据的情况。但是,该算法仍有两个致命的弱点:一是在有多个站点发送数据的情况下,这种毫不等待的算法,也就使得冲突时常发生。原因就是前面所说的,可能在网络中同时有多个站点在同一时间检测到介质空闲(因为中间没有一个延迟,也就是一直在侦听介质状态),而立即进行了数据发送,所以更容易发生冲突。二是这种算法发现在介质忙时一直侦听,占用了大量网络和设备资源。所以“1-坚持CSMA”算法也仅适用于小型的总线型或者树形拓扑结构网络,不适用于像现在大型的树形结构以太网中。

6.2.3 P-坚持算法

既然前面介绍的两种算法都存在明显的不足,自然就会有人继续后面的开发,于是就生产了新的“p-坚持CSMA”退避算法。其实,“p-坚持CSMA”算法是前面介绍的“非-坚持CSMA”和“1-坚持CSMA”这两种算法的一种折中算法,取两者的长处,而尽量克服了两者的不足。

理解“p-坚持CSMA”退避算法的关键就是其中的“p”,是指侦听到介质空闲时发送数据的概率(小于1,也就是小于100%),就是指站点在发现介质空闲时可以立即发送数据的概率为p,也就是不一定(不是100%发送数据,还有(1-p)概率是不发送数据。其目的就是为了避免与其他站点发生冲突。

具体来讲,“P-坚持CSMA”算法的具体介质访问控制方法与前面介绍的“1-坚持CSMA”类似,也是在侦听到介质处于忙状态时持续侦听,当侦听到介质处于空闲状态时,但此时站点不一定会马上发送数据,根据概率p(这个p值是算法事先确定好的)来选择发送数据,而在另一个(1-p)概率的时候,即使介质处于空闲状态,也会延迟一段时间t(这个t是指端到端的“传播延时”)后再重新侦听介质状态。

上面所说的“传播延时”是有计算公式的,具体如下:

传播延时(μs)=两站点间的距离(m)÷ 信号传播速度(m/s)

如已知传播距离为1000km,信号在介质上的传播速率为2×108m/s,则可计算出它的传播延时为1000×1000/(2×108)=0.005s。

这里最难理解就是p概率了。打个比方,p为0.8,也就是80%的空闲状态下是可以立即发送数据的,还有20%(1-p)的机率是不发送数据,是延迟一个t时间(也就是“传播延时”)再来侦听介质状态。如果在某段时间中,前面已有一个空闲状态下没有发送数据,则下一个空闲状态下就很可能会立即发送数据了(毕竟有80%的可能性是要发送数据的),否则如果前面连续几个空闲状态下都立即发送了数据,则下一个空闲状态下就可能不发送数据了。总体来说,是否发送数据是随机的,没有固定哪个空闲状态下必须发送数据,或者不发送数据,但整体通信过程中在空闲状态下发送数据的概率都是在p以内。

如图6-9所示的是一个“p-坚持CSMA”介质访问控制示例。示例中某站点准备要发送一个数据帧Fi。它第一次检测时发现总线是处于忙状态,于是继续侦听(不等待),第二次侦听还是还发现总线介质是处于忙状态,于是它再继续侦听,第3次侦听时发现总线介质是处于闲状态,但根据概率计算出现在不能发送数据,于是等待一个t时间后,再来侦听介质状态,到第4次侦听时发现介质还是处于空闲状态,根据概率计算得出马上可以发送数据了,于是把Fi帧发送出去。

图6-9  “p-坚持CSMA”介质访问控制应用示例

从以上分析可以看出,“P-坚持”退避算法是一种既能像“非-坚持CSMA”算法那样减少冲突,又能像“1-坚持CSMA”算法那样减少介质空闲时间的折中方案,也就是综合了前面所介绍的两种算法的优点,以实现优缺点互补。

以上内容摘自正在当当网、京东网、卓越网、互动出版网等各书店全面热销,广受读者好评的2013年度热门新书《深入理解计算机网络》

当当网上的链接:http://product.dangdang.com/main/product.aspx?product_id=23166396

东网上的链接:http://book.360buy.com/11165825.html

卓越网上的链接:http://www.amazon.cn/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E7%8E%8B%E8%BE%BE/dp/B00B0S7LDU/ref=sr_1_1?s=books&ie=UTF8&qid=1358153421&sr=1-1

互动出版网上的链接:http://www.china-pub.com/STATIC/zt_mb/zt_huodong_2013_3.asp?filename=2013_jsj_srwl_130124

互动出版网上本书正在进行“买一赠一”活动(25号截止),详情点击:http://www.china-pub.com/STATIC/zt_mb/zt_huodong_2013_3.asp?filename=2013_jsj_srwl_130124

你看得懂的CSMA介质访问控制原理相关推荐

  1. 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...

    本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...

  2. 【计算机网络】数据链路层 : 局域网基本概念 ( 局域网分类 | 拓扑结构 | 局域网特点 | 局域网传输介质 | 介质访问控制方法 | IEEE 802 | 链路层 LLC、MAC 控制子层 )

    文章目录 一. 局域网 二. 局域网 拓扑结构 三. 局域网 传输介质 四. 局域网 介质访问控制方法 五. 局域网 分类 六. IEEE 802 标准 六. 数据链路层 LLC.MAC 子层 一. ...

  3. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用

    学习目标 了解什么是开发环境 了解python语言的环境安装 了解python语言编程的编辑器工具 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然你选 ...

  4. php 设计模式系列,一看就懂系列之 php设计模式(一)-Go语言中文社区

    前言 一提到设计模式,很多人都是敬而远之,一方面由于设计模式有一点忽悠太理论的感觉,另一方面也会觉得设计模式有点难懂不知道该在什么场景下使用.一看就懂系列之php设计模式,主要解决两个问题: 1.用最 ...

  5. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  6. 3种局域网介质访问控制方法的比较

    3种局域网介质访问控制方法的工作原理及优缺点: 1.带有冲突检测的载波侦听多路访问方法: 工作原理:每一个节点发送数据前先侦听信道是否空闲 ,若空闲,则立即发送数据.若信道忙碌,则等待一段时间至信道中 ...

  7. Linux / Windows系统中安装最新版 ElasticSearch (es)搜索引擎 超详细图文教程【一看就懂】

    "You Know, for Search"  相信来到这里的朋友们已经对ElasticSearch(es)有了一个大致的了解.关于Elasticsearch的介绍就不在此做过多赘 ...

  8. 13个小众有趣的网站,只有程序员才看得懂

    欢迎来到程序员的世界,分享一些关于程序员的小众网站,不仅干货满满的实用类网站,也有一些有趣的娱乐网站,有些网站只有程序员才看得懂. 1.程序员音乐 地址:https://musicforprogram ...

  9. 一文带你了解Kafka【一看就懂】

    首先,这是一篇干货满满的文章,学海无涯,愿你拥有耐心. Kafka是什么? Apache Kafka是一个开源消息系统,由Scala和Java写成.是由Apache软件基金会开发的一个开源消息系统项目 ...

  10. 一看就懂的MySQL教程

    一看就懂的MySQL教程 一.安装 二.卸载 三.配置 1.MySQL服务启动 2.MySQL登录 3.MySQL 退出 四.SQL 1.什么是SQL 2.SQL通用语法 3.SQL分类 1)DDL ...

最新文章

  1. ‘百度杯’十月场web ---login
  2. 软件测试的准入准出是什么?标准是什么?
  3. C# winform treeview node添加右键菜单并选中节点
  4. C# 在PDF中绘制动态图章
  5. 计算机网络期末复习提纲
  6. linux centos/redhat mysql8.0安装(汇总贴)
  7. 有些生意很偏门,也有一定门槛,但是效益非常好
  8. Nginx + Tomcat6配置负载均衡
  9. spring-data-redis和jedis版本对应问题
  10. 哈工大学习笔记 | 图文并茂详解隐马尔可夫模型
  11. 让电脑只能上允许的QQ号
  12. noi.ac #529 神树的矩阵
  13. android 表情包
  14. 吊炸天的CNNs,这是我见过最详尽的图解!(下)
  15. 一元二次方程ax2+bx+c=0的解
  16. PL_SQL模块学习之十六、记录
  17. python与机械教育初探_python与机器学实践-何宇健 源代码及过程中遇到的问题
  18. 玩转「Wi-Fi」系列之测试工具(三)
  19. CSS 强制换行和禁止换行
  20. Python爬虫(一):简单小说爬取实例

热门文章

  1. paip.提升安全性------登录地区变换后进行验证
  2. Julia : DataFrame常见用法
  3. 王川: 重要的东西, 往往是看不见的
  4. Julia: 趣!,13579分别在一本168页书的页码中出现的次数
  5. 2019 年 Linux 架构师最新熬夜制作!
  6. 我和Linux,不得不说的故事
  7. 李扬:2018春节港澳游(上篇:行)
  8. 【心电信号】基于matlab Simulink胎儿心电信号提取【含Matlab源码 1550期】
  9. 【优化预测】基于matlab粒子群算法优化SVM回归预测(多输入多输出)【含Matlab源码 1421期】
  10. 【雷达通信】基于Matlab GUI中重频PD雷达仿真系统【含Matlab源码 1055期】