计算机网络课程设计解析IP数据包完整程序代码_第1页
计算机网络课程设计解析IP数据包完整程序代码_第2页
计算机网络课程设计解析IP数据包完整程序代码_第3页
计算机网络课程设计解析IP数据包完整程序代码_第4页
计算机网络课程设计解析IP数据包完整程序代码_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络课程设计机械工业出版社第7章:解析IP数据包课程设计目的:本课程设计的目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。完整程序代码:#include<stdio.h>#include<winsock2.h>#include<ws2tcpip.h>#pragma comment(lib,"ws2_32.lib") typedef struct _IP_HEADER unionBYTE Version;BYTE HdrLen;BYTE Serv

2、iceType;WORD TotalLen;WORD ID;unionWORD 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 65535void getVersion(BYTE b,BYTE &version)version=b>>4; void getIHL(BYTE b,

3、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:ret

4、urn "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

5、 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(WOR

6、D 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

7、 "TCP"case 8:return "EGP"case 17:return "UDP"case 41:return "IPv6"case 46:return "RSVP"case 89:return "OSPF"default:return "UNKNOWN"void ipparse(FILE* file,char* buffer)IP_HEADER ip=*(IP_HEADER*)buffer;fseek(file,0,SEEK_END);fprin

8、tf(file,"-n");BYTE version;getVersion(ip.Version,version);fprintf(file,"Version:%dn",version);BYTE headerLen;getIHL(ip.HdrLen,headerLen);fprintf(file,"HdrLen:%d(Bytes)n",headerLen);fprintf(file,"ServiceType: %s,%sn",parseServiceType_getProcedence(ip.ServiceTyp

9、e),parseServiceType_getTOS(ip.ServiceType);fprintf(file,"TotalLen: %d(Bytes)n",ip.TotalLen);fprintf(file,"ID: %dn",ip.ID);BYTE DF,MF;getFlags(ip.Flags,DF,MF);fprintf(file,"Flags:DF=%d,MF=%dn",DF,MF);WORD fragOff;getFragOff(ip.FragOff,fragOff);fprintf(file,"FragOff:

10、 %dn",fragOff);fprintf(file,"FragOff: %dn",fragOff);fprintf(file,"TimeToLive: %d(Hops)n",ip.TimeToLive);fprintf(file,"Protocol: %sn",getProtocol(ip.Protocol);fprintf(file,"HdrChksum: 0x%0xn",ip.HdrChksum);fprintf(file,"SrcAddr: %sn",inet_ntoa(*(

11、in_addr*)&ip.SrcAddr);fprintf(file,"DstAddr: %sn",inet_ntoa(*(in_addr*)&ip.DstAddr);void main(int argc,char*argv)if(argc!=2)printf("Please input command: ParseArp output_file");return;FILE* file; if(file=fopen(argv1,"wb+")=NULL)printf("Fail to open file %s&

12、quot;,argv1);return;WSADATA wsData;if(WSAStartup(MAKEWORD(2,2),&wsData)!=0)printf("WSAStartup failed!");return;SOCKET sock;if(sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)=INVALID_SOCKET)printf("Creat socket failed");return;BOOL flag=true;if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(

13、char*)&flag,sizeof(flag)=SOCKET_ERROR)printf("Setsockopt failed!");return;char hostName128;if(gethostname(hostName,100)=SOCKET_ERROR)printf("Gethostname failed!");return;hostent* pHostIP;if(pHostIP=gethostbyname(hostName)=NULL)printf("Gethostbyname failed!");return;

14、sockaddr_in addr_in;addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list0;addr_in.sin_family=AF_INET;addr_in.sin_port=htons(6000);if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in)=SOCKET_ERROR)printf("Bind failed!");return;DWORD dwValue=1;DWORD dwBufferLen10;DWORD dwBufferInLen=1;DWORD dwBytesReturned=0;if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)=SOCKET_ERROR)printf("Ioctls

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论