Wireshark 是一个网络协议分析工具,也常被称为“网络抓包工具”。它能捕获经过你电脑网卡的网络数据包,并以人类可读的方式显示出来,看到每一层协议(从以太网、IP、TCP 到 HTTP、DNS、TLS 等)的详细内容。

常用功能
1、抓包(Packet Capture)
Wireshark可以监听网卡上的数据流量,捕获每一个进出本机或网络接口的包。
2、协议解析(Protocol Dissection)
它能自动识别上百种网络协议(TCP、UDP、HTTP、DNS、TLS、SSH、QUIC、Bluetooth等),并以层级结构展示每层的字段和值。
3、分析与过滤
可以用过滤表达式(Display Filter)查看特定类型的数据包,例如:
http.request
ip.addr == 192.168.1.10
tcp.port == 443
4、故障排查
网络工程师常用它来找出网络慢、连接超时、丢包、重传等问题的原因。
5、安全分析
安全研究人员用它分析攻击行为、恶意通信、数据泄露,甚至逆向某些协议。
安装Wireshark
前往官网(https://www.wireshark.org/),下载macOS的应用版本。

安装时,macOS用户需要授权Wireshark访问“网络接口”的权限。
Wireshark界面
1、启动面板
打开Wireshark,显示Wireshark的“捕获(Capture)”启动面板,选择哪个网络接口抓包,使用什么捕获过滤器。

1、捕获过滤器(Capture Filter)
在抓包前配置,会在内核/驱动层面只捕获满足条件的数据包,从而减少磁盘和内存开销。
常用捕获过滤器:
1)host 192.168.1.100 — 只抓与该 IP 有关的包。
2)port 53 — 只抓 DNS(端口 53)。
3)tcp port 80 or tcp port 443 — 抓 HTTP/HTTPS 的 TCP 包(注意 HTTPS 内容被加密)。
2、接口列表
例如 Wi-Fi: en0 / Loopback: lo0 / en3 / bridge0 / awdl0 / utunX 等,每一行是一个可以抓包的接口,括号里是系统名(macOS 常见 en0、en1):
1)en0 / en1 / en3:以太网或 Wi-Fi 的网络接口(通常 en0 是内置 Wi-Fi)。
2)lo0:回环接口(本机 localhost 流量)。抓本机进程间通信用它。
3)utun0 … utun9:VPN 隧道接口(比如你连了 VPN,这些是虚拟网卡)。
4)awdl0:Apple Wireless Direct Link(AirDrop / AirPlay 的点对点无线)。
更多接口信息,请见扩展文章《Wireshark接口列表》。
2、主界面

Wireshark主界面分为三块:
1、Packet List(数据包列表):所有捕获到的包,每一行一个。
2、Packet Details(包详情):选中一个包后,显示分层的协议结构。
3、Packet Bytes(原始字节):显示包的二进制/十六进制数据。
主界面顶部还有工具栏和过滤栏:工具栏管理捕获进程,启动、暂停、清空等按钮;在工具栏和数据包列表中间的是过滤栏,可以在这里输入过滤条件。
3、工具栏

