计算机网络课程设计(第七章)解析IP数据包(完整程序代码) 下载本文

内容发布更新时间 : 2024/12/23 3:31:15星期一 下面是文章的全部内容请认真阅读。

计算机网络课程设计

——机械工业出版社

第7章:解析IP数据包

课程设计目的:

本课程设计的目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。

完整程序代码:

#include #include #include

#pragma comment(lib,\ typedef struct _IP_HEADER { union { BYTE Version; BYTE HdrLen; }; BYTE ServiceType; WORD TotalLen; WORD ID; union { WORD Flags; WORD FragOff; }; BYTE TimeToLive; BYTE Protocol; WORD HdrChksum; DWORD SrcAddr; DWORD DstAddr; BYTE Options;

} IP_HEADER;

#define IO_RCVALL _WSAIOW(IOC_VENDOR,1) #define BUFFER_SIZE 65535

void getVersion(BYTE b,BYTE &version) { version=b>>4;

}

void getIHL(BYTE b,BYTE &length) { length=(b&0x0f)*4; }

char* parseServiceType_getProcedence(BYTE b) { switch(b>>5) { case 7: return \ break; case 6: return \ break; case 5: return \ break; case 4: return \ break; case 3: return \ break; case 2: return \ break; case 1: return \ break; case 0: return \ break; default: return \ } }

char* parseServiceType_getTOS(BYTE b) { b=(b>>1)&0x0f; switch(b) { case 0:

return \ break; case 1: return \ break; case 2: return \ break; case 4: return \ break; case 8: return \ break; case 15: return \ break; default: return \ } }

void getFlags(WORD w,BYTE &DF,BYTE &MF) { DF=(w>>14)&0x01; MF=(w>>13)&0x01; }

void getFragOff(WORD w,WORD &fragOff) { fragOff=w&0x1fff; }

char* getProtocol(BYTE Protocol) { switch (Protocol) { case 1: return \ case 2: return \ case 4: return \ case 6: return \ case 8: return \ case 17: return \ case 41: