按包长过滤
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 问题前先算清各层头部开销,再确定合适的阈值
- 阈值要贴合实际链路参数,照搬他人取值往往不适用
高速链路上筛大包时留意退出时的丢包统计,样本不完整会让结论失真。