计算机网络:实验2 IP数据包捕获程序设计_第1页
计算机网络:实验2 IP数据包捕获程序设计_第2页
计算机网络:实验2 IP数据包捕获程序设计_第3页
计算机网络:实验2 IP数据包捕获程序设计_第4页
计算机网络:实验2 IP数据包捕获程序设计_第5页
全文预览已结束

下载本文档

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

文档简介

1、实验二 IP数据包捕获程序设计实验指导及实验报告班级 姓名 学号1. 实验目的1)IP数据包是网络协议学习过程中容易接触到的,本实验让同学们将所学知识加以运用,并加强掌握 IP 数据报格式、理解 IP 协议的工作原理及工作过程、掌握捕获 IP 等数据报以及对捕获到的 IP 数据报进行分析的能力。2)希望通过探索,在实践应用中提高自己的编程能力。2. 实验环境系统环境:Windows操作环境编程语言: C+程序设计语言必要软件:Visual C+3. 设计要求1) 实现程序应为图形化界面,可以输入需要捕获的数据包数量,输出每个数据包的相关字段值(包括版本、总长度、标志位、片偏移、协议、源地址与目

2、的地址)。2) 要求遵循RFC791的相关IP协议规定,可以捕获通过本地网卡的IP数据包。点击Capture按钮,实现对指定数量的IP数据包的捕抓过程。3) 要求有良好的编程规范与注释信息。4) 要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。5) 要求在Windows操作系统环境中,使用Visual C+编程工具实现。4. 实验步骤1) 创建原始套接字为了不活经过本地网卡的IP数据包,需要使用原始套接字来进行通信。首先,调用socket()函数创建原始套接字,SOCK_RAW表示原始套接字,IPPROTO_IP表示IP协议;然后,调用bind()函数将套接字与本地网卡绑定;最

3、后,调用setsockopt()函数社设置接收超时,SOL_SOCKET表示在套接字层设置,SO_RCVTIMEO表示接收超时,RecvTime表示超时时间,它被设置为5000ms。下面给出的是创建原始套接字的代码:/建立于Winsock库的绑定WSAStartup(MAKEWORD(2,2),&WSAData);/创建原始套接字socket(AF_INF,SOCK_RAW,IPPROTO_IP);sockaddr_in HostAddr;HostAddr.sin_family=AF_INF;HostAddr.sin_addr.s_addr=(*(in_addr)pHostent-&g

4、t;h_addr).s_addr;/套接字绑定本地网卡bind(Socket,(PSOCKADDR)&HostAddr,sizeof(HostAddr);/设置接收超时时间int RecvTime=5000;setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&RecvTime,sizeof(RecvTime);2) 定义IP头部的数据结构IP数据包由IP头部与IP数据构成,需要自行构造的是IP数据包的头部。在解析IP头部的各个字段之前,首先需要构造IP头部的数据结构,包括1字节的版本与头部长度、1字节的服务类型、2字节的总长度、2

5、字节的标识符、2字节的标志位与片偏移、1字节的生存周期、1字节的协议、2字节的头部校验、4字节的源地址与4字节的目的地址。这里,不需要构造选项与填充字段。下面给出的是构造IP头部结构的代码:/定义IP头部结构typedef struct IP_HEADunionugsigned char Version;ugsigned char HeadLen;ugsigned char ServiceType;ugsigned short TotalLen;ugsigned short Identifier;unionugsigned short Flags;ugsigned short FragOffs

6、et;ugsigned char TimeToLive;ugsigned char Protocol;ugsigned short HeadChecksum;ugsigned int SourceAddr;ugsigned int DestinAddr;ip_head;3) 接受与解析IP数据包默认情况下,网卡不会接收目的地址不是自己的IP数据包,也就是说应用程序无法接收无关的数据包。首先,调用ioctlsocket()函数将网卡设置为混杂模式,IO_RCVALL表示允许网卡接收所有数据包,dwValue为输入/输出参数,dwValue=1表示执行操作;然后,调用recv()函数接收通过网卡的

7、IP包,由于IP包的最大长度为65535字节,因此接收缓冲区的大小不能小于65535字节;最后,将IP包头部复制到定义的IP头部结构中,并且依次将那些需要解析的字段值取出。下面给出的是接收与解析IP数据包的代码:/设置网卡为混杂模式#define IO_RCVALL _WSAIOW(IOC_VENDOR,1);DWORD dwValue=1;ioctlsocket(Socket,IOC_VENDOR,&dwValue);/接受数据包recv(Socket,RecvBuf,sizeof(RecvBuf),0);/解析IP数据包ip_head IpHead = *(ip_head*)RecvBuf;/一次解析IP头部的相应字段4) IP抓包实现流程第1步,客户机程序会初始化用户界面;第2步,客户机建立Winsock库绑定关系,并且创建原始套接字;第3步,客户机设置接收超时时间;第4步,客户机将原始套接字与网卡绑定;第5步,客户即将网卡设置为混杂模式;第6步,客户机接收通过网卡的IP数据包,并且解析IP头部的相应字段;第7步,客户机输出所有I

温馨提示

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

评论

0/150

提交评论