中国计量学院计算机网络课程设计解析ip数据包,计算机网络课程设计(第七章)解析IP数据包(完整程序代码).docx...

本课程设计旨在通过编写一个C程序来解析IP数据包,深入理解IP层的工作原理。程序涉及IP头的各个字段,如版本、服务类型、总长度、标识、标志、生存时间、协议等。通过这个程序,可以详细分析IP数据包的结构并探讨IP协议的相关问题。
摘要由CSDN通过智能技术生成

计算机网络课程设计

——机械工业出版社

第7章:解析IP数据包

课程设计目的:

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

完整程序代码:

#include

#include

#include

#pragma comment(lib,"ws2_32.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 "Network Control";

break;

case 6:

return "internet work Control";

break;

case 5:

return "CRITIC/ECP";

break;

case 4:

return "Flash Override";

break;

case 3:

return "Flash";

break;

case 2:

return "Immediate";

break;

case 1:

return "Priority";

break;

case 0:

return "Routine";

break;

default:

return "Unknown";

}

}

char* parseServiceType_getTOS(BYTEb)

{

b=(b>>1)&0x0f;

switch(b)

{

case 0:

return "Normal Service";

break;

case 1:

return "Minimize 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 "Unknown";

}

}

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 "ICMP";

case 2:

return "IGMP";

case 4:

return "IP in 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";

default:

return "UNKNOWN";

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值