1、Start capturing packets(绿色鲨鱼鳍图标):启动抓包,当开始抓包后会变成红色方块(Stop);
2、Stop capturing packets(红色方块):停止当前抓包,停止后仍然可以分析当前的数据包;
3、Restart current capture(绿色循环箭头):停止当前抓包并立即重新开始新的抓包。旧的数据不会自动保存,如果没有保存,之前抓取的数据包就会丢失;
4、Open capture file(文件夹图标):打开一个已经保存的 .pcap 或 .pcapng 文件。相当于“File → Open”;
5、Save capture file(软盘图标):保存当前抓到的数据包到文件。相当于“File → Save As…”;
6、Close this capture file(软盘删除图标):关闭当前捕获的数据包,返回主界面。旧的数据不会自动保存,如果没有保存,之前抓取的数据包就会丢失;
7、Reload this file(软件刷新图标):重新加载当前数据包文件,如果编辑或其他工具修改了 .pcap文件,这个刷新可以看到变化;
8、Find a Packet(放大镜图标):打开“查找”窗口,根据条件(比如字符串、字段、字节序列、显示过滤器)搜索数据包。例如搜索字符串:GET(查找 HTTP 请求);
9、Go to the Previous Packet(向上箭头)/ Go to the NextPacket(向下箭头):跳到上/下一个数据包(按当前选中包顺序);
10、Go to the Specified Packet(带文章的箭头):打开一个窗口,让你输入包编号,比如输入“500”,直接跳到第 500 个包;
11、Go to the First Packet(向上箭头)/Go to the Last Packet(向下箭头):快速跳转到第一个/最后一个包,滚动到顶/底部;
12、Automatically scroll to the last packet during a live capture(文章底部箭头):实时抓包时自动滚动到底部,关闭后,可以静态浏览旧数据,不被新包打断;
13、Draw packets using your coloring rules(彩色文章):按配色规则显示数据包。Wireshark 会根据协议类型(如 TCP、UDP、ARP、DNS 等)用不同颜色高亮。关闭后,所有行变成单一颜色;
14、Enlarge the Main Window Text/Shrink the Main Window Text(放大镜放大/缩小):放大/缩小主窗口字体;
15、Return the Main Window to Normal Size(放大镜等号):主窗口字体恢复到默认大小;
16、Resize Packet List columns to fit contents(两个分栏):自动调整数据包列表的比例;
17、Reset layout to default size(数字123):自动调整各分栏的比例。
抓包流程
1、开始抓包
1、打开Wireshark。
2、选择一个网络接口例如抓取Wi-Fi的数据包。双击接口列表中的Wi-Fi: en0接口。
3、进入后,Wireshark会开始捕获电脑所有进出该网卡的数据包。

2、使用过滤器
Wireshark可能会抓取成千上万的数据,所以需要进行过滤。

常见过滤语句(在顶部输入):
1、仅看 HTTP 请求:
http.request
2、仅看某个 IP:
ip.addr == 192.168.1.10
3、仅看 TCP:
tcp
4、仅看特定端口:
tcp.port == 443
5、看两个条件:
ip.src == 10.0.0.5 && tcp.port == 80
输入后按回车,马上显示筛选结果。
3、数据包列表
在Wireshark列表中,可以看到捕获的数据包列表。

1、No.:捕获数据包的顺序列表(从1开始)。不是网络里的序号,而是抓包的序号;
2、Time:数据包被捕获的世界,默认是相对于第一个包的时间差(秒)。可以改成绝对时间、UTC等格式。

3、Source:源地址。根据协议层不同,可能是源IP地址、源Mac地址。
4、Destination:目的地址,根据协议层不同,可能是目的IP地址、目的Mac地址。

5、Protocol:数据包使用的上层协议,如TCP、UDP、HTTP、DNS、SSDP、TLS、ARP 等。
6、Length:整个帧(frame)的长度,单位是字节(bytes)。
7、Info:Wireshark提取人类可读信息,比如请求方法、端口、状态等。
4、分析数据包
选择任意一行数据,可以看到网络数据包(packet)被逐层解析的“洋葱结构”。

1、Frame(帧):抓包信息、时间戳、长度、接口等原数据;
2、Ethernet(以太网层):源Mac、目标Mac、协议类型(0×0800表示IPv4);
3、IP层(Internet Protocol):源 IP、目标 IP、TTL、标志位、校验和等;
4、传输层(TCP或UDP):源端口、目标端口、序号、ACK号、标志位(SYN、ACK、FIN…);
5、应用层(HTTP、DNS、TLS、SSDP等):请求内容、头字段、域名、加密握手信息等等。
详细的层级信息,请见扩展文章《Wireshark数据包结构解析》。
5、原始字节
在原始字节层,可以看到一堆十六进制(Hex)的区域,这是数据包的原始二进制内容,即网络上实际传输的字节。

左边是偏移地址(offset),中间是十六进制字节,右边是 Wireshark 自动转成 ASCII 的内容。
点击数据包的字段,可以看到原始字节部分高亮对应的字节范围。
例如,点击Ethernet II的源IP地址字段(c6:8f:b0:78:32:e5),对应数据包的字段为 c6 8f b0 78 32 e5。

数据包和原始字节的关系,可以理解为数据包中的字节是Wireshark解码后的结构化信息,原始字节就是实际的原始数据,两者互相对应。

6、保存与回放
抓包完成后点击红色方块“停止”。

