1. Wireshark入门从安装到第一个抓包第一次接触Wireshark时我对着满屏跳动的数据包完全摸不着头脑。后来才发现只要掌握几个关键步骤这个看似复杂的工具其实非常友好。先说说安装——Windows用户直接去官网下载安装包记得勾选Install WinPcap/Npcap选项这是抓包的核心驱动。Mac用户通过Homebrew一句brew install wireshark就能搞定Linux用户用apt或yum安装也很方便。装好后打开软件你会看到所有网络接口的列表。这里有个实用技巧如果不知道哪个接口对应你的上网网卡在Windows下按WinR输入cmd打开命令行执行ipconfig查看活跃连接Mac/Linux用ifconfig命令。我常用WiFi上网所以选择WLAN接口双击它就开始抓包了。关键界面区域解析数据包列表中上部显示捕获的每个数据包摘要包括序号、时间、源/目标地址等数据包详情中下部分层展示选定数据包的协议信息点击可展开各层头部原始字节最下方十六进制和ASCII格式的原始数据过滤器栏最上方输入http就能只看HTTP流量输入tcp.port80过滤80端口提示刚开始抓包时数据量可能很大建议先点击左上角的红色方块停止捕获再设置过滤条件重新开始。2. TCP三次握手实战分析去年排查一个网站连接超时问题时正是通过Wireshark抓取TCP握手过程锁定了问题根源。让我们以访问百度为例IP 180.101.50.188看看经典的三次握手如何在数据包中呈现。第一次握手客户端发送SYN包 过滤条件输入tcp.flags.syn1 and tcp.flags.ack0你会看到客户端比如你的电脑192.168.1.100发送的SYN包。关键字段Sequence number: 0相对值实际是随机数Flags: SYN1表示连接请求第二次握手服务端回应SYN-ACK 过滤条件改为tcp.flags.syn1 and tcp.flags.ack1找到服务器返回的包Acknowledgment number: 1客户端SYN序列号1Sequence number: 0服务器初始序列号Flags: SYN1, ACK1第三次握手客户端确认 最后用tcp.flags.syn0 and tcp.flags.ack1过滤看到客户端发送的纯ACK包Acknowledgment number: 1服务器SYN序列号1这个过程中如果出现SYN包重传TCP Retransmission往往意味着网络不通或服务器繁忙。有次我抓包发现客户端连续发送5次SYN都无响应最终确认是防火墙拦截了。3. HTTP请求的完整生命周期完成TCP握手后真正的HTTP请求才开始。在过滤器输入http你会看到类似这样的流程请求阶段GET / HTTP/1.1 Host: www.baidu.com User-Agent: curl/7.68.0 Accept: */*在数据包详情中展开Hypertext Transfer Protocol所有头部信息一目了然。我曾用这个功能发现某些爬虫伪造User-Agent的行为。响应阶段HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1024 html.../html重点观察状态码和Content-Type。有个经典案例某API返回的明明是JSON数据但Content-Type却是text/plain导致前端解析失败。Keep-Alive机制现代HTTP连接默认保持活跃可以在同一个TCP连接上发送多个请求。通过tcp.stream eq XXXX是流编号可以跟踪完整会话。4. TCP四次挥手深度解析关闭连接时的四次挥手往往比握手更难捕捉因为浏览器有连接池机制。这里有个技巧先打开浏览器访问任意网站保持Wireshark在抓包状态然后完全关闭浏览器这时就能捕获到完整的挥手过程。典型挥手流程客户端发送FIN包过滤条件tcp.flags.fin1服务端回应ACK服务端发送FIN包客户端回应ACK实际抓包时经常会看到三次挥手这是因为服务器的ACK和FIN可能合并发送。我曾遇到连接无法正常关闭的情况抓包发现客户端最后没有发送ACK导致服务器一直保持半关闭状态。5. 高级过滤技巧与实战场景Wireshark最强大的功能之一就是灵活的过滤系统。经过多年使用我总结出几个高效过滤方案复合条件过滤http and ip.src192.168.1.100只看特定主机发的HTTP请求tcp.port443 and frame.time_relative 60抓取1分钟后的443端口流量排查HTTPS问题 虽然不能解密内容但可以通过TLS握手包分析ssl.handshake.type1查看所有Client Hellossl.record.content_type21筛选TLS警报包性能分析tcp.analysis.retransmission重传包统计tcp.time_delta 1筛选响应间隔超过1秒的TCP包有个真实案例某APP图片加载慢通过http.content_type contains image and tcp.time_delta 0.5发现某些图片服务器响应延迟高达2秒。6. 常见协议分析技巧ARP协议 过滤条件arp可以看到局域网内的MAC地址查询过程。有次网络瘫痪通过ARP包发现有个IP在不断发送虚假MAC地址定位到中了ARP欺骗病毒。DNS解析dns过滤显示域名解析请求。曾经调试CDN问题时发现同一个域名解析出多个IP导致用户被分配到错误的边缘节点。ICMP诊断icmp显示ping命令的请求响应。某次机房迁移后通过TTL值变化发现流量走了不同路径。7. 实战案例网页加载慢分析去年优化公司官网时我用Wireshark做了完整分析清除浏览器缓存后打开网站捕获过滤http and ip.dst官网IP发现顺序3次TCP重传网络抖动多个CSS文件串行加载未启用HTTP/2某张图片经历了5次302跳转优化后加载时间从4.2秒降到1.8秒关键技巧是用Statistics Flow Graph生成时序图直观看到请求瀑布流。8. 安全注意事项与最佳实践在企业网络中使用Wireshark需要特别注意获得授权后再抓包避免在公共WiFi抓取他人数据敏感数据包及时删除使用editcap -C 50:100 original.pcap filtered.pcap截取部分数据推荐配置设置默认过滤not arp and not dns开启Update list of packets in real time调整时间显示格式为Seconds since beginning of capture常用过滤条件保存为按钮右键过滤器栏