姚令武 2025-09-01 15:45 采纳率: 98.6%
浏览 6
已采纳

如何使用Wireshark进行端口过滤?

**问题:如何在Wireshark中使用端口过滤来捕获特定服务的流量?** 在进行网络故障排查或安全分析时,常常需要捕获特定端口的流量,例如HTTP(80)、HTTPS(443)或DNS(53)。Wireshark提供了强大的端口过滤功能,但许多用户对其语法和使用方法不够熟悉。请说明如何在捕获过程中使用捕获过滤器(Capture Filter)和显示过滤器(Display Filter)来筛选特定端口的流量,并解释两者之间的区别。此外,举例说明如何同时过滤多个端口或排除某个端口的流量。
  • 写回答

1条回答 默认 最新

  • 关注

    一、Wireshark端口过滤基础概念

    Wireshark 是网络协议分析的利器,广泛用于网络故障排查、性能优化和安全审计。在实际工作中,我们往往不需要查看全部流量,而是聚焦于特定服务的流量,如 HTTP(端口 80)、HTTPS(端口 443)或 DNS(端口 53)。Wireshark 提供了两种主要的过滤方式:

    • 捕获过滤器(Capture Filter):在捕获过程中实时过滤,仅捕获符合条件的数据包。
    • 显示过滤器(Display Filter):在数据包捕获完成后进行过滤,仅显示符合条件的数据包。

    两者的核心区别在于执行阶段不同:捕获过滤器作用于数据包进入 Wireshark 的早期阶段,节省系统资源;而显示过滤器作用于整个捕获的数据包集合,适合后期分析。

    二、捕获过滤器的使用方法

    捕获过滤器使用 libpcap/WinPcap 的过滤语法,也称为 BPF(Berkeley Packet Filter)语法。

    1. 单个端口过滤

    例如,只捕获目的或源端口为 80(HTTP)的流量:

    port 80

    如果你想只捕获目标端口为 80 的流量(即数据包的目标端口是 80):

    dst port 80

    同样地,源端口为 80 的过滤表达式为:

    src port 80

    2. 多个端口过滤

    若要同时捕获端口 80 和 443 的流量,可以使用逻辑或操作符 or

    port 80 or port 443

    3. 排除某个端口

    要排除端口 53(DNS)的流量,使用 not 关键字:

    not port 53

    三、显示过滤器的使用方法

    显示过滤器使用的是 Wireshark 自定义的语法,功能更加强大,支持字段名和逻辑表达式。

    1. 单个端口过滤

    显示过滤器中,过滤端口的表达式为:

    tcp.port == 80

    注意,这里的 tcp.port 表示 TCP 的源或目的端口。如果你只想过滤目的端口为 80 的 TCP 流量:

    tcp.dstport == 80

    同理,源端口为 80 的表达式为:

    tcp.srcport == 80

    2. 多个端口过滤

    显示过滤器中也可以使用逻辑运算符,例如同时显示端口 80 和 443 的流量:

    tcp.port == 80 or tcp.port == 443

    3. 排除某个端口

    排除端口 53 的 DNS 流量:

    tcp.port != 53

    或者更精确地排除目的端口为 53 的流量:

    tcp.dstport != 53

    四、捕获过滤器与显示过滤器的对比

    特性捕获过滤器显示过滤器
    执行阶段捕获过程中捕获完成之后
    语法BPF 语法Wireshark 自定义语法
    资源消耗高(需加载所有数据)
    适用场景长时间捕获、资源有限后期分析、调试

    五、典型应用场景示例

    以下是一些常见的使用场景及其对应的过滤表达式:

    • 捕获 HTTPS 流量(端口 443)
      • 捕获过滤器:port 443
      • 显示过滤器:tcp.port == 443
    • 同时捕获 HTTP 和 DNS 流量
      • 捕获过滤器:port 80 or port 53
      • 显示过滤器:tcp.port == 80 or tcp.port == 53
    • 排除所有 SSH 流量(端口 22)
      • 捕获过滤器:not port 22
      • 显示过滤器:tcp.port != 22

    六、高级技巧与注意事项

    在实际使用中,还需注意以下几点:

    1. 端口号可以是服务名,例如 http 等价于 80,但建议使用数字以避免混淆。
    2. UDP 和 TCP 的端口过滤可以分开处理,例如:
      • 仅过滤 TCP 端口:tcp port 80
      • 仅过滤 UDP 端口:udp port 53
    3. 在显示过滤器中,可以结合协议字段进行更复杂的组合,例如:
      tcp.port == 80 and ip.addr == 192.168.1.1

    七、流程图:端口过滤逻辑示意图

    graph TD A[开始捕获] --> B{是否使用捕获过滤器?} B -- 是 --> C[应用BPF语法过滤] B -- 否 --> D[捕获所有流量] D --> E[开始分析] E --> F{是否使用显示过滤器?} F -- 是 --> G[应用Wireshark显示过滤] F -- 否 --> H[显示所有数据包]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月1日