ARP地址解析协议实验报告

合集下载

arp协议实验报告

arp协议实验报告

arp协议实验报告ARP协议实验报告引言:ARP(Address Resolution Protocol)是一种用于将IP地址映射到物理MAC地址的协议。

在计算机网络中,当一个主机需要发送数据到另一个主机时,需要知道目标主机的MAC地址。

而ARP协议就是用来解决这个问题的。

实验目的:本次实验的目的是通过搭建一个简单的网络环境,了解ARP协议的工作原理,并通过实际操作来验证ARP协议的可行性。

实验环境:本次实验所使用的网络环境如下:- 主机A:IP地址为192.168.1.2,MAC地址为AA:AA:AA:AA:AA:AA- 主机B:IP地址为192.168.1.3,MAC地址为BB:BB:BB:BB:BB:BB- 路由器R:IP地址为192.168.1.1,MAC地址为CC:CC:CC:CC:CC:CC实验步骤:1. 首先,我们需要在主机A上发送一个ARP请求,以获取主机B的MAC地址。

在命令行中输入以下命令:```arp -s 192.168.1.3 BB:BB:BB:BB:BB:BB```这个命令的作用是将IP地址192.168.1.3与MAC地址BB:BB:BB:BB:BB:BB进行绑定。

2. 接下来,我们在主机A上发送一个ARP请求包,以获取主机B的MAC地址。

在命令行中输入以下命令:```arping -I eth0 192.168.1.3```其中,-I参数指定了发送ARP请求的网络接口,eth0表示主机A的网络接口。

3. 主机B接收到ARP请求后,会向主机A回复一个ARP应答包,其中包含了自己的MAC地址。

主机A收到应答包后,会将主机B的MAC地址缓存起来,以便后续通信使用。

4. 现在,我们可以在主机A上通过ping命令向主机B发送数据包了。

在命令行中输入以下命令:```ping 192.168.1.3```主机A会将数据包发送到主机B的MAC地址,从而实现了主机之间的通信。

实验结果:通过以上实验步骤,我们成功地验证了ARP协议的可行性。

ARP协议分析实验报告

ARP协议分析实验报告

ARP协议分析实验报告ARP(Address Resolution Protocol)协议是一种解决网际协议(IP)地址与物理硬件地址(MAC地址)之间转换的协议。

本次实验旨在分析ARP协议的工作原理和过程,并通过使用网络抓包工具Wireshark来捕获并分析ARP协议的数据包。

1.实验背景与目的2.实验步骤a)搭建网络环境:搭建一个基本的局域网环境,包括一个路由器和几台主机。

b) 启动Wireshark:在一台主机上启动Wireshark网络抓包工具。

c)发送ARP请求:使用另一台主机向目标主机发送ARP请求,获取目标主机的IP地址与MAC地址的对应关系。

d) 抓取数据包:在Wireshark中捕获并保存ARP协议的数据包。

e)分析数据包:打开捕获的数据包,分析数据包中的ARP请求和应答。

3.实验结果与分析实验中,我们使用两台主机进行测试,主机A的IP地址为192.168.1.100,MAC地址为00:11:22:33:44:55,主机B的IP地址为192.168.1.200,MAC地址为AA:BB:CC:DD:EE:FF。

a)ARP请求过程:主机A通过ARP协议发送ARP请求,询问主机B的MAC地址,具体操作为发送一个以太网帧,目标MAC地址为广播地址FF:FF:FF:FF:FF:FF,目标IP地址为主机B的IP地址192.168.1.200。

主机B收到ARP请求后,通过ARP应答将自己的MAC地址发送给主机A。

b)ARP应答过程:主机B收到ARP请求后,生成一个ARP应答数据包,将自己的MAC地址AA:BB:CC:DD:EE:FF作为回应发送给主机A。

主机A接收到ARP应答后,将主机B的IP地址与MAC地址的对应关系存储在本地ARP缓存中,以便于下次通信时直接使用。

4.结论与意义ARP协议作为解决IP地址与MAC地址转换的关键协议,在计算机网络中起着重要的作用。

本实验通过抓包分析ARP协议的工作过程,深入理解了ARP协议的原理和应用场景。

实验2 地址解析协议ARP

实验2 地址解析协议ARP

1.掌握 ARP 协议的报文格式2.掌握 ARP 协议的工作原理3.理解 ARP 高速缓存的作用4.掌握 ARP 请求和应答的实现方法5.掌握 ARP 缓存表的维护过程2 学时该实验采用网络结构二物理地址是节点的地址,由它所在的局域网或者广域网定义。

物理地址包含在数据链路层的帧中。

物理地址是最低一级的地址。

物理地址的长度和格式是可变的,取决于具体的网络。

以太网使用写在网络接口卡(NIC)上的 6 字节的标识作为物理地址。

物理地址可以是单播地址 (一个接收者) 、多播地址 (一组接收者) 或者广播地址 (由网络中的所有主机接收) 。

有些网络不支持多播或者广播地址,当需要把帧发送给一组主机或者所有主机时,多播地址或者广播地址就需要用单播地址来摹拟。

在互联网的环境中仅使用物理地址是不合适的,因为不同网络可以使用不同的地址格式。

因此,需要一种通用的编址系统,用来惟一地标识每一台主机,而不管底层使用什么样的物理网络。

逻辑地址就是为此目的而设计的。

目前 Internet 上的逻辑地址是 32 位地址,通常称为 IP 地址,可以用来标识连接在 Internet 上的每一台主机。

在 Internet 上没有两个主机具有同样的 IP 地址。

逻辑地址可以是单播地址、多播地址和广播地址。

其中广播地址有一些局限性。

在实验三中将详细介绍这三种类型的地址。

Internet 是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。

主机发送一个数据包到另一台主机时可能要经过多种不同的物理网络。

主机和路由器都是在网络层通过逻辑地址来识别的,这个地址是在全世界范围内是惟一的。

然而,数据包是通过物理网络传递的。

在物理网络中,主机和路由器通过其物理地址来识别的,其范围限于本地网络中。

物理地址和逻辑地址是两种不同的标识符。

这就意味着将一个数据包传递到一个主机或者路由器需要进行两级寻址:逻辑地址和物理地址。

需要能将一个逻辑地址映射到相应的物理地址。

arp实验报告

arp实验报告

arp实验报告ARP实验报告一、引言ARP(Address Resolution Protocol)是一种用于将IP地址转换为MAC地址的协议。

在计算机网络中,IP地址用于标识网络上的设备,而MAC地址则用于标识网络设备的物理地址。

ARP协议的作用是通过在本地网络中广播请求,获取目标设备的MAC地址,以便进行数据通信。

本实验旨在通过实际操作和观察ARP协议的工作原理和过程。

二、实验目的1. 了解ARP协议的工作原理和过程;2. 掌握使用ARP协议进行地址解析的方法;3. 分析并理解ARP协议的优缺点。

三、实验环境本实验使用了一台Windows操作系统的计算机和一台路由器,通过局域网连接。

四、实验步骤1. 打开命令提示符窗口,输入ipconfig命令查看本机的IP地址和MAC地址;2. 在命令提示符窗口中,输入arp -a命令查看本机的ARP缓存表;3. 在命令提示符窗口中,输入ping命令向目标IP地址发送一个数据包;4. 在命令提示符窗口中,再次输入arp -a命令查看ARP缓存表是否有更新。

五、实验结果与分析通过实验步骤中的操作,我们可以观察到以下结果和现象:1. 在输入ipconfig命令后,命令提示符窗口会显示本机的IP地址和MAC地址。

IP地址通常是由网络管理员或DHCP服务器分配的,而MAC地址是网络设备的唯一标识;2. 在输入arp -a命令后,命令提示符窗口会显示本机的ARP缓存表。

ARP缓存表中列出了本机已经解析过的IP地址和对应的MAC地址;3. 在输入ping命令后,命令提示符窗口会显示与目标IP地址的通信状态。

如果目标IP地址在本机的ARP缓存表中不存在,本机会向局域网广播ARP请求,以获取目标设备的MAC地址;4. 在再次输入arp -a命令后,我们可以观察到ARP缓存表中新增了目标IP地址和对应的MAC地址。

通过以上实验结果和现象,我们可以得出以下结论和分析:1. ARP协议通过将IP地址转换为MAC地址,实现了在局域网中的设备通信。

辽工大实验报告

辽工大实验报告

一、实验目的1. 掌握ARP协议的报文格式。

2. 掌握ARP协议的工作原理。

3. 理解ARP地址解析协议在计算机网络中的应用。

二、实验环境1. 实验系统:计算机网络实验系统2. 知识准备:ARP地址解析协议、ICMP网络控制协议三、实验准备1. 确保实验系统正常运行,包括网络连接、协议分析器等。

2. 了解ARP协议的基本概念和工作原理。

3. 熟悉实验系统的操作方法。

四、实验内容本次实验分为两个练习,分别验证ARP协议的报文格式和工作原理。

练习一:验证ARP协议的报文格式1. 主机A、B、C、D、E、F启动协议分析器,进入相应的网络结构,并验证网络拓扑的正确性。

2. 主机A、B、C、D、E、F在命令行下运行arp -d命令,清空ARP高速缓存。

3. 主机A ping 主机D(172.16.1.4)。

4. 主机E ping 主机F(172.16.0.3)。

5. 主机A、B、C、D、E、F停止捕获数据,并立即在命令行下运行arp -a命令察看ARP高速缓存。

实验结果:在实验过程中,主机A向主机D发送了ping请求,主机E向主机F发送了ping请求。

协议分析器捕获到了ARP请求和响应报文,证实了ARP协议在数据传输过程中的应用。

练习二:验证ARP协议的工作原理1. 主机A、B、C、D、E、F启动协议分析器,进入相应的网络结构,并验证网络拓扑的正确性。

2. 主机A、B、C、D、E、F在命令行下运行arp -d命令,清空ARP高速缓存。

3. 主机A ping 主机D(172.16.1.4)。

4. 主机E ping 主机F(172.16.0.3)。

5. 主机A、B、C、D、E、F停止捕获数据,并立即在命令行下运行arp -a命令察看ARP高速缓存。

实验结果:在实验过程中,主机A向主机D发送了ping请求,主机E向主机F发送了ping请求。

协议分析器捕获到了ARP请求和响应报文,证实了ARP协议在数据传输过程中的应用。

ARP地址解析协议实验报告

ARP地址解析协议实验报告

网络技术与应用实验报告实验三目录背景知识错误!未定义书签。

开发环境4程序设计7ARP数据包结构定义7获取本机网络接口的MAC地址和IP地址9向网络发送数据包错误!未定义书签。

程序测试15执行结果界面截图15执行结果分析17获取IP地址与MAC地址的对应关系背景知识以太网的一个很大的特点就是具有强大的广播能力。

针对这种具备广播能力、物理地址长但长度固定的网络,IP互联网采用动态联编方式进行IP地址到物理地址的映射,并制定了相应的协议——ARP。

假定在一个以太网中,主机A欲获取主机B的IP地址IB 与MAC地址PB的映射关系。

ARP协议的工作过程为:1)主机A广播发送一个带有IB 的请求信息包,请求主机B用它的IP地址IB和MAC地址PB的映射关系进行相应;2)于是,以太网上的所有主机接受到这个请求信息包(包括主机B在);3)主机B识别该请求信息,并向主机A发送带有自己的IP地址IB和MAC地址PB映射关系的相应数据包;4)主机A 得到IB 与PB的映射关系,并可以在随后的发送过程中使用该映射关系。

当ARP报文在以太网中传送时,需要将它们封装在以太网数据帧中。

为了使接收方能够容易地识别该数据帧携带的为ARP数据,发送方需要将以太网数据帧首部的长度/类型字段指定为0x0806。

由于ARP请求和应答分别采用广播方式和单播方式发送,因此封装ARP请求数据帧的目的地址为全“1”形式的广播地址,而封装ARP响应的数据真的目的地址为接收节点的单播地址。

在以太网中,ARP数据包的格式如图3-1所示:图3-1 以太网中ARP的报文格式其中,个字段的意义如下:硬件类型:物理接口类型。

其中,以太网的接口类型为1。

协议类型:高层协议类型。

其中,IP协议类型为0x0800。

操作:指定ARP报文一个ARP请求还是一个ARP应答。

其中,ARP请求报文为 1,ARP应答报文为2。

硬件地址长度:以字节为单位的物理地址长度。

在以太网中,物理地址(MAC地址)的长度为6B。

贵州大学计算机网络实验报告-实验五-分析ARP地址解析协议

贵州大学计算机网络实验报告-实验五-分析ARP地址解析协议

实验课程名称计算机网络实验报告实验项目名称分析ARP地址解析协议专业班级电子信息科学与技术08级1班学生姓名学号指导教师理学院实验时间:2010年5月11日实验名称:实验五分析ARP地址解析协议实验目的:掌握ARP协议的作用和格式;理解IP地址与MAC地址的对应关系;了解ARP命令。

实验器材:计算机及以太网环境。

实验内容(步骤):1.打开“命令提示符”窗口,使用“arp -a”命令查看本地计算机ARP高速缓存。

2.使用“arp -d”命令清除本地计算机ARP高速缓存,再使用“arp -a”命令查看。

此时,本地计算机ARP高速缓存只有路由的信息了。

3.打开Wireshark,选择菜单命令“Capture” “I nterfaces…”子菜单项。

弹出“Wireshark:Capture Interfaces”对话框。

单击“Options”按钮,弹出“Wireshark: Capture Options”对话框。

Capture filter字段填入:“arp”,单击“Start”按钮。

4.此时,网络协议分析软件开始捕获数据,在“命令提示符”窗口中PING同一子网中的任意主机。

因为PING命令的参数为IP地址,因此使用PING命令前,需要使用ARP机制将IP地址转换为MAC地址,这个过程用户是无法感知的。

因为我们在使用PING命令前已经开始网络数据包捕获,因此,此时网络协议分析软件将捕获到ARP解析数据包。

5.单击“Stop”按钮,中断网络协议分析软件的捕获进程,主界面显示捕获到的ARP数据包。

6.观察协议树区中ARP数据包结构,是否符合ARP请求或应答的报文格式。

可以在命令提示符窗口使用ipconfig/all命令查看本地计算机的物理网卡地址。

观察第一帧的数据包结构:Address Resolution Protocol (request)-地址解析协议(请求):硬件类型:以太网(0x0001)(2字节)协议类型:IP协议(0x0800)(2字节)硬件地址长度:6(1字节)协议地址长度:4(1字节)操作类型:请求(0x0001)(2字节)[免费:否]发送方MAC地址:Micro-St_cf:aa:57(00:1d:92:cf:aa:57)(6字节)发送方IP地址:192.168.1.6(192.168.1.6)(6字节)目的MAC地址:00:00:00_00:00:00(00:00:00:00:00:00)(6字节)目的IP地址:192.168.1.59(192.168.1.59)(6字节)经上述分析可知:ARP请求或应答的报文格式:ARP报文封装在以太网数据链路帧中传输,如下图所示:7.浏览外部网站,确保网络环境通畅。

ARP_IP_ICMP实验报告

ARP_IP_ICMP实验报告

【实验作业】一、ARP地址解析协议1.观察ARP缓存生存时间ARP缓存中存放的IP-MAC映射表项有两种类型:静态和动态。

其中,静态ARP缓存可以通过命令“arp -s ip_addr mac_addr”添加,一旦添加,该条目将是永久性的,除非用命令“arp -d ip_addr”进行删除或者断开网络连接。

而动态ARP缓存都有有限的生存时间(一般为20分钟),如果在生存时间内没有被更新,就会在生存时间到来时自动清除。

