热门关键字: jsp web pl/sql pl webwor   →开发工具  操作系统
当前位置 : 无忧IT编程网 > 其它语言 > C++ > 正文

对过滤串表达式的语法分析

来源:转载作者:无忧时间:08-01-24
ether dst ehost
当以太网的目的地址为ehost时为true。ehost可以是一个来自/etc/ether的名字,也可以是一个数字代号(参见 ethers(3N)for numeric format)。
ether src ehost
当以太网的源地址为ehost时为true。
ether host ehost
当以太网的目的地址,或源地址为ehost时为true。
gateway host
host为网关时为true。即,以太网源地址或目的地址是host,但源地址和目的地址不同时为hosthost必须能被机器的主机-IP地址(host-name-to-IP-address)机制找到(如主机名文件,DNS,NIS等),也能被主机-以太网地址(host-name-to-Ethernet-address)机制找到(如/etc/ethers等)。例如:
ether host ehost and not host host
host / ehost均可使用名字或数字。这个语法目前在IPv6下不能工作。
dst net net
当IPv4/v6数据包的目的地址的网络号包含了net时为true。net可以是一个来自/etc/networks的名字,也可以是一个网络号(更多内容请参见 networks(4))。
src net net
当IPv4/v6数据包的源地址的网络号包含了net时为true。
net net
当IPv4/v6数据包的目的地址,或源地址的网络号包含了net时为true
net net mask netmask
当IP地址是 net ,子网掩码匹配 netmask 时为true。可能需要 srcdst加以限制。注意,这个语法不能应用于IPv6。
net net/len
当IP地址是 net ,子网掩码连续1的个数为 len 时为true。可能需要 srcdst加以限制。
dst port port
当数据包是ip/tcp, ip/udp, ip6/tcp 或 ip6/udp,并且目的端口号是port时为true。port可以是数字,或是在/etc/services中被使用的名字。(参见 tcp(4P) and udp(4P))。如果使用名字,那么端口号和协议都将被检测。如果使用数字,或者一个不明确的名字,那么只有端口号会被检测。(比如:dst port 513将打印tcp/login数据流和udp/who数据流。port domain将打印tcp/domain的数据流和udp/domain的数据流)。
src port port
当源端口号是 port时为true。
port port
当源端口号或目的端口号为 port 时为true。以上任何一个port表达式可以以关键字tcpudp开头,如下所示:
tcp src port port
只匹配源端口是 port 的tcp数据包。
less length
当数据包的长度小于等于length时为true。即:
len <= length.
greater length
当数据包的长度大于等于length时为true。即:
len >= length.
ip proto protocol
当数据包是IP数据包,并且它的协议类型为protocol时为true。protocol可以是一个数字,也可以是icmp, icmp6igmpigrppimahespvrrpudptcp中的一个。注意,tcpudpicmp是关键字,所以,它们要使用反斜杠(\)来转义,就好比C-shell中的\\。注意,这个原语不会去追踪协议首部链。
ip6 proto protocol
当数据包是IPv6数据包,并且它的协议类型为protocol时为true。注意,这个原语不会去追踪协议首部链。
ip6 protochain protocol
当数据包是IPv6数据包,并且,在它的协议首部链中,包含了protocol类型的协议首部时,为true。例如:
ip6 protochain 6
能匹配所有的,拥有TCP协议首部的IPv6的数据包。在IPv6首部和TCP首部之间,可能包含认证首部,路由首部和跳数选项首部。由这个原语所生成的BPF(BSD Packet Filter,包过滤机制)码是复杂的,而且不能被BPF优化器优化,所以,在某些程度上,它的速度比较慢。

            

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 验证码: 验证码
查看所有评论
相关文章
站长推荐