2024年4月24日发(作者:)

实验二 arp协议

一 实验目的

1. 掌握ARP协议的报文格式

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

3. 理解ARP高速缓存的作用

4. 掌握ARP请求和应答的实现方法

5. 掌握ARP缓存表的维护过程

实验环境

该实验采用网络结构二如图:

主机f的ip地址和网关设置如下:

各个电脑连接情况如下图所示,主机e有问题,在线路中不能联通

内容摘要

二 ARP协议简介

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

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

都是在网络层通过逻辑地址来识别的,这个地址是在全世界范围内是惟一的。然而,数据

包是通过物理网络传递的。在物理网络中,主机和路由器通过其物理地址来识别的,其范

围限于本地网络中。物理地址和逻辑地址是两种不同的标识符。这就意味着将一个数据包

传递到一个主机或路由器需要进行两级寻址:逻辑地址和物理地址。需要能将一个逻辑地

址映射到相应的物理地址。

ARP协议(地址解析协议)是“Address Resolution Protocol”的缩写。所谓“地

址解析”就是主机在发送帧前将目的逻辑地址转换成目的物理地址的过程。在使用TCP/IP

协议的以太网中,ARP协议完成将IP地址映射到MAC地址的过程。

三 ARP数据报的报文格式:

下图为ARP数据报的报文格式:

图2-1 ARP报文格式

ARP报文格式具有如下的一些字段:

● 硬件类型:这是16位字段,用来定义运行ARP的网络的类型。每一个局域网基

于其类型被指派给一个整数。例如,以太网的硬件类型是1。ARP可用在任何网络上。

● 协议类型:这是16位字段。用来定义协议的类型。例如,对IPv4协议,这个字

段的值是0x0800。ARP可用于任何高层协议。

● 硬件地址长度:这是一个8位字段,用来定义以字节为单位的物理地址长度。例

如,以太网物理地址为6字节,所对应的硬件地址长度值为6。

● 协议地址长度:标识用于该数据包的逻辑地址的长度,用十进制标识,单位为一个

字节,例如,IPv4为4个字节,所对应的协议地址长度值为4。

● 操作码:这是16位字段,用来定义数据包的类型。已定义了两种类型:为1时表

示ARP请求,为2时表示ARP应答。

● 发送端硬件地址:这是可变长度字段,用来定义发送端的物理地址。对于以太网这

个字段是6字节长。

● 发送端逻辑地址:这是可变长度字段,用来定义发送端的逻辑地址。对于逻辑地址

为IP地址的网络,该字段长度为4字节。

本次实验的拓扑结构和实际连接情况,如图:

实验目的

1. 掌握ARP协议的报文格式

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

四. ARP封装

ARP数据报直接封装在数据链路帧中。例如,在下图中,ARP数据包封装在以太网的

帧中。类型字段值为0x0806指出了此帧所携带的数据是ARP数据包。

五. ARP的运行过程

数据包传输过程可分为如下步骤:

1. 发送端知道目的端的IP地址。

2. IP要求ARP创建一个ARP请求报文,其中包含了发送方的物理地址、发送方的

IP地址和目的端的IP地址。目的端的物理地址用0填充。

3. 将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广

播地址作为目的地址,将其封装在一个帧中。

4. 因为该帧中包含了一个广播目的地址,所以同一链路中的每个主机或路由器都接收

到这个帧。所有接收到该帧的主机都将其传递到ARP层进行处理。除了目的端主机以外的

所有主机都丢弃该报文。

5. 目的端主机用一个包含其物理地址的ARP应答报文做出响应,并对该报文进行单

播。

6. 发送方接收到这个应答报文,这样它就知道了目标主机的物理地址。

ARP地址解析过程如下图所示。

图2-3 ARP地址解析过程

六. ARP高速缓存

在真正的协议实现中,并不是每次发送IP报文前都需要发送ARP请求报文来获取目

的MAC地址。在大多数的系统中都存在着一个ARP缓存表。记录着一段时间内曾经获取

过的MAC地址和IP地址的映射关系,如下图所示:

图2-4 ARP高速缓存

发送IP数据报前先对ARP缓存表进行查找,查看目的MAC地址是否存在于缓存表

中,如果存在,则不需要发送ARP请求报文而直接使用此地址进行IP数据包的发送。如

果不存在,则发送ARP请求报文,在收到ARP应答报文之后,使用应答报文中的目的MAC

地址发送IP数据包,并将目的MAC地址存于ARP缓存表中供以后使用。

另外,ARP缓存表采用老化机制,在一段时间内如果表中的某一项没有使用,就会被

删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

下图描述了ARP高速缓存的使用与更新过程:

七 实验练习

1. 练习名称

领略真实的ARP(同一子网)

练习内容

各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓

扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。

本练习将主机A、B、C、D、E、F作为一组进行实验。

1. 主机A、B、C、D、E、F启动协议分析器,打开捕获窗口进行数据捕获并设置过滤

条件(提取ARP、ICMP)。

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

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

4. 主机E

ping 主机F(172.16.0.100)。

因为主机在整个拓扑结构中不能够联通,所以该部分不能够执行。

5. 主机A、B、C、D、E、F停止捕获数据,并立即在命令行下运行“arp -a”命令

察看ARP高速缓存。

● ARP高速缓存表由哪几项组成?

如图所示:

Arp高速缓存表中有3个字段,Internet 地址 -ip地址

物理地址 ---〉mac地址

类型 ---〉为动态还是静态。

● 结合协议分析器上采集到的ARP报文和ARP高速缓存表中新增加的条目,简述

