wifi 分为MAC层和PHY层。

(纯属吓)

frames(MPDU)分为以下几个部分:

{MAC_HDR,  {PHY_HDR, PSDU}}, FCS。{PHY_HDR,MAC_HDR, MSDU,FCS}

MAC_HDR:  RA, TA, VHT/HT/HE, MU/SU GROUP ID,BSSID, LENGTH, AMPDU or MPDU flag, CIPHER_TYPE, defragement or not, duration, MANAGE/CONTROL/DATA timestamp,Frame control, Qos control, HT controlfield等非常重要的一种是mangement frame,它是没有data  field,但是它也有“数据”。

PHY_HDR: VHT/HT/HE/MU/SU有不同的格式,格式不统一, AMSDU or MSDU, PHY_MODE, LENGTH,PHY_RATE等。

MAC相应的sequences: 解析MAC_HDR, check LENGTH,

对应的caching机制: 使用一个RxPHY_FIFO,用来缓存数据, 256 depthx 64 bits.

再使用一个RxParseFIFO, 64 depth x 64 bits. 这个用来缓存相关的数据,等待被解包。需要缓存一个frame。

然后使用RxCache,这一部分是8196x64 bits。这一部分是因为DMA搬的比较慢,所以需要。

出来的数据有RxCache中的数据,以及RxCmdFIFO,还有Descriptor。

RxCmdFIFO是供MAC自己的DMA(Aribitor内)进行数据的搬移而用的。其包含Descriptor(此Descriptor和下面的Descriptor不是一样的),Buffer,这些buffer存储数据,MSDU,MPDU也可非常多样化的结构存储在buffer中也即包含了当前的buffer list的descriptor以及buffer。由于descriptor随着buffer的不断更新(数据包不断被解析)而同样被更新,因此,descriptor只会在最后整个PSDU被收完之后才是真正确定了的。其具有如下的结构:

MPDU以及MSDU的情况(都没有聚合):

Buffer HDR       PADDING   MAC HDR    msdu payload          TRAILER         FCS        Descriptor

AMSDU的情况:

Buffer0 HDR  PADDING  MAC HDR  sub-msdu payload   Descriptor

Buffer1 HDR  PADDING  MAC HDR  sub-msdu payload

Buffer2 HDR  PADDING  MAC HDR sub-msdu payload   TRAILER FCS

对于AMPDU的情况,由于buffer的排布是一种自链接的形式,那么,没有必要和AMSDU有区别。

相应的,对于MPDU以及MSDU的情况,应该都是可以做成和A系列完全类似的方式。

Descriptor是提供的和软件之间的接口。包含:AMSDU or MSDU, AMPDU or MPDU, BufferAddr。Next Buffer or next Descriptor. Last MSDU or not. 所有的数据存储都是由MAC自己来定义的。这样一种接口的好处是,减少了软件对数据调度的干预,尽可能的提高了效率。

杂谈:WiFi包和buffer相关推荐

  1. Linux使用tcpdump抓获取WIFI包

    Linux上常用的抓包工具有tcpdump,还有大名鼎鼎的wireshark(图形界面).它们都可以抓无线网络WIFI包.本文介绍用两者如何在Linux系统中抓包,假设系统已经正确安装无线网卡驱动,并 ...

  2. 用Wireshark或MNM捕获WIFI包

    实验环境: 在电脑上安装Wireshark或MNM  Windows系统  外置网卡 wireshark官网:Wireshark · Go Deep. MNM官网:Download Microsoft ...

  3. 如何读取抓取的wifi包内容

    有密码的WIFI,WIFI的密码会生成一个临时会话密钥,这个临时会话密钥可以用来加密会话内容,也就是说.比如你在浏览网页,用有密码的WIFI,连接上以后,浏览的网页流量是加密了的,所以更安全.无密码的 ...

  4. 抓wifi包工具linux,测试工具之在Ubuntu使用Wireshark抓无线数据包

    众所周知,在windowns下使用wireshark只能抓取有线数据包,要抓无线数据包只能用Omnipeek:而在Linux下,我们可以直接使用wireshark来抓取无线数据包 1. 安装wires ...

  5. 部署rtl88xx驱动/rpcapd,支持wireshark远程抓Wifi包

    Kali Linux仅在局域网内做渗透测试略显大材小用,或许搭载飞行器随风远距离渗透更能体现它的初衷(隐蔽性强,或许可以不留痕迹!).实现这个构想,需要解决一个核心问题:如何捕获远端局域网的网络流量? ...

  6. WiFi 包分析参考

    分段参考:https://www.jianshu.com/p/01cde9f9b5a5 Flag 标志: https://cloud.tencent.com/developer/article/210 ...

  7. 杂谈WiFi:一文搞懂多用户MIMO(MU-MIMO),单用户MIMO(SU-MIMO)

    这个是协议层面的一个东西,即多个用户同时使用一套MIMO系统. 一般来讲,ROUTER的天线比较多,而用户的天线比较少,但是多对少呢,就不能完全的利用ROUTER的channel资源. 为此,设计了一 ...

  8. Linux系统无线网络抓包程序(分析手机WIFI MAC地址)

    前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...

  9. 【论文学习】6、Wi-Fi中基于前导码的包检测:一种深度学习方法

    摘要 基于ieee802.11标准系列的无线网络系统是最流行的使用先听后说(LBT)方法进行信道接入的无线接口,在非接触频段中工作.大多数基于LBT的系统的显著特征是,发射机使用数据之前的前导码来允许 ...

最新文章

  1. vb.net中的-String类
  2. 阿里云oss上传图片
  3. 在Kubernetes上部署和管理PostgreSQL
  4. NTFS文件加密初探
  5. c#.net利用RNGCryptoServiceProvider产生任意范围强随机数的办法
  6. MySQL常用SQL总结
  7. docker 安装portainer、gogs、redis、mongodb、es、rabbitmq、mysql、jenkins、harbor
  8. Median of Two Sorted Arrays@LeetCode
  9. 如何监测系统用户是否登录_网站建设教程:PageAdmin Cms如何获取用户登录状态...
  10. Qt 点击任意子控件,背景选中 选中背景
  11. shiro框架java使用
  12. 交叉编译工具arm-linux-gccarm-elf-gcc下载地址全集
  13. 高频PCB设计设计技巧简述
  14. HPB钱包与中间件接口
  15. 软件测试面试题之非技术面试(GZH:软件测试大本营)
  16. D:\eclipse-workspace\.metadata\.plugins\org.eclipse.core.resources\.projects
  17. Oracle 聚合实现小计、合计 (GROUP BY ROLLUP)
  18. 《英雄联盟》——召唤师峡谷模式 游戏设计元素分析
  19. 直播带货平台开发,实现小程序直播页面
  20. 【日常计算机问题】解决能使用网络但打不开网页的问题

热门文章

  1. mac卸载软件怎么卸载干净?详细方法教程分享
  2. C语言C Prime总结(2-7章)
  3. 爬取今日头条街拍美女图片
  4. Faceboxes pytorch代码解读(一) box_utils.py(上篇)
  5. SylixOS 技术简介
  6. 怎么禁止恢复微信聊天记录?学会这几招以备不时之需
  7. 自动巡检机器人故障检测系统
  8. 给中国学生的第七封信:21世纪最需要的7种人才(李开复)
  9. ​关于百度网盘扩容的一点经验分享2022
  10. 如何低成本测试云原生(K8s)应用?