目录

Wireshark在-显示过滤器中加入条件过滤后,出现其他类型的数据包,为什么

Wireshark:在 显示过滤器中“加入条件”过滤后,出现其他类型的数据包,为什么?

一、

在Wireshark中使用 “tcp协议” 过滤后,仍出现TLSv1.2协议的数据包,原因如下:

https://i-blog.csdnimg.cn/direct/e66b2cb8401641709f344854d9100544.png

1. ‌ 协议层次关系

  • TCP是传输层协议 ‌,而‌ TLS属于应用层协议 ‌,后者直接运行于TCP之上‌28。因此,所有TLS流量(如HTTPS通信)均会通过TCP传输。当过滤TCP协议时,实际上会显示所有基于TCP的应用层协议流量,包括TLS‌。(如:HTTP等基于TCP的应用层协议)

2. ‌ 显示过滤器的逻辑

  • tcp 过滤器仅筛选传输层协议为TCP的数据包,但‌ 不会排除TCP上层承载的具体应用协议 ‌。例如,TLS握手过程(如ClientHello、ServerHello)均通过TCP报文传输,因此会被 tcp 过滤器命中‌。

3. ‌ 解决方案

  • 排除TLS流量 ‌:通过组合过滤器 tcp and not tls ,可仅显示非TLS的TCP流量‌37。
  • 明确过滤目标 ‌:若需分析纯TCP行为(如连接建立、流量控制等),需手动排除应用层协议干扰;若需分析TLS,可直接使用 tls 过滤器‌。

4. ‌ 示例场景

  • HTTP与HTTPS对比 ‌:HTTP直接基于TCP,而HTTPS需先完成TLS握手。因此,过滤 tcp 时会同时显示两者,但过滤 http 则仅显示HTTP流量‌。

总结:TCP过滤器的设计是捕获所有基于TCP的流量(含TLS)。若需精确分离TCP与TLS,需通过逻辑运算符组合过滤条件‌。

二、

在Wireshark中使用 tcp.port 过滤后,仍出现其他端口的数据包,原因及解决方案如下:

https://i-blog.csdnimg.cn/direct/9afcb854b4c248e3a39c147948ab1813.png


1、核心原因

  1. tcp.port 的过滤逻辑问题

    • tcp.port 仅匹配‌ 源端口或目标端口包含指定值的TCP数据包 ‌,但‌ 不会排除其他传输层或应用层协议的流量 ‌‌。例如,若过滤 tcp.port == 80 ,可能同时显示HTTP协议(端口80)和复用该端口的其他TCP应用协议数据包‌。
  2. 协议层次嵌套

    • TCP为传输层协议,应用层协议(如HTTP、TLS、FTP等)均通过TCP端口传输。过滤 tcp.port 会显示‌ 所有基于该端口的应用层协议流量 ‌(如HTTPS/TLSv1.2流量使用TCP 443端口)‌。
  3. 多协议复用同一端口

    • 某些场景下,同一端口可能承载多种协议(如SSH和自定义TCP服务复用22端口)。此时仅过滤端口无法区分具体协议‌。

2、解决方案

  1. 精确过滤端口方向

    • 使用 tcp.srcporttcp.dstport 明确区分源/目标端口,避免因双向端口匹配引入干扰流量‌68。
    • 示例: tcp.dstport == 80 (仅显示目标端口80的TCP数据包) https://i-blog.csdnimg.cn/direct/062975e1c06341328a30eeacfe9aebab.png
  2. 结合应用层协议过滤

    • 若需排除特定应用协议(如TLS),需添加 and not 条件。
    • 示例: tcp.port == 443 and not tls (过滤443端口但排除TLS协议)
  3. 检查过滤语法有效性

    • 确认过滤器输入框显示为绿色(语法正确)。若为红色,需修正语法错误(如多余空格、运算符错误)‌。
  4. 验证协议实际使用端口

    • 通过 Statistics > Protocol Hierarchy 查看各协议的真实端口分布,避免因端口复用导致误判‌。

3、示例场景

需求过滤器效果
仅分析目标端口80的HTTP流量tcp.dstport == 80 and http排除非HTTP协议及源端口80的干扰
抓取443端口但排除TLSv1.3tcp.port == 443 and tls.handshake.version != 0x0304精确过滤TLS版本
分离SSH与自定义TCP服务(复用22端口)tcp.port == 22 and (ssh or tcp.payload contains "CUSTOM_HEADER")通过负载特征区分协议

4、总结

tcp.port 仅作用于传输层端口,无法自动隔离应用层协议。需通过‌ 组合过滤条件 ‌(端口+协议)或‌ 细化端口方向 ‌实现精准过滤‌。对复杂场景,建议结合统计工具验证流量分布‌。