解析IP数据包(2)

2019-08-30 12:47

void getIHL(BYTE b,BYTE &result) {

result = (b & 0x0f) *4; }

//解析服务类型

char * parseServiceType_getProcedence(BYTE b){ switch(b>>5){ case 7:

return \ case 6:

return \ case 5:

return \ case 4:

return \ case 3: return \ case 2:

return \ case 1:

return \ case 0:

return \

default:

return \ } }

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

return \ case 1:

return \ case 2:

return \ case 4:

return \ case 8:

return \ case 15:

return \ 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&0x1ffff; } //获取协议

char * getProtocol(BYTE Protocol){ switch (Protocol){ case 1: return \ case 2: return \ case 3: return \ case 4:

return \ case 6: return \ case 8:

return \ case 17: return \ case 41: return \ case 46: return \ default:

return \ } }

/* 解析IP数据包 */

void ipparse(FILE * file,char *buffer){ IP_HEADER ip = *(IP_HEADER *)buffer; fseek(file,0,SEEK_END); BYTE version;

getVersion(ip.Version,version); fprintf(file,\版本=IPV%d\\r\\n\ BYTE headerLen;

getIHL(ip.HdrLen,headerLen);

fprintf(file,\头长度=%d(BYTE)\\r\\n\ fprintf(file,\服务类型=%s,%s\\r\\n\

parseServiceType_getProcedence(ip.ServiceType),

parseServiceType_getTOS(ip.ServiceType));

fprintf(file,\数据报长度=%d(BYTE)\\r\\n\ fprintf(file,\数据报ID=%d\\r\\n\

/* DF表示禁止分片标志,MF表示分片标记 */ BYTE DF,MF;

getFlags(ip.Flags,DF,MF);

fprintf(file,\分段标志 DF=%d,MF=%d\\r\\n\ WORD fragOff;

getFragoff(ip.FragOff,fragOff);

fprintf(file,\分段偏移值=%d\\r\\n\ fprintf(file,\生存期=%d(hops)\\r\\n\ fprintf(file,\协议=%s\\r\\n\ fprintf(file,\头校验和=0x%0x\\r\\n\

fprintf(file,\源IP地址=%s\\r\\n\ fprintf(file,\目的IP地址=%s\\r\\n\ fprintf(file,\ }

/* 程序入口 */

int main(int argc,char *argv[]){ /* cmd参数 */ if(argc!=2){

printf(\ return -1;


解析IP数据包(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:葡萄酒试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: