snort讀取配置文件時每條規則包括規則頭和規則選項,而規則選項中的一個重要部分就是端口。snort中對端口的解析和對IP的解析思想相同但編碼卻有較大的差異。
編碼
IP解析時利用拷貝副本的方式避免了不少二次解析,而端口解析卻沒這樣的功能。但端口解析使用了代理者模式,使上層接口不用直接和字符串交互,避免了上層接口還須要爲解釋端口的規則管理解析字串的腳手架。spa
規則解釋器就是snort中管理對配置文件解析的部分,當其解析到規則端口部分是就提取該字段交給端口解析管理器..net
端口解析管理對非TCP,UDP的端口會按照默認處理即出這兩個協議外的規則中的端口指定無效。代理
若是是TCP,UDP規則中的端口則交給端口解釋代理解釋構建端口對象指針
因此生成的端口對象都將存放在端口對象管理中對象
解釋器得到的端口對象信息是指向端口對象管理中對應對象的指針。blog
對比讀取IP的處理:http://my.oschina.net/u/572632/blog/289775接口
總結了如下幾點:
字符串
使用代理層次更分明配置
但對比IP的處理會出現重複解釋
端口對象存放與管理方式和IP相似,但並未將取反端口集合和非取反集合分開存放,而是放在一塊兒使用對象中的標誌來區分。