TCPDUMP过滤表达式详解

3星 · 超过75%的资源 需积分: 10 4 下载量 142 浏览量 更新于2024-10-13 收藏 77KB PDF 举报
"TCPDUMP筛选器" 在网络安全和网络监控领域,TCPDUMP是一个非常重要的工具,用于捕获和分析网络中的数据包。它通过使用过滤表达式来筛选要捕获的数据包,使得用户可以专注于特定类型的通信或特定源/目标。当我们谈论"TCPDUMP filters"时,我们关注的是如何构建和使用这些过滤表达式来优化数据包捕获的过程。 首先,一个有效的过滤表达式决定了哪些数据包会被记录。如果没有提供表达式,TCPDUMP将默认捕获网络上的所有数据包。然而,通过提供一个表达式,只有满足该表达式的包才会被输出。表达式是基于Berkeley Packet Filter (BPF)语法的,这是一种强大的、允许用户定义数据包过滤规则的机制。 过滤表达式由一系列的“qualifiers”(修饰词)组成,这些修饰词分为三类: 1. **Type Qualifiers**(类型修饰词):它们定义了标识符(名称或数字)所指代的实体类型。常见的类型包括`host`(主机)、`net`(网络)和`port`(端口)。例如,`host foo`将匹配任何与主机`foo`相关的数据包,`net 128.3`则会匹配属于网络128.3的数据包,而`port 20`会关注端口号为20的通信。 2. **Dir Qualifiers**(方向修饰词):这些修饰词指定数据包的传输方向。可能的方向有`src`(源)、`dst`(目的)、`src or dst`(源或目的)以及`src and dst`(源和目的)。例如,`src foo`将捕获来自`foo`的数据包,`dst net 128.3`会关注目标网络为128.3的数据包,`src or dst port ftp-data`则会捕获与FTP数据端口相关的任何通信。 3. **Proto Qualifiers**(协议修饰词):它们限制匹配到特定的协议。可能的协议包括`ether`(以太网)、`fddi`(FDDI网络)、`tr`(令牌环)、`ip`(IP)、`ip6`(IPv6)、`arp`(地址解析协议)、`rarp`(反向地址解析协议)、`decnet`(DECnet)、`tcp`(传输控制协议)和`udp`(用户数据报协议)。比如,`ethersrc foo`只捕获源自特定以太网地址的数据包,`arp net 128.3`关注128.3网络的ARP请求,而`tcp port 21`则会筛选出TCP协议且端口为21(FTP控制端口)的数据包。 如果在表达式中没有指定类型或方向修饰词,TCPDUMP会默认使用`host`作为类型,`src or dst`作为方向。同样,如果没有指定协议修饰词,TCPDUMP会假设所有与类型一致的协议都适用。这使得用户可以方便地构建复杂而精确的过滤规则,以满足各种网络监控需求。 在使用TCPDUMP进行数据包捕获时,理解并熟练运用这些过滤表达式是至关重要的,它可以帮助我们有效地减少捕获的数据量,专注于我们真正关心的网络活动,从而提高故障排查、安全审计和性能分析的效率。