首页/网络/抓包与流量分析速查/重复报文的去重处理
抓包工具链61 条

重复报文的去重处理

合并或镜像重复采集会产生重复帧:editcap -d/-D 按窗口去重(-w 指定窗口);用于清理多次采集的叠加结果。

重复报文从哪来

重复帧通常不是网络产生的,而是采集方式带来的:同一段流量在镜像口与主机上各抓一份、把多个时间段文件合并、或者在两台设备上重复抓取了同一链路。editcap 提供去重能力,把当前报文与窗口内既有报文的长度和内容摘要比对,命中就跳过。由于比对不看时间戳,真实网络里的重传也可能被判为重复,去重前要明确目的。

基本信息

基本语法editcap [选项] 输入文件 输出文件
-d按默认窗口去重,比对长度与内容摘要
-D 窗口按指定的窗口大小去重,窗口越大比对范围越广
-w 时间窗部分版本用于设定时间窗,语义随版本变化,以本机帮助为准
副作用不区分采集重复与真实重传,可能删掉有效证据
使用前提先去重再分析,或保留原始文件做对照

典型使用场景

  • 镜像重复:镜像口与主机同时采集同一段流量,合并后出现成对重复帧
  • 多次任务叠加:同一时段分几次抓取后合并,重叠区间产生重复
  • 双机采集:两端都在同一汇聚设备上取流,合并且只保留一份
  • 存储瘦身:归档前去掉重复帧,减少体积同时保留时序信息
  • 统计校核:去重前后对比包数,判断重复比例是否合理

去重示例

去重示例
capinfos merged.pcapng                     # 先记录原始包数, 便于对比
editcap -d merged.pcapng dedup.pcapng      # 默认窗口去重
editcap -D 10 merged.pcapng dedup2.pcapng  # 用更大的窗口比对
capinfos dedup2.pcapng                     # 核对剩余包数与时间范围
tshark -r dedup2.pcapng -Y 'tcp.analysis.retransmission' -T fields -e frame.number | wc -l
# 对比去重前后该类计数, 判断是否误删了真实重传

去重前后的核对项

核对项去重前去重后应关注
总包数记录原始值减少量应与重复比例相符
时间范围首末包时间不应变化, 变了说明误删
重传计数记录基准值明显下降说明真实重传被删
会话数按 tcp.stream 统计不应减少, 减少即为异常
文件大小对比压缩比体积下降属预期
去重是不可逆的删除操作:取证或需要复盘真实重传的场景不要直接在主文件上执行,先输出到新文件,并保留原始文件与去重参数记录。
不同版本的 editcap 对窗口参数的叫法与含义有差异,跨版本协作时把实际使用的命令与版本一起写进说明,避免对方复现出不同结果。

易错点

  • 直接覆盖原始文件做去重,之后需要真实重传时已无法恢复,正确做法是另存新文件并保留原始文件
  • 窗口设得过大,把内容相同但属于不同事务的心跳或轮询报文也判为重复删掉,流量特征被改变
  • 把去重当成丢包修复:重传是网络真实行为的证据,去重后从统计里消失,故障分析结论随之失真
  • 去重后未做包数与时间范围核对,误删了部分正常帧却毫无察觉,后续统计基于残缺样本

数据来源与参考

  • editcap 手册(-d/-D/-w)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