IP数据包解析代码.doc





《IP数据包解析代码.doc》由会员分享,可在线阅读,更多相关《IP数据包解析代码.doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateIP数据包解析代码#include#include#include #include #include #pragma comment (lib,Ws2_32.lib)#define BUFFER_SIZE 65535#define FRAGMENT_SIZE 10000 /分片数据部分最长为10000#define FRAGMENT_NUM 7#define STA
2、RT 20#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)typedef struct _IP_HEADER /定义IP头BYTE Version_HeadLen; /版本(前4位)和首部长度 BYTE ServiceType; /服务类型WORD TotalLen; /数据报总长WORD ID; /标识WORD Flags_FragOff; /标志(前3位),后13位表示页偏移BYTE TimeToLive; /生存周期BYTE Protocol; /协议WORD HdrChksum; /头校验和DWORD SrcAddr; /源地址DWORD DstAddr;
3、 /目地地址IP_HEADER;void checksum(IP_HEADER *ip,WORD *sum)unsigned int sum_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-SrcAddr16)+(WORD)(ip-SrcAddr & 0xffff)+(WORD)(ip-DstAddr16)+(WORD)(ip-DstAddr &
4、 0xffff);if(sum_tmp(216-1)sum_tmp=(unsigned short)sum_tmp+1;*sum=(WORD)(sum_tmp);char * parseServiceType_getProcedence(BYTE b)switch(b5)/获取服务类型字段中优先级子域case 7: return Network Control;/网络控制break;case 6:return Internet work Control; /网络控制break;case 5:return CRITIC/ECP; break;case 4:return Flash Overrid
5、e;/最优先信号break;case 3:return Flsah; break;case 2:return Immediate; break;case 1:return Priority;/协议break;case 0:return Routine;/路由break;default:return Unknow;break;char * parseServiceType_getTOS(BYTE b)b=(b1)&0x0f;/获取服务类型字段中的TOS子域switch(b) case 0:return Normal service; /正常运行break;case 1:return Minimi
6、ze monetary cost; /成本break;case 2:return Maximize reliability; /可靠性break;case 4:return Maximize throughput; /吞吐量break;case 8:return Minimize delay; /延迟break;case 15:return Maximize security; /安全性break; default:return Unknow; char * getProtocol(BYTE Protocol) /获取协议字段共8位switch(Protocol) /以下为协议号说明: cas
7、e 1:return ICMP; /Internet控制报文协议case 2:return IGMP; /Internet组管理协议case 4:return IP in IP;/移动IP数据封装和隧道case 6:return TCP;/传输控制协议case 8:return EGP;/外部网关协议case 17:return UDP;/用户数据报文协议case 41:return IPv6;case 46:return RSVP;/资源预留协议case 89:return OSPF;/Open Shortest Path First 开发式最短路径优先default:return UNKN
8、OW;void ipparse(FILE* file,IP_HEADER *ip_pointer)fseek(file,0,SEEK_END);fprintf(file,版本号=%drn,ip_pointer-Version_HeadLen4);fprintf(file,报头标长= %d (BYTE)rn,(ip_pointer-Version_HeadLen & 0x0f)*4); /首部长度是以4个字节为单位的fprintf(file,服务器类型 = %s,%srn,parseServiceType_getProcedence(ip_pointer-ServiceType),parseSe
9、rviceType_getTOS(ip_pointer-ServiceType);fprintf(file,总长度 = %d(BYTE)rn,ip_pointer-TotalLen);fprintf(file,标识 = %drn,ip_pointer-ID);fprintf(file,标志位 DF=%d , MF=%drn,(ip_pointer-Flags_FragOff14)&0x01),(ip_pointer-Flags_FragOff13)&0x01);fprintf(file,分段偏移值 = %drn,(ip_pointer-Flags_FragOff&0x1fff);fprintf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IP 数据包 解析 代码

限制150内