IP校验和不对..

问题描述

关键代码..typedefstructip_hdr{/*unsignedcharversion:4,ihl:4;*/unsignedcharh_ver;unsignedchartos;unsignedshorttot_len;unsignedshortid;unsignedshortzero:1,frag:1,more_frag:1,frag_off:13;unsignedcharttl;unsignedcharprotocol;unsignedshortcheckSum;unsignedlongsaddr;unsignedlongdaddr;/*Theoptionsstarthere.*/}IP_HEADER;unsignedshortcheckSum(unsignedchar*buff,intwlen){unsignedlongsum=0;if(wlen){unsignedlongbogus;__asm__("clcn""1:t""lodslnt""adcl%3,%0nt""decl%2nt""jne1bnt""adcl$0,%0nt""movl%0,%3nt""shrl$16,%3nt""addw%w3,%w0nt""adcw$0,%w0":"=r"(sum),"=S"(buff),"=r"(wlen),"=a"(bogus):"0"(sum),"1"(buff),"2"(wlen));}return(~sum)&0xffff;}intIPGen(ip_hdr*hdr,unsignedlongsrcIP,unsignedlongdstIP){/*hdr->version=4;hdr->ihl=5;//==?*/hdr->h_ver=(4<<4|sizeof(ip_hdr)/sizeof(unsignedint));hdr->tos=0;hdr->tot_len=sizeof(ip_hdr)+sizeof(tcp_hdr);hdr->id=0;hdr->zero=0;hdr->frag=0;hdr->more_frag=0;hdr->frag_off=0;hdr->ttl=64;hdr->protocol=IP_TCP;hdr->saddr=srcIP,hdr->daddr=dstIP;hdr->saddr=htonl(hdr->saddr);hdr->daddr=htonl(hdr->daddr);hdr->tot_len=htons(hdr->tot_len);hdr->checkSum=0;hdr->checkSum=checkSum((char*)hdr,sizeof(ip_hdr));return0;}

校验和的计算代码是从linux源码copy来的..应该不会错。但是!wireshark抓包永远是校验和错误的..whywhywhy....

解决方案

解决方案二:
这个不是x86构架的吧,大小端是否正确?调试一下就知道哪儿错了

时间: 2024-09-20 08:01:07

IP校验和不对..的相关文章

libpcap抓包ip地址不对?请帮我看看代码

问题描述 我需要做一个抓包器,代码如下,我的主机ip地址是192.168.1.110,可是结果却是sudo./sniffall0157.55.56.161192.168.1.105192.168.1.105157.55.56.161157.55.56.161192.168.1.105192.168.1.105157.55.56.161157.55.56.161192.168.1.105这个不对吧?之前我尝试过用netinet/ip.h和netinet/ether.h下面的structip和str

javascript做的数据校验(校验IP地址等)

html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPa

网络子系统9_ip校验和计算

//ip校验和计算使用与体系结构相关的内联汇编 //x86_64版本 //b 1字节 //w 2字节 //l 4字节 //q 8字节 //1010 1010 逻辑左移 -> 0101 010[0] //1010 1010 算数左移 -> 0101 010[0] //1010 1010 逻辑右移 -> [0]101 0101 //1010 1010 算数右移 -> [1]101 0101 1.1 static inline unsigned short ip_fast_csum(un

解读分布式防火墙之——产品篇

本篇要介绍的是目前两种非常有代表性的分布式防火墙系统. 目前总的来说国外的一些著名网络设备开发商在分布式防火墙技术方面更加先进,所提供的产品性能也比较高,采用"软件+硬件"形式.主机防火墙为集成了分布式防火墙技术的硬件产品,而防火墙服务器则采用软件形式,以适应更加灵活和高智能的要求,如3COM.CISCO.美国网络安全系统公司的嵌入式防火墙产品.不过也有许多是以纯软件形式提供的,如安软的DFW产品,中洲的网警(NetCop)分布式防火墙.下面分别对安软公司的DFW软件分布式防火墙产品与

在Linux系统中使用iptraf进行网络监控

  iptraf是一个基于ncurses开发的IP局域网监控工具,它可以生成各种网络统计数据,包括TCP信息.UDP统计.ICMP和OSPF信息.以太网负载信息.节点统计.IP校验和错误和其它一些信息. 它基于ncurses的用户界面也会把使用者从命令行选项的梦靥中拯救出来. 功能 一个用于显示通过网络的IP流量信息的IP流量监控器,包括TCP标识信息.包和字节统计.ICMP详情.OSPF包类型 显示IP.TCP.UDP.ICMP.非IP和其它IP包计数.IP校验和错误.接口活动.包大小计数的综

简介Linux下的TCP/UDP监控工具iptraf

  iptraf是一个基于ncurses的IP局域网监控器,用来生成包括TCP信息.UDP计数.ICMP和OSPF信息.以太网负载信息.节点状态信息.IP校验和错误等等统计数据. 它基于ncurses的用户界面可以使用户免于记忆繁琐的命令行开关. 特征 IP流量监控器,用来显示你的网络中的IP流量变化信息.包括TCP标识信息.包以及字节计数,ICMP细节,OSPF包类型. 简单的和详细的接口统计数据,包括IP.TCP.UDP.ICMP.非IP以及其他的IP包计数.IP校验和错误,接口活动.包大小

linux系统监控工具

  对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的工具,您可以挑选适用于您的监控场景的工具. 1.Top-Linux进程监控 Lin

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一点Git--20分钟git快速上手 里的踊跃发言.这里再次分享干货, 简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一 致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上

网络子系统42_ip协议数据帧的接收

//参考 深入理解linux网络技术内幕                                      // 注册l3协议 // ptype_all链表,链接所有ETH_P_ALL类型的l3协议 // ptype_base哈希表,非ETH_P_ALL类型的l3协议 // 注:l3协议可以使用相同的协议号 1.1 void dev_add_pack(struct packet_type *pt) { int hash; //ptype_all ptype_base共用一把锁 ptype