1.1 操作步骤(1) 将本机和同宿舍的另一台主机接入到同一网络中,记录双方分配到的IP地址:另一台主机[10.104.137.66]和本机[10.104.137.254]。

(2) 用命令“ping对方主机的IP地址”,通过ARP协议得到对方IP对应的物理MAC地址。

如果成功,主机将自动记录IP-MAC映射关系,写入ARP动态缓存。

同时生存时间计时开始。

结果如下:(3) 用命令“arp -a”列出ARP缓存中的所有条目,其中应该包括对方IP对应的IP-MAC条目。

(4) 不断重复过程(3),直到对方IP对应的IP-MAC条目被清除,生存时间计时结束。

1.2 实验结果(1) 20分钟之后,用arp –a查看ARP缓存,发现对方ARP条目并没有消失,并且在此期间,主机没有再ping对方主机IP地址。

结果如下:(2) 对方主机断开网络连接,再次ping对方主机。

查看ARP缓存,发现对方主机的ARP条目消失。

(3) 后来发现使用Windows7系统做这个实验的主机,都没有在20分钟后观察到缓存自动消失的现象,推测可能的原因是,Windows7系统的ARP缓存生存时间被设置的很长,或者直接不设置生存时间(考虑到硬件容量的发展以及通过再次探测判断是否删除条目的方法)。

(4) 与教员探讨上述问题后,可行的解决方案是在注册表的下列路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中创建ArpCacheLife和ArpCacheMinReferencedLife项,并人工设置ARP缓存生存时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络技术与应用实验报告实验三目录背景知识....................................................................... 错误!未定义书签。

开发环境. (4)程序设计 (7)ARP数据包结构定义 (7)获取本机网络接口的MAC地址和IP地址 (9)向网络发送数据包................................................ 错误!未定义书签。

程序测试.. (15)执行结果界面截图 (15)执行结果分析 (17)获取IP地址与MAC地址的对应关系背景知识以太网的一个很大的特点就是具有强大的广播能力。

针对这种具备广播能力、物理地址长但长度固定的网络,IP互联网采用动态联编方式进行IP地址到物理地址的映射,并制定了相应的协议——ARP。

假定在一个以太网中,主机A欲获取主机B的IP地址I B与MAC地址P B的映射关系。

ARP协议的工作过程为:1)主机A广播发送一个带有I B的请求信息包,请求主机B用它的IP地址I B 和MAC地址P B的映射关系进行相应;2)于是,以太网上的所有主机接受到这个请求信息包(包括主机B在内);3)主机B识别该请求信息,并向主机A发送带有自己的IP地址I B和MAC地址P B映射关系的相应数据包;4)主机A 得到I B与P B的映射关系,并可以在随后的发送过程中使用该映射关系。

当ARP报文在以太网中传送时,需要将它们封装在以太网数据帧中。

为了使接收方能够容易地识别该数据帧携带的为ARP数据,发送方需要将以太网数据帧首部的长度/类型字段指定为0x0806。

由于ARP请求和应答分别采用广播方式和单播方式发送,因此封装ARP请求数据帧的目的地址为全“1”形式的广播地址,而封装ARP响应的数据真的目的地址为接收节点的单播地址。

在以太网中,ARP数据包的格式如图3-1所示:图3-1以太网中ARP的报文格式其中,个字段的意义如下:硬件类型:物理接口类型。

其中,以太网的接口类型为1。

协议类型:高层协议类型。

其中,IP协议类型为0x0800。

操作:指定ARP报文一个ARP请求还是一个ARP应答。

其中,ARP请求报文为 1,ARP应答报文为2。

硬件地址长度:以字节为单位的物理地址长度。

在以太网中,物理地址(MAC 地址)的长度为6B。

协议地址长度:以字节为单位的上层协议地址长度。

IP地址长度为4B。

源MAC地址:发送方的MAC地址。

源IP地址:发送方的IP地址。

目的MAC地址:在ARP请求报文中,该字段内容没有意义;在ARP响应报文中,该字段为接收方的MAC地址。

目的IP地址:在ARP请求报文中,该字段为请求解析的IP地址;在ARP响应报文中,该字段为接收方的IP地址。

