WLAN DTIM
DTIM
DTIM(Delivery Traffic Indication MAP)是一个给STA发送广播或者组播的机制,因为STA不发送组播因此DTIM只在AP中有用,DTIM仅在AP的Beacon中出现,Probe Presonse没有DTIM字段
DTIM字段的意义
- DTIM Count: 当前的DTIM值
- DTIM Period: 在AP中可以配置的DTIM周期
- Bitmap control Multicast: 如果为1表示AP缓存了广播数据,如果为0表示AP没有缓存广播数据
- 如图所示如果AP设置DTIM周期为10,则每个DTIM Count如下
- 9 8 7 6 8 4 3 2 1 0 9 8 7 6 5 4 3 2 1 .........
- 当DTIM Count为0表示当前的TIM是一个DTIM,此时所有已经连接的STA都要在这个Beacon下唤醒并检查Multicast标记确定AP是否有组播数据要发送
- 如果DTIM周期设置为1表示每一个beacon都是DTIM beacon,STA需要在每一个beacon中唤醒并检查multicastbit,这样做不利于省电。
DTIM例子
如上图,从192.168.1.10 ping 192.168.1.2
为了能发送广播,我们需要在192.168.1.10上执行arp -d删除arp缓存,然后ping 192.168.1.2
此时,AP会广播ARP request给已连接的STA,但是STA处于PowerSave,AP不能立即发送这个ARP request,因此当DTIM count为0时AP需要设置TIM的multicastbit为1,AP发送缓存的ARP request,当多播或者广播数据被发送后,AP在下一个beacon中设置TIM的multicastbit为0
需要注意的是广播和多播没有ACK,并使用最低基本速率进行发送。因此速率越低发送的越可靠数据传送的越远
如果AP同时缓存了广播和单播帧,优先发送广播,因为每一个已经连接的客户端都需要这个广播帧,这句话我不是很理解,理论上来说DTIM只用于广播,但是资料上是这么说的,先记录,在深究???
总结
- TIM用于单播,DTIM用于广播或者多播
- 每一个beacon中都有TIM信息元素,TIM的子字段含有DTIM相关字段
- 当TIM的DTIM count为0时表示这个TIM是一个DTIM
- 当一个AP在TIM信息元素中同时指示含有单播缓存和广播组播缓存时,广播优先发送
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律