IP首部校验和计算

计算方法在RFC1071有详细说明。
计算步骤:
1.首先将IP包头校验和字段置0
2.然后将整个IP包头每16bit 相加(相加结果如果有进位,则需将进位加到最低位,RFC1071有相关介绍)
3.最后将相加的结果取反即可

unsigned short checksum(int nCount,unsigned short * addr)
{
    long sum = 0;

    while(nCount > 1)
    {
        sum    += *addr++;
        nCount -= sizeof(unsigned short);
    }

    if(nCount > 0)
    {
        sum += *(unsigned char*)addr;
    }

    while(sum >> 16)
    {
        sum = (sum & 0xFFFF) + (sum >> 16);
    }

    return (unsigned short)(~sum);
}

int main(int argc,char * argv[])
{
    unsigned char IpHeader[] = "\xa1\x00\x00\x45\x00\x00\x21\x2c\x00\x00\x11\x01\x2f\x0a\x1e\xac\xfa\xff\xff\xef"; //抓包示例,此包的检验和是0xe6e3    

    printf("0x%0x\n",checksum(sizeof(IpHeader)-1,(unsigned short *)IpHeader)); //注意后面的'\0'
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RFC分类文档。计算网络教学中涉及的部分RFC文档,全部为PDF格式。为了方便阅读和查找,在文件名中增加了分类标识,详见以下列表。 2003-10-20 17:17 3,909 rfc0768_UDP.pdf 2004-11-23 08:41 18,279 rfc0790_Const.pdf 2003-10-21 11:39 54,096 rfc0791_IP(1).pdf 2003-10-29 18:45 19,596 rfc0792_IP(2)_ICMP.pdf 2003-09-18 09:58 104,423 rfc0793_TCP(1).pdf 2004-11-23 08:41 27,250 rfc0820_Const.pdf 2003-09-25 08:54 70,703 rfc0821_SMTP.pdf 2003-09-25 14:45 65,954 rfc0822_MailFormat.pdf 2002-03-27 12:00 14,687 rfc0826_ARP.pdf 2003-09-23 16:05 22,861 rfc0854_TELNET.pdf 2004-11-23 08:42 30,605 rfc0870_Const.pdf 2003-11-04 09:45 16,949 rfc0896_Congest(3)_Nagle.pdf 2004-11-23 08:42 46,567 rfc0900_Const.pdf 2004-11-24 20:07 35,565 rfc0904_EGP.txt.pdf 2004-11-23 08:43 53,633 rfc0923_Const.pdf 2004-11-23 08:48 58,170 rfc0943_Const.pdf 2003-10-29 18:47 22,260 rfc0950_IP(3)_Subnet.pdf 2003-09-22 07:55 85,028 rfc0959_FTP.pdf 2004-11-23 08:51 69,146 rfc0960_Const.pdf 2003-09-18 09:52 14,018 rfc0973_DNS(Old).pdf 2004-11-23 08:57 90,057 rfc0990_Const.pdf 2003-09-18 09:44 74,992 rfc1034_DNS(1).pdf 2003-09-26 07:15 71,404 rfc1035_DNS(2).pdf 2002-03-27 12:00 34,025 rfc1071_ChkSum.pdf 2004-11-29 21:50 22,886 rfc1112_IGMPv1.pdf 2003-10-29 18:48 22,886 rfc1112_IP(4)_IGMP.pdf 2003-10-29 16:44 7,563 rfc1121_Poems.pdf 2003-10-29 18:10 160,932 rfc1122_Requirements(1).pdf 2003-10-29 18:11 134,198 rfc1123_Requirements(2).pdf 2002-03-27 12:00 71,764 rfc1144_PPP(1).pdf 2002-03-27 12:00 37,120 rfc1180_TCP_Tutor.pdf 2003-09-28 16:52 15,414 rfc1183_DNS(3).pdf 2003-09-18 09:50 53,137 rfc1323_TCP(2).pdf 2002-03-27 12:00 13,226 rfc1332_IPCP(1).pdf 2003-10-21 11:39 40,646 rfc1349_IP(5)_TOS.pdf 2002-03-27 12:00 25,289 rfc1577_IPATM(1).pdf 2002-03-27 12:00 62,705 rfc1661_PPP(2).pdf 2004-12-21 09:36 32,400 rfc1662_PPP(3).pdf 2003-10-20 17:51 269,481 rfc1700_Const.pdf 2003-11-11 16:36 11,801 rfc1723_RIP(1).pdf 2002-03-27 12:00 77,343 rfc1752_IPv6.pdf 2002-03-27 12:00 73,474 rfc1771_BGP4.pdf 2002-03-27 12:00 13,530 rfc1773_BGP4(Exp).pdf 2004-11-30 08:47 44,286 rfc1883_IPv6(1).pdf 2002-03-27 12:00 45,646 rfc1932_IPATM(3).pdf 2003-09-25 16:49 28,683 rfc1939_POP3.pdf 2003-10-27 07:34 16,420 rfc2018_TCP(3).pdf 2003-09-25 14:46 45,265 rfc2045_MIME(1).pdf 2003-09-25 14:48 64,973 rfc2046_MIME(2).pdf 2003-09-25 17:22 103,961 rfc2060_IMAP4.pdf 2003-10-29 16:29 3,766 rfc2119_Keywords.pdf 2012-06-11 21:37 62,073 rfc2131_DHCP(1).pdf 2004-11-23 09:04 62,073 rfc2131_DHCP.pdf 2002-03-27 12:00 8,459 rfc2153_PPP(3).pdf 2003-11-11 16:39 277,994 rfc2178_OSPF(1).pdf 2002-03-27 12:00 40,206 rfc2225_IPATM(2).pdf 2004-11-29 21:49 29,419 rfc2236_IGMPv2.pdf 2003-11-11 16:39 294,503 rfc2328_OSPF(2).pdf 2003-11-11 16:37 58,799 rfc2453_RIP(2).pdf 2004-11-30 08:46 47,382 rfc2460_IPv6(2).pdf 2003-10-21 11:40 31,341 rfc2474_IP(6)_IPv6.pdf 2003-11-03 16:03 38,666 rfc2481_Congest(1).pdf 2003-10-29 17:48 82,498 rfc2525_Problem.pdf 2003-10-27 07:34 20,578 rfc2581_TCP(4).pdf 2003-11-04 10:04 17,943 rfc2582_Congest(4)_NewReno.pdf 2003-09-18 08:35 550,558 rfc2616_HTTP1.1.pdf 2003-11-03 16:04 98,412 rfc3168_Congest(2).pdf 2003-10-20 17:40 3,590 rfc3232_Const.pdf 2002-05-07 12:00 16,151 rfc3241_IPCP(2).pdf 2003-10-29 14:54 69,600 rfc3300_Status.pdf 2004-11-29 21:45 68,321 rfc3376_IGMPv3.pdf 2003-10-29 16:26 22,562 rfc3390_TCP(5).pdf 2004-11-23 09:05 12,410 rfc3396_DHCP(2).pdf 2012-04-12 16:56 28,241 rfc5556_bridge(memo).pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值