tcp.port 在做什么
tcp.port 按传输层端口数字筛选报文,默认匹配源端口与目的端口中的任意一侧;tcp.srcport 与 tcp.dstport 用来限定方向。观察客户端发起的会话时,用 tcp.dstport == N 更干净,因为结果里不会混进服务端的回包;反过来用 tcp.srcport == N 就是只看服务端发出的方向。多个端口可以用集合写法一次写完,端口区间用两个比较运算符组合表达。注意它只管 TCP,UDP 上同号端口的流量不会命中。
基本信息
| 双向匹配 | tcp.port == 443 |
|---|---|
| 方向限定 | tcp.srcport == 443 / tcp.dstport == 443 |
| 集合写法 | tcp.port in {80, 443, 8080} |
| 区间写法 | tcp.port >= 8000 && tcp.port <= 8100 |
| 范围限制 | 只匹配 TCP,UDP 上同号端口要用 udp.port 单独查 |
典型使用场景
- 定位某个服务端口的全部会话,作为进一步分析的起点
- 只看客户端发起的请求方向,排除服务端回包带来的干扰
- 一次观察多个并行服务的流量,例如灰度期间新旧端口同时在线
- 排除监控与心跳占用的端口,让视图只剩业务流量
- 与地址字段组合,精确到某台客户端访问某个服务的单向流量
常用示例
常用示例
tcp.port == 443 # 该端口的双向流量
tcp.dstport == 3306 && ip.dst == 10.0.0.20 # 只看发往数据库的请求
tcp.srcport == 8443 # 只看服务端发出的方向
tcp.port in {80, 443, 8080} # 多端口集合
tcp.port >= 8000 && tcp.port <= 8100 # 端口区间
tcp.port == 8080 && http.request.method == "POST" # 叠加应用层条件
tcp.dstport == 443 && tcp.flags.syn == 1 # 该端口的建连请求
tcp.port == 443 && tcp.analysis.retransmission # 该端口上的重传端口条件组合
| 表达式 | 匹配内容 | 使用场景 |
|---|---|---|
| tcp.port == 443 | 源或目的任一侧等于该端口 | 抓该端口的全部往来,起手式 |
| tcp.dstport == 3306 | 只有目的端口匹配 | 统计客户端请求与连接尝试 |
| tcp.srcport == 8443 | 只有源端口匹配 | 确认服务端是否真的发出了响应 |
| tcp.port in {A, B} | 集合中的任意端口 | 多服务并列观察,写法比多个或更短 |
| tcp.port == 443 && ip.addr == A | 端口加地址收窄 | 锁定某台主机访问该服务的流量 |
端口是配置约定而不是协议标识。同一个端口号上可能同时跑 TCP 与 UDP(例如 443 上的 TLS 与 QUIC),只查 TCP 会漏掉一半流量,Web 类问题两边都要看。
经过 NAT、负载均衡或代理后端口可能已被改写。跨设备对照时,先确认抓包点位于改写之前还是之后,否则会把端口不一致误判成链路异常。
与其他字段配合
与其他字段配合
tcp.port == 443 && tcp.stream == 12 # 只看某条流
udp.port == 443 # QUIC 要单独查 UDP
tcp.port == 443 && !(ip.addr == 10.0.0.5) # 排除探活来源
tcp.dstport == 443 && tcp.flags.rst == 1 # 该端口的连接被重置判读要点
- 同一目的端口上大量短会话说明连接复用不足,值得结合连接池配置一起看
- 客户端端口是随机的,统计客户端数量要看源地址而不是源端口
- 端口条件与非业务端口排除条件一起用时,注意别把服务端回包也排除掉
- 同一端口既有正常请求又有异常重置时,用 tcp.stream 拆开逐条定位
端口与方向的组合用法
- 双向看端口:掌握该服务上的全部往来,适合第一轮摸底
- 只看目的端口:统计客户端请求量,结果不会被服务端回包放大
- 只看源端口:确认服务端是否真的发出了响应,排查单向不通很有效
- 端口加地址双向限定:把一台客户端与一个服务的会话单独隔离出来
- 端口加时间窗:结合时间字段切出故障发生的那几分钟,避免被海量正常流量淹没
- 端口加标志位:只看该端口上的建连与复位,用少量报文判断服务可用性