首页/网络/抓包与流量分析速查/五元组复用带来的分析干扰
TCP 流分析82 条

五元组复用带来的分析干扰

同一五元组(源/目的 IP+端口+协议)被快速复用会产生多条逻辑连接,tcp.stream 与之对应多条:分析历史事件必须对齐时间而非只看流号。

五元组复用带来的麻烦

源地址、目的地址、源端口、目的端口、协议这五项相同的一组流量,在抓包工具里被视为同一条会话。但真实网络里同一组五元组会被反复使用:连接关闭后客户端很快用相同的本地端口再建一条,或者经过地址转换后多条内部连接被映射到同一个出口端口。分析时必须按时间把这几条逻辑连接切开,否则会把不同连接的失败率算到同一条上。

基本信息

核心字段tcp.stream 用于标识逻辑连接,同一五元组的复用会对应多个取值
连接起点以不带确认标志的 SYN 作为一条新连接的开始
分析手段结合握手时间与首包位置做时间切分
报告写法引用时同时给出时间戳与流编号,避免歧义
高发场景地址转换出口、短连接密集的客户端、压测工具
注意事项流编号是工具按出现顺序分配的,不是协议里的标识

典型使用场景

  • 失败率统计:按连接而不是按五元组算,避免把多次复用混成一条长连接
  • 短连接分析:压测或轮询场景下大量连接复用同一组端口,需要按时间切片
  • 地址转换排查:出口端口复用导致多用户流量交织,按时间与来源区分
  • 时序复盘:把同一个五元组的多次建连按时间排好,还原真实交互顺序
  • 报告复核:给出时间与流编号,让看报告的人能独立还原

按时间切开复用连接

按时间切开复用连接
# 同一组五元组上出现的所有握手, 按时间列出, 每个 SYN 就是一条新连接
tshark -r a.pcap -Y 'ip.src == 10.0.0.5 && tcp.srcport == 51234 && tcp.flags.syn == 1' \
  -T fields -e frame.number -e frame.time -e tcp.dstport -e tcp.stream
# 看该五元组一共对应几个流编号
tshark -r a.pcap -Y 'ip.src == 10.0.0.5 && tcp.srcport == 51234' -T fields -e tcp.stream | sort -u
# 按时间窗统计各流的情况, 避免混算
tshark -r a.pcap -Y 'tcp.stream == 12 || tcp.stream == 15 || tcp.stream == 19' -T fields -e frame.number -e _ws.col.info | head -30

现象与处理

现象含义处理方式
同五元组多个 SYN端口被复用了多次按 SYN 位置切分连接
同一流编号内出现两次握手极少见, 需确认是否漏判边界核对时间与序列号确认
大量短连接轮询或压测场景按时间切片统计成功率
出口端口高度集中地址转换导致复用按内网来源再区分
失败集中在一段时间该时段资源或链路问题结合时间窗排查而非按流编号
流编号由工具按出现顺序分配,刷新、重新过滤或换工具打开都可能变化;把它写进报告时务必附带时间戳,否则对方对不上。
地址转换环境下出口端口复用率很高,同一条五元组可能对应几十条连接;统计连接数时以握手次数为准,而不是以五元组组合数。

易错点

  • 把复用的多条连接当成一条长连接统计,失败率与耗时都被错误平均,结论失真
  • 按流编号跨时间引用结论,对方重新打开文件后编号不同,无法复核
  • 只用五元组去定位报文而忽略时间维度,把不同时刻的报文混在一条时间线上
  • 在地址转换出口抓包时按内网来源直接判定,实际多条内网连接已共享同一出口端口,需结合时间与端口分配规律区分

数据来源与参考

  • RFC 6056(端口选择)
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