计算机网路实验地址解析协议(ARP)

上传人:ji****72 文档编号:39670075 上传时间:2018-05-18 格式:DOC 页数:17 大小:314KB
返回 下载 相关 举报
计算机网路实验地址解析协议(ARP)_第1页
第1页 / 共17页
计算机网路实验地址解析协议(ARP)_第2页
第2页 / 共17页
计算机网路实验地址解析协议(ARP)_第3页
第3页 / 共17页
计算机网路实验地址解析协议(ARP)_第4页
第4页 / 共17页
计算机网路实验地址解析协议(ARP)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《计算机网路实验地址解析协议(ARP)》由会员分享,可在线阅读,更多相关《计算机网路实验地址解析协议(ARP)(17页珍藏版)》请在金锄头文库上搜索。

1、实验实验 5 地址解析协议(地址解析协议(ARP)【实验目的实验目的】1. 掌握 ARP 协议的报文格式 2. 掌握 ARP 协议的工作原理 3. 理解 ARP 高速缓存的作用 4. 掌握 ARP 请求和应答的实现方法 5. 掌握 ARP 缓存表的维护过程【学时分配学时分配】4 学时【实验环境实验环境】该实验采用网络结构二【实验内容实验内容】一一. 物理地址与逻辑地址物理地址与逻辑地址 1. 物理地址物理地址 物理地址是节点的地址,由它所在的局域网或广域网定义。物理地址包含在数据链路 层的帧中。物理地址是最低一级的地址。 物理地址的长度和格式是可变的,取决于具体的网络。以太网使用写在网络接口卡

2、 (NIC)上的 6 字节的标识作为物理地址。 物理地址可以是单播地址(一个接收者) 、多播地址(一组接收者)或广播地址(由网 络中的所有主机接收) 。有些网络不支持多播或广播地址,当需要把帧发送给一组主机或所 有主机时,多播地址或广播地址就需要用单播地址来模拟。 2. 逻辑地址逻辑地址 在互联网的环境中仅使用物理地址是不合适的,因为不同网络可以使用不同的地址格 式。因此,需要一种通用的编址系统,用来惟一地标识每一台主机,而不管底层使用什么 样的物理网络。 逻辑地址就是为此目的而设计的。目前 Internet 上的逻辑地址是 32 位地址,通常称为 IP 地址,可以用来标识连接在 Intern

3、et 上的每一台主机。在 Internet 上没有两个主机具有同 样的 IP 地址。 逻辑地址可以是单播地址、多播地址和广播地址。其中广播地址有一些局限性。在实 验三中将详细介绍这三种类型的地址。 二二. ARP 协议简介协议简介 Internet 是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。主机 发送一个数据包到另一台主机时可能要经过多种不同的物理网络。主机和路由器都是在网 络层通过逻辑地址来识别的,这个地址是在全世界范围内是惟一的。然而,数据包是通过 物理网络传递的。在物理网络中,主机和路由器通过其物理地址来识别的,其范围限于本 地网络中。物理地址和逻辑地址是两种不

4、同的标识符。这就意味着将一个数据包传递到一 个主机或路由器需要进行两级寻址:逻辑地址和物理地址。需要能将一个逻辑地址映射到 相应的物理地址。ARP 协议(地址解析协议)是“Address Resolution Protocol”的缩写。所谓“地址解析”就是主 机在发送帧前将目的逻辑地址转换成目的物理地址的过程。在使用 TCP/IP 协议的以太网中, ARP 协议完成将 IP 地址映射到 MAC 地址的过程。 三三. ARP 报文格式报文格式 下图为 ARP 数据报的报文格式:图 2-1 ARP 报文格式 ARP 报文格式具有如下的一些字段: 硬件类型:这是 16 位字段,用来定义运行 ARP

5、的网络的类型。每一个局域网基于其类 型被指派给一个整数。例如,以太网的硬件类型是 1。ARP 可用在任何网络上。 协议类型:这是 16 位字段。用来定义协议的类型。例如,对 IPv4 协议,这个字段的值 是 0x0800。ARP 可用于任何高层协议。 硬件地址长度:这是一个 8 位字段,用来定义以字节为单位的物理地址长度。例如,以 太网物理地址为 6 字节,所对应的硬件地址长度值为 6。 协议地址长度:标识用于该数据包的逻辑地址的长度,用十进制标识,单位为一个字节, 例如,IPv4 为 4 个字节,所对应的协议地址长度值为 4。 操作码:这是 16 位字段,用来定义数据包的类型。已定义了两种类

6、型:为 1 时表示 ARP 请求,为 2 时表示 ARP 应答。 发送端硬件地址:这是可变长度字段,用来定义发送端的物理地址。对于以太网这个字 段是 6 字节长。 发送端逻辑地址:这是可变长度字段,用来定义发送端的逻辑地址。对于逻辑地址为 IP 地址的网络,该字段长度为 4 字节。 目的端硬件地址:这是可变长度字段,用来定义目标的物理地址。对于 ARP 请求,字 段是全 0,因为发送端不知道目标的物理地址(该字段长度为可变,如以太网硬件地址为 6 个字节)。 目的端逻辑地址:这是可变长度字段,用来定义目标的逻辑地址(该字段长度为可变, 如 IPv4 协议的逻辑地址为 4 个字节)。 四四. A

7、RP 封装封装 ARP 数据报直接封装在数据链路帧中。例如,在下图中,ARP 数据包封装在以太网的帧中。 类型字段值为 0x0806 指出了此帧所携带的数据是 ARP 数据包。图 2-2 ARP 数据包的封装 五五. ARP 的运行过程的运行过程 数据包传输过程可分为如下步骤: 1. 发送端知道目的端的 IP 地址。 2. IP 要求 ARP 创建一个 ARP 请求报文,其中包含了发送方的物理地址、发送方的 IP 地 址和目的端的 IP 地址。目的端的物理地址用 0 填充。 3. 将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广播地 址作为目的地址,将其封装在一个帧中。

8、 4. 因为该帧中包含了一个广播目的地址,所以同一链路中的每个主机或路由器都接收到这 个帧。所有接收到该帧的主机都将其传递到 ARP 层进行处理。除了目的端主机以外的所有 主机都丢弃该报文。 5. 目的端主机用一个包含其物理地址的 ARP 应答报文做出响应,并对该报文进行单播。 6. 发送方接收到这个应答报文,这样它就知道了目标主机的物理地址。 ARP 地址解析过程如下图所示。图 2-3 ARP 地址解析过程 六六. ARP 高速缓存高速缓存 在真正的协议实现中,并不是每次发送 IP 报文前都需要发送 ARP 请求报文来获取目的 MAC 地址。在大多数的系统中都存在着一个 ARP 缓存表。记录

9、着一段时间内曾经获取过 的 MAC 地址和 IP 地址的映射关系,如下图所示:图 2-4 ARP 高速缓存 发送 IP 数据报前先对 ARP 缓存表进行查找,查看目的 MAC 地址是否存在于缓存表中, 如果存在,则不需要发送 ARP 请求报文而直接使用此地址进行 IP 数据包的发送。如果不 存在,则发送 ARP 请求报文,在收到 ARP 应答报文之后,使用应答报文中的目的 MAC 地址发送 IP 数据包,并将目的 MAC 地址存于 ARP 缓存表中供以后使用。 另外,ARP 缓存表采用老化机制,在一段时间内如果表中的某一项没有使用,就会被删除, 这样可以大大减少 ARP 缓存表的长度,加快查询

10、速度。 下图描述了 ARP 高速缓存的使用与更新过程:图 2-5 ARP 高速缓存的使用与更新过程 七七. 代理代理 ARP代理 ARP 可用来产生划分子网的效应。如果 ARP 请求是从一个网络中的主机发往另一个 网络中的主机,那么连接这两个网络的路由器就可以回答该请求,当这个路由器收到真正 的 IP 数据包时,它就把该数据包发送给相应的主机或路由器。 例如,在下图所示的网络中,安装在右边主机上的代理 ARP 应答对目标 IP 地址为 141.23.56.23 的 ARP 请求。图 2-6 代理 ARP 八八. 协议栈实现代码解析协议栈实现代码解析 本实验将通过对 netproto_arp_s

11、tudent.h 和 netproto_arp_student.c 两个文件进行编码,完成协 议栈中 arp 协议的实现。 netproto_arp_student.h 文件中定义了 arp 协议实现相关数值,关键代码如下所示:这段代码定义了 8 个宏,他们代表的含义如下表所示: 表 2-1 netproto_arp_student.h 中定义的宏在实验的编码过程中,应该使用这些宏对相应的变量进行赋值。 netproto_arp_student.c 文件是协议栈中 arp 协议的实现部分,其中定义了 1 个全局数组以及 3 个函数。下面分别介绍这些协议栈的实现部分。 全局数组 netp_arp

12、_table 是 arp 协议的缓存表,拥有 NETP_ARP_TABLE_SIZE 个 netp_arp_table_item 元素。其中 NETP_ARP_TABLE_SIZE 是 arp 缓存表的条目数,默认值 为 10,同学们不需要修改。netp_arp_table_item 是一个结构体,代表了 arp 缓存表中的一个 条目,包括一个物理地址 hardware_addr 和一个 IP 地址 ip_address,其定义如下:需要根据 arp 协议的实现原理编写代码来维护 arp 缓存表。 函数 display_arp_table 的功能是显示 arp 缓存表中的条目,在实验中可以直接

13、调用该函数, 便于查看 arp 缓存表中的内容。 函数 netp_arp_output_student 的功能是构造并发送一个 arp 请求数据包。这个函数的编码工 作需要由学生完成。 当有数据到达本机网络接口时,函数 netp_arp_input_student 将被调用,并传递给这个函数 原始数据。在本实验中该函数需要完成两个功能,一是处理针对本机的 arp 请求数据包, 二是处理针对本机的 arp 应答数据包。处理针对本机的 arp 请求数据包时,应该发送相应 的 arp 应答数据包。处理针对本机的 arp 应答数据包时,应该更新 arp 缓存表。这个函数的 编码工作需要由学生完成。该函

14、数的返回值为 push_to_lwip 的枚举类型值,push_to_lwip 的定义如下:返回 NETP_PUSH_TO_LWIP 表示这个数据帧应该提交给协议栈上层继续处理,而返回 NETP_NO_PUSH_LIWP 则表示不需要提交给协议栈上层处理,本层处理完毕后,这个数 据帧将被丢弃。需要根据正确的逻辑关系返回适当的值,使协议栈正常工作。 在编码过程中可能会遇到一些结构体、宏和函数,下表对他们进行介绍: 表 2-2 实验涉及的结构体和函数九九. 各模块推荐流程各模块推荐流程 1. arp 请求发送流程请求发送流程 编码实现 arp 请求数据包发送推荐使用如下流程:图 2-7 arp 请

15、求数据包发送推荐流程 2. 输入输入 arp 数据包处理流程数据包处理流程 编码实现处理 arp 输入数据包推荐使用如下流程:图 2-8 处理 arp 输入数据包推荐流程【实验步骤实验步骤】练习练习 1 领略真实的领略真实的 ARP(同一子网)(同一子网) 各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓 扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。 本练习将主机 A、B、C、D、E、F 作为一组进行实验。 1. 主机 A、B、C、D、E、F 启动协议分析器,打开捕获窗口进行数据捕获并设置过 滤条件(提取 ARP、ICMP) 。 2. 主

16、机 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 高速缓存。 ARP 高速缓存表由哪几项组成? 结合协议分析器上采集到的 ARP 报文和 ARP 高速缓存表中新增加的条目,简述 ARP 协议的报文交互过程以及 ARP 高速缓存表的更新过程。 练习练习 2 编辑并发送编辑并发送 ARP 报文(同一子网)报文(同一子网) 本练习将主机 A、B、C、D、E、F 作为一组进行实验。 1. 在主机 E 上启动协议编辑器,并编辑一个 ARP 请求报文。其中: MAC 层: 目的 MAC 地址:设置为 FFFFFF-FFFFFF 源 MAC 地址:设置为主机 E 的 MAC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号