windowsAPI实现Arp功能_第1页
windowsAPI实现Arp功能_第2页
windowsAPI实现Arp功能_第3页
windowsAPI实现Arp功能_第4页
windowsAPI实现Arp功能_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、目录一、课程设计目的1二、课程设计要求1三、课程设计分析1四、课程具体步骤4五、课程总结7参考文献8源代码:91. 课程训练目的随着Internet的迅速发展以及网络应用的不断增长,IPv4已经不能满足人们的日常使用需求。其缺点主要是包括地址空间不足,路由选择效率不高,服务质量与安全性无法得到保证等。为了克服IPv4的局限性,互联网工程任务组(IETF)提出了下一代Internet协议IPv6。本章编程训练的目的是学习IPv6的报文格式。通过封装一个具体的IPv6数据报,了解基本包头各字段的含义,熟悉IPv6的编址方式,掌握根据数据链路层地址构造IPv6地址的方法,进而更加深入地理解IPv6协

2、议。2. 课程训练要求1、 编程训练一编写程序,根据给出的原始数据,构造一个IPv6数据报。具体要求如下:(1) 原始数据为传输层TCP协议栈向下传递至网络层的已经封装完TCP报头的用户数据。原始数据默认保存在二进制数据文件inputfile中。(2) 程序以命令行的方式运行,格式如下: ipv6pkt tcpdata ipv6data 其中,ipv6pkt是程序名,tcpdata为原始数据文件名,ipv6data为输出文件名。(3)构造ipv6地址时,源地址使用本机MAC地址生成(如果本机MAC地址不可用,则源地址使用00-00-80-1A-E6-65代替),目的地址使用00-00-E4-8

3、6-3A-DC地址生成。其他头部参数根据情况自行设定。(4)将封装好的IPv6报文写入输出文件ipv6data中。2、 编程训练二根据7.5节的内容,改写编程训练一中的程序。具体要求如下:(1) 原始数据为传输层TCP协议栈向下传输至网络层TCP数据报的数据字段。编程时,需要额外填充TCP报头,并且构造TCP伪报头来计算校验和。然后填充IPv6报头,将TCP数据报填充到IPv6数据报的数据字段。然后将完整的IPv6数据报写入输出文件。(2) 程序的命令行格式,输入与输出的要求与编程训练一相同。3、 编程训练三 根据第五章的内容以及本章的相关知识编写IPv6流量的分析程序。具体要求如下: (1)

4、捕获一段时间内以本机为源地址或目的地址的IPv6数据包(不包括以广播形式发出的数据包)并进行统计,列出本机与其他主机之间不同协议类型的IPv6数据包的数量。 (2)程序以命令行的方式运行,格式如下: Ipv6Minitor.exe duration_time 其中,duration_time是监督时间,单位为秒。 (3) 3.课程设计分析1)课程设计中涉及的网络基本理论简介:在网际协议中定义的是因特网的IP地址,但在实际进行通信时,物理层不能识别IP地址只能识别物理地址。因此,需在IP地址与物理地址之间建立映射关系,地址之间的这种映射称为地址解析。以太网网络中的物理地址即网卡的序列号。IEEE

5、规定网卡序列号为6个字节(48位),前三个字节为厂商代号,由于厂商向IEEE注册登记申请,后3个字节为网卡的流水号。地址解析包括从IP地址到物理地址的映射和从物理地址到IP地址的映射。TCP/IP协议组提供了两个映射协议:地址解析协议ARP和逆向地址解析协议RARP。ARP用于从IP地址到物理地址的映射,RARP用于从物理地址到IP地址的映射。地址解析协议的ARP的工作原理:假定在一个物理网络上,A(源主机)要与D(目的主机)进行通信,但是不知道D的物理地址。 A利用ARP协议工作的过程如下: A广播一个ARP请求报文,请求IP地址为IPD的主机回答其物理地址。网上所有主机都能收到该ARP请求

