在数据链路层种分两个子层:介质访问控制层(MAC)和逻辑链路控制层(LLC). LLC 层是给高层提供接口并执行流量控制和差错控制的,MAC层主要负责寻址,差错检测以及介质访问控制。LLC层在上,MAC在下。流量控制,差错控制在我之前的博客中都已经讲过了,有兴趣的可以查看一下,那么什么是介质访问控制呢?介质访问控制是指将传输介质带宽有效分配给网上各站点用户的方法。
如上图,我们知道在有线局域网中多个主机共享一个线路,这叫做复用。那么所有主机都可以在任何时间访问这条线路吗?显然是不能的。在任意时间里面,都只能有至多一个主机访问这个线路,否则会造成冲突,错帧。这就涉及到了竞争,什么时候一个用户才能抓到线路的使用权。
我认为对于这类的竞争信道,对于任何一个主机,应该重点考虑三个问题:第一,什么时候我可以访问信道?这涉及到访问时机的问题。第二是冲突的检测。因为冲突是很难避免的,必须有必要措施能检测到冲突,这对于进一步处理这个冲突是必要的。第三是冲突处理。冲突之后应该怎么去处理这个冲突?这都是协议应该考虑的问题。
所以ALOHA协议应用而生。ALOHA协议是以70年代夏威夷通信系统为雏形,当时夏威夷大学的研究人员希望把偏僻岛屿上面的用户连接到檀香山的主计算机上面,但是就会产生上面说的那种冲突。于是他们设计了一个ALOHA系统,也就是现在ALOHA协议的模型。
ALOHA协议可以分成两种:纯ALOHA协议和分槽ALOHA协议。
1.纯ALOHA协议的思想是: 不按照时间槽发送,不监听信道,随机重发。
纯ALOHA协议如上图所示:对于任何一个主机,发送之前是不监听信道的。也就是说,在任何一个主机发送消息之前,他并不会管自己和别人共享的这条信道上面有没有别人在发送,想发就直接发。第二,它的发送是不按照时间槽的。什么是时间槽?时间槽是在分槽ALOHA协议用到的概念,就是把信道使用分散到每个单位时间上,只有在每个时间槽开始的时候,才可以发送,时间槽内其他的时间不允许发送。在上面的图中,两个虚线之间就是一个时间槽,能看到它并不按照每个时间槽开始的时候发送,而是随机发送,也就是纯ALOHA协议不按照时间槽发送。第三就是随机重发。何为随机重发?当发送的时候发现冲突了,那么认为这个帧无效了,所以停止发送。随机等一段时间,再进行重发,这也就是随机重发。
纯ALOHA协议的信道效率非常差,因为大家想发送就发送,那么肯定会有大量冲突,冲突之后再重发,再次浪费的几率也很大......具体来分析一下效率的话:假设所有主机都是一个标准长度,每个单位时间产生K次传输,并且服从泊松分布,平均为G帧/单位时间。假设一个帧的发送成功的概率为P0,那么平均的吞吐量为S= G *P0。对于任何一个帧,不产生冲突的概率是在它发送的瞬间t0时刻,在(t0-单位时间,t0+单位时间)里面没有其他帧传输。
没有其他帧传输,也就是泊松分布中k=0的情况,在两个单位时间内,均值为2G,所以在两个单位时间内,产生k帧的概率为:
那么k=0不产生冲突的概率:
所以S=G *P0 = G *e^(-2G). 求导可得最大值为S=0.184,信道利用率才18%多一点。信道利用率这么差,所以想到了改进办法,分槽ALOHA协议。
2.分槽ALOHA协议:在每个时间槽开始的时候发送,发送的同时检测冲突,如果发生冲突,那么在下一个时间槽重新发送。
在分槽ALOHA协议中最重要的改进就是分槽。每个帧的时间长度要小于一个时间槽的长度,这样一旦冲突,退后到下一个时间槽就可以了。其他的和纯ALOHA协议几乎是一样的。它的信道利用率明显变高,原因是冲突变成了只有在一个时间槽内发生,那么期望从2G变成了G.所以在单个时间槽内不发生冲突的概率从e^(-2G)变成了 e^(-G)。所以S=G *P0 = G *e^(-G). 求导可得最大值为S=0.368,信道利用率提升到37%。
使用分槽ALOHA的关键是必须分槽,在每个时间槽的开始那一瞬间才可以发送。这也就意味这所有用户必须同步,时间槽同步,这也是分槽ALOHA的难点。但是它的优点就是信道的利用率高了,是原来纯ALOHA协议的两倍。
那么还可以从哪些方面减少冲突,提升利用率呢?我们是不是可以在发送之前先听一下信道,如果忙就先不发送呢?以及,如果发送之后发现冲突,能不能把随即后退编程后退成一个不至于大家再次发送会再冲突的协议呢?这就是实际中在MAC层我们使用的大名鼎鼎的CSMA/CD协议,它的思想就是基于ALOHA协议的思想发展而来的,所以想了解CSMA一定要先了解ALOHA协议。
有关CSMA,CSMA/CD协议我博客也有具体的文章来解释他们,以及他们和CSMA/CA对的区别,欢迎大家来指正!
延伸阅读
802.11的CSMA/CA机制
载波监听多路访问CSMA以及CSMA/CD详解 
802.11隐藏节点以及RTS/CTS机制

介质访问控制MAC以及ALOHA协议相关推荐

  1. 王道考研 计算机网络12 点对点链路 广播式链路 介质访问控制MAC 动态分配信道 ALOHA协议 CSMA CSMA/CD CSMA/CA协议

    传输数据使用的两种链路 广播式链路: 传输的信息会传到所有的主机上 介质访问控制 动态分配信道-ALOHA协议 1.纯ALOHA协议: 2.时隙ALOHA协议 总结: 动态分配信道-CSMA协议 ca ...

  2. 计算机网络学习笔记(五)——介质访问控制子层、ALOHA、CSMA/CD、CSMA/CA、有限竞争协议、非竞争式协议、网桥、交换机、以太网

    文章目录 前言 概念 一.介质访问控制子层和广播式信道 二.多路信道分配 三.竞争式访问协议 (一)ALOHA及时隙ALOHA(S-ALOHA)协议 (二)CSMA协议 (三)CSMA/CD协议 (四 ...

  3. 计算机网络——数据链路层介质访问控制

    文章目录 前言 一.介质访问控制概述 二.信道划分介质访问控制 1.频分多路复用(FDM) 2.时分多路复用(TDM) 3.波分多路复用(WDM) 4.码分多路复用(CDM) 三.随机访问介质访问控制 ...

  4. 信道划分介质访问控制ALOHA协议CSMA协议CSMA/CD协议轮询访问MAC协议

    注:最后有面试挑战,看看自己掌握了吗 文章目录 传输数据两种链路 点对点链路 广播式链路 介质访问控制 静态划分信道 动态划分信道 轮询访问介质访问控制 随机访问介质访问控制---所有用户都可以随机发 ...

  5. 【计算机网络】数据链路层 : 轮询访问 介质访问控制 ( 轮询协议 | 令牌传递协议 )

    文章目录 一. 介质访问控制 ( Multiple Access Control ) 二. 轮询协议 三.令牌传递协议 四.令牌传递协议 示例 一. 介质访问控制 ( Multiple Access ...

  6. WIFI系列协议--802.11i--介质访问控制(MAC)安全性增强

    WIFI系列协议--802.11i--介质访问控制MAC安全性增强 1.定义 2.缩写和首字母缩写 3.概述 3.1 架构的一般描述 3.1.1 与其他IEEE 802层的交互 3.1.2 与非IEE ...

  7. 【计算机网络】数据链路层(三)—— 介质访问控制

    [计算机网络]数据链路层(三)-- 介质访问控制 一.什么是介质访问控制 二.静态划分信道 (一)信道划分介质访问控制 1. 频分多路复用(FDM) 2. 时分多路复用(TDM) 3. 波分多路复用( ...

  8. 《计算机网络》第4章 介质访问控制子层

    1.  介质访问控制子层的作用 数据通信方式 单播(unicast) 广播(broadcast) 组播(multicast) 广播网络面临的问题:可能两个(或更多)站点同时请求占用信道,解决方法就是介 ...

  9. 数据链路层介质访问控制——信道划分、随机访问和轮询访问

    介质访问控制 介质访问控制是数据链路层的子层,通过采取一定的措施,使共享信道的节点之间通信不会发生相互干扰.常用的介质访问控制方法有:信道划分介质访问控制.随机访问介质访问控制和轮询访问介质访问控制. ...

最新文章

  1. 想做网络推广浅析网站优化中标题该如何设置?
  2. InnoDB Master Thread I/O Rate详解
  3. 使用identity+jwt保护你的webapi(三)——refresh token
  4. 六种方式实现hibernate查询
  5. ISV客户博客系列:iVoteSports通过Windows Azure扩展它的面向棒球的移动游戏应用程序...
  6. 电商场景下,如何处理消费过程中的重复消息?
  7. oracle权限不足的报错,Oracle Scott创建视图权限不足解决办法
  8. 【分布式ID】键高并发 分布式 全局唯一 ID 雪花算法 snowflake
  9. 关于esp32的省电模式的WiFi连接
  10. silverlight小结
  11. namenode 优化 mv慢的问题
  12. 解决canvas合成图片大小错误、模糊以及跨域的问题
  13. python常用代码大全-python代码大全
  14. Activeperl安装教程
  15. 蒙特卡洛模拟(求圆周率)
  16. 搭建微商城平台,新商云提供源码部署只需3分钟
  17. STM32 USB Mass Storage 例程调试笔记
  18. 珍藏汇总:19个超赞无版权免费图片素材库
  19. 制作后台首页详细步骤
  20. python range 小数_python中如何表示一个无限循环小数?(不用分数的形式)python,使用range语...

热门文章

  1. Nginx 源码分析
  2. 你长得真帅,咱俩生个孩子吧
  3. 【每日刷题】P1010 幂次方题解
  4. com.ning.http.client 替换
  5. HDU 4416 (后缀自动机)
  6. 美团2021校招笔试-编程题-第10场
  7. win10修改系统时间(2038,2050)重启后桌面一直刷新
  8. kicad最小布线宽度默认是多少_CABLExpress发布了最新的光纤布线最佳实践指南
  9. Misc简单题目分享-CTF
  10. MySQL 10060错误 解决方法