从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)

CSMA/CA是写入IEEE802.11的无线网络MAC层标准协议,相信看到这篇文章的读者都知道它是用来做什么的。但许多短文对这个协议的解释都有所缺乏,因此本文用状态转换图的形式详细说明协议的工作流程。(好吧其实是作者看到一个状态图有感而发,见参考资料)

 

请看下面的状态转换图:

 

 

其中,CS=1(0)意味着载波被占用(可用),Q=1表示队列中有(无)待发送的帧(frame)。感兴趣的读者可以自行推断上述状态代表什么。

好了,首先说明,CS=1还是CS=0是怎么判断呢?有时是通过侦听载波,有时是通过RTS/CTS机制,虽然图中并未说明。下面沿着状态图简述CSMA/CA工作流程:

  (初始状态为I, 节点有待发的帧,于是开始侦听载波)

  I:idle,发送方侦听到信道忙,则转到D,否则转到T。

  D:defer,若信道忙,等待一段时间后,若信道空闲,转到B。

  T:transmit,若信道可用,等待一个DCF之后发送一个RTS。若收到的CTS中包含自己的地址,说明预约信道成功,开始传输数据帧。传输过程中遇到出错,则转到B,进入退避过程;遇到信道被占用时转到D。

  B:backoff,即CSMA/CA的退避机制,用于处理传输出错的情况。出错一般只由两种情况导致,即冲突(collision)和信道噪声(carrier noise)。退避时,从{1, 3, 7, 15, ... 2^m-1}中选择一个时间进行延时。

   

    退避过程:DCF在退避状态下有一个竞争窗口机制,如果一次传输成功了,发送端需要将竞争窗口置为最小值(802.11中规定contention window最小为31)。对于重传的节点,每一次传输失败都将contention window的大小成倍放大,即第一次重传时窗口大小为63,第二次是127,直到达到重传次数上限,则作丢包处理。竞争窗口越小,越有利于竞争。

    另附MAC层中自私行为的实现:

  1,增大CCA threshold。

          CCA (空闲信道评估,Clear Channel Assessment)用于监测信道是否空闲。节点监测信道中的RSSI并于阈值进行比较,若超出阈值则认为信道忙,否则信道可用。自私节点通过增大这一阈值,使得自身对于信道是否可用不敏感,因此在信道忙的时候仍然发包,导致其他节点的传输收到干扰。这种行为属于暴力自私行为,因为在干扰下自私节点自身的包也会丢失。

  2,减小backoff time,即选择小甚至最小的CW。

          通过选择最小的CW,自私节点在传输出错的时候总是先于冲突节点发包,从而导致不公平性。篡改backoff time的自私行为是最难以解决的问题之一。

 

参考资料:Utpal Paul, Passive Measurement of Interference in WiFi Networks with Application in Misbehavior Detection[J], TMC, 2013.

 

转载于:https://www.cnblogs.com/zhchngzng/p/3376626.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

年度迷惑新闻:美女其实是个男生?

1 南方人为什么不喜欢冬天(素材来源网络,侵删)▼2 老板果然是有两把刷子(素材来源网络,侵删)▼3 干大事者必是单身狗?(素材来源网络,侵删)▼4 把狗子的铁饭…

The import com.sun.tools cannot be resolved

2019独角兽企业重金招聘Python工程师标准>>> 这是因为在myeclipse中,有自带的jar包;儿导入eclipse中,用的是自己安装的jre,tool.jar包是在JDK中,不是在jre中,所以window-》preferrence-》java-》installed …

Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示

