资讯动态

Wireshark零基础抓包实战:从安装、过滤器到看懂TCP三次握手

发布时间:2026/10/21 16:18:14 来源:尧图企业网站定制
Wireshark 这个名字很多零基础的朋友一听就觉得是“黑客专属工具”——启动后满屏滚动的协议列表密密麻麻的十六进制字节好像只有搞安全的大佬才配用。其实真不是这样。我接触这工具十多年它对我最大的价值一直不是炫技而是“给网络拍X光片”网页打不开的时候看看请求到底卡在哪一步接口互通不了的时候看看报文里到底传了什么学 TCP/IP 的时候把三次握手、四次挥手实实在在看一遍。这篇文章我不讲抓包原理的深水区也不扯协议栈的底层实现就聚焦在零基础最需要的那几个基础用法上安装、选网卡、看懂界面、写过滤器、抓三次包、看一条完整请求。你不需要任何前置知识只要电脑能联网按这篇文章从头到尾操作一遍我跟你保证半小时以内你会发现自己突然能“看见”网络了。1. 先把工具装对别在第一步就埋坑Wireshark 的安装本身很简单但很多新手上来就栽在“抓不到包”上其实十有八九不是工具不行而是安装环节少勾了一个东西或者驱动没装对。1.1 为什么必须要装 Npcap 驱动先说原理。Wireshark 本身只是一个“读数据的壳”真正从网卡底层把数据包捞上来的是 Npcap 驱动。你可以把网卡想象成一个小区门卫平时只把快递送到你们家门口发给本机的数据而 Npcap 就是跟门卫打好招呼的那个“特殊通行证”能让门卫把进出小区的所有包裹都让你过目一遍。没有这个驱动Wireshark 界面能打开但一按开始抓包就是一片空白或者只有一堆看不懂的广播包。在 Windows 上安装 Wireshark 时最后一步会弹出“Install Npcap”的勾选界面默认是打勾的。如果电脑里已经装了旧版 WinPcap安装器通常会提示卸载或替换我建议直接选 Npcap兼容性更好。1.2 安装步骤与权限常识安装过程我用一句话总结就是“一路下一步”但有几个细节要留意到官网下载安装包时选 Windows x64 Installer64 位或者 macOS 对应版本。安装路径用默认的就行不要放到中文目录有些老版本对中文路径处理不太好容易出奇怪问题。安装时弹出的 Npcap 选项里“Support raw 802.11 traffic”这类高级选项不用勾那是给专业抓 Wi-Fi 管理帧用的零基础阶段用不上勾了反而会增加理解负担。安装完成后第一次启动 WiresharkWindows 会弹 UAC 权限提示务必点“允许”。抓包必须要管理员权限否则驱动无法访问网卡。提示如果你是在 macOS 上操作首次打开 Wireshark 可能需要到系统设置里允许它加载内核扩展这一步不通用的花招很少按系统提示操作即可。我见过不少“零基础抓包失败”的案例最后排查了半天就是安装时把 Npcap 取消了。所以安装完先做个自我检查打开命令行输入npcap --version或者打开系统服务列表看 Npcap 服务是否在运行。这一步确认了后面能省很多事。2. 读懂主界面第一眼就不慌第一次打开 Wireshark看到那个主界面大家都会有点懵顶部一堆图标中间是网卡列表双击网卡进去之后哗啦啦开始滚包。别慌我们把它拆成几个功能块来看每个功能块只记一个核心任务。2.1 五块面板各管什么事Wireshark 的窗口从上到下可以分成五块区域标题栏与菜单栏日常用到最多的是 Capture捕获和 File文件。Capture 用来开始/停止抓包File 用来保存和打开抓包文件。主工具栏一排图标。核心就记住三个——第一个“鲨鱼鳍”图标是开始抓包旁边一个“方块”图标是停止抓包再旁边一个“重启”图标是重新抓。其余图标都是导出、查找、显示时间格式之类的辅助功能零基础阶段不用管。过滤器工具栏一个绿色的输入框写着“Apply a display filter”。这是你之后最常待的地方在框里输入http就能只留下 HTTP 流量输入dns就只看到 DNS 报文。这一块的语法后面第三章专门讲。封包列表面板Packet List整个界面最显眼的那张大表格每一行就是一个网络数据包。列分别是序号、时间、源地址、目的地址、协议、长度、信息。封包详情面板Packet Details点击列表里任意一个包下半部分就会展示这个包的“解剖图”一层层展开从最底层的网卡帧到 IP 层再到 TCP/UDP 层最上面是应用层数据。Wireshark 的核心用法其实就是在这个面板里“看分层”。字节面板Packet Bytes最下面那块十六进制区域展示的是数据包的原始字节左边是十六进制数值右边是对应的 ASCII 字符。排错时偶尔用到基础阶段能看懂个大概就行。2.2 怎么选择网卡开始抓包启动后看到的网卡列表那一堆名字看起来吓人其实它只是在问“你想监听哪块物理网卡”。如果你用的是有线网络就选名字里带“Ethernet”的那个如果你用的是 Wi-Fi就选名字里带“WLAN”或者“Wi-Fi”的那个。双击选中的网卡立刻就开始抓包了。你会看到封包列表里疯狂滚数据——别紧张这是正常现象。你电脑后台有大量软件在联网微信、浏览器、系统更新各种协议刷屏很正常。再点工具栏上的“方块”图标停止抓包数据就冻结住了。这时候你可以滚动查看也可以开始加过滤器筛选。注意Wireshark 默认开启“混杂模式Promiscuous Mode”意思是网卡会把经过它的所有数据帧都收进来而不是只收发给本机的。但在交换机网络里你其实只能看到三类流量发给本机的、本机发出去的、广播报文。所以如果你在公司或学校网络里想抓“别人电脑的流量”大概率是抓不到的这不是 Wireshark 不行是交换机隔离了。别在这个问题上浪费太多时间。3. 过滤器必须学透不然就是看天书很多人抓完包看着几千行报文不知道从哪看起。这时候就需要过滤器上场了。Wireshark 里有两种过滤器名称长得很像作用却完全不同新手最容易把这两个概念混在一起。3.1 抓包过滤器和显示过滤器别搞反抓包过滤器Capture Filter在点击开始抓包之前设置它决定“哪些包才被记录下来”。语法是 BPFBerkeley Packet Filter风格比较古老比如host 192.168.1.1、port 80。它的好处是节省资源适合在流量巨大的生产环境中只记录你关心的数据。坏处是语法生硬写错一个单词就一脸懵。显示过滤器Display Filter在已经抓完的封包列表上操作它决定“哪些包显示出来”。语法是 Wireshark 自定义的更人性化比如ip.addr 192.168.1.1、tcp.port 80。打错了输入框会变红非常友好。这是零基础阶段最常用、也最该先学会的过滤器。我用一个生活化类比帮大家记住抓包过滤器等于你去超市前跟收银员说“我只买牛奶”收银员只帮你把牛奶扫码显示过滤器等于你买了一购物车东西回家后从里面挑出牛奶放在桌上。前者是入场前筛选后者是入场后检索。3.2 最常用的显示过滤器语法与示例显示过滤器的核心就是“字段 操作符 值”的组合配合逻辑运算符串联多个条件。下面这些是零基础到进阶都高频使用的表达式直接抄作业就行ip.addr 192.168.1.100 // 只看本机或某台设备产生的流量 tcp.port 80 // 只看 TCP 80 端口HTTP 明文流量 udp.port 53 // 只看 DNS 查询 http // 只看 HTTP 协议报文 dns // 只看 DNS 协议报文 tcp.flags.syn 1 // 只看 SYN 包TCP 握手的第一步 tcp.flags.reset 1 // 只看 RST 重置包连接异常时很关键 ip.src 192.168.1.10 // 只看源地址为某 IP 的包 ip.dst 192.168.1.10 // 只看目的地址为某 IP 的包 http.request.method GET // 只看 HTTP GET 请求多个条件组合用and、or排除用nothttp and ip.addr 192.168.1.10 tcp.port 443 and not ip.addr 192.168.1.20新手经常写错的地方有两个。一是把ip.addr跟ip.src、ip.dst混用。ip.addr 192.168.1.10的意思是“源地址或目的地址只要有一个是它就算匹配”而ip.src和ip.dst分别管单方向。如果你只想抓本机发出去的数据应该用ip.src 你的IP。二是比较运算符的写法Wireshark 里既支持也支持eq既支持!也支持ne但千万别用成单个那会报语法错误。3.3 过滤器输入框的红色提示是个好老师这是我自己用了很久才养成的一个习惯看到输入框变红不要急着删掉重打先悬停在红框上看它给出的提示。Wireshark 的提示其实很贴心比如你写了tcp.poret 80拼错它会告诉你“poret is not a valid protocol field name”。此时你再想想正确的字段名是什么慢慢就记住了一堆协议字段。这个“犯错-看提示-改对”的过程比看十遍教程都记得牢。我建议所有新手都去故意打几个错误表达式感受一下提示逻辑这是零基础阶段最快上手过滤器的方式。提示抓包过滤器BPF里port 80前面不用写tcp.因为port本身就指传输层端口。但显示过滤器里就得写全tcp.port 80。混用这两个语法是新手最容易懵的点我当年也为此疑惑了很久。4. 四次实操把最基础的用法彻底吃透前面全是铺垫这一章是重点。你把下面这四个实操跟着做一遍Wireshark 的基础用法就算真正上手了。我建议按顺序来每一个都只花几分钟。4.1 第一次抓包看 DNS 查询长什么样打开 Wireshark选择你的 Wi-Fi 网卡然后在显示过滤器里输入dns回车。这时候先别急着操作打开浏览器访问一个网站比如你平时常用的新闻站点。在 Wireshark 窗口里你会看到列表中出现几行Standard query和Standard query response的记录。点开任意一条查询记录注意看 Packet Details 面板Domain Name System (query)这一层能看到Transaction ID、Queries里写的域名。你访问了一个网站系统首先会去问 DNS 服务器“这个域名对应的 IP 是什么”这就是Standard query。往下展开Flags能看到0x0100 Standard query后面的位代表是否递归请求、是否截断等。这些细节零基础不用全懂但你要建立起一个概念每一次上网第一步几乎都是 DNS 解析。这个实操的意义在于让你亲身体会“域名解析”到底是怎么发生的。以后你遇到“网页打不开但微信能聊”这种典型问题你会下意识想到是不是 DNS 解析失败了4.2 第二次抓包看懂 HTTP 请求与响应把过滤器改成http回车清空原有显示。然后在浏览器地址栏里输入一个明确走 HTTP 协议的网址——国内很多老的局域网设备管理后台或者某些不支持 HTTPS 的测试站点地址栏里通常就是http://开头。如果实在没有你可以在自己的电脑上开一个本地服务比如用 Pythonpython3 -m http.server 8000起一个临时 HTTP 服务然后在浏览器访问http://127.0.0.1:8000Wireshark 里就能看到内容。回到 Wireshark你会看到若干条HTTP协议记录。点开第一条GET / HTTP/1.1在 Packet Details 里展开Hypertext Transfer Protocol层能看到GET 请求行、Host 字段、User-Agent 字段。这一层其实就是在“说人话”我在请求这个域名下的根路径我是 Chrome 浏览器。再看紧接着的响应包一条HTTP/1.1 200 OK里面能看到状态行、Content-Type、Content-Length等。很多人第一次在 Wireshark 里看到自己的浏览器是怎么跟服务器对话的都会有一种“原来如此”的感觉。这个实操帮你打通的是“浏览器发出的每一个请求在网络里都有对应的报文”这一关键认知。4.3 第三次抓包亲眼看一下 TCP 三次握手这次我们分析一次完整的 TCP 连接。在显示过滤器里输入tcp.port 8000如果你用了我上面那个本地服务的例子或者tcp.port 443HTTPS 网站的端口然后随便访问一个 HTTPS 网站回车。这时候你会看到一堆 TCP 报文。找最关键的三条第一条标志位是[SYN]第二条是[SYN, ACK]第三条是[ACK]。这就是教科书里的三次握手平时只在书里见过现在它活生生出现在你眼前。点开第一条[SYN]报文在 TCP 层看这些信息Source Port你的浏览器随机生成的一个高位端口比如 53241。Destination Port443。Sequence Numberraw一个初始序号TCP 用它来标记数据流的起始位置。Flags里面SYN位为 1表示请求建立连接。再看第二条[SYN, ACK]服务器的 Sequence Number 是另一个数值同时Acknowledgment Number等于“你的初始序号 1”。这串数字之间的关系很多新手在这里卡住我当年也一样。我试着用一句人话解释客户端先喊“我想连你我的起始序号是 x”服务器回应“收到我的起始序号是 y我确认收到你的 x下次请发 x1”客户端再答“收到你的 y下次你发 y1”。三次握手本质就是双方互相确认对方的起始序号这样后续数据才能按序拼接。这个知识点属于“面试必问、课本必考”但在 Wireshark 里看一遍印象绝对比死记硬背深十倍。4.4 第四次实操Follow TCP Stream 还原完整对话在封包列表里找到任意一条 TCP 报文右键选择Follow TCP Stream。这时候 Wireshark 会把这条 TCP 连接上所有发送和接收的数据拼成一段完整的内容用一个新的弹窗窗口展示出来。如果这是一条 HTTP 请求你会在这个窗口里自上而下看到完整的请求头、空行、响应体。这个功能在调试接口时可以说是“神器级”的说好联调接口对方老说“我发了啊”你一 Follow 看发现请求根本没到你的服务端口或者到了但报文格式不对一目了然。看完之后记得把弹窗关掉回到主界面此时过滤器会自动变成类似tcp.stream eq 0的表达式。这也是一个学习标记tcp.stream eq 0表示第 0 条 TCP 流你完全可以把它当成显示过滤器手动输入只看某一次完整会话。注意Follow TCP Stream 看别人的对话前提是这个流量是你自己抓的、自己电脑上产生的或者你明确有权抓取的网络环境。抓包是一项中性的排错技能但用在不合适的场合会涉及隐私问题。最基本的底线是只在自己电脑、自己掌管的服务器或明确授权的测试网络里抓不要拿去“偷看”别人的通信。5. 抓完包之后保存与导出技巧光会抓还不够抓完的文件怎么保存、发给别人怎么看也是零基础很容易忽略的实操点。5.1 保存成 pcapng 格式停止抓包后点 File Save As文件名随意但格式要选Wireshark/tcpdump/... - pcapng这是 Wireshark 的原生格式保存了完整的时间戳、元数据和所有报文细节。如果你把协议解码或标记过的颜色也保存下来pcapng 能做到无损保留。不建议用默认的.pcap老格式吗其实也能用但 pcapng 是升级版对新协议字段的支持更好而且 Wireshark 官方推荐。你只要记得后缀是.pcapng就行。5.2 只导出关心的报文如果你只想把过滤后的几条报文发给别人看选中这些行右键 Export Packet Dissections或 File Export Specified Packets。这里可以只导出当前显示过滤后的报文文件体积会小很多。注意在导出窗口勾选“All packets”和“Displayed”的区别前者是把整个抓包文件里所有包都装进去后者是只装被过滤出来的包。发给同事排查时尽量选“Displayed”避免把无关流量的隐私信息也带出去。5.3 时间戳与备注在封包列表的任意列标题上右键可以打开“Column Preferences”添加一个Time since previous displayed packet列。这个列显示的是相邻两个包之间的时间差排查“为什么接口响应慢”时这个列能让你快速定位延迟到底卡在哪一段是 DNS 慢了还是 TCP 握手慢了还是响应体传了很长时间。另外File File Properties 里可以给抓包写备注。这个习惯我建议早点养成在某次抓包里写清楚“时间、场景、设备、复现步骤”等过一周再回头看文件时你就知道当初在干嘛了否则过几天打开一堆 pcapng根本想不起来哪个文件对应哪个问题。6. 常见问题与避坑实录最后这部分是从很多零基础学员的问题里筛出来的高频坑每一个我都遇到过写成速查表供你自查。问题现象可能原因解决办法点击开始抓包后没有任何数据包没有管理员权限或 Npcap 未安装右键 Wireshark 以管理员身份运行确认 Npcap 已安装能收到数据但只有广播和组播包选错了网卡比如选了虚拟网卡双击网卡列表前看那个网卡的 IP 是否是你当前上网的 IP过滤器输入框变红字段名写错或语法不对悬停看提示或删掉重新输入先用最简单的ip.addr 你的IP想看 HTTP 内容却只看到 TLS 加密访问的是 HTTPS 官网数据被加密了改用 HTTP 站点或学习 TLS 解密配置后续进阶内容封包列表显示Malformed Packet可能是包不完整、校验和卸载等原因不要立刻怀疑抓包工具坏了先确认是否是网卡硬件校验和分载导致很多情况下是正常现象抓包文件特别大抓的时间太长或流量大抓包前先设置好显示过滤器或抓包过滤器抓完尽快停止网卡列表里有好多“VMware”或“VirtualBox”装了虚拟机软件生成了虚拟网卡找名字里带“Ethernet”或“WLAN”的那个虚拟网卡一般不是你要用的6.1 抓包界面的“红色、黑色、黄色”代表什么Wireshark 默认用颜色来区分协议类型浅绿色是 TCP 流量紫色是 HTTP浅蓝色是 UDP深黄色是路由协议红色通常代表异常报文比如 TCP 重传、RST 包。这些颜色可以在 View Coloring Rules 里自定义。零基础可以先不用管自定义但你要能看懂两个信息红框标记的TCP Retransmission重传表示有包丢了网络可能不稳定。黑色底纹的TCP RST表示连接被强制重置通常是对端服务异常或主动关闭。看到这两种颜色时基本可以判断通信链路有异常这是最直观的“抓包看问题”入门能力。6.2 一个最容易被忽略的小细节时间显示格式Wireshark 里默认的“时间”列显示的是从抓包开始算的秒数格式像4.123456。很多新手看这列时总以为这是“几点几分几秒”导致分析问题时把时序搞混。你可以通过 View Time Display Format 改成Date and Time of Day这样每一条记录的“墙上时间”就一目了然了。我个人的习惯是分析性能时用“Seconds Since Beginning”看绝对时间时切到“Date and Time of Day”。这一个小设置能帮你少犯很多低级错误。6.3 抓包前先想清楚要过滤什么还有一条重要的实操心得不要一上来就点“开始抓包”然后刷出几十万条数据再在后面慢慢筛。正确做法是先想清楚你要看什么流量——是看某个服务端口看某个 IP还是看某种协议先在“抓包过滤器”Capture Filter里把它定好再开始抓。比如你要看某个内部服务 8080 端口的异常启动抓包前先写tcp port 8080这样 Wireshark 从第一秒就只记录和 8080 端口相关的包后分析时干净利落。 这个习惯在排查生产环境问题时尤其重要抓一晚上几百万个包然后再找目标那时间成本太高了。7. 写在最后的一点学习路径建议这篇文章写到这里核心的基础用法已经全过了一遍。我在实际带新人过程中发现大多数人学 Wireshark 最容易犯的错误不是不努力而是太着急刚学会抓包就想抓 WiFi 密码刚看懂一个协议字段就想解密整套 TLS。网络协议栈是一座冰山你真正需要掌握的基础层其实就那么几块DNS、TCP、UDP、HTTP。把这几个协议在 Wireshark 里分别抓一遍、看一遍、 Follow 一遍你的网络功底就已经超过大部分只管写代码不管链路的开发了。最后分享一个小技巧把你抓到的 pcapng 文件像收藏笔记一样按日期和场景归类存放。我电脑里存了几百个抓包文件有些是当年反复排查网络故障时留下的“病历”。后来再遇到相似问题直接翻旧文件对比报文定位速度比从零分析快得多。抓包这个技能本质上就是“多看多抓多复盘”没有捷径。你只要把今天这篇里的四个实操做一遍Wireshark 对你来说就不再是一堆乱码而是一双能看清网络的眼镜了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