ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Wireshark流量分析实战:从安装抓包到过滤器、TCP重传与协议还原

Wireshark流量分析实战:从安装抓包到过滤器、TCP重传与协议还原 1. 从一个服务器响应慢的工单说起为什么流量分析绕不开 Wireshark前阵子接到一个工单业务方说某个内部接口偶尔要转圈三五秒。运维那边看的监控曲线干干净净CPU 不高带宽不满连接数正常。后来我把 Wireshark 挂到那台客户端上一抓十分钟就看出问题了——服务端确实回得快但中间有个环节在做 TCP 重传客户端等了两个 RTO 才拿到数据。监控看不到这一层因为监控采的是平均水位而重传是毫秒级、间歇性的事件。这就是 Wireshark 流量分析最典型的价值场景当所有统计型工具都告诉你一切正常你需要的是逐包证据。它做的事情本质上是把网卡上流动的字节流按协议逐层拆开让你看到谁在什么时候、给谁、发了什么、对方有没有回。听起来简单但它能覆盖的范围极广——从排查接口超时、分析 CTF 流量题、还原 RTP 语音通话到解码列车 TRDP 实时数据、看蓝牙 HCI 日志全都靠同一套思路。很多人第一次接触它是在 CTF 里拿到一个几百兆的 pcap 文件第一反应是这怎么下手。也有人是在生产环境里被迫上手装完发现接口列表是空的或者抓了半小时界面卡到没反应。这两类人需要的其实是同一篇东西不是官网手册的翻译而是别人踩过坑之后的路径总结。后面几节我就按装得上、抓得到、滤得准、看得懂、扛得住这个顺序把这条链路拆开讲。1.1 系统自带工具能给你的信息和它给不了的信息netstat、ss、资源监视器这类工具给你的是连接维度的状态快照谁连着谁、什么状态、收发了多少字节。它们回答不了几个关键问题这个连接为什么慢是握手慢、是重传、是窗口卡住还是服务端应用层自己处理慢TLS 握手用的是哪套套件HTTP 返回的 502 到底是谁发的Wireshark 的差别在于它有时间轴和协议栈。同一个 TCP 连接它能给你三次握手各包的 RTT、每一个数据段的序列号和确认号、有没有乱序、有没有零窗口、TLS 握手的完整往返、应用层请求和响应对应关系。做性能排查时我习惯先看Statistics TCP Stream Graphs Round Trip Time如果 RTT 曲线平稳但吞吐上不去问题多半在窗口或丢包如果 RTT 本身就是锯齿状那就是链路或中间设备在抖动。提示分析性能问题一定要开绝对时间戳View Time Display Format Time of Day否则你没法跟服务端日志对齐时间线。相对时间只适合做包间间隔分析。1.2 Wireshark 的定位不是扫描器也不是监控大屏新手常见误解是把 Wireshark 当成网络扫描工具或者长期监控平台这俩定位都不对。扫描探测靠的是 Nmap 那类主动发包工具长期监控靠的是流量镜像加 NetFlow/sFlow 那套东西。Wireshark 的强项是定点、短时、深挖——把一个具体的、可复现的问题抓到手里解剖。所以真正的生产用法通常是组合拳监控平台告诉你这个时间段这个服务有问题你去那台机器上用dumpcap做限时抓包注意是 dumpcap不是 GUI把文件拉回本地再慢慢分析。GUI 用来分析命令行用来采集这个分工是我试过最省事的。后面第 3 节会专门讲长时间抓包怎么配置才不崩。2. 装完就打不开安装环节最容易踩的四个坑安装这件事看着最没技术含量但它贡献了我收到的求助里差不多一半。Windows 上的安装包本身是一键式的麻烦都在它带的那几个驱动组件上。2.1 Npcap 与 WinPcap 的共存问题Windows 版的 Wireshark 抓包依赖底层驱动老版本用的是 WinPcap新版本用 Npcap。Npcap 在安装时会问你要不要勾选以 WinPcap API 兼容模式安装这个选项的作用是让那些还在调用老 WinPcap 接口的第三方程序一些老的安全工具、某些脚本库也能正常工作。我的建议是如果你机器上已经装了别的抓包或网络分析类软件就勾上兼容模式如果是干净的开发机只自己用可以不勾。千万别在同一台机器上又装 WinPcap 又装 Npcap两者会抢同一个驱动层结果是两边都用不了。清理方式是先在程序和功能里把所有相关驱动卸干净重启再重新安装。2.2 权限、接口列表为空和驱动签名Wireshark 启动后看不到任何网卡九成是权限问题。抓包需要访问驱动层Windows 上必须以管理员身份运行。如果以管理员启动还是空的按这个顺序查服务里看npcap相关服务是否处于运行状态被禁用就手动启动检查杀毒软件或终端安全软件是否拦截了驱动加载很多企业管控软件会把抓包驱动当成风险行为在 Wireshark 的接口列表界面点刷新或者用dumpcap -D直接列出可用接口这个命令的输出比 GUI 更可信如果是 USB 抓包还要在安装时额外勾选 USBPcap 组件它和网卡驱动是两套东西。Linux 上相对省事把用户加进wireshark组然后用dpkg-reconfigure wireshark-common允许非 root 抓包再重新登录。用 sudo 直接跑 GUI 是最不推荐的做法配置文件和权限混乱早晚要还债。macOS 上需要先装 ChmodBPF安装器里默认带了这个包验证方式是ls -l /dev/bpf*看权限位。2.3 安装包选择Stable 版和绿色版官网下载页有几个概念要分清Stable Release 是稳定版Development Release 是开发版别在生产机上装开发版。另外还有便携版Portable解压就能用适合放在 U 盘里做应急排查或者在没有安装权限的机器上跑——但它依然需要目标机器已经装好 Npcap 驱动这一点很多人忽略。至于下载老版本这件事比如网上流传的 2.6.6 之类的老安装包除非你有明确的兼容性需求比如要配合某个只在旧版本里存在的解析器否则没必要。新版本在协议解析覆盖率、显示过滤器性能、大文件处理能力上差得很远4.0 之后显示过滤器引擎整个换了一版性能提升明显。2.4 首次启动的配置清理如果你遇到双击图标一闪就没了或者启动后立刻崩溃八成是配置文件损坏或者上次异常退出留下的状态。Windows 上可以直接把%APPDATA%\Wireshark整个目录改名备份Linux 上是~/.config/wiresharkmacOS 在~/.config/wireshark或~/Library/Application Support/Wireshark。改名之后重启Wireshark 会生成一套全新默认配置。如果这样能起来再把preferences文件里的自定义部分一点点拷回去。提示不要小看自定义列Columns的影响。我见过一个案例有人在巨型 pcap 上自定义了十几个列其中一列引用了需要大量计算的字段导致整个界面卡到无法操作。删掉那列之后立刻流畅。排查卡住的时候先把列配置恢复默认是个高性价比动作。3. 抓包过滤器与显示过滤器两套语法搞混白折腾一整天这是 Wireshark 最经典的认知陷阱。软件里有两个地方可以填过滤条件但它们语法完全不同、作用时机完全不同。抓包过滤器Capture Filter工作在驱动层包还没进内存就被筛掉了语法是 BPFBerkeley Packet Filter特点是不符合条件的数据包根本不存在事后无法再分析。显示过滤器Display Filter工作在内存里所有包都已经抓进来了它只决定显示哪些语法是 Wireshark 自己那套可以随时改、随时取消。一句话记法抓包过滤器做减法显示过滤器做筛选。前者是不可逆的后者随时可逆。3.1 BPF 语法在网卡层面就把噪音砍掉抓包过滤器只支持很有限的关键字但不影响它够用。常用的几类# 只抓指定主机相关的流量 host 10.20.30.40 # 指定网段 net 10.20.30.0/24 # 指定端口tcp 或 udp 都可以 tcp port 8080 # 方向限定 src host 10.20.30.40 and dst port 443 # 组合 host 10.20.30.40 and (port 80 or port 443) # 排除注意 not 的写法 not arp and not broadcastBPF 里有个容易忘的点port 80不加协议限定会同时匹配 TCP 和 UDP想精确就写tcp port 80。另外 BPF 不支持 Wireshark 那套http.request.method之类的字段名写了会直接报语法错误。什么时候该用抓包过滤器当你只需要某一类流量、且数据量大到内存扛不住的时候。比如你要分析一个 10G 链路上的单台服务器通信不加过滤器抓十分钟可能几十 G加了host限定之后可能只有几百兆。3.2 显示过滤器语法糖和常见误写显示过滤器才是日常分析的主力它的表达能力比 BPF 强得多。几个高频用法ip.addr 10.20.30.40 # 不区分方向 tcp.port 8080 http.request.method POST tls.handshake.type 1 # Client Hello dns.qry.name contains example frame contains flag # 在整包字节里找字符串 tcp.analysis.flags # 所有 TCP 异常标记 http.response.code 400新手最常犯的两个错一是拿去比较字符串用了错的大小写协议里字段值大小写敏感二是把操作符写成而不是或者把and写成其实也支持但混用容易乱。还有contains和matches的区别contains是子串匹配matches是正则而 4.0 之后老的~正则写法已经不再支持必须写matches。注意显示过滤器写错的代价比抓包过滤器小得多顶多显示为空但有个隐蔽后果——如果你在超大文件上写了性能很差的过滤器比如对每个包都要做正则界面会假死。这种情况先看状态栏的进度别急着强杀进程。3.3 长时间抓包的正确姿势让 dumpcap 干活别让 GUI 扛Wireshark 长时间抓包怎么操作是搜索量很高的问题答案是别用 GUI 长时间抓。GUI 要维护包列表、协议树、内存里的完整数据集跑几个小时之后内存占用会非常可观而且 GUI 崩溃一次全丢。正确做法是命令行加环形缓冲。核心命令是dumpcap它是 Wireshark 套件里的纯采集程序dumpcap -i 3 -b filesize:102400 -b files:20 \ -f host 10.20.30.40 and tcp \ -w /data/cap/trace.pcapng参数含义逐个说-i 3是接口编号用dumpcap -D查-b filesize:102400表示单个文件到 100MB 就切下一个单位是 KB-b files:20表示最多保留 20 个文件超了就从最老的开始覆盖这就是环形缓冲-f后面跟 BPF 抓包过滤器-w指定输出文件。这样跑一周也不用管磁盘占用封顶在 2GB 左右。Linux 上想让它后台常驻用nohup或者写成 systemd 服务都行。Windows 上可以注册成计划任务。另外记得给它加时间切片方便按时间段定位文件-b duration:3600表示每小时切一个文件排查凌晨三点那次故障的时候直接找对应时段文件就行。如果只是为了排查接口问题、不需要看包内容还有更轻的方案开-b环形缓冲的同时只记录头部信息snaplen 设小一点比如-s 128文件体积能小一个数量级。这个技巧在做长期趋势统计的时候特别有用。4. CTF 流量分析题的通用解题链路从协议分级到导出对象CTF 里的流量分析题和真实排障的思路其实是一套只是目标从找到故障原因变成找到 flag。我按自己习惯的固定顺序讲一遍这套流程在大多数题上都能跑通能省掉大量漫无目的地翻包的时间。4.1 先看协议分级和会话别一上来就追 TCP 流拿到一个 pcap第一步永远是Statistics Protocol Hierarchy。它按协议列出一棵统计树告诉你这个文件里到底有哪些协议、各占多少包。这一步的信息量极大如果看到大量 HTTP那方向就明确了如果看到USB或者802.11说明这是非网络层流量处理思路完全不同如果看到RTP或者TFTP那可能是媒体传输类题目。第二步是Statistics Conversations按字节数排序。CTF 题通常有个主通道字节数会明显高于其他流。找到它右键选Apply as Filter Selected就把视野收敛到了一个会话里。命令行下这两个操作对应tshark -r challenge.pcap -q -z io,phs # 协议分级 tshark -r challenge.pcap -q -z conv,tcp # TCP 会话统计 tshark -r challenge.pcap -q -z endpoints,ip用tshark先做一轮统计的好处是快——几百兆的文件在 GUI 里加载要几十秒tshark基本上秒出结果。4.2 追踪流、查找关键字和编码还原确定目标流之后就是Follow TCP StreamUDP 就是 UDP Stream。这个功能把整个会话的应用层数据拼成一个连续的文本/十六进制视图还能切换显示方向客户端到服务端、服务端到客户端、或两者合并。很多时候 flag 就明晃晃地在里面。如果没有明文就上Edit Find Packet搜索类型选字符串范围选分组字节流关键词可以是flag、key、pass也可以是文件头特征比如PKZip、JFIFJPEG、%PDF。十六进制搜索记得切到 Hex 值模式。还有一类题目的套路是流量里传了一个经过编码的字符串。常见的有 Base64、URL 编码、十六进制、ROT13、以及各种异或。判断方法是看字符集特征纯A-Za-z0-9/结尾带等号基本是 Base64全是%XX就是 URL 编码。还原工具随便用重点是别过度联想先把明显的解一遍。4.3 导出对象、tshark 批处理和文件还原File Export Objects是 CTF 流量的另一把万能钥匙它能把 HTTP、SMB、TFTP、DICOM 等协议里传输的文件直接提取出来。HTTP 里面常见的是一张改了扩展名的图片或者一个加密压缩包。图片可以用binwalk、foremost、steghide之类的工具继续挖隐写。如果要批量处理tshark的字段提取非常高效# 提取所有 HTTP 请求的 Host 和 URI tshark -r a.pcapng -Y http.request -T fields -e http.host -e http.request.uri # 导出所有 HTTP 响应体中的对象 tshark -r a.pcapng --export-objects http,/tmp/out # 提取 DNS 查询名 tshark -r a.pcapng -Y dns.flags.response 0 -T fields -e dns.qry.name # 只看某个 IP 的 TCP 载荷十六进制输出 tshark -r a.pcapng -Y ip.addr 10.0.0.5 tcp -T fields -e tcp.payload这里有个实用心得-T fields配合-e输出的是纯文本可以直接管道给sort | uniq -c | sort -rn做频次统计找异常值特别快。我在真实排障里也常这么干比如统计 DNS 查询域名出现次数一眼就能看出有没有异常域名在反复请求。4.4 USB 和无线这类非网络层流量的处理USB 流量题的核心是 HID 设备键盘、鼠标。键盘流量里真正有用的是数据段里的按键码在 Wireshark 里对应的字段老版本叫usb.capdata新版本拆成了usbhid.dataHID 设备专用。用显示过滤器usbhid.data就能把所有按键事件筛出来取每个包的最后一个字节对照 HID 按键码表翻译成字符即可。偷懒的写法是先导出tshark -r usb.pcapng -Y usbhid.data -T fields -e usbhid.data然后写个十来行的脚本映射码表。这类题之所以经典是因为它逼你理解流量分析不等于看 HTTP。无线802.11题的处理门槛在采集阶段——必须用支持监听模式的网卡或者题目直接给你一个wlan接口的抓包文件。分析时的关键字段是wlan.fc.type_subtype用来筛 Beacon、Probe Request、以及握手包。如果文件里有 WPA 四次握手的 EAPOL 包配合wlan.ssid和已知密码可以在 Wireshark 里配置解密Preferences Protocols IEEE 802.11 Edit Decryption Keys。要做的是判断题目给的是明文流量还是加密流量加密流量先找握手。5. RTP、TRDP 与蓝牙三类非典型流量的落地处理如果说 HTTP 和 TCP 是 Wireshark 的普通话那 RTP、TRDP、蓝牙 HCI 就是几种方言。它们各有各的处理套路但核心逻辑一致先让 Wireshark 认出来这是什么再想办法把它还原成人能理解的东西。5.1 RTP 语音流从流分析到音频还原RTP 本身只是传输层封装真正的音频编码信息藏在载荷里而编解码类型由信令通常是 SIP 或 H.323协商决定。所以分析 RTP 的第一件事是找信令。有 SIP 的话Telephony VoIP Calls会把整通电话的呼叫流程列出来点进去能看到主被叫、通话时长、以及 RTP 流的对应关系。没有信令也没关系直接走Telephony RTP Show All Streams。它列出所有 RTP 流每行带 SSRC、包数、丢包率、抖动、以及识别出的编码类型。选中一条点Analyze在弹出窗口里能看到丢包统计和乱序情况点Save Payload可以把载荷存成原始文件。编码类型决定了后续处理编码类型常见用途处理方式G.711 A-law / μ-law传统电话、VoIP 默认存成.au或加 WAV 头后直接播放G.722宽带语音需要 16kHz 采样转码后再听G.729压缩语音编解码器有授权限制通常需要额外插件或外部工具Opus现代 VoIP、WebRTC用支持 Opus 的工具解码H.264RTP 视频需要拼接分片并补起始码一个很实际的坑Save Payload存出来的是裸载荷没有文件头很多播放器直接打开会报错。解决办法是给数据套一个 WAV 头G.711 是 8kHz、单声道、8 位A-law 用格式码 6μ-law 用格式码 7或者直接用sox、ffmpeg指定格式转换# A-law 裸流转 WAV sox -t al -r 8000 -c 1 payload.raw -t wav audio.wav # μ-law sox -t ul -r 8000 -c 1 payload.raw -t wav audio.wav还有一点如果 RTP 流有丢包还原出来的音频会断续。Wireshark 的 RTP Player 对丢包做了补偿比如重复上一帧听起来会比裸解码顺一些但要追求原始音质还是得接受丢包的事实。5.2 RTP 视频流为什么导出后播不了视频比语音麻烦一层。RTP 承载视频时一帧图像会被切成多个 RTP 包分片每个包带自己的序列号和时间戳。Save Payload得到的是一串按顺序排列的载荷但里面缺了编解码器需要的起始码Start Code和 SPS/PPS 参数集的结构信息所以播放器识别不了。处理思路分两步。第一步是用Telephony RTP Show All Streams确认编码是 H.264 还是 H.265并观察 SSRC 是否一致——如果一帧被拆到多个 SSRC 上少见但存在得先按时间戳归并。第二步是补结构。常见做法是把载荷按时间戳分组每组前面补00 00 00 01起始码尾部对齐然后交给 ffmpeg 重新封装ffmpeg -f h264 -i raw.h264 -c copy out.mp4如果 ffmpeg 报找不到参数集说明 SPS/PPS 不在流里可能通过带外信令传输需要在抓包里单独找 SPS/PPS 那几帧H.264 的 NAL 类型 7 和 8手动拼到最前面。这一步没有任何捷径只能老老实实看字节。提示RTP 视频还原的成败八成取决于抓包是否从流一开始就完整以及有没有丢包。如果抓包起点不在 I 帧之前后面所有 P 帧都解不出来这是硬限制不是工具问题。5.3 TRDP 列车实时数据协议的解码与自定义端口映射TRDPTrain Real-time Data Protocol是轨道交通领域用的实时通信协议跑在 UDP 之上主要分两类过程数据PD周期性广播默认端口 UDP 17224和消息数据MD带确认的请求响应默认端口 UDP 17225。组播地址由工程组态决定实际项目里各不相同所以看到陌生组播地址不用慌先去要一份组态表。Wireshark 较新的版本对 TRDP 有解析支持但实际项目里经常遇到两个问题一是端口被改过解析器认不出来二是版本太老没有对应的 dissector。第一个问题的解法是Decode As右键一个 UDP 包选Decode As把 UDP 端口映射到 TRDP之后所有同端口流量都会按 TRDP 解析。这个操作是会话级的不影响文件本身。第二个问题的解法是自己写 Lua 插件。Wireshark 的 Lua 接口不算复杂基本套路是注册一个 Proto、定义几个 ProtoField、在 dissector 函数里按偏移量取值并add到协议树。我写过一个几十行的简版解析器用于看源 ID、目的 ID、序列号和报文类型对定位某台设备是不是没在周期内发数据已经够用。写完放到 Wireshark 的插件目录Help About Folders里能看到路径重启即生效。真实排障时我在 TRDP 上最常用的两个过滤器udp.port 17224看 PD 报文的时间间隔是否稳定周期抖动往往对应设备实时性问题以及用Statistics IO Graph把某个组播地址的包速率画出来看有没有丢周期。5.4 蓝牙 HCI 抓包btsnoop 日志的来源与打开方式蓝牙抓包和前面几种不太一样——你通常不是抓空气而是拿系统记录的 HCI 日志。在 Android 上开启开发者选项里的HCI 数据包日志开关然后重现一次操作日志会落在/data/misc/bluetooth/logs/下面不同版本路径略有差异文件名一般是btsnoop_hci.log。把文件拷出来用 Wireshark 打开就能看。Windows 上的情况要复杂一些。Wireshark 安装包里带的 USBPcap 能抓 USB 总线而很多蓝牙适配器是走 USB 的于是理论上可以抓 USB 层的蓝牙流量——但代价是所有 USB 流量都会进来文件又大又杂。实操中更常用的是让目标设备手机、嵌入式板子自己吐日志。打开 btsnoop 日志之后最常看的几个字段bthci_cmd看主机发了什么命令bthci_evt看控制器回了什么事件ATT 层用btattGATT 读写用btatt.opcode筛。如果是要分析低功耗设备的数据上报直接过滤btatt.value就能看到所有属性的值。一个真实的坑Android 上的 HCI 日志默认可能被日志缓冲区大小限制而截断。要抓长时间的数据得先调整蓝牙日志缓冲区或者通过设置里的开发者选项打开蓝牙日志缓冲区大小相关项不同厂商入口不同。这个细节决定了你能否抓到偶发问题很多人在这一步白费功夫。6. 卡住、崩溃、蓝屏把故障按抓包前中后三段来排Wireshark 本身是成熟软件出问题绝大多数时候不是它的 bug而是数据量、驱动、配置三件事的组合。我习惯按抓包前 / 抓包中 / 抓包后三段来定位效率比瞎试高很多。6.1 抓包过程中界面卡死的三个真实原因原因一数据包列表实时刷新。当流量很大时比如每秒几万包GUI 要不断往列表里追加行内存和渲染都会爆。检查View Update list of packets in real time是否被关闭——注意这个选项在开始抓包之后就无法更改了必须停下来重新配。做高流量抓包时我的做法是关掉实时刷新直接抓抓完再看。原因二显示过滤器太重。在抓包进行中应用一个复杂过滤器Wireshark 需要对每个新到的包都跑一遍过滤逻辑。如果不是必须就留空必须过滤的话用 BPF 抓包过滤器代替。原因三名称解析。默认开启的 MAC 名称解析和网络名称解析会触发大量反向查询网络不好的时候直接卡死。View Name Resolution里把这几项全关掉速度立刻不一样。顺带说一个高频问题Wireshark 一直卡住有时候其实是正在读取一个巨大的文件。几百兆到几个 G 的 pcap 在 GUI 里打开前面几十秒就是没反应的。判断方法是看窗口标题栏有没有变化、硬盘灯是否在闪。真要处理大文件先editcap切片# 每 20 万个包切一个文件 editcap -c 200000 big.pcapng part.pcapng # 按时间切片 editcap -A 2024-05-01 00:00:00 -B 2024-05-01 01:00:00 big.pcapng hour1.pcapng # 查看文件基本信息先确认有多大 capinfos big.pcapng6.2 蓝屏和驱动层问题的隔离思路蓝屏属于驱动层内核态问题Wireshark 作为用户态程序本身不会直接导致。这类问题通常出现在 Npcap 驱动与网卡驱动、虚拟网卡、或者某些拨号连接的适配器交互时。网上能看到的具体案例里有一类是 Npcap 驱动在特定拨号网络适配器上工作异常触发系统层面的错误。隔离思路很朴素换环境验证。先把 Npcap 升级到最新版本多数驱动层问题在版本迭代里已经被修掉然后在同一台机器上用不同的采集方式对比比如临时用系统自带工具采一圈或者换一台机器抓同样的流量看是否复现。如果只在特定网卡上复现基本可以锁定是网卡驱动和 Npcap 的组合问题这时候可以尝试用 Npcap 安装选项里的仅管理员可访问驱动来缩小影响面或者临时禁用那个适配器再抓。需要强调的是驱动层问题排查一定要留好现场蓝屏转储文件、驱动版本号、网卡型号和驱动版本这些信息缺一个都很难定位。6.3 打不开抓包文件和加载极慢的处理文件打不开分几种情况。第一种是文件确实损坏传输中断、磁盘满用capinfos打开会直接报错这种基本救不回来。第二种是格式不被识别比如某些设备导出的是私有格式或者 ANSI 文本的 hex dump需要先转换text2pcap可以把十六进制文本转成标准 pcaptext2pcap -l 1 input.txt output.pcap第三种是权限问题尤其是 Linux 上抓包文件属主是 root、普通用户没有读权限。这种最简单改权限即可。加载极慢的处理顺序是先关名称解析再关实时更新然后考虑是否被彩色规则拖累View Coloring Rules里规则越多越慢默认规则通常够用最后考虑拆文件。我个人的经验是超过 200MB 的文件一律先用tshark做统计只在必要时才用 GUI 打开局部。6.4 我平时用的一套轻量分析流程最后把这套流程总结成可以照着抄的顺序它适用于线上出问题、需要快速给结论的场景第一步capinfos确认文件时间范围、包数、大小没有这一步后面全是盲猜。第二步tshark -q -z io,phs看协议分布判断这是什么类型的流量。第三步tshark -q -z conv,tcp找流量最大的会话通常就是问题所在。第四步针对目标会话做时间线分析重点看三件事握手是否正常、有没有重传和乱序、RTT 是否稳定。第五步如果涉及应用层用-Y提取请求和响应字段对齐时间。这套流程的最大好处是不依赖 GUI可以直接在服务器上跑SSH 里就能给结论。真正需要图形化的时候比如画 IO Graph、看流图、听 RTP再把切片后的小文件下载到本地用 GUI 精看。一个我自己踩过的坑值得分享早期我总想一次性抓全量流量反正存下来慢慢看。结果是文件几个 G打开要几分钟分析效率极低。后来改成先用 BPF 砍掉无关流量、再按时间切片同样一个问题分析时间从两小时压到十几分钟。抓包这件事前期的约束比后期的技巧值钱得多。
返回列表