tcpdump 抓包分析,命令、过滤技巧、常见症状定位与移动真机补充方案

在定位网络或应用问题时,tcpdump 是工程师的第一道利器:它能在流量发生处立刻抓取原始包,为后续在 Wireshark 中做深度分析提供证据。本文从实战出发,讲清常用命令与过滤器、如何把抓到的 pcap 快速定位到"重传 / 握手 / RST / 分片 / MTU"类问题,给出系统化排查流程,并说明在 iOS 真机或代理不可用时如何用 USB 直连抓包工具作为补充(如抓包大师 Sniffmaster),把诊断做到端到端。

一、抓包准备与基本命令

抓包前先确认抓点(客户端 / 服务端 / 网关)与时间窗口。常用命令:

bash 复制代码
# 抓指定主机与端口,完整包,写入文件
sudo tcpdump -i eth0 host 10.0.0.5 and port 443 -s 0 -w /tmp/cap.pcap
# 环形缓冲:每个文件 100MB,保留 10 个
sudo tcpdump -i any -s 0 -C 100 -W 10 -w /tmp/cap%03d.pcap

-s 0 是关键,确保抓取完整报文以便 TLS/HTTP 重组。若只需头部,可把 snaplen 缩小以节省 IO。

二、实用过滤表达式与快速查看

显示层过滤常用:

  • tcpudpicmp:按协议筛选。
  • tcp[tcpflags] & (tcp-syn) != 0:只看 SYN 包(握手)。
  • host a.b.c.d and port 80:按主机端口过滤。
    抓取后用 Wireshark 的 Follow TCP Stream、tcp.analysis.retransmissiontcp.analysis.duplicate_ack 快速定位问题流。

三、典型问题的抓包判断逻辑

  1. 连接建立慢 / 无法建立:看三次握手(SYN → SYN/ACK → ACK)是否完整。若 SYN 无响应,先检查防火墙/路由。
  2. 大量重传或重复 ACK:表示链路丢包或中间设备丢弃包,观察重传发生点并在多点抓包对比。
  3. RST/FIN 频繁:应用主动断开或中间设备强制 reset,查看携带的 TCP code 与时间点对应的服务日志。
  4. 大包丢失 / 分片问题 :观察是否出现 ICMP Fragmentation Needed,并检查 Path MTU。
  5. TLS 握手失败但 TCP 完成 :用 Wireshark 检查 TLS Alert(如 bad_certificate)或 ClientHello/ServerHello 差异,判断是否为证书/ALPN/cipher 不兼容。

四、多点抓包与对比法

最可靠的方法是"客户端、中间节点、服务端"三点同时抓包,然后对比序号与时间线:如果客户端发送但中间未见,问题在接入链路;若中间可见但服务端未见,问题在上游设备。用 tshark -r cap.pcap -Y "tcp.analysis.retransmission" 批量统计重传率,做量化判断。

五、移动真机与代理受限场景的补充手段

当目标是 iOS 真机 App,且代理(Charles / mitmproxy)因 Pinning / mTLS 无法解密时,仍需底层证据。此时可以:

  • 在服务端与近源处抓 tcpdump;
  • 同时用 USB 直连工具从设备侧抓包,导出 pcap,再在 Wireshark 中对比 ClientHello、SNI 与 TLS Alert。
    像 抓包大师(Sniffmaster) 等工具支持 USB 直连 iOS,并能按 App 过滤流量、导出 pcap,使你在不修改 App、无需越狱的前提下得到设备侧原始包,极大方便在 Pinning 或企业网络干扰场景下的定位。

六、实战排查流程(模板化)

  1. 明确问题与复现步骤,设定时间窗口。
  2. 在最接近问题的一端抓包(-s 0、限流过滤),同时在另一端抓取对比包。
  3. 用 Wireshark 检查三次握手、重传、Dup ACK、TLS 握手与 Alert。
  4. 若怀疑 MTU/分片或 ICMP,搜索相应 ICMP 消息并做 ping -M do -s 测试。
  5. 汇总 pcap、服务日志与时间戳,定位到网络设备或应用逻辑并给出修复建议(例如调整 MSS、修复防火墙规则、优化重试策略)。

七、合规与工程化建议

抓包会暴露敏感数据(token、个人信息),生产抓包前务必审批并做脱敏。把标准抓包脚本、过滤器与分析模板纳入团队知识库,定期用自动化脚本统计重传率、握手失败率并上报告警,形成闭环运维能力。

相关推荐
大卡片20 小时前
TCP、IP和TFTP协议
服务器·网络·tcp/ip
汽车仪器仪表相关领域20 小时前
Kvaser Memorator Professional HS/LS:高速 + 低速双通道 CAN 总线记录仪,跨系统诊断的专业级解决方案
网络·人工智能·功能测试·测试工具·安全·压力测试
SameX20 小时前
用 SpriteKit 做了个存钱罐 App,30 枚硬币同时掉帧率直接崩了
ios
for_ever_love__21 小时前
UI学习:单例传值
学习·ui·ios·objective-c
for_ever_love__21 小时前
UI学习:通知传值
学习·ui·ios·objective-c
志栋智能21 小时前
跨越人机边界:超自动化巡检如何重塑工作流程?
运维·网络·人工智能·安全·自动化
仍然.21 小时前
网络编程(一)---传输层协议和UDP数据报套接字编程
网络·网络协议·udp
zzipeng21 小时前
IMX6ULL CAN通讯应用学习
linux·运维·网络
乌托邦的逃亡者21 小时前
Ubuntu主机中,为一个网卡设置多个IP地址
服务器·网络·ubuntu
西洼工作室21 小时前
uniapp+vue3+python对接阿里云短信认证服务alibabacloud_dypnsapi20170525
python·阿里云·uni-app