现在的位置: 首页 > 综合 > 正文

snort 中的校验和(checksum.h)

2012年07月11日 ⁄ 综合 ⁄ 共 630字 ⁄ 字号 评论关闭

1,首先是校验错误的宏定义

/* define checksum error flags */
#define CSE_IP    0x01
#define CSE_TCP   0x02
#define CSE_UDP   0x04
#define CSE_ICMP  0x08
#define CSE_IGMP  0x10//Internet Group Management Protocol

2,接着是校验IP,TCP,UDP,ICMP的四个函数,四个全部为static inline的函数。我现在还不知道静态内联函数的好处,呵呵,在本文的最后我Google后再说明吧。
IP数据报的检验和:
  为了计算一份数据报的I P检验和,首先把检验和字段置为0。然后,对首部中每个16 bit
进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当
收到一份I P数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过
程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,
那么接收方计算的结果应该为全1。

关于static inline的函数----------------------------------------------------------------
inline指示符指示编译器用函数体代码去替换函数调用,这种替换叫“联编扩展”(有时称为“联编”)联编扩展在更大的代码的潜在代价上减少函数调用的费用。

【上篇】
【下篇】

抱歉!评论已关闭.