原文地址:https://blog.csdn.net/ever_peng/article/details/80008638
(有修改)
1. ARP的出现原因
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。 其作用是: 在以太网环境中 , 数据传输依赖MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。
在局域网中,网络中实际传输的是“帧”,帧里包含目标主机的MAC地址。在以太网中,一个主机和另一个主机通信时,需要知道目标主机的MAC地址。而目标MAC地址是通过地址解析协议获得的。所谓的“地址解析”就是主机在发送帧前,将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
2. ARP的映射方式
2.1. 静态映射
静态映射是指手动地创建一张ARP表,把逻辑地址和物理地址关联起来。网络中的每一部主机都有自己的ARP表,它们通过查找ARP表,获取逻辑地址对应的物理地址。但是这种方式有一定的局限性,因为物理地址可能发生变化:
(1) 机器更换NIC(网络适配器)
(2) 在某些局域网中,每次计算机加电时,它的物理地址都会改变
(3) 移动电脑从一个物理网络转移到另一个物理网络时,可能会改变物理地址
为了避免这个问题出现,必须定期更新ARP表,这种方式比较麻烦而且会影响网络性能。
2.2. 动态映射
在使用动态映射方式时,主机只要知道另外一部主机的逻辑地址,就可以使用协议查找出其对应的物理地址。实现了动态映射的协议有两种:ARP和RARP。ARP用于把逻辑地址映射为物理地址。RARP用于把物理地址映射为逻辑地址。
3. ARP的原理及流程
ARP协议接收来自IP协议的逻辑地址,将其映射为相应的物理地址,该物理地址会被递交给数据链路层。
3.1.ARP请求
当主机需要找出其所在的二层网络中的另外一部主机的物理地址时,它可以发送一个ARP请求报文,这个报文包含发送方的MAC地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以会在网络中进行广播。(见图1)
3.2.ARP响应
同一个广播域中的所有主机都会收到任意其它主机发送的ARP请求报文。主机收到ARP请求报文之后,会进行验证,查看接收方的IP地址是不是自己的IP地址,如果是,则返回一个ARP响应报文,其中包含自己的IP地址和物理地址。该报文的目标MAC地址是:接收到的ARP请求报文中的来源MAC地址,因此该报文是单播报文。(见图2)
4. ARP报文格式
4.1. 报文格式
硬件类型:16位,用来指定网络的类型。例如:以太网为1。ARP协议可用在任何物理网络上
协议类型:16位,用来指定使用的协议。例如:IPv4协议为0800。ARP可用于任何高层协议
硬件长度:8位,用来指定物理地址的长度,以字节为单位。例如:以太网为6
协议长度:8位,用来指定逻辑地址的长度,以字节为单位。例如:IPv4协议为4
操作码:16位,用来指定报文的类型。已定义的类型有两种:ARP请求(1),ARP响应(2)
源硬件地址: 可变长度字段,用来指定发送方的物理地址
源逻辑地址: 可变长度字段,用来指定发送方的逻辑地址
目的硬件地址: 可变长度字段,用来指定目标的物理地址。对于ARP请求报文来说,这个字段为全0,因为发送方不知道目标的硬件地址
目的逻辑地址: 可变长度字段,用来指定目标的逻辑地址