逐帧解剖是精查,统计是普查。本节把五台统计仪器逐一开机:会话矩阵(谁与谁说了多少)、端点排行(谁最活跃)、协议构成(成分是什么)、IO 图(强度随时间怎么变)、流程图(一次交互的完整时序)。工作法是"统计先行"——先让结构浮现,再决定往哪里下刀。5.3 节见过这些仪器的命令行形态,本节补齐解读功力。
$ tshark -r wan.pcapng -q -z conv,tcp | head -10 ================================================================================ TCP Conversations Filter: | <- | | -> | | Index | Flow A | Flow B | Packets | Bytes | Packets | Bytes | 0 | 10.0.3.17:52114 | 203.0.113.25:443 | 1212 | 811k | 940 | 62k | 1 | 10.0.3.17:52190 | 198.51.100.7:443 | 212 | 144k | 180 | 12k | 2 | 10.0.3.8:51822 | 203.0.113.25:443 | 6 | 380 | 4 | 240 | 3 | 10.0.3.8:51830 | 198.51.100.99:9000 | 2 | 120 | 0 | 0 | ================================================================================
四行数据四种故事:第 0 行是主力会话(81 万字节下行对 6 万上行,典型的内容消费型);第 2 行只有 6 包——握手加挥手级别的短命连接;第 3 行下行两包、上行零包,9000 端口且无回程——正是 4.2 节"SYN 得不到应答"的统计形态。读矩阵的功力在于把数字翻译成形态:包数悬殊是消费型、包数对称是交互型、只有几包是失败型。
GUI 的 Conversations 面板还支持按列排序与"作为过滤器引用"(右键某会话直接圈定五元组)——统计到筛子的衔接就在这个右键里。
$ tshark -r wan.pcapng -q -z endpoints,ip | head -8 ================================================================================ IPv4 Endpoints | Packets | | Bytes | | Tx | | Rx | 10.0.3.17 | 15844 | | 1045k | | 9.1% | | 84k | 203.0.113.25 | 15102 | | 989k | | 89.9% | 62k | 10.0.3.8 | 288 | | 31k | | 2.1% | 4k | 198.51.100.99 | 2 | | 120 | | 0.0% | 0 | ================================================================================
端点视图回答"谁在场"。两类高价值信号:榜首之外的异常活跃者(一台平时安静的机器突然进榜,是安全案的经典起点);只有发送没有接收的端点(下行归零,流量石沉大海——配对上会话矩阵的失败型会话,扫描或防火墙拦截的判定就有了两面证据)。
$ tshark -r mixed.pcapng -q -z io,phs | head -14 =================================================================== Protocol Hierarchy Statistics Filter: eth frames:41822 bytes:29841122 ip frames:41810 bytes:29833456 tcp frames:39187 bytes:29402117 tls frames:31204 bytes:25110093 tls.app_data frames:30122 bytes:24891102 http frames:612 bytes:562011 udp frames:2623 bytes:430339 dns frames:2387 bytes:311466 arp frames:12 bytes:720 ===================================================================
这棵百分比树是"该先看哪"的指南针:TLS 占绝对主体说明案子的重心在加密层(考虑 6.1 节解密);HTTP 还有 612 帧说明存在明文残留(5.2 节套路十三的线索);ARP 只有 12 帧且正常环境下不该更多——ARP 帧数异常膨胀是欺骗攻击的统计指纹。协议构成也是案情的"成分表":拿不准这是什么现场时,先跑它。
IO 图把"每秒多少字节/帧"画成曲线,支持多条并行、每条可挂独立过滤器——这让"对比"成为可能:
# 命令行形态(文本柱状):整体与 TCP 异常的双曲线 $ tshark -r wan.pcapng -q -z io,stat,5,"COUNT(tcp.analysis.retransmission)" \ | sed -n '5,14p' | Interval | Frames | Bytes | COUNT(tcp.analysis... | | 000.000-005.000 | 1842 | 982k | 3 | | 005.000-010.000 | 10422 | 7.31M | 47 | <- 流量与重传同步抬升 | 010.000-015.000 | 6288 | 4.02M | 51 | <- 流量回落重传仍高 | 015.000-020.000 | 913 | 601k | 2 |
中间两个区间是叙事的核心:第二个区间流量与重传同步抬升(拥塞的典型长相);第三个区间流量回落而重传仍在高位(问题不随负载消退——链路质量问题的嫌疑上升)。GUI 的 IO 图面板把同样的数据画成可缩放曲线,加上 frame.time_delta 类的 Y 轴还能看延迟分布。双曲线对比是 IO 图的精髓:单条曲线看走势,两条曲线看相关性,相关的方向(同步、滞后、背离)就是判定依据。
# GUI:统计菜单的流程图(Flow Graph),配合流过滤器先圈定范围 $ tshark -r incident.pcapng -Y "tcp.stream in {0 3 7}" -w streams.pcapng # 在 GUI 打开 streams.pcapng 后生成流程图: # 每列一个端点,每行一个报文,箭头方向即收发方向
流程图把 4.2 节的账本推演自动画成图:握手、数据、重传(虚线标注)、挥手在时间轴上一目了然。它的最佳搭档是 8.3 节的模式库——判定路径的每一步,在流程图上都有对应的视觉特征(重传的重复箭头、零窗口的探测脉冲、RST 的红色终止线)。
💡 仪器的开机顺序有讲究:成分表(定向)→ 端点榜(找人)→ 会话矩阵(找关系)→ IO 图(找时段)→ 流程图(看细节)。跳级使用不是不行,但返工率高——先知道"是什么现场",再决定"用哪台显微镜"。
仪器开齐,下一节解决"仪器转不动大文件怎么办"——性能调优的完整清单。