snort读取配置文件时每条规则包括规则头和规则选项,而规则选项中的一个重要部分就是端口。snort中对端口的解析和对IP的解析思想相同但编码却有较大的差异。
编码
IP解析时利用拷贝副本的方式避免了不少二次解析,而端口解析却没这样的功能。但端口解析使用了代理者模式,使上层接口不用直接和字符串交互,避免了上层接口还须要为解释端口的规则管理解析字串的脚手架。spa
规则解释器就是snort中管理对配置文件解析的部分,当其解析到规则端口部分是就提取该字段交给端口解析管理器..net
端口解析管理对非TCP,UDP的端口会按照默认处理即出这两个协议外的规则中的端口指定无效。代理
若是是TCP,UDP规则中的端口则交给端口解释代理解释构建端口对象指针
因此生成的端口对象都将存放在端口对象管理中对象
解释器得到的端口对象信息是指向端口对象管理中对应对象的指针。blog
对比读取IP的处理:http://my.oschina.net/u/572632/blog/289775接口
总结了如下几点:
字符串
使用代理层次更分明配置
但对比IP的处理会出现重复解释
端口对象存放与管理方式和IP相似,但并未将取反端口集合和非取反集合分开存放,而是放在一块儿使用对象中的标志来区分。