然后有三个ESP8266的模组,通过802.11n的方式连接至家用路由器,并正常通过DHCP分得自己的IP地址。
三个ESP8266模组通过SDK编程进行UDP监听,且工作在Station模式下。
然后笔记本电脑编写一个上位机程序,对上述提到的三个ESP8266模组所在的WiFi网络进行广播发包,广播地址是192.168.1.255,并且在ESP8266模组上运行的程序中,只简单的统计接收到的广播包而不进行回复(为了避免占用正在全速广播的AP信道从而造成拥堵)。
然而根据我所查阅到的802.11的MAC层的资料显示,工作在Station模式下的工作站ESP8266模组,在MAC层处理上,是不会回应广播包的,换话句说,正常情况下如果ESP8266在收到信号道上的单播包时,是会回应一个ACK帧的,而如果收到的是广播包,就不回应了。
也就是说,正常情况下,只要在MAC层以上(UDP和TCP这里),当AP在发广播包的时候,假设周围环境对信道干扰较小(我这边就是这样),那么,ESP8266是不会因为发送数据而抢占信道的。
这个时候,我的上位机软件通过AP每秒钟广播500个大小为1452字节(按照MTU值设定的)的包,也就是500*1452约等于708K字节的有效数据的话,三个ESP8266都可以正常接收到这些包才对,因为是广播嘛!
然而在实际上测试发现,这三个ESP8266是共同抢占和共享这个带宽的,也就是说,这三个ESP8266通过串口观察发现,他们三个动态的接收速率,加起来的总速率就等于只有一个ESP8266在工作的时候的速率,因此我推测它们是在共享这个带宽的,这点只是我推测,并不肯定。
如果我的推测是对的,那么我再推测造成这点的原因是因为在AP广播的过程中,三个ESP8266都试着去抢占信道,从而造成没法正常的只是做一个默默接收的美男子模块,然而这点是和802.11 MAC层所规定的有冲突!
所以我的问题是,为什么会这样呢?我的推断错了吗?如果断了,请问是错在了哪里呢?请高手指点一下?感激不尽!Statistics: Posted by vbhome — Fri Nov 20, 2015 11:01 am
]]>