开发环境本实验的目的是捕获以太网中的数据包并对其进行分析,因此以太网在该实验中时必不可少的。

本实验使用的以太网既可以是共享式以太网也可以是交换式以太网。

本实验利用Microsoft集成开发环境IDE创建基于WinPcap的应用程序。

因此,需要在源码中增加与WinPcap相关的信息,还需要对IDE中的某些缺省参数进行修改。

下面介绍使用VC6.0创建基于WinPcap应用程序的配置方法:1.添加pcap.h包含文件:如果一个源文件使用了WinPcap提供的函数,那么需要在该文件开始位置增加pcap.h包含文件,如下所示:#include “pcap.h”2.增加与WinPcap有关的预处理器定义:需要将WPCAP和HA VE_REMOTE两个标号添加到预处理器定义中。

在VC6.0提供的IDE环境中,可以通过执行“工程”菜单中的“设置”命令进入该项目的属性配置页,如图2-2所示。

通过选择“C/C++”选项就可以增加这两个标号。

图3-2 在预处理器定义中增加WPCAP和HA VE_REMOTE3.添加包含文件目录:在生成基于WinPcap的应用程序过程中,生成程序需要知道pcap.h等包含文件在磁盘中的位置,因此需要将WinPcap提供的包含文件目录位置通知生成程序。

添加包含文件目录可以通过执行“工具”菜单中的“选项”命令进入“选项”对话框,如图2-3所示。

然后,通过选择对话框中的“目录->include files”选项可以将WinPcap的包含文件目录添加到IDE集成开发环境中。

图3-3 在IDE集成开发环境中增加包含文件目录4.添加wpcap.lib库文件:在生成基于WinPcap的应用程序过程中,生成程序需要链接wpcap.lib库文件。

因此,需要将WinPcap.lib添加到利用IDE集成开发环境生成的项目中。

添加wpcap.lib库文件可以通过执行“项目”菜单中的“设置”命令进入“Project Settings”对话框,如图2-4所示。

通过选择“连接”选项就可以添加wpcap.lib库文件。

图3-4 添加wpcap.lib库文件程序设计利用WinPcap获取IP地址与MAC地址的对应关系需要经过下面各步骤。

ARP数据包结构定义网络中传输的数据包是经过封装的,每一次封装都会增加相应的首部。

由于WinPcap在数据链路层捕获数据包,因此在以太网中利用pcap_next_ex函数获得的数据都包含以太网帧头信息。

同时,由于利用pcap_next_ex函数捕获到的数据包保存在一个无结构的缓冲区中,因此在实际编程过程中,通常需要定义一些有关首部的数据结构,通过将这些结构赋予存放数据包的无结构缓冲区简化数据的提取过程。

在分析以太网数据帧和ARP数据包时可以定义以太网数据帧和ARP数据包首部结构为:获取本机网络接口的MAC地址和IP地址调用WinPcap的pcap_findalldevs_ex函数后,参数alldevs指向的链表中包含了主机中安装的网络接口设备列表。

在alldevs链表中每个元素保存的网络接口相关信息中,地址信息保存了该网络接口上绑定的IP地址、网络掩码、广播地址和目的地址等。

由于每个网络接口卡上可以绑定多个IP地址,因此每个网络接口卡拥有的地址信息也采用了链表结构,其具体定义如下:网络接口卡及其每块网卡上绑定的IP地址的程序代码如下:为了形成ARP请求数据包,不但需要知道本机网络接口上绑定的IP地址,而且必须知道这块网卡的MAC地址。

在理解ARP协议的基本思想后,可以直接通过WinPcap获取本机网络接口的MAC地址。

按照ARP协议,以太网中的主机如果发现一个ARP所请求的IP地址为自己拥有的IP地址,那么它将形成ARP响应并将该IP地址与MAC地址的对应关系返回给请求主机。

如果应用程序能够捕获到本机发出的ARP响应,那么就能够知道本机网络接口的MAC地址。