6、,并将本机IP地址与请求的IP地址比较,D主机识别出自己的地址IPD,并作出回应,通报自己的物理地址。A收到这个ARP回应包后,就可以与D进行通信。为了提高效率,ARP协议使用了高速缓存技术。在每台使用ARP的主机中,都保留了一个专用的内存区,一收到ARP应答,主机就将获得的IP地址和物理地址存入缓存。以后每次要发送报文时,首先到缓存中查找有无相应的项,若找不到,再利用ARP进行地址解析。由于多数网络通信都要连续发送多个报文,所以高速缓存大大提高ARP的效率。在ARP请求报文中还放入源主机的“IP地址物理地址”的地址对,源主机在广播ARP请求时,网络上所有主机都可以知道该源主机的“IP地址物理

7、地址”的地址对并将其存入自己的缓存。在新主机入网时,令其主动广播其地址映射,以减少其他主机进行ARP请求。网卡具有如下的几种工作模式:广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。混杂模式(Pr

8、omiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。ARP帧的数据结构表达方式:以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。  两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806. 硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;  协议类型字段:表示要映射的协议地址类型,IP为0X0800; 硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以

9、太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送端的以太网地址:源主机硬件地址,6个字节;发送端IP地址:发送端的协议地址(IP地址),4个字节;目的以太网地址:目的端硬件地址,6个字节;目的IP地址:目的端的协议地址(IP地址),4个字节。 2)课程设计中涉及的主要问题1.ARP 相关数据帧结构2.ARP协议工作原理3.程序的流程4. Winpcap 开发包的使用方法5.Windows平台构造自定义数据帧,并通过指定网络适配器发送的方法。解决思路:1.先查找资料,深入掌握AR

10、P的相关数据帧结构,工作原理。并且对要编程的ARP 程序的流程进行熟悉。2.查阅资料,掌握Winpcap开发包的使用方法。3.查阅资料,掌握通过指定网络适配器发送数据帧的方法。实现预期目标的可行性分析:ARP协议工作在TCP/IP的第二层,用于将IP地址转换为网卡的物理地址。通过一定时间的学习,熟悉ARP协议和Winpcap开发包使用方法,本设计主要通过对ARP协议的帧结构,ARP原理,工作流程等的分析来完成获取局域网内活动主机的物理地址的程序的开发。3)ARP协议相关数据帧结构下图显示了ARP数据帧结构。硬件类型(Ethernet:0X1)上层协议类型(IP:0X0800)硬件地址长度IP地

11、址长度操作(0X1为请求,0X2为应答)源MAC地址(前32位)源MAC地址(后16位)源IP地址(前16位)源IP地址(后16位)目的MAC地址(前16位)目的MAC地址(后32位)目的IP地址(全部32位)填充数据(共18B) ARP数据帧结构在Ethernet上发送该数据帧,还需要将此数据帧封装到物理帧中,封装后的结构如下图所示。物理帧头(14B)ARP帧结构及填充数据(48B)CRC校验和(4B) 物理帧结构物理帧头结构如下图所示目的MAC(6B)源MAC(6B)类型(2B) 物理帧头部结构以上数据结构对应的结构体实现如下:struct ethernet_headunsigned ch

12、ar dest_mac6;/目标主机MAC地址unsigned char source_mac6;/源端MAC地址unsigned short eh_type;/以太网类型;struct arp_headunsigned short hardware_type;/硬件类型:以太网接口类型为1unsigned short protocol_type;/协议类型:IP协议类型为0X0800unsigned char add_len;/硬件地址长度:MAC地址长度为6Bunsigned char pro_len;/协议地址长度:IP地址长度为4Bunsigned short option;/操作:A

13、RP请求为1,ARP应答为2unsigned char sour_addr6;/源MAC地址:发送方的MAC地址unsigned long sour_ip;/源IP地址:发送方的IP地址unsigned char dest_addr6; /目的MAC地址:ARP请求中该字段没有意义;ARP响应中为接收方的MAC地址unsigned long dest_ip;/目的IP地址:ARP请求中为请求解析的IP地址;ARP响应中为接收方的IP地址unsigned char padding18;struct arp_packet/最终arp包结构ethernet_head eth;/以太网头部arp_he

