当前位置: 首页 > news >正文

无线网络中的MAC协议(1)

前文我们对传统的有线网络的MAC协议进行了分析,接下来我们在对无线网络的MAC也进行一个详细的介绍。那么无线网络中的MAC工作方式是如何的呢?无线局域网(WLAN)中MAC所对应的标准为IEEE 802.11,IEEE 802.11 MAC综合了两种工作方式: 分布控制(DCF)和中心控制(PCF)两种工作方式:

1.分布控制方式(DCF),类似CDMA/CD,利用载波监听机制,适用于分布式网络,传输具有突发性和随机性的普通分组数据, 支持无竞争型实时业务及竞争型非实时业务。

2.中心控制方式(PCF),建立在DCF工作方式之上并且仅支持竞争型非实时业务,适用于具备中央控制器的网络。

分布控制方式(DCF)

DCF机制是MAC协议层中最基本的媒体接入控制机制。DCF机制基于CSMA/CA(CSMA/Collision Avoidance载波监听多址接入/碰撞避免) , 并以RTS/CTS消息交换机制作为辅助的介质访问方式。

CSMA/CA协议

CSMA作为随机竞争类MAC协议,算法简单而且性能丰富,所以在实际局域网的使用中得到了广泛的应用。但是在无线局域网中,由于无线传输媒体固有的特性及移动性的影响,无线局域网的MAC在差错控制、解决隐藏终端等方面存在应有别于有线局域网。因此WLAN与有线局域网所采用的CSMA具备一定的差异。WLAN采用CSMA/CA(CSMA/Collision Avoidance)协议,其与CSMA/CD最大的不同点在于其采取避免冲突工作方式。

与CSMA/CD不同,WLAN媒体访问控制(MAC)层采用的CSMA/CA(CSMA/Collision Avoidance)协议,由于在RF传输网络中冲突检测比较困难,所以该协议用避免冲突检测代替802.3协议使用的冲突检测,采用冲突避免机制尽量减小冲突碰撞发生的概率,以提高网络吞吐性能与迟延性能。协议使用信道空闲评估(CCA)算法来决定信道是否空闲,通过测试天线能量和决定接收信号强度RSSI来完成。并且使用RTS、CTS和ACK帧减少冲突。数据加密与普通局域网的等同加密(WEP)算法一样,使用64位密钥和RC4加密算法。

CSMA/CA工作过程:        
  
当发射端希望发送数据时,首先检测介质是否空闲,若是介质为空闲时,送出RTS(Request To Send请求发送),RTS信号包括发射端的地址、接收端的地址、下一笔数据将持续发送的时间等信息,接收端收到RTS信号后,将响应短信号CTS(Clear To Send),CTS信号上也RTS内记录的持续发送的时间,当发射端收到CTS包后,随即开始发送数据包,接收端收到数据包后,将以包内的CRC(Cyclic Redundancy Check,循环冗余校验)的数值来检验包数据是否正确,若是检验结果正确时,接收端将响应ACK包,告知发射端数据已经被成功地接收。当发射端没有收到接收端的ACK包时,将认为包在传输过程中丢失,而一直重新发送包。

CSMA/CA与CSMA/CD的区别

1.载波检测方式:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。

2.信道利用率比较:CSMA/CS协议信道利用率低于CSMA/CD协议信道利用率。但是由于无线传输的特性,在无线局域网不能采用有线局域网的CSMA/CD协议。信道利用率受传输距离和空旷程度的影响,当距离远或者有障碍物影响时会存在隐藏终端问题,降低信道利用率。

转载于:https://www.cnblogs.com/Ph-one/p/6512329.html

相关文章:

  • 网络技术标准与协议
  • 浅谈 Linux 内核开发之网络设备驱动
  • gnss到底是什么呢
  • 北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?
  • 人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完....
  • GPS格式标准
  • Linux的SOCKET编程详解
  • 怎样拨打韩国国际长途电话
  • adb获取Android系统属性(adb shell getprop ***)数据来源
  • GPS常见故障
  • c语言基本函数
  • Linux下添加新硬盘,分区及挂载
  • break 和 continue
  • alsa和oss声音系统比较
  • 对soc-audio体系snd_soc_machine和snd_soc_dai_link简单理解
  • 深入了解以太坊
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 07.Android之多媒体问题
  • CentOS从零开始部署Nodejs项目
  • cookie和session
  • css的样式优先级
  • export和import的用法总结
  • JavaScript 一些 DOM 的知识点
  • Java比较器对数组,集合排序
  • k8s 面向应用开发者的基础命令
  • ng6--错误信息小结(持续更新)
  • Objective-C 中关联引用的概念
  • SegmentFault 2015 Top Rank
  • web标准化(下)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于组件的设计工作流与界面抽象
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端知识点整理(待续)
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 中文输入法与React文本输入框的问题与解决方案
  • ​插件化DPI在商用WIFI中的价值
  • # 安徽锐锋科技IDMS系统简介
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #HarmonyOS:Web组件的使用
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十六)一篇文章学会Java的常用API
  • (转)shell调试方法
  • (转)编辑寄语:因为爱心,所以美丽
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /etc/shadow字段详解
  • /etc/sudoers (root权限管理)
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ C++ ] STL_list 使用及其模拟实现