在平凡中也会有很多的快乐;有梦想,人才不会孤单
学会放弃~
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

snort 中的校验和(checksum.h)

Posted on 2005-09-04 13:36  情走边锋  阅读(682)  评论(0编辑  收藏  举报

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指示符指示编译器用函数体代码去替换函数调用,这种替换叫“联编扩展”(有时称为“联编”)联编扩展在更大的代码的潜在代价上减少函数调用的费用。
科为网络安全