
抓包工具选 Wireshark 还是 tcpdump?怎么用能定位网络问题
2025/09/09
作者:梁老师

一、为什么要学抓包?先解决 “抓包能帮我做什么”
做网络运维、开发或测试时,你是不是常遇到这些困惑:
明明配置了防火墙规则,为什么服务器还是连不上数据库?
用户反馈 APP 加载慢,是网络丢包还是后端接口响应慢?
局域网内某台设备频繁断网,查路由器日志却没异常?
这些问题光靠 “猜配置”“看日志” 往往找不到根因 —— 因为日志只能告诉你 “结果”(比如连接失败),却没法告诉你 “过程”(数据在传输中哪里出了问题)。而抓包工具就像 “网络显微镜”,能实时捕获网卡上的每一个数据包,帮你看清:
数据是从哪个 IP 发的、发给哪个 IP?
用的是 TCP 还是 UDP 协议?端口号对不对?
有没有出现 “发了包没回应”(丢包)、“包重复发”(重传)的情况?
Wireshark 和 tcpdump 是抓包领域的 “黄金组合”:一个靠图形界面让新手轻松上手,一个靠命令行在服务器端高效工作。学会它们,就能从 “被动排查” 变成 “主动定位” 网络问题。
二、Wireshark:图形化抓包 “神器”,新手也能快速上手
如果你用 Windows 或 macOS,需要 “可视化看包、画时序图、快速筛选异常”,Wireshark 是首选。它的核心优势是 “所见即所得”,不用记复杂命令,鼠标点一点就能定位问题。
1. 3 步完成第一次抓包(以 “排查网页加载慢” 为例)
步骤 1:选对网卡,开始抓包
打开 Wireshark 后,左侧会列出电脑所有网卡(比如 “WLAN” 是 WiFi 网卡、“以太网” 是有线网卡、“VMware Network Adapter” 是虚拟机网卡)。
如果你要抓 “电脑访问百度” 的包,先确认自己用的是 WiFi 还是有线,然后双击对应的网卡(比如 “WLAN”),Wireshark 就会开始实时捕获该网卡的所有数据包(屏幕会快速滚动数据)。
步骤 2:用过滤规则 “聚焦目标”
刚抓包时,会看到大量无关数据(比如局域网广播包、微信后台请求),此时需要用 “过滤栏” 精准筛选:
比如要只看和百度的通信,在顶部过滤栏输入host www.baidu.com,按回车 —— 瞬间只剩下 “电脑↔百度服务器” 的数据包,其他数据全部隐藏。
常用过滤规则(直接复制就能用):
按协议过滤:tcp(只看 TCP 包)、udp(只看 UDP 包)、http(只看 HTTP 包);
按端口过滤:port 80(只看 80 端口的包,HTTP 默认端口)、port 3306(只看 MySQL 默认端口的包);
按 IP 过滤:src host 192.168.1.100(只看从 192.168.1.100 发出来的包)、dst host 192.168.1.200(只看发给 192.168.1.200 的包)。
步骤 3:看懂 3 个关键信息,定位问题
双击任意一个数据包,会弹出 “数据包详情” 窗口,重点看 3 层内容:
以太网层:看 “源 MAC 地址” 和 “目的 MAC 地址”,确认数据是从自己电脑发的,还是发给路由器的;
IP 层:看 “源 IP 地址” 和 “目的 IP 地址”,比如你电脑 IP 是 192.168.1.5,百度服务器 IP 是 180.101.49.11,确认 IP 是否正确;
TCP/HTTP 层:如果是访问网页,看 “TCP 标志位”(SYN 代表握手开始,ACK 代表确认,FIN 代表断开)和 “HTTP 响应码”(200 是正常,404 是页面不存在,500 是服务器内部错误)。
比如:如果只看到 “SYN” 包,没看到 “SYN+ACK” 包,说明百度服务器没回应 —— 可能是你这边的路由有问题,或者百度服务器把你 IP 拉黑了。
2. 新手用 Wireshark 必避的 3 个坑
坑 1:抓不到包,以为工具坏了?
先检查两点:①是不是选对了网卡(比如用 WiFi 上网,却选了有线网卡);②如果抓的是远程服务器的包,有没有在交换机上配置 “端口镜像”(把服务器的流量复制到你的抓包电脑上,否则抓不到)。坑 2:过滤规则写不对,没数据显示?
注意语法:比如 “只看 HTTP 和 TCP 包” 要写http or tcp,不是http and tcp;过滤 IP 时别漏 “host”,比如host 192.168.1.100不能写成192.168.1.100坑 3:数据包太多,找不到关键包?
用 Wireshark 的 “颜色标记”:比如红色代表 TCP 重传包,黄色代表 HTTP 请求包,灰色代表其他包 —— 一眼就能看到异常包(比如满屏红色,说明丢包严重)。
三、tcpdump:Linux 服务器的 “命令行抓包利器”
如果你常远程操作 Linux 服务器(比如云服务器、无图形界面的服务器),tcpdump 比 Wireshark 更实用 —— 它没有 GUI,全靠命令行,但轻量、占用资源少,还能后台持续抓包,服务器端基本都会预装。
1. 3 个实战命令,学会就能解决 80% 问题
tcpdump 的命令格式是tcpdump [参数] [过滤规则],不用记太多,先掌握这 3 个:
命令 1:抓指定网卡的所有包(实时查看)
tcpdump -i eth0 # -i 后面跟网卡名,eth0是Linux常见网卡名
执行后,终端会实时输出数据包信息,每一行包含 “时间、源 IP、目的 IP、协议、包内容摘要”,比如:
10:23:45.123456 IP 192.168.1.5.54321 > 180.101.49.11.80: Flags [S], seq 123456, win 65535, length 0
(解读:10 点 23 分,192.168.1.5 的 54321 端口,向 180.101.49.11 的 80 端口发了一个 SYN 包)。
命令 2:抓指定 IP 的包,并存到文件
如果需要后续分析,或者实时看不过来,可以把包存成文件(.pcap 格式,Wireshark 能打开):
tcpdump -i eth0 host 192.168.1.100 -w capture.pcap # -w 后面跟文件名
用-w存包时,tcpdump 不会在终端显示数据包,按 “Ctrl+C” 停止后,会生成capture.pcap文件,下载到本地用 Wireshark 打开即可分析。
命令 3:抓指定端口的包,只显示关键信息
比如只抓 MySQL(3306 端口)的包,并且只显示 “源 IP、目的 IP、端口”,减少冗余信息:
tcpdump -i eth0 port 3306 -n # -n 表示不解析域名,直接显示IP,速度更快
2. 新手用 tcpdump 的 2 个小技巧
记不住参数?输入tcpdump --help就能看到所有常用参数,比如-s 0表示捕获完整数据包(默认只抓前 68 字节,可能看不到完整内容);
后台持续抓包?加-C和-G参数,比如 “每 100MB 存一个文件,只抓 24 小时”:
tcpdump -i eth0 -w /data/capture_%Y%m%d_%H%M%S.pcap -C 100 -G 86400 # -C 100=100MB一个文件,-G 86400=24小时
四、关键决策:Wireshark 与 tcpdump 怎么选?
不用纠结 “二选一”,它们是互补的,按场景选:
最佳搭配方案:在 Linux 服务器上用 tcpdump 抓包并保存为.pcap 文件,下载到本地后用 Wireshark 打开 —— 既利用了 tcpdump “服务器端轻量” 的优势,又发挥了 Wireshark “可视化分析” 的便捷性。
五、实战案例:用抓包工具解决 “访问官网超时” 问题
假设你遇到:用户反馈 “访问公司官网(www.abc.com)时页面转圈,但其他网站能正常打开”—— 用抓包工具怎么定位?
步骤 1:本地用 Wireshark 初步排查
过滤规则设为host www.abc.com,让用户再访问一次官网;
观察数据包:如果只有 SYN 包,没有 SYN+ACK 包,说明 “请求没到官网服务器”—— 可能是用户本地路由问题,或公司防火墙拦截;
如果有 SYN+ACK 包,但没有 HTTP 响应包,说明 “服务器收到请求但没返回”—— 需要去官网服务器抓包进一步排查。
步骤 2:服务器用 tcpdump 深入定位
登录官网服务器(Linux 系统),执行抓包命令:
tcpdump -i eth0 host 用户IP -w user_request.pcap # 只抓该用户的请求,避免其他数据干扰
让用户再访问一次官网,然后按 “Ctrl+C” 停止抓包,把user_request.pcap下载到本地;
用 Wireshark 打开文件:如果看到 “服务器收到 HTTP GET 请求后,立即发了 FIN 包(断开连接)”,说明服务器端的 Web 服务(比如 Nginx)有问题;
查 Nginx 日志(/var/log/nginx/error.log),发现 “后端 PHP 服务挂了”—— 重启 PHP 服务后,问题解决。
最后提醒:抓包要守 “合规底线”
抓包工具能看到很多敏感数据(比如用户的登录密码、HTTPS 解密后的内容),但记住:只能抓你有权限的网络数据—— 比如自己公司的服务器、自己的电脑,绝对不能抓公共网络(咖啡厅 WiFi、地铁 WiFi)里其他人的数据包,否则可能违反《网络安全法》,承担法律责任。技术是工具,合规使用才是根本。
-
开设课程 开班时间 在线报名OCP2025.04.26
在线报名
HCIP-AI Solution2025.04.26在线报名
HCIE-openEuler2025.05.03在线报名
RHCA-CL2602025.05.04在线报名
HCIP-Cloud2025.05.10在线报名
PGCM直通车2025.05.10在线报名
HCIA-Datacom(晚班)2025.05.19在线报名
HCIA-Sec2025.06.07在线报名
RHCA-RH4422025.06.07在线报名
PMP2025.06.10在线报名
HCIA-Datacom2025.06.14在线报名
HCIE-AI Solution2025.06.14在线报名
HCIE-Datacom2025.06.14在线报名
HCIP-Datacom(晚班)2025.06.16在线报名
OCM2025.06.21在线报名
HCIE-Cloud2025.06.21在线报名
HCIP-Sec2025.06.21在线报名
HCIE-Bigdata2025.06.28在线报名
RHCE2025.06.28在线报名
HCIE-Datacom考前辅导2025.07.05在线报名
HCIP-Datacom深圳2025.07.19在线报名
CISP2025.07.19在线报名
HCIA-Datacom(晚班)2025.07.21在线报名
RHCA-RH4362025.07.26在线报名
OCP2025.07.26在线报名
HCIE-Sec2025.08.09在线报名
HCIA-AI Solution2025.08.16在线报名
HCIP-Datacom(晚班)2025.08.25在线报名
RHCA-RH3582025.09.06在线报名
PMP2025.09.16在线报名
HCIE-Datacom2025.09.06在线报名
HCIA-AI Solution2025.09.27在线报名
HCIA-Datacom2025.09.27在线报名
PGCM直通车2025.10.11在线报名
RHCA-DO3742025.10.11在线报名
HCIA-Sec2025.10.11在线报名
RHCE2025.10.18在线报名
HCIP-Datacom2025.11.08在线报名
HCIP-Sec2025.11.08在线报名
RHCA-CL2602025.11.15在线报名
OCP2025.11.15在线报名
HCIE-Sec2025.12.13在线报名
HCIE-Datacom2026.01.10在线报名



