用Wireshark抓取TCP数据包
在排查网络问题时,比如网页打不开、视频卡顿,或者服务器响应慢,很多人会想知道“数据到底传了啥”。这时候,捕获TCP数据包就成了一个实用技能。最常用的工具是Wireshark,它免费、跨平台,还能图形化展示每一个数据包。
安装好Wireshark后,打开软件,你会看到本机所有网卡列表。选中正在上网的那个网卡(比如Wi-Fi或以太网),点“开始捕获”。软件立刻开始记录经过的所有网络流量。页面上密密麻麻的数据行,每一行就是一个数据包。
如果你只关心某个特定应用的通信,比如访问百度,可以在过滤栏输入:tcp.port == 80 and host 110.242.68.66,这样就只显示和百度之间的TCP交互。通过这种方式,你能清楚看到三次握手、HTTP请求发出、服务器回传数据、四次挥手断开连接的全过程。
命令行下用tcpdump抓包
在服务器或Linux环境下,图形界面不一定可用,这时候用tcpdump更方便。它小巧高效,适合远程操作。
比如想抓取网卡eth0上所有发往80端口的TCP包,执行:
tcpdump -i eth0 tcp port 80如果只想抓10个包就自动停止,加个-c参数:
tcpdump -i eth0 tcp port 80 -c 10抓下来的包可以直接输出到屏幕,也可以保存到文件留待分析:
tcpdump -i eth0 tcp port 80 -w capture.pcap这个capture.pcap文件之后可以用Wireshark打开,做进一步查看。
抓包时要注意什么
普通用户抓自己的流量没问题,但不能随便监听别人的数据。尤其在共享网络中,未经允许抓包可能涉及隐私问题。另外,HTTPS加密了内容,你只能看到通信双方和端口,看不到具体传了哪些文字或数据,这是正常的安全机制。
有时候抓不到包,可能是网卡没选对,或者被防火墙拦截。可以先ping一个网站,确认网络通着,再重新抓。
掌握抓包技巧后,你会发现很多“网络异常”其实出在客户端重传、连接超时或DNS解析上。这些细节在常规测速里看不出来,但在数据包里一目了然。