首页/网络/网络排障速查/tshark 命令行抓包与字段提取

tshark 命令行抓包与字段提取

服务器上没有图形界面时用 tshark:-f 捕获过滤、-Y 显示过滤、-T fields -e 提取字段,可把报文直接转成便于统计的文本。

网络排障速查网络更新于 2026-10-13

tshark 的角色

tshark 是 Wireshark 的命令行版本,把抓包、解析与统计能力搬到无图形界面的服务器上。它同时支持两套过滤语法:捕获过滤器用 BPF,与 tcpdump 完全一致,决定抓什么;显示过滤器用 Wireshark 字段语法,作用在已抓到的报文上,决定看什么。配合字段提取与内置统计,可以把报文直接转成便于排序和计数的文本,是自动化排障与事后分析的常用入口。

基本信息

适用平台Linux、macOS、Windows,包名通常为 wireshark-cli 或 tshark
两套过滤-f 捕获过滤(BPF),-Y 显示过滤(Wireshark 语法)
字段提取-T fields -e 字段名,可多个字段并用 -E 指定分隔符
统计能力-z 系列:会话统计、时间序列、专家信息
文件接口-w 写 pcap,-r 读 pcap

典型使用场景

  • 生产机上现场抓包后落盘,带回本地用图形界面细看
  • 把重传、复位等异常事件抽成文本清单,便于统计与排序
  • 大批量 pcap 巡检:用统计功能快速找出问题会话
  • 自动化排障脚本:抓取指定字段后交给 awk 或表格工具处理
  • 结合时间序列统计观察流量与错误随时间的变化

常用命令

常用命令
tshark -i eth0 -f 'tcp port 443' -c 20
tshark -i eth0 -Y 'tcp.analysis.retransmission' -T fields -e frame.number -e ip.src -e tcp.seq
tshark -r cap.pcap -Y 'http.response.code >= 500' -T fields -e frame.number -e ip.src -e http.response.code
tshark -r cap.pcap -q -z conv,tcp | head -20
tshark -r cap.pcap -q -z io,stat,1,'COUNT(frame)frame'
tshark -r cap.pcap -Y 'tcp.flags.reset == 1' -T fields -E separator=, -e ip.src -e tcp.dstport

常用参数

参数用途注意点
-f捕获过滤器(BPF,同 tcpdump)与 -Y 语法不通用
-Y显示过滤器(Wireshark 语法)先抓后筛,不影响抓取量
-T fields -e F输出指定字段的文本字段名要写全,如 tcp.len
-E separator=,指定字段分隔符便于导入表格工具
-z统计,如 conv、io,stat、expert配合 -q 只输出统计结果
-w / -r写 pcap / 读 pcap现场只抓一次,事后反复解析
tcpdump 抓包加 tshark 解析是生产排障的黄金组合:前者稳定轻量、对系统负担小,后者解析与统计能力完整。
输出字段默认用制表符分隔,写脚本时显式指定 -E separator 并配合 -E header=n 控制是否打印表头,能减少后续处理的意外。
字段名可以先用 -T fields -e 加猜测再修正,遇到字段不存在时 tshark 会直接提示名称未找到,比反复查文档更快;正式脚本里要固定字段名,跨版本升级后重新验证一次。

易错点

  • 把 -f 与 -Y 的过滤语法搞混:前者是 BPF,后者是显示过滤,混用直接报错
  • 对超大 pcap 直接全量字段输出:文本量爆炸,应先用 -Y 缩小或用 -z 统计
  • 读文件时忘记 -Y 只作用于已抓内容:过滤强度再高也不会减少磁盘占用
  • 在业务机上长时间用 tshark 现场抓包:解析开销高于 tcpdump,高流量场景应落盘后再分析

数据来源与参考

  • tshark 手册页(wireshark 套件)
  • Wireshark 文档:tshark 字段输出

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