ARP协议的报文交互过程以及ARP高速缓存表的更新过程。

以下简述,主机a向b发送报文时,根据本地缓存表中是否存在目的主机的进行分类。

某机器A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的

MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机

A的IP地址Ia——物理地址Pa),请求IP地址为Ib的主机B回答物理地址Pb。网上所

有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一

个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的

ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高

速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。

2 .练习名称

编辑并发送ARP报文(同一子网)

练习内容

本练习将主机A、B、C、D、E、F作为一组进行实验。

1. 在主机D上启动协议编辑器,并编辑一个ARP请求报文。其中:

MAC层:

目的MAC地址:设置为FFFFFF-FFFFFF

源MAC地址:设置为主机E的MAC地址

协议类型或数据长度:0806

ARP层:

发送端硬件地址:设置为主机D的MAC地址

发送端逻辑地址:设置为主机D的IP地址(172.16.0.145)

目的端硬件地址:设置为000000-000000

目的端逻辑地址:设置为主机C的IP地址(172.16.0.144)

主机d启动协议分析器:

3. 主机B、C启动协议分析器,打开捕获窗口进行数据捕获并设置过滤条件(提取ARP

协议)。

主机c启动协议分析器:

C接受到`的信息:

B接受到的信息:

3. 主机B、D、C在命令行下运行“arp -d”命令,清空ARP高速缓存。主机D发

送已编辑好的ARP报文。

4. 主机B、C停止捕获数据,分析捕获到的数据,进一步体会ARP报文交互过程。

整个过程如图,D编辑arp报文发送给C,C接受到了(这个过程中d不知道C的

mac地址

),于是C给D发了一个ARP应答,告诉了D自己的mac地址,d知道了C的mac

地址以后,再次编辑报文发送给D,所以在主机B上,受到了D到C发的2个请求。

跨路由地址解析(不同子网)

练习内容

本练习将主机A、B、C、D、E、F作为一组进行实验。

1. 主机B在命令行方式下输入staticroute_config命令,开启静态路由服务。

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

所有主机执行命令,清空arp高速缓存表。

3. 主机A、B、C、D、E、F重新启动协议分析器,打开捕获窗口进行数据捕获并设置

过滤条件(提取ARP、ICMP)。

主机D:

主机C:

主机B:

主机A:

主机F:

4. 主机A ping 主机F(172.16.0.100)。

5. 主机A、B、C、D、E、F停止数据捕获,察看协议分析器中采集到的ARP报文,

并回答以下问题:

● 单一ARP请求报文是否能够跨越子网进行地址解析?为什么?

不可以,ARP报文的存活空间只限在子网内,因为ARP报文的请求是在网关下的数

据请求,脱离子网ARP报文也就自动失效,根本毫无意义,由于ARP请求是以广播的方

式进行,而广播报文不能跨越子网,因此,单一ARP请求报文不能够跨越子网进行地址解

● ARP地址解析在跨越子网的通信中所起到的作用?

作用是解析网关的MAC地址,ARP本身无法跨跃不同的网段。

6. 主机B在命令行方式下输入recover_config命令,停止静态路由服务。

八 实验思考题

练习2

1. 哪些主机收到了ARP请求包,哪个主机给出了ARP响应包?

答:主机A、B、C、D、F都收到ARP请求包,主机C给出了ARP响应包。

2. 主机A、C、D是否收到ARP请求包,为什么?

主机A、C、D都能收到ARP请求包,因为主机B、C、D与主机E处于同一网段,

ARP请求包进行广播,所以主机A、C、D都能收到ARP请求包

练习3

1. 哪些主机收到了ARP请求包,哪台主机给出了ARP响应包?

答:主机B、C、D、E、F都收到了ARP请求,主机E给出了ARP响应包。

2. 比较ARP协议在同网段内解析和跨网段的解析有何异同点?

答:相同点:都是广播发送ARP请求报文。不同点:主要在于网关的作用发挥。如果

ARP请求是跨网段时由路由器来回答该请求

3. ARP数据包的长度是固定的吗?试加以解释。

答:不是。ARP报文格式对任何协议和硬件地址都是充分通用的,对于不同的网络,

ARP分组的长度可能不同。ARP分组中含有HTYPE(硬件类型)字段,用来定义运行ARP

的网络类型(例如以太网是类型1),ARP分组中包含HLEN(硬件长度)字段,用来定

义以字节为单位的物理地址长度(例如以太网为6)。ARP分组中包含SHA(发送端硬件

地址)和THA(目标硬件地址)用来定义物理地址,这两个字段都是可变长度字段。

4. 试解释为什么ARP高速缓存每存入一个项目就要设置10-20分钟的超时计时器。

这个时间设置得太大或太小会出现什么问题?

答:超时计时器用来维护ARP高速缓存,在一段时间内如果表中的某一项没有使用,

就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。时间设置得太大就会

导致ARP缓存表的长度过长或者过旧,IP地址与MAC地址的映射关系可能已经发生改变,

但ARP缓存表却还没更新。时间设置得太小会导致ARP高速缓存更改过于频繁,从而导

致ARP广播数据包在网络上大量出现,增加网络流量,并降低了工作速度。

5. 至少举出两种不需要发送ARP请求数据包的情况。

1)当在本地已经存在目的的mac缓存时,或者进行的是广播时(目的地址为广播),

实验总结:

通过本次试验,我进一步了解了ARP协议的报文结构,分析了ARP协议在同一网段

和不同网段间主机上通信时执行过程,理解了ARP缓存的作用。