• 802.11 对于multicast 和 broadcast的处理


    ethernet内部会有broadcast 和 multicast。这两种包都是一个STA向多个STA发包。

    当没有wifi存在的时候,LAN口之间的broadcast 和 multicast是可靠转发的,但是若有wifi存在就不一样了。

    电源考量

    根据协议,broadcast和multicast在DTIM的时候AP会发送给STA。DTIM在AP中的设置一般是一倍的TIM。

    当DTIM增加的时候,会更加省电,因为出于PS模式下的STA醒来的次数变少了。但是这也会导致某些应用的延时加大。

    DTIM减少的时候,会更加费电。

    稳定性

    broadcast 和 multicast都是使用基本速率发送的。多次测试可以看到,它们是用11Mbps的CCK rate发送。

    当然这只是AP发出的broadcast和multicast的设定,从STA发出的包还是以正常的速率来。

    一般来说,这两种包是没有ACK保护的,也就是说会丢包。

    对于Ethernet来说,这两种包基本上不会丢,因为Ethernet比较稳定。但是wifi层面存在很多干扰,导致

    丢包严重。

    802.11透明转发

    802.11对于BC/MC包的处理,可以理解为对ethernet是透明的。

    当WiFi Client发送BC/MC包的时候,AP会对这个包进行转发,下面是流程:

    1.STA以正常速率发出QoS data给AP,RA和TA分别是STA和AP的地址,SA是STA的地址,DA是BC/MC地址。使用pairwise key加密

    2.AP以基本速率发出DATA,RA是BC/MC地址,TA是AP的地址,SA是STA的地址,DA是BC/MC地址,SA是STA的地址。使用group key加密。

    注意到,对于BC/MC的包,都是进过加密的,一般都是CCMP加密。无线Client需要用group来解析收到的包,802.11也是提供了很好的安全性。

    对于两端的STA,将802.11包转换成Ethernet包之后,802.11层次的东西就不可见了,唯一的区别是无线AP的LAN口之间的BC/MC包不容易丢,

    但是LAN和wireless,wireless和wireless之间的BC/MC包容易丢弃。当然了,从wireless STA到LAN口的包应该不容易丢,因为之间传输的是unicast的Qos data,有ACK保护。

    其他

    在编程中会涉及到IP地址和MAC地址的转换,实际上IP地址填写完之后,协议栈会帮你转换成MAC地址。

    在这点上802.11和Ethernet是没什么区别的,因为这是IP layer和MAC Layer接口处的考量。

    测试工具推荐这个(开源的):

  • 相关阅读:
    启动redis时报错:FATAL CONFIG FILE ERROR :Bad directive or wrong number of arguments
    转载Redis的三个框架:Jedis,Redisson,Lettuce
    转载Dubbo详解(一):Dubbo介绍和SpringBoot整合Dubbo+ZooKeeper
    Redisson如何实现类似incr的自增操作
    转载解决 com.alibaba.fastjson.JSONException: autoType is not support.
    转载springboot+mybatis实现数据库的读写分离
    转载dubbo服务被重复调用三次的原因
    js中实现函数防抖跟函数节流
    网站项目后台的目录命名为admin后,网页莫名其妙的变样了
    createreactapp不支持less的解决方式
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4573742.html
Copyright © 2020-2023  润新知