计算机网络课程设计.doc_第1页
计算机网络课程设计.doc_第2页
计算机网络课程设计.doc_第3页
计算机网络课程设计.doc_第4页
计算机网络课程设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

计算机网络课程设计报告 学 院计算机与信息工程学院专 业网络工程课程名称计算机网络题 目IP数据包分析完成期限自2014年6月10日至2014年6月17日共1周内容及任务一、项目的目的(1)提高学生对所学计算机网络理论知识的理解能力;(2)掌握网络通信协议的基本工作原理;(3)基本掌握网络编程的基本思路和方法;(4)提高学生的科技论文写作能力;(5)培养学生将理论知识应用于实践的能力。二、项目任务的主要内容和要求1、设计要求 分析IP数据包的格式,并编程模拟主机和目的地址之间IP数据包的发送和接收。2、课程设计报告内容(1) 详细描述IP数据包的格式;(2) 给出数据报发送的设计思路和流程;(3) 给出数据包发送和分析的可视化界面和测试结果;(4) 列出程序代码。三、项目设计思路首先要生成输出文件,再创建原始套接字,接着捕获和分析ip数据包,程序应通过cmd检验,执行后通过按Ctrl+C时退出。四、具体成果形式和要求最终结果要求能输出并在输出面板上显示捕获到的ip数据包及各项参数,并能准确的结束程序。进度安排起止日期工作内容6月10日6月12日分析题目,通过上网查询,初步认识课程设计过程6月12日6月15日详细进行课程设计,编写程序,分析实验6月15日6月17日调试程序,修改并完善实验内容主要参考资料计算机网络宋凯 刘念等数据通信与网络(第四版)吴时霖 周正康 译计算机网络课程设计吴功宜 胡晓英指导教师意见(签字): 年 月 日院系主任意见(签字): 年 月 日计算机网络课程设计说明书学院名称: 计算机与信息工程学院 班级名称: 12网络工程3班 学生姓名: 汪伟 学 号: 2012211476 题 目: IP数据包分析 指导教师姓 名: 赵生慧 起止日期: 2014年6月10日到6月17日 一、选题背景1、设计要求分析IP数据包的格式,并编程模拟主机和目的地址之间IP数据包的发送和接收。2、课程设计报告内容(1) 详细描述IP数据包的格式;(2) 给出数据报发送的设计思路和流程;(3) 给出数据包发送和分析的可视化界面和测试结果;(4) 列出程序代码。二、方案设计根据IP数据包的标准格式,编写程序捕获数据包并进行解析,将解析后各IP包的头部与数据字段写入输出文件。数据字段的值从捕获的文件中获取。为了获取网络中的IP数据包,可以采用Winsock的数据库查询函数并gethostname()和gethostbyname()解决捕获IP数据包并解析IP地址等内容。三、详细设计1、IP数据报的格式说明:IP数据包格式包含了标头固定部分,标头可变部分和数据区三部分。IP数据报标头部分固定为20个字节,其中包含了12个参数域,各参数域隐含着网间协议的传输机制。IP具体的格式如图3-1所示。 IP协议头数据20 60 bytes版本头长服务类型总长度标识标志分片偏移生存时间协议首部校验和源IP地址目的IP地址选项填充031 bits4816标志(3 bits):保留不分片还有分片不分片(D):0=可以分片 1=不能分片还有分片(M):0=最后的分片 1=还有更多分片协议:1=ICMP89=OSPF6=TCP17=UDP 图 3-1 IP数据包的格式各参数域的具体含义如下:1)版本号:长度4位,表示所使用的IP协议的版本。IPv4版本号字段值为4;IPV6版本号字段号的值为6。2)标头长:长度4位,定义了一个以4B为一个单位的IP包的报头长度。3)服务类型:共8位,高3位组成优先级子域,随后4位组成服务类型子 域。4)数据报总长度:总长度为2B(即16位)。定义了以字节为单位的数据报的 总长度。5)重装标识:长度16位,用于识别IP数据报的编号,让目的主机判断新来的数据属于哪个分组。 6)分片标识:共3位,最高位为0;DF禁止分片标识。DF=0,可以分片; DF=1,不能分片。MF:分片标识。MF=0,表示接的是最后一个分片;MF=1,不是最后一个分片。 7)片偏移值:共13位,说明分片在整个数据报中的相对位置。8)生存周期:8位,用来设置数据数据报在整个网络传输过程中的寿命。常以一个数据报可以经过的最多的路由器跳步数来控制。9)协议类型:共8位,表示该IP数据报的高层协议类型。10)标头校验和:共16位,用于存放检查报头错误的校验码。11)源 、 宿 主 机 地 址 :共 32位,分别表示发送和接受数据报的源主机和宿主机的IP地址。12)选项数据域:0-40B,用于控制和测试。2、IP数据包格式对应的数据结构:/定义IP头部数据结构 typedef struct _IP_HEADERunion BYTE Version; /版本(前4位) BYTE HdrLen; /IP头长度; 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;3、程序流程图:开 始构造函数运行文件,生成输出文件创建并初始化原始套接字设置网卡混杂模式监听网卡捕获和解析IP数据包输出解析信息,并存入文档是否达到需要次数 NoYes结束图 3-2 程序流程图1、 源程序:#include winsock2.h#include ws2tcpip.h#include iostream.h #include stdio.h#pragma comment(lib, ws2_32.lib) #define IO_RCVALL _WSAIOW(IOC_VENDOR,1)#define BUFFER_SIZE 65535/定义IP头部数据结构typedef struct _IP_HEADERunion BYTE Version; /版本(前4位) BYTE H_Len; /IP头长度; BYTE SerType; /服务类型WORD Ttl_Len; /总长度 WORD ID; /标识 union WORD Flags; WORD FragOff;BYTE TTLive;BYTE Protocol;WORD Chksum; DWORD SrcAddr; DWORD DstAddr; BYTE Options;IP_HEADER; /逐位解析IP头中的信息,获取版本号void getVersion(BYTE b,BYTE &version) version = b4; void getIHL(BYTE b,BYTE &result)result = (b & 0x0f) *4; /解析服务类型 char * pSerType_getProcedence(BYTE b)switch(b5)case 7: return Network Control;case 6:return Internet work Control;case 5:return CRITIC/ECP;case 4:return Flash Override; case 3:return Falsh; case 2:return Immediate; case 1:return Priority; case 0:return Routine; default:return Unknown; char * pSerType_getTOS(BYTE b)b=(b1)&0x0f; switch(b) case 0:return Normal service;case 1:return Minimize monetary cost; case 2:return Maximize reliability; case 4:return Maximize throughput;case 8:return Minimize delay; case 15:return Maximize security;default:return Unknown;/ 获取禁止分片标志和分片标志 void getFlags(WORD w,BYTE &DF, BYTE &MF)DF=(w14)&0x01;MF=(w13)&0x01;/ 获取分片偏移量 void getFragoff(WORD w,WORD &fragoff)fragoff=w&0x1ffff; / 获取协议char * getProtocol(BYTE Protocol) switch (Protocol)case 1:return ICMP; case 2:return IGMP; case 3:return GGP; 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 OSPF;default:return UNKNOWN;/ 解析IP数据包 void ippar(FILE * file,char *buffer) IP_HEADER ip = *(IP_HEADER *)buffer; fseek(file,0,SEEK_END); BYTE version; getVersion(ip.Version,version); fprintf(file,版本=IPV%drn,version); BYTE headerLen; getIHL(ip.H_Len,headerLen); fprintf(file,头长度=%d(BYTE)rn,headerLen); fprintf(file,服务类型=%s,%srn, pSerType_getProcedence(ip.SerType), pSerType_getTOS(ip.SerType); fprintf(file,数据报长度=%d(BYTE)rn,ip.Ttl_Len); fprintf(file,数据报ID=%drn,ip.ID); / DF:禁止分片标志,MF:分片标记 BYTE DF,MF; getFlags(ip.Flags,DF,MF); fprintf(file,分段标志 DF=%d,MF=%drn,DF,MF); WORD fragOff; getFragoff(ip.FragOff,fragOff); fprintf(file,分段偏移值=%drn,fragOff); fprintf(file,生存期=%d(hops)rn,ip.TTLive); fprintf(file,协议=%srn,getProtocol(ip.Protocol); fprintf(file,头校验和=0x%0xrn,ip.Chksum); fprintf(file,源IP地址=%srn,inet_ntoa(*(in_addr*)&ip.SrcAddr); fprintf(file,目的IP地址=%srn,inet_ntoa(*(in_addr*)&ip.DstAddr); fprintf(file,_rn); /程序入口int main(int argc,char *argv) if(argc!=2) coutendl请以下格式输入命令行:PackParse packet_sumh_name); printf(IPAddress: %srn,inet_ntoa(*(struct in_addr *)pHostIP-h_addr);/封装IP地址信息 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); /监听的端口号 把Socket绑定到本地网卡 if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in)=SOCKET_ERROR) printf(bind failed); return -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(icotlsocket failedn); return -1; char bufferBUFFER_SIZE; printf(=开始解析=rn); while(true) /从套接字接收IP数据报 int size=recv(sock,buffer,BUFFER_SIZE,0); if(size0) ippar(stdout,buffer);ippar(file,buffer); / 解除Socket绑定 if(WSACleanup()=SOCKET_ERROR) printf(WSACleanup failed!n); return -1; /关闭文件fclose(file); return 0; 四、结果分析(或测试)1、套接字的使用:本程序使用套接字socket编程,将网卡设为能够接受流经网卡的所有类型的数据包。首先,初始化套接字,然后监听数据包,解析数据包。SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)用来创建套接字,其参数为通信发生的区字段和套接字的类型。WSAIoctl(sock , IO_RCVALL

温馨提示

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

评论

0/150

提交评论