点击顶部菜单栏 File → Save As…(或快捷键 ⌘S / Ctrl+S)。
在弹出的窗口中,输入文件名并选择文件类型,文件类型建议选择默认的Wireshark/… – pcapng,点击Save保存。
Wireshark 会把当前抓到的所有数据包(包括包头、包体、时间戳、网络层信息等)全部保存到这个文件。
如果只保存部分数据(过滤导出),则在过滤器中输入过滤条件,如http.request。

点击菜单栏中的File → Export Specified Packets…,在弹窗中选择:
“All packets”表示当前过滤的数据包条目;
“Selected packets only”表示只保存过滤后选中的数据包条目,这里只选中了一条数据包。

此外,还有其他的导出格式:
1、File → Export Packet Dissections → As Plain Text…,导出可读的文本报告;
2、File → Export Packet Dissections → As CSV…,导出为表格数据(适合分析);
3、File → Export Objects → HTTP… / SMB… / DICOM…,导出传输的文件(如网页、图片、视频等)。
如果抓的是 HTTP 流量,可以用 “Export Objects → HTTP”,Wireshark 会列出所有传输的文件,点击即可保存成真实文件。
提示:.pcap 是老格式,只能保存单接口单流;.pcapng 是新格式,支持多接口、注释和更丰富的元数据。
保存的文件可以重新导入 Wireshark 打开,就能看到完全相同的分析界面。
注意事项
1、Wireshark报错:you do not have permission to capture on device “en0”.

这个报错表示,Wireshark 需要访问系统的 BPF(Berkeley Packet Filter)设备来捕获网络数据包,而这个 /dev/bpf0 是 macOS 的“网卡监听接口”。默认情况下,普通用户没有权限直接访问它。
解决方案:Wireshark 自带了一个叫 ChmodBPF 的工具,用来设置正确的权限。
点击“installing ChmodBPF”,根据安装包安装应用。

安装完成后,Wireshark会自动设置一项后台服务,让macOS在启动时为 /dev/bpf* 设备赋予正确的访问权限。
2、隐私/合规风险
Wireshark 抓取网卡接口的数据包,在普通场景下,Wireshark可以抓取自己电脑的通信,比如自己访问的网站、调用API等信息,这些属于“自我通信”,完全合法、安全。

Wireshark还支持“混杂模式”(Promiscuous Mode),可以让网卡接收所有经过它的数据包,而不只有发给自己的数据包。

在普通家用 Wi-Fi 网络中,这通常抓不到别人包(因为无线网络加密隔离)。
但在未加密或有线局域网中,如果网络交换机、Hub、或 ARP 欺骗允许,就可能看到他人的数据流。
在公司或学校网络中,通信内容可能包含他人电脑、同事、内部服务器。
通过抓包工具可以轻易获取未加密通信的信息:登录凭证、内部接口地址、公司机密数据。
在这种网络上抓包(即使是“测试”),如果未经授权,可能违反公司安全政策甚至法律。
在法律层面,“抓包”意味着拦截通信内容。在多数国家,这种行为涉及《通信隐私保护法》《计算机信息系统安全条例》等,存在“法律风险”。
总结
Wireshark作为一个经典的网络协议分析工具,可以捕获电脑网卡的网络数据包。
在原始字节部分,需要理解ASCII码,不理解这块内容,建议阅读《ASCII 与 Unicode: 计算机语言的进化史》。
如果尝试捕获其他设备的数据包,就会存在一定的法律风险,建议在合规的情况下使用。
参考文章
1、How to fix BPF device permissions on Mac OS to use tcpdump:https://stackoverflow.com/questions/57614760/how-to-fix-bpf-device-permissions-on-mac-os-to-use-tcpdump
2、Wireshark数据包结构解析:https://fangjunyu.com/2025/10/18/wireshark%e6%95%b0%e6%8d%ae%e5%8c%85%e7%bb%93%e6%9e%84%e8%a7%a3%e6%9e%90/
3、Wireshark接口列表:https://fangjunyu.com/2025/10/18/wireshark%e6%8e%a5%e5%8f%a3%e5%88%97%e8%a1%a8/
4、ASCII 与 Unicode: 计算机语言的进化史:https://fangjunyu.com/2025/08/21/ascii-%e4%b8%8e-unicode-%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%af%ad%e8%a8%80%e7%9a%84%e8%bf%9b%e5%8c%96%e5%8f%b2/