在说明代码之前,先看一下snort的整体模块图
![](/images/cnblogs_com/cliffever/snortdevdiagrams.jpg)
在decode模块中,主要是把从libpcap中取得的数据包转化成snort系统定义的,可以方便系统进行分析的Packet,根据IP头中不同的协议类型(IPPROTO_TCP,IPPROTO_UDP,IPPROTO_ICMP),再依次解析。 在解析中,snort会记录损坏的数据,比如包头小于规定大小等,同时丢弃。在解析中会用到checksum。
![](/images/cnblogs_com/cliffever/snortdevdiagrams.jpg)
在decode模块中,主要是把从libpcap中取得的数据包转化成snort系统定义的,可以方便系统进行分析的Packet,根据IP头中不同的协议类型(IPPROTO_TCP,IPPROTO_UDP,IPPROTO_ICMP),再依次解析。 在解析中,snort会记录损坏的数据,比如包头小于规定大小等,同时丢弃。在解析中会用到checksum。