首页/网络/抓包与流量分析速查/tcpdump greater 与 less 按包长过滤

tcpdump greater 与 less 按包长过滤

按报文长度过滤:greater N 抓大于 N 字节的包,less N 抓小于 N 字节的包;用于筛选大包、MTU 相关包与心跳小包。

按包长过滤

greater N 匹配长度大于 N 字节的报文,less N 匹配小于 N 字节的报文,这里的长度包含链路层头部。筛选大包、核对 MTU 边界、只保留心跳类小包时,用它比按协议过滤更直接,也更容易与具体的字节阈值对应起来。

基本信息

适用平台Linux / macOS / BSD 上的 tcpdump
语法greater <字节数> / less <字节数>
长度口径包含链路层头部
常见用法与 host 或端口条件组合缩小范围
注意高速链路上筛大包对磁盘写入压力大

典型使用场景

  • 只保留超过某个尺寸的大包,观察是否接近 MTU 边界
  • 只抓心跳与探测类小包,分析长连接的保活行为
  • 核对封装后报文长度是否超出预期
  • 定位大包丢失而小包正常的问题
  • 按长度阈值过滤噪音流量,减少样本体积

常用示例

常用示例
tcpdump -i eth0 -nn 'greater 1400 and host 10.0.0.9' -c 20      # 大包
tcpdump -i eth0 -nn 'less 100 and tcp port 443' -c 20           # 小包
tcpdump -i eth0 -nn 'tcp port 80 and greater 1000' -c 20        # 网页传输中的大包
tcpdump -i eth0 -nn 'greater 1500' -c 10                        # 超过典型 MTU

写法与用途

写法匹配内容用途
greater 1400大于 1400 字节的包定位大包与分片
less 100小于 100 字节的包观察心跳与探测
greater 1500超过典型 MTU 的包检查封装与分片
与 host 组合特定对端的大包聚焦单条链路
长度包含链路层头部,换算 MTU 时要把这一层的开销一并考虑进去。
筛大包时留意退出时的丢包统计,高速链路下写盘压力可能导致样本不完整。

补充要点

  • 把长度条件与端口条件组合,能快速定位特定业务的大包行为
  • 核对 MTU 问题时先算出各层头部开销,再确定合适的阈值
  • 小包过多时结合协议判断是否属于正常交互,而不是直接当作异常
  • 阈值选择要贴合实际链路参数,照搬他人取值可能不适用
抓包工具的长度口径可能与本机统计口径不同,跨工具比较前先确认各自定义。

补充要点

  • 长度条件与协议条件组合,能快速聚焦特定业务的报文
  • 核对 MTU 问题前先算清各层头部开销,再确定合适的阈值
  • 阈值要贴合实际链路参数,照搬他人取值往往不适用
高速链路上筛大包时留意退出时的丢包统计,样本不完整会让结论失真。

易错点

  • 忽略链路层头部导致阈值设置偏差,过滤结果与预期不符
  • 用长度条件代替协议条件,把不同协议的报文混在一起统计
  • 高速链路上筛大包却不限量,写入压力大导致关键报文被丢弃

数据来源与参考

  • man 8 pcap-filter(length 原语)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