欢迎来到天天文库
浏览记录
ID:6141962
大小:46.50 KB
页数:7页
时间:2018-01-04
《ip数据包解析代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#pragmacomment(lib,"Ws2_32.lib")#defineBUFFER_SIZE65535#defineFRAGMENT_SIZE10000//分片数据部分最长为10000#defineFRAGMENT_NUM7#defineSTART20#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)typedefstruct_IP_HEADER
2、//定义IP头{BYTEVersion_HeadLen;//版本(前4位)和首部长度BYTEServiceType;//服务类型WORDTotalLen;//数据报总长WORDID;//标识WORDFlags_FragOff;//标志(前3位)),后13位表示页偏移BYTETimeToLive;//生存周期BYTEProtocol;//协议WORDHdrChksum;//头校验和DWORDSrcAddr;//源地址DWORDDstAddr;//目地地址}IP_HEADER;voidchecksum(IP_HEADER*ip,WO
3、RD*sum){unsignedintsum_tmp;sum_tmp=MAKEWORD(ip->ServiceType,ip->Version_HeadLen)+ip->TotalLen+ip->ID+ip->Flags_FragOff+MAKEWORD(ip->Protocol,ip->TimeToLive)+ip->HdrChksum+(WORD)(ip->SrcAddr>>16)+(WORD)(ip->SrcAddr&0xffff)+(WORD)(ip->DstAddr>>16)+(WORD)(ip->DstAddr&0x
4、ffff);if(sum_tmp>(2^16-1))sum_tmp=(unsignedshort)sum_tmp+1;*sum=(WORD)(~sum_tmp);}char*parseServiceType_getProcedence(BYTEb){switch(b>>5)//获取服务类型字段中优先级子域{case7:return"NetworkControl";//网络控制break;case6:return"InternetworkControl";//网络控制break;case5:return"CRITIC/ECP";b
5、reak;case4:return"FlashOverride";//最优先信号break;case3:return"Flsah";break;case2:return"Immediate";break;case1:return"Priority";//协议break;case0:return"Routine";//路由break;default:return"Unknow";break;}}char*parseServiceType_getTOS(BYTEb){b=(b>>1)&0x0f;//获取服务类型字段中的TOS子域sw
6、itch(b){case0:return"Normalservice";//正常运行break;case1:return"Minimizemonetarycost";//成本break;case2:return"Maximizereliability";//可靠性break;case4:return"Maximizethroughput";//吞吐量break;case8:return"Minimizedelay";//延迟break;case15:return"Maximizesecurity";//安全性break;defa
7、ult:return"Unknow";}}char*getProtocol(BYTEProtocol)//获取协议字段共8位{switch(Protocol)//以下为协议号说明:{case1:return"ICMP";//Internet控制报文协议case2:return"IGMP";//Internet组管理协议case4:return"IPinIP";//移动IP数据封装和隧道case6:return"TCP";//传输控制协议case8:return"EGP";//外部网关协议case17:return"UDP";//
8、用户数据报文协议case41:return"IPv6";case46:return"RSVP";//资源预留协议case89:return"OSPF";//OpenShortestPathFirst开发式最短路径优先default:return"UNKNOW";
此文档下载收益归作者所有