snort的编程风格非常优秀,代码阅读起来并不困难,整个程序结构清晰,函 数调用关系也不算复杂。但是,snort的源文件不少,函数总数也很多,所以不太 容易讲清楚。因此,最好把代码完整看一两遍,能更清楚点。 下面对源代码文件分组说明。 snort.c(.h)是主程序所在的文件,实现了main函数和一系列辅助函数。 decode.c(.h)把数据包层层剥开,确定该包属于何种协议,有什么特征。并 标记到全局结构变量pv中。 log.c(.h)实现日志和报警功能。snort有多种日志格式,一种是按tcpdump二进制的格式存储,另一种按snort编码的ascii格式存储在日志目录下,日