ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:140.39KB ,
资源ID:17666523      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17666523.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(windowsAPI实现Arp功能Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

windowsAPI实现Arp功能Word格式文档下载.docx

1、(4)将封装好的IPv6报文写入输出文件ipv6data中。2、编程训练二根据7.5节的内容,改写编程训练一中的程序。(1)原始数据为传输层TCP协议栈向下传输至网络层TCP数据报的数据字段。编程时,需要额外填充TCP报头,并且构造TCP伪报头来计算校验和。然后填充IPv6报头,将TCP数据报填充到IPv6数据报的数据字段。然后将完整的IPv6数据报写入输出文件。(2)程序的命令行格式,输入与输出的要求与编程训练一相同。3、编程训练三 根据第五章的内容以及本章的相关知识编写IPv6流量的分析程序。 (1)捕获一段时间内以本机为源地址或目的地址的IPv6数据包(不包括以广播形式发出的数据包)并进

2、行统计,列出本机与其他主机之间不同协议类型的IPv6数据包的数量。 (2)程序以命令行的方式运行,格式如下: Ipv6Minitor.exe duration_time 其中,duration_time是监督时间,单位为秒。 (3) 3.课程设计分析1)课程设计中涉及的网络基本理论简介:在网际协议中定义的是因特网的IP地址,但在实际进行通信时,物理层不能识别IP地址只能识别物理地址。因此,需在IP地址与物理地址之间建立映射关系,地址之间的这种映射称为地址解析。以太网网络中的物理地址即网卡的序列号。IEEE规定网卡序列号为6个字节(48位),前三个字节为厂商代号,由于厂商向IEEE注册登记申请,

3、后3个字节为网卡的流水号。地址解析包括从IP地址到物理地址的映射和从物理地址到IP地址的映射。TCP/IP协议组提供了两个映射协议:地址解析协议ARP和逆向地址解析协议RARP。ARP用于从IP地址到物理地址的映射,RARP用于从物理地址到IP地址的映射。地址解析协议的ARP的工作原理:假定在一个物理网络上,A(源主机)要与D(目的主机)进行通信,但是不知道D的物理地址。 A利用ARP协议工作的过程如下: A广播一个ARP请求报文,请求IP地址为IPD的主机回答其物理地址。网上所有主机都能收到该ARP请求,并将本机IP地址与请求的IP地址比较,D主机识别出自己的地址IPD,并作出回应,通报自己

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

5、进行ARP请求。网卡具有如下的几种工作模式:广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程

6、序就是在这种模式下运行的。ARP帧的数据结构表达方式:以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。 两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806. 硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1; 协议类型字段:表示要映射的协议地址类型,IP为0X0800; 硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;操作字段:用来表示这个报文的类型,ARP请求为1,AR

7、P响应为2,RARP请求为3,RARP响应为4;发送端的以太网地址:源主机硬件地址,6个字节;发送端IP地址:发送端的协议地址(IP地址),4个字节;目的以太网地址:目的端硬件地址,6个字节;目的IP地址:目的端的协议地址(IP地址),4个字节。2)课程设计中涉及的主要问题1.ARP 相关数据帧结构2.ARP协议工作原理3.程序的流程4. Winpcap 开发包的使用方法5.Windows平台构造自定义数据帧,并通过指定网络适配器发送的方法。解决思路:1.先查找资料,深入掌握ARP的相关数据帧结构,工作原理。并且对要编程的ARP 程序的流程进行熟悉。2.查阅资料,掌握Winpcap开发包的使用

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

9、地址(后16位)目的MAC地址(前16位)目的MAC地址(后32位)目的IP地址(全部32位)填充数据(共18B) ARP数据帧结构在Ethernet上发送该数据帧,还需要将此数据帧封装到物理帧中,封装后的结构如下图所示。物理帧头(14B)ARP帧结构及填充数据(48B)CRC校验和(4B) 物理帧结构物理帧头结构如下图所示目的MAC(6B)源MAC(6B)类型(2B) 物理帧头部结构以上数据结构对应的结构体实现如下:struct ethernet_head unsigned char dest_mac6; /目标主机MAC地址 unsigned char source_mac6; /源端MA

10、C地址 unsigned short eh_type; /以太网类型;struct arp_head unsigned short hardware_type; /硬件类型:以太网接口类型为1 unsigned short protocol_type; /协议类型:IP协议类型为0X0800 unsigned char add_len; /硬件地址长度:MAC地址长度为6B unsigned char pro_len; /协议地址长度:IP地址长度为4B unsigned short option; /操作:ARP请求为1,ARP应答为2 unsigned char sour_addr6; /

11、源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_head arp; /arp数据包头部4)编程流程介绍由于Win

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

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

14、输入命令Mac.exe,按enter键运行。7. 在命令行中输入指令ipconfig /all,查看本机物理地址,并与程序运行结果进行对比,对比结果发现程序运行结果正确。5.课程总结 本次课程设计主要是让我们对计算机通信与网络方面的知识有所了解。整个课程设计的过程,首先要对网络方面关于ARP协议的知识进行回顾,因此找此方面的资料便是应当做的首要任务。我们通过阅读此方面的书籍熟练掌握ARP协议的详细过程。ARP地址解析协议就是实现地址之间的这种映射关系的。ARP地址解析协议的整个运作过程我简单的理解为:源主机广播一个ARP请求报文,请求目的主机回答其物理地址。网上所有主机都能收到该ARP请求,并

15、将本机IP地址与请求的IP地址比较,目的主机识别出自己的地址IP,并作出回应,通报自己的物理地址。源主机收到这个ARP回应包后,就可以与目的主机进行通信。了解APR协议的过程,是编写程序的基本要求。 通过本次课程设计,使我们对网络方面的知识有了更深入的认识。深刻体会了ARP协议的帧结构及运作过程,让我们把网络课上学到得书面的知识在实践中加以运用,深入理解。并且增强了我们的合作能力,学会和同伴一起去完成任务。本次课程设计确实不容易做,很多东西都是自己没学过的,整个过程要不断地学习,借鉴别人的程序。6.参考文献1计算机网络高级软件编程技术 吴功宜 等编著/2005年09月/机械工业出版社2C+程序

16、设计 谭浩强 编著/2004年07月/清华大学出版社3TCP/IP协议及网络编程技术 罗军舟等编著/2004年/清华大学出版社源代码:#include stdafx.h#include /=/ 通过 GetAdaptersInfo() 函数来获取 MAC 地址 Iphlpapi.h / link iphlpapi.libbool GetMACaddress(char* pMac)IP_ADAPTER_INFO AdapterInfo16; / 定义网卡信息存储区。 DWORD dwBufLen = sizeof(AdapterInfo); DWORD dwStatus = GetAdapter

17、sInfo( AdapterInfo, / output 指向接收数据缓冲指针 &dwBufLen); / input 缓冲区大小 if(dwStatus = ERROR_SUCCESS) / 此处是个trap,用来保证返回值有效 PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; if(pAdapterInfo != NULL) sprintf(pMac,%02X-%02X-%02X-%02X-%02X-%02X, pAdapterInfo-Address0, pAdapterInfo-Address1, pAdapterInfo-Address2, pAdapterInfo-Address3, pAdapterInfo-Address4, pAdapterInfo-Address5); return true; else return false; return false;int main(int argc, char* argv) / 方法 1: 通过 GetAdaptersInfo() 函数来获取 MAC 地址 char MAC18; memset(MAC, 0, 18); GetMACaddress(MAC); printf(MAC); return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1