14、ad arp; /arp数据包头部;4)编程流程介绍由于Winpcap需要绑定在某特定的网络适配器上,所以程序在开始的时候要首先获得系统中全部的网络适配器列表,由用户选择适当的适配器。程序检测用户选择是否正确,确认无误后,获得本机的IP地址和MAC地址,然后开启两个工作者线程分别获得发送ARP请求数据帧和接收分析ARP响应数据帧的工作,接收到ARP响应数据帧后分析其有效性,并在确定某响应数据帧有效后发送更新消息通知用户界面线程刷新界面显示获得的对应关系。下图是程序流程图:4.课程具体步骤1. 安装WinPcap 3.1版本。2. 创建一个c+工程,点击文件->新建->工程->

15、选择win32 console Application,写工程名为Getmac,点击确定。创建一个空工程,点击完成就完成了一个空工程的创建。3. 创建cpp文件,按照协议编写如下步奏所示1) 首先创建一个C+ Source File,文件名为Mac.2) 编写一个主函数main(),按照流程进行代码编写。4. 将必须的头文件插入到此工程中,在这里我们新建工程后直接添加相应文件:工程->添加到工程->文件->找到相应头文件并添加。5. 然后将对应的IPHLPAPI.LIB文件添加到当前目录下,并且添加相应的库文件:工程->设置->连接->对象/库模块->

16、对话框输入IPHLPAPI.LIB->确定。6. 在生成的相应Debug文件中含有Mac.exe可执行文件。然后在命令行里进入Mac.exe所在文件夹,然后输入命令Mac.exe,按enter键运行。7. 在命令行中输入指令ipconfig /all,查看本机物理地址,并与程序运行结果进行对比,对比结果发现程序运行结果正确。5.课程总结 本次课程设计主要是让我们对计算机通信与网络方面的知识有所了解。整个课程设计的过程,首先要对网络方面关于ARP协议的知识进行回顾,因此找此方面的资料便是应当做的首要任务。我们通过阅读此方面的书籍熟练掌握ARP协议的详细过程。在网际协议中定义的是因特网的IP

17、地址,但在实际进行通信时,物理层不能识别IP地址只能识别物理地址。因此,需在IP地址与物理地址之间建立映射关系,地址之间的这种映射称为地址解析。ARP地址解析协议就是实现地址之间的这种映射关系的。ARP地址解析协议的整个运作过程我简单的理解为:源主机广播一个ARP请求报文,请求目的主机回答其物理地址。网上所有主机都能收到该ARP请求,并将本机IP地址与请求的IP地址比较,目的主机识别出自己的地址IP,并作出回应,通报自己的物理地址。源主机收到这个ARP回应包后,就可以与目的主机进行通信。了解APR协议的过程,是编写程序的基本要求。 通过本次课程设计,使我们对网络方面的知识有了更深入的认识。深刻

18、体会了ARP协议的帧结构及运作过程,让我们把网络课上学到得书面的知识在实践中加以运用,深入理解。并且增强了我们的合作能力,学会和同伴一起去完成任务。本次课程设计确实不容易做,很多东西都是自己没学过的,整个过程要不断地学习,借鉴别人的程序。6.参考文献1计算机网络高级软件编程技术 吴功宜 等编著/2005年09月/机械工业出版社2C+程序设计 谭浩强 编著/2004年07月/清华大学出版社3TCP/IP协议及网络编程技术 罗军舟等编著/2004年/清华大学出版社源代码:#include "stdafx.h"#include < windows.h >/=/ 通过 GetAdaptersInfo() 函数来获取 MAC 地址 #include "Iphlpapi.h" / link iphlpapi.libbool GetMACaddress(char* pMac)IP_ADAPTER_INFO AdapterInfo16; / 定义网卡信息存储区。 DWORD dwBufLen = sizeof(AdapterInfo); DWORD

温馨提示

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

评论

0/150

提交评论