简介这份PDF实验报告面向计算机网络与无线通信方向的学生及自学者围绕802.11协议帧格式展开抓包分析适合作为无线网络课程的配套实践材料。资源共1个PDF文件压缩包约537KB内容完整呈现实验目的、环境搭建、抓包步骤与结果分析。报告基于Ubuntu系统与Wireshark工具逐位解析了数据帧、RTS控制帧与信标管理帧的帧控制字段涵盖To DS、From DS、retry、powermgt、protected等标志位含义并强调大端模式下的阅读顺序。读者可借此掌握MAC层帧结构、地址字段与CRC校验的对应关系理解无线通信中信道占用与帧序列处理机制。目前已有400人学习适合需要完成同类实验或巩固802.11协议细节的读者参考。1. 无线局域网抓包实验从帧格式到排障一份能直接复现的实战路径很多人第一次做无线局域网抓包实验打开 Wireshark 选好网卡看到的却是一堆 Beacon 帧和看不懂的十六进制抓了半天不知道抓到了什么。问题不在工具在于没有先搞清楚 802.11 帧格式和抓包网卡的工作模式。这个实验的核心目标就三件事让网卡进入监听模式、过滤出你关心的帧类型、把帧结构逐字段读明白。适合正在做课程实验的通信/网络方向学生也适合需要排查 Wi-Fi 连接问题的运维工程师。读完你应该能独立完成一次完整的抓包、过滤、解码和问题定位而不是对着满屏数据发呆。2. 802.11 帧格式拆解抓包前必须搞清楚的字段结构2.1 帧控制字段决定这个帧能不能被你抓到802.11 帧的起点是 2 字节的 Frame Control 字段它决定了帧的类型管理帧/控制帧/数据帧、子类型Beacon/Probe Request/ACK 等以及各种标志位。抓包实验里最常打交道的三个子类型是Beacon0x08、Probe Request0x04、Data0x20。如果你在 Wireshark 里看到Type/Subtype: Beacon frame (0x0008)说明你抓到了一个 AP 周期性广播的管理帧。Frame Control 里有一个关键标志位叫 To DS 和 From DS这两个 bit 的组合决定了帧的地址字段怎么解读。四种组合对应四种地址布局To DSFrom DSAddress 1Address 2Address 3典型场景00目的地址源地址BSSID管理帧、Ad-hoc01目的地址BSSID源地址AP 下发给终端10BSSID源地址目的地址终端发给 AP11接收端发送端目的地址WDS 桥接这个表建议打印出来贴在显示器旁边。抓包时看到地址字段对不上先查 To DS / From DS 的组合十有八九是这里理解错了。2.2 管理帧、控制帧、数据帧抓包实验里各自看什么管理帧负责网络的发现和维护Beacon 帧里携带了 SSID、支持的速率、信道等参数。做实验时如果抓不到任何 Beacon大概率是网卡没进入监听模式或者信道设错了。控制帧RTS/CTS/ACK通常很短但在分析吞吐量和冲突时非常关键。数据帧才是承载上层 payload 的部分也是分析 TCP/UDP 性能时真正要看的。一个常见的误区是以为随便一块网卡就能抓到所有帧。实际上普通网卡在 managed 模式下只能收到发给自己的单播帧和广播帧Beacon 能看到但 Probe Request 基本抓不到。要抓全必须用支持 monitor 模式的网卡。2.3 抓包网卡选型哪些芯片能进监听模式不是所有无线网卡都支持 monitor 模式。根据实际使用经验以下几类芯片在 Linux 下支持较好Atheros AR9271老牌选手驱动ath9k_htc成熟即插即用Realtek RTL8812AU / RTL8814AU需要编译第三方驱动但双频支持好Intel AX210新一代网卡iwlwifi驱动在较新内核下支持 monitor 模式但部分固件版本有坑Ralink RT3070 / RT5370便宜好用驱动rt2800usb稳定选网卡的原则很简单先查芯片型号再查 Linux 内核版本对应的驱动支持情况。不要买回来才发现驱动编译不过这是血泪经验。3. 用 Wireshark 在本地跑通一次完整的无线抓包3.1 环境准备Linux 下配置监听模式以下操作在 Ubuntu 22.04 Atheros AR9271 上验证通过。其他发行版和网卡需要微调接口名。# 查看无线网卡接口名 iw dev # 假设接口名为 wlan0先关闭该接口 sudo ip link set wlan0 down # 切换为 monitor 模式 sudo iw dev wlan0 set type monitor # 重新启用接口 sudo ip link set wlan0 up # 确认模式已切换 iw dev wlan0 info | grep type # 输出应为: type monitor # 设置监听信道比如信道 6 sudo iw dev wlan0 set channel 6逻辑说明iw dev列出所有无线接口确认你的外置网卡对应的接口名。ip link set down是必须的不关接口直接切模式会报Device or resource busy。set channel 6决定了你监听的频段2.4GHz 的 1/6/11 是互不重叠信道实验时优先选这三个。参数说明如果你的网卡支持双频可以用iw phy phy0 info查看支持的信道列表。5GHz 信道用set channel 36这种写法。注意 monitor 模式下网卡不能同时连接 AP所以做实验时要么用有线网卡上网要么提前把需要的文档下好。3.2 Wireshark 抓包配置过滤器怎么写才不漏帧打开 Wireshark选择wlan0接口你会看到大量 802.11 帧。不加过滤的话几秒钟就能刷出上万条。以下是几个实用的显示过滤器# 只看 Beacon 帧 wlan.fc.type_subtype 0x08 # 只看 Probe Request终端主动扫描 wlan.fc.type_subtype 0x04 # 只看某个 SSID 相关的帧 wlan.ssid MyNetwork # 只看数据帧 wlan.fc.type 2 # 排除掉 Beacon 和 ACK减少噪音 !(wlan.fc.type_subtype 0x08) !(wlan.fc.type_subtype 0x1d)逻辑说明wlan.fc.type_subtype是最常用的过滤字段它把类型和子类型合并成一个值。0x08 是 Beacon0x04 是 Probe Request0x1d 是 ACK。wlan.ssid可以直接按网络名过滤但注意这个字段只在包含 SSID 信息的帧里存在。参数说明如果你要抓特定终端的数据可以用wlan.addr xx:xx:xx:xx:xx:xx过滤 MAC 地址。抓包时建议先不加过滤抓一段时间后再用显示过滤器筛选避免捕获过滤器写错导致漏帧。3.3 帧解码实战从一个 Beacon 帧读出 AP 的全部信息在 Wireshark 里点开一个 Beacon 帧展开 IEEE 802.11 wireless LAN 部分你会看到以下结构Frame Control: 0x0080 (Beacon) Duration: 0 Destination address: ff:ff:ff:ff:ff:ff (Broadcast) Source address: xx:xx:xx:xx:xx:xx (AP 的 BSSID) BSS Id: xx:xx:xx:xx:xx:xx Fragment number: 0 Sequence number: 1234 Frame check sequence: 0x12345678再往下展开 Tagged parameters能看到 SSID、Supported Rates、DS Parameter set当前信道、TIM 等信息。DS Parameter set 里的 channel 字段告诉你这个 AP 在哪个信道做实验时可以用来验证你的网卡是否调到了正确信道。一个容易忽略的点Beacon 帧的 Sequence number 是递增的如果你发现同一个 BSSID 的 Beacon 序列号跳变很大说明中间丢帧了可能是信道拥挤或者网卡性能不够。4. 无线抓包避坑5 个让实验翻车的典型问题4.1 抓不到任何帧Wireshark 接口列表里也没有 wlan0现象打开 Wireshark 看不到无线接口或者看到了但抓不到包。原因网卡驱动没加载或者网卡被 NetworkManager 接管了。Linux 下 NetworkManager 会默认把无线接口设为 managed 模式并且不允许其他程序直接操作。解决先sudo systemctl stop NetworkManager再执行监听模式切换。如果接口列表里完全没有 wlan0用dmesg | grep -i wifi或lsusb确认系统是否识别到了网卡硬件。USB 网卡换一个 USB 口试试有些口供电不足会导致网卡反复掉线。4.2 能抓到 Beacon 但抓不到 Probe Request现象过滤器设了wlan.fc.type_subtype 0x04但一条都看不到。原因Probe Request 是终端发给 AP 的如果你的网卡和终端不在同一信道或者终端已经连上了 AP 不再主动扫描就抓不到。解决确认网卡信道和终端一致。用手机打开 Wi-Fi 设置页面手机会主动发 Probe Request。如果还是抓不到检查网卡是否真的在 monitor 模式——iw dev wlan0 info的输出里 type 必须是 monitor有些网卡切了模式但实际还在 managed。4.3 Wireshark 里看到的帧全是 802.11 但解不出上层协议现象数据帧展开后看不到 TCP/UDP只有 802.11 头部和一堆 raw data。原因Wireshark 默认不会自动解密 WPA/WPA2 加密的数据帧。如果你的实验网络启用了加密数据帧的 payload 是密文。解决在 Wireshark 的 Preferences → Protocols → IEEE 802.11 里填入 WPA 密钥PSK 或 PMK格式是wpa-pwd:你的密码:SSID。注意这个功能只对 WPA/WPA2-PSK 有效WPA3 和 802.1X 企业认证不支持。如果实验环境允许最省事的做法是开一个开放网络或者 WEP 网络仅限实验环境。4.4 抓包文件巨大Wireshark 卡死现象抓了 10 分钟pcap 文件好几个 GWireshark 打开就无响应。原因monitor 模式下网卡会抓到所有能收到的帧包括大量无关的 Beacon 和广播数据。解决用捕获过滤器Capture Filter在抓包阶段就限制范围。比如wlan type mgt subtype beacon只抓 Beaconwlan host xx:xx:xx:xx:xx:xx只抓特定 MAC。捕获过滤器用的是 BPF 语法和显示过滤器不一样写之前查一下语法。另外可以设置 Wireshark 的 ring buffer每 100MB 自动切文件避免单个文件过大。4.5 在虚拟机上做实验网卡无法进入监听模式现象VMware/VirtualBox 里 USB 网卡直通后iw dev看不到接口或者切换模式报错。原因虚拟机对 USB 网卡的直通支持有限尤其是需要切换工作模式的网卡。部分驱动在虚拟化环境下无法正常加载固件。解决优先在物理机 Linux 上做这个实验。如果只能用虚拟机试试把 USB 控制器版本设为 USB 3.0并且在虚拟机设置里勾选“显示所有 USB 设备”。实在不行用一台旧笔记本装 Ubuntu 做实验机比在虚拟机上折腾省时间。5. 进阶技巧用 tshark 批量分析抓包文件5.1 命令行提取关键字段Wireshark 的图形界面适合逐帧分析但如果你抓了几十个文件需要批量处理tshark 更高效。以下命令提取所有 Beacon 帧的 SSID、BSSID 和信道tshark -r capture.pcap -Y wlan.fc.type_subtype 0x08 \ -T fields \ -e wlan.ssid \ -e wlan.bssid \ -e wlan.ds.current_channel \ -E separator, \ -E headery beacon_list.csv逻辑说明-r指定输入文件-Y是显示过滤器和 Wireshark 里写的一样-T fields表示按字段输出-e指定要提取的字段名。-E separator,设置 CSV 分隔符-E headery输出表头。参数说明wlan.ds.current_channel这个字段只在包含 DS Parameter set 的帧里存在如果某个 Beacon 没有这个字段输出会是空值。你可以用-E occurrencef只输出第一个匹配值避免多值字段导致 CSV 错位。5.2 统计每个信道的帧数量想知道哪个信道最拥挤可以用 tshark 的统计功能tshark -r capture.pcap -q -z io,stat,1,COUNT(frame)frame这个命令按秒统计帧数量。如果要按信道分组需要先提取信道字段再配合 awk 处理tshark -r capture.pcap -Y wlan.fc.type_subtype 0x08 \ -T fields -e wlan.ds.current_channel | \ sort | uniq -c | sort -rn输出会显示每个信道上有多少个 Beacon数量最多的信道通常是最拥挤的。做无线实验时选一个 Beacon 数量少的信道能减少干扰。5.3 用 Python pyshark 做自动化分析如果你需要更复杂的分析逻辑pyshark 可以直接在 Python 里调用 tshark 的解析能力import pyshark # 打开抓包文件只加载 802.11 相关层 cap pyshark.FileCapture(capture.pcap, display_filterwlan.fc.type_subtype 0x08) ssid_list [] for pkt in cap: try: ssid pkt.wlan.ssid bssid pkt.wlan.bssid channel pkt.wlan.ds_current_channel ssid_list.append((ssid, bssid, channel)) except AttributeError: # 某些 Beacon 帧可能缺少 SSID 或信道字段 continue cap.close() # 去重后打印 unique_aps set(ssid_list) for ssid, bssid, ch in sorted(unique_aps): print(fSSID: {ssid}, BSSID: {bssid}, Channel: {ch})逻辑说明display_filter参数在 pyshark 里对应 Wireshark 的显示过滤器能大幅减少解析量。pkt.wlan.ssid直接访问解析后的字段比手动解析十六进制方便得多。AttributeError捕获是因为部分 Beacon 帧可能没有 SSID 字段比如隐藏网络。参数说明pyshark 需要系统已安装 tshark并且版本匹配。如果报TSharkNotFoundException检查tshark --version是否能正常运行。Python 2.7 下 pyshark 的兼容性较差建议用 Python 3.8 以上。另外注意wlan.ds_current_channel这个字段名在不同版本的 tshark 里可能有变化用tshark -G fields | grep channel查一下实际字段名。5.4 一个我常用的排查习惯每次抓完包我会先用capinfos capture.pcap看一眼文件的基本统计抓了多长时间、多少帧、平均速率。如果发现帧速率异常高比如超过 5000 帧/秒说明信道非常拥挤或者有异常设备在发广播风暴。这时候我会先换个信道重新抓而不是急着分析内容。这个习惯帮我省了很多时间——数据本身有问题的时候分析工具再强也没用。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
tick-stock-panel价格提醒教程:3步设置高低价突破监控与盘中弹窗 tick-stock-panel价格提醒教程:3步设置高低价突破监控与盘中弹窗 【免费下载链接】tick-stock-panel TSP自托管、零运维的 A 股「选股 监控 回测」量化工作台 | LLM能力驱使策略定制个股分析复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源 项目地址: … · 2026/9/27 5:46:32
避坑指南:WordPress标题字数实战案例拆解 避坑指南:WordPress标题字数实战案例拆解 做网站最怕什么?不是代码报错,而是辛辛苦苦搭好的站,打开一看,标题乱码、截断,或者长到让人想关掉页面。很多独立站长第一反应是:赶紧换个好看的模板。但实话实说, 模板网站太丑不够用… · 2026/9/27 5:46:20
FaceNet+PyQt考勤系统:CPU实时人脸识别与SQLite持久化 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:23:42
嵌入式寄存器可视化调试:裸机开发效率革命 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:23:36
LTC6752高速比较器实战:从过零检测到PCB布局的完整设计指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:23:29
GROUNDHOG总体版 1. 这篇论文到底想解决什么问题GROUNDHOG 想解决的是:让 MLLM 的语言能够精确对应到像素区域以前很多 grounded MLLM,比如 Shikra、Kosmos-2,主要把语言和 bounding box 对齐:但 box 很粗,尤其不适合:不规则… · 2026/9/27 6:23:10
网站主题说明怎么写性能优化 不会代码?图解步骤教你写好网站主题说明 自己不会代码想做网站,最怕的不是写不出页面,而是不知道该怎么跟外包团队、或者未来的维护者解释清楚“我要什么”。很多新手朋友拿着一个模糊的想法,比如“我要个大气的官网”,结果做出来的东西跟想象差了十万八… · 2026/9/27 6:23:10
冰雪重制版正版官方客户端下载指引,忆往游戏正规安全渠道指南 《冰雪重制版》由安徽游昕网络科技有限公司联合忆往游戏平台负责运营,是经过正版授权打造的冰雪传奇怀旧手游。现阶段游戏依托专属官方主站面向全网正式开放,高度复刻冰雪端游原版内容,坚持绿色公平长久的运营模式,还原端游时期经… · 2026/9/27 6:23:04
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01