无论是做PC端还是android端,每次注册都有发送短信之后,60秒每隔一秒递减显示,如下图 这个地方需要注意的是按钮变灰色之后不能再点击,然后就是android更新UI,需要用handle,或者其它post方式,关键代码如下 /*** 显示时间在梯减的文本框*/public void showTime() {new T…

AgileConfig-1.5.5 发布 - 支持 JSON 编辑模式

本次更新加入了2个新的编辑模式:JSON 编辑模式、TEXT 编辑模式。特别是 JSON 编辑模式是大家比较期待的一个功能。因为大家都习惯了 appsettings.json 的配置编辑模式,所以天生的喜欢 JSON 视图。有了 JSON 编辑模式后,大家就可以直接把原来的…

桩筏有限元中的弹性板计算_永清县打桩机租赁钢板桩租赁怎么联系?

永清县打桩机租赁钢板桩租赁怎么联系?选择专业(产品)震宇建筑工程有限公司震宇钢板桩工程有限公司是一家专业拉森钢板桩工程施工的公司,注册资金1000万,专注钢板桩工程施工20年年经验,经过多年发展,目前震宇钢板桩在广…

(c语言)二叉树中序线索(数据结构十七)

1.数据类型定义在代码中为了清楚的表示一些错误和函数运行状态&#xff0c;我们预先定义一些变量来表示这些状态。在head.h头文件中有如下定义&#xff1a; //定义数据结构中要用到的一些变量和类型 #ifndef HEAD_H #define HEAD_H#include <stdio.h> #include <mallo…

如果让我做一回产品经理。。。

2019独角兽企业重金招聘Python工程师标准>>> 不给外行老板打工&#xff0c;除非自己是合伙人 玩法、题材、货币化模式上&#xff0c;至少要有一个有创新 不做中国市场&#xff0c;至少不优先做 杜绝团队内部吵架 团队优于产品&#xff0c;即使对于创业公司也是这样 …

有文化能有多可怕?

全世界只有3.14 % 的人关注了爆炸吧知识知乎上有个高赞问题&#xff1a;有哪些值得长期坚持下去就能改变人生的好习惯&#xff1f;其中最高频的回答是读书。随着经历和阅历的增加&#xff0c;越来越多的人清醒的认识到&#xff1a;读书不再是学生时代的事&#xff0c;而是一生的…

Android之mvp和mvc对比分析以及实际应用

转载地址&#xff1a;http://frodoking.github.io/2015/02/01/android-mvc-mvp-analysis/ 为了解决逻辑处理和UI视图的松散耦合&#xff0c;MVC和MVP的架构模式在很多App中使用比较广泛。 那什么是MVP呢&#xff1f;它又和我们常常听到的MVC有什么关系了以及区别呢&#xff1f;…

一切为了孩子——一位IT麻麻的新西兰移民记录

Lina是CITA上个月一期meetup的主讲人&#xff0c;介绍了她自己的移民经历、求职经验和工作心得。因为反响很热烈&#xff0c;所以特意记录整理成文字稿&#xff0c;由于分享的时间比较长&#xff0c;所以会分为两篇文章。考虑到叙事的完整性&#xff0c;本文在Lina会上分享的基…

关于java连接sqlserver2000 和sqlserver2005的初识

2019独角兽企业重金招聘Python工程师标准>>> sqlserver2000 的连接&#xff1a; java程序可用Microsoft的JDBC驱动连接sqlserver2000&#xff08;但微软的JDBC驱动并不能很好的支持java语言&#xff0c;在连接sqlserver2000时&#xff0c;一不小心就会出一些bug&am…

厕所里的善良之举!

1 下手超狠&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 别随便嘲笑人家&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 跆拳道最高境界&#xff08;via.跃大大跃&#xff09;▼4 真正的工具人▼5 爸妈的24岁和你的24岁▼6 哦吼&#xff0c;是牛顿…

Android之View基础总结(View的事件体系一)

什么是View View是所有Android中所有控件的基类,不管是Button TextView还是复杂的RelativeLayout和ListView,它们呢的共同基类都是View,View是一种界面层的控件的一种抽象,ViewGroup包含了许多控件,它也继承View,比如自定义TestButton是一个View,它继承了TextView,而TextVi…

.NET 6新特性试用 | 常量内插字符串

前言编写代码时&#xff0c;我们常常需要组合字符串。如下代码&#xff1a;string scheme "https"; string host "xxx.com"; int port 8080;Console.WriteLine(string.Format("{0}://{1}:{2}", scheme, host, port));但是&#xff0c;这种替换…

华夫饼为什么不松软_掌握这2个关键点,5个小细节,3个小技巧,保证烙饼松软又好吃...

烙饼有很多种&#xff0c;比如油饼&#xff0c;发面饼&#xff0c;馅饼&#xff0c;千层饼&#xff0c;单饼&#xff0c;但好吃的饼大都有一个共同点&#xff1a;松软&#xff0c;或者外酥内软。一张又干又硬的饼是无论如何都与好吃搭不上边的。一年里我家做得最多的面食大概就…

php curl_init函数用法

2019独角兽企业重金招聘Python工程师标准>>> 使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本&#xff0c;然后分析一下你所抓取的网 页&#xff0c;然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据&#xff0c;或是…

计算机能不能直接识别汇编语言程序,计算机能直接识别执行用汇编语言编写的程序吗...

不能。用汇编语言编写的程序&#xff0c;计算机是不能直接识别和执行的&#xff1b;必须先把汇编语言源程序翻译成机器语言程序(即目标程序)&#xff0c;然后才能被执行。当目标程序被安置在内存的预定位置上后&#xff0c;就能被计算机的CPU处理和执行。本教程操作环境&#x…

二 ASP.NET AutoPostBack

当把Web控件的AutoPostBack属性设置为True时&#xff0c;自动回送功能被开启&#xff0c;ASP.NET使用客户端的 JavaScript来连接客户端和服务器端的代码。创建一个Web控件属性包含AutoPostBack为True属性时&#xff0c;ASP.NET在呈现的HTML页面上添加一个名为_doPostBack()的Ja…

恐龙的丁丁长什么样?它们是怎么啪啪啪的?这项研究网友看完直呼涨姿势.........

全世界只有3.14 % 的人关注了爆炸吧知识地球霸主的私生活也藏不住了昨天下午&#xff0c;超模君码字码得累了&#xff0c;决定放松一下&#xff0c;重温一下经典的《侏罗纪公园》。当看到恐龙在平原上成群奔跑的画面时&#xff0c;超模君又一次感受到和童年时相同的震撼。可就在…

当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?

对于开发和运维人员来说, 监控大屏很棒, 让我们来做一个 Dashboard 吧&#xff01;大家可能听说过一些 CLI 诊断工具&#xff0c; 比如 dotnet-counters&#xff0c;dotnet-dump 和 dotnet-trace, 那 dotnet-monitor 又是什么呢&#xff1f;简单理解就是把上面的几种诊断工具进…