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

一、

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

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过滤后,仍出现其他端口的数据包,原因及解决方案如下:


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值