相关概念
-
ARP报文
ARP报文分为ARP请求报文和ARP应答报文,报文格式如图1所示。
Ethernet Address of destination(0–31)和Ethernet Address of destination(32–47)分别表示Ethernet Address of destination字段的前32个比特和后16个比特,Ethernet Address of destination字段的总长度是48比特
ARP报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。ARP报文中相关字段的解释如表1所示。
-
表1 ARP报文各字段的含义 字段
长度
含义
Ethernet Address of destination
48比特
以太网目的MAC地址。发送ARP请求报文时,为广播的MAC地址:0xFF-FF-FF-FF-FF-FF。
Ethernet Address of sender
48比特
以太网源MAC地址。
Frame Type
16比特
数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。
Hardware Type
16比特
硬件地址的类型。对于以太网,该类型的值为“1”。
Protocol Type
16比特
发送方要映射的协议地址类型。对于IP地址,该值为0x0800。
Hardware Length
8比特
硬件地址的长度。对于ARP请求或应答来说,该值为6。
Protocol Length
8比特
协议地址的长度。对于ARP请求或应答来说,该值为4。
OP
16比特
操作类型。OP的值与操作类型的关系如下: - 1表示ARP请求
- 2表示ARP应答
- 3表示RARP请求
- 4表示RARP应答
Ethernet Address of sender
48比特
源MAC地址。这个字段和ARP报文首部的以太网源MAC地址字段是相同的信息。
IP Address of sender
32比特
源IP地址。
Ethernet Address of destination
48比特
目的MAC地址。发送ARP请求报文时,该处填充值为0x00-00-00-00-00-00。
IP Address of destination
32比特
目的IP地址。
-
ARP表
如果每次主机在向外发送数据报文前都要先发送ARP请求报文,会大幅增加网络的通信量。而且网络上的所有设备都必须接收和处理该ARP请求报文,极大地影响了网络的运行效率。为了解决上述问题,每台主机上都维护着一个ARP表,这是ARP高效运行的关键。在这个ARP表中,存放着最近获得的IP地址和MAC地址之间的映射关系,这种映射关系称为ARP表项。
根据ARP表项的生成方式不同,可以将ARP表项分为动态ARP表项和静态ARP表项。两者的区别仅在于:
- 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的动态ARP表项更新,也可以被静态ARP表项覆盖。
- 静态ARP表项由网络管理员通过手工配置生成和维护,不会被老化,也不会被动态ARP表项覆盖。
-
ARP表中有对应的MAC地址时,主机就不会再发送ARP请求报文,而是直接将数据报文发至这个MAC地址。
-
ARP表中没有对应的MAC地址时,主机才会发送ARP请求报文,请求目的主机的MAC地址。
-
逆地址解析协议RARP(Reverse Address Resolution Protocol)
当一台主机只知道自己的MAC地址时,可以通过发送和接收RARP报文,找出本设备的IP地址。
网络管理员先在网络中的网关路由设备上创建一个MAC地址和与其对应的IP地址的映射关系。当用户需要对一台新的主机进行配置时,该设备的RARP客户机程序就会向网关路由设备上的RARP服务器请求相应的IP地址。
实现过程
-
同网段内ARP的实现
以HostA向HostB发送数据报文为例,结合图2详细介绍同网段内ARP是如何实现的。
-
HostA查看自己的ARP表,发现没有目的主机HostB的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求HostB的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为HostB的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。
-
CE1收到ARP请求报文后,将该报文在本网段内广播。
-
HostB收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostB的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostB的MAC地址和HostA的MAC地址。
由于ARP请求报文的目的IP地址不是设备PE的IP地址,所以PE在收到ARP请求报文后,直接将其丢弃。
-
CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。
-
HostA收到ARP响应报文后,更新自己的ARP表,将HostB的MAC地址添加到ARP表中,同时将数据报文发送给HostB。
以HostA向HostC发送数据报文为例,结合图3和图4详细介绍不同网段间ARP是如何实现的。
图3描述了同网段的HostA和PE之间ARP的实现过程。通过这个网段内ARP的实现,HostA可以将数据报文发送到PE。
-
HostA查看自己的ARP表,发现没有到达目的主机HostC的默认网关PE的接口Interface1的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求PE的接口Interface1的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为PE的接口Interface1的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。
-
CE1收到ARP请求报文后,将该报文在本网段内广播。
-
网关PE收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为PE的接口Interface1的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface1的MAC地址和HostA的MAC地址。
由于ARP请求报文的目的IP地址不是HostB的IP地址,所以HostB在收到ARP请求报文后,直接将其丢弃。
-
CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。
-
HostA收到ARP响应报文后,更新自己的ARP表,将PE的接口Interface1的MAC地址添加到ARP表中,同时将数据报文发送给PE。
图4描述了同网段的PE和HostC之间ARP的实现过程。通过这个网段内ARP的实现,PE可以将数据报文发送给HostC。
首先,PE通过查询路由表,将数据报文从Interface1发送到Interface2。
-
PE查看自己的ARP表,发现没有目的主机HostC的IP地址和MAC地址的映射关系。于是,PE发送ARP请求报文,请求HostC的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为PE的接口Interface2的IP地址和MAC地址,目的IP地址和MAC地址分别为HostC的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface2的MAC地址和广播MAC地址。
-
CE2收到ARP请求报文后,将该报文在本网段内广播。
-
HostC收到ARP请求报文后,更新自己的ARP表,将PE的接口Interface2的MAC地址添加到ARP表,同时向该ARP请求报文的发送方PE发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostC的IP地址和MAC地址,目的IP地址和目的MAC地址为PE的接口Interface2的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostC的MAC地址和PE的接口Interface2的MAC地址。
由于ARP请求报文的目的IP地址不是HostD的IP地址,所以HostD在收到ARP请求报文后,直接将其丢弃。
-
CE2收到该ARP响应报文后,将该报文发送给目的设备PE。
-
PE收到ARP响应报文后,更新自己的ARP表,将HostC的MAC地址添加到ARP表中,同时将数据报文发送给HostC。
通过以上两个同网段内ARP的实现,不同网段间的主机HostA和HostC可以进行数据报文的传送。