linux实时抓包统计的核心是边抓包边汇总,可用dumpcap -q每秒输出包数与字节数,tshark -q -z io,phs实时显示协议分布,lnstat监控内核网络计数器以分析底层原因。

Linux 中实时查看抓包的统计摘要信息,核心思路是「边抓包、边汇总」,而不是等抓完再分析。最直接高效的方式是用 dumpcap -q 或搭配 tshark -q 实时输出计数,同时辅以 lnstat 观察内核级网络行为变化。
用 dumpcap -q 实时显示基础计数
dumpcap 是 Wireshark 底层抓包引擎,轻量且支持实时统计输出:
- -q 选项启用“quiet 模式”,每秒在终端打印当前捕获的数据包总数和字节数
- 命令示例:sudo dumpcap -i eth0 -w capture.pcap -q
- 输出类似:1245 packets captured, 1.87 MB(每秒刷新)
- 注意:-q 不影响抓包本身,也不依赖 GUI;适合后台运行 + 日志重定向
用 tshark -q 实时解析并统计协议分布
tshark 可在抓包过程中实时解析协议,比 dumpcap 更进一步:
- 命令示例:sudo tshark -i eth0 -q -z io,phs
- -z io,phs 表示按协议层级(Protocol Hierarchy Statistics)实时汇总
- 它会持续输出类似:TCP: 62.3%, HTTP: 18.7%, DNS: 9.2%,并动态更新
- 也可加 -a duration:10 限制运行 10 秒后自动停止并输出最终统计
用 lnstat 监控内核网络子系统活跃度
如果想了解「为什么包多/少」,而不仅是「有多少」,lnstat 能补充底层视角:
- 它读取 /proc/net/stat/ 下的内核计数器,例如路由缓存命中率、ARP 请求次数
- 命令示例:sudo lnstat -c 0 -i 2 -k Entries,Hits(每 2 秒刷新一次路由表条目与命中数)
- 配合 -d 先查可用关键字:lnstat -d | grep -i arp,再针对性监控
- 适合判断是否因 ARP 未命中导致重传、或路由缓存失效引发延迟抖动
组合使用的小技巧
单个工具各有侧重,组合起来更全面:
- 前台运行 dumpcap -q 看总包量,后台开一个 tshark -z io,phs 看协议构成
- 另开终端跑 lnstat -k InReceives,OutRequests,观察 IP 层收发趋势是否匹配
- 所有输出都可重定向到文件:2>&1 > stats.log,便于事后比对