按照这种原理,利用WinPcap获得本机网络接口MAC地址和IP地址的过程大致如下:1)获取本机安装的网络接口和接口上绑定的IP地址:利用WinPcap提供的pcap_findalldevs_ex函数获取本机的接口设备列表,从而获得本机网络接口及其接口上绑定的IP地址。

2)发送ARP请求,请求本机网络接口上绑定的IP地址与MAC地址的对应关系:本地主机模拟一个远端主机,发送一个ARP请求报文,该请求报文请求本机网络接口上绑定的IP地址与MAC地址的对应关系。

在组装报文过程中,源MAC地址字段和源IP地址字段需要使用虚假的MAC地址和虚假的IP地址。

本地主机一旦获取该ARP请求就会做出响应。

3)应用程序捕获本机的ARP响应,获取本机网络接口卡的MAC地址:利用WinPcap捕获本机的ARP响应,从而得到本机网络接口卡的MAC地址。

在得到本机网络接口的MAC地址和其上绑定的IP地址后,应用程序就可以组装和发送ARP请求报文,请求以太网中其他主机的IP地址与MAC地址的对应关系。

实验中运用以下程序段获取本机网络接口的MAC地址和其上绑定的IP地址:向网络发送数据包为了获取以太网中其他主机的IP地址与MAC地址的对应关系,应用程序需要向以太网广播ARP请求。

向以太网发送数据报可以使用WinPcap提供的其中,pcap_sendpacket函数中各参数的意义如下:p:指定pcap_sendpacket函数通过哪块接口网卡发送数据包。

该参数为一个指向pcap_t结构的指针,通常是调用pcap_open函数成功后返回的值。

buf:指向需要发送的数据包,该数据包应该包含各层的头部信息。

但需要注意的是,以太帧的CRC校验和字段不应该包含在buf中,WinPcap在发送过程中会自动为其添加校验和。

size:指定发送数据包的大小。

在发送成功后时,pcap_sendpacket函数返回0,后则返回-1.实验中,利用WinPcap发送ARP请求的程序如下://硬件类型为以太网ARPFrameSent.HardwareType=htons(0x0001);//协议类型为IPARPFrameSent.ProtocolType=htons(0x0800);//硬件地址长度为6ARPFrameSent.HLen=6;//协议地址长度为4ARPFrameSent.PLen=4;//操作为ARP请求ARPFrameSent.Operation=htons(0x0001);//源IP地址设置为本机网卡上绑定的IP地址ARPFrameSent.SendIP=htonl(((BYTE)a->addr->sa_data[2]<<24)+((BYTE)a->addr->sa_data[3]<<16)+((BYTE)a->addr->sa_data[4]<<8)+((BYTE)a->addr->sa_data[5]));//目的IP地址设置为请求的IP地址ARPFrameSent.RecvIP=htonl(DstIP);//启动数据包捕获者线程m_Capturer=AfxBeginThread(Capturer,NULL,THREAD_PRIORITY_NORMAL);int start=clock(); //启动计时器while(DstMACGot!=TRUE&&clock()-start<=30000){pcap_sendpacket(p,(u_char *)&ARPFrameSent,sizeof(ARPFrameSent)); }if(DstMACGot!=TRUE) //在规定时间内未捕获IP地址与MAC地址对应关系{MessageBox("请求超时");}else{//输出IP地址与MAC地址对应关系CString str;str.Format("%s->%02x-%02x-%02x-%02x-%02x-%02x",m_strDesIP,ARPFrameReceived->FrameHeader.SrcMAC[0],ARPFrameReceived->FrameHeader.SrcMAC[1],ARPFrameReceived->FrameHeader.SrcMAC[2],ARPFrameReceived->FrameHeader.SrcMAC[3],ARPFrameReceived->FrameHeader.SrcMAC[4],ARPFrameReceived->FrameHeader.SrcMAC[5]);m_match.InsertString(-1,str);}}程序测试执行结果界面截图1.程序运行后的初始界面如图3-5所示,列表了显示本机的全部网络设备接口。

相关文档
最新文档