WiFi深入理解(十):802.11b length

 

在最开始的wifi,也就是802.11b中,LENGTH是指的时间,按us单位的,但是后来的协议都把这个改了,改成字节数单位了。

说实话,802.11b的这个真的是操蛋的设计。为什么这么说,PHY不知道要接多少长度的数据,除非从时间再算一遍。这就显得很多余。

后面的所有协议因为都是字节单位,为了兼容802.11b,就需要在这两个东西之间转换。

让我们看看两者之间如何转换的。

发送端,确定字节数 -> 计算时间

接收端,接收时间    -> 计算字节数。

看着还好,不过,这是基于软件的思维。对硬件来讲就不一样了。为了避免使用浮点计算,其实使用整数的计算,也是够难为的了。而为什么不使用软件来计算?在802.11b,1999的这个年代,哪里来的软件来算这个?设备里面没得处理器的。

所以实际的情况是这么样的。

发送端, 确定字节数 -> 整数计算 -> 往上取整

接收端,接收时间    -> 整数计算  -> 向下取整

大概是这么个样子

由于存在取整偏差,如果偏差在接收端回算的过程中被放大超过1个整点,那么回算出来的长度值就是不准确的。

比如速率是11m, 那么发送端的伸缩因子是8/11, 接收端的伸缩因子是11/8,由于回算因子大于1,那么取整偏差将被放大,可能超过1个整点。

偏差大于8/11就会发生这种情况。

おすすめ

転載: blog.csdn.net/reekyli/article/details/112004101