一、概要
在网络通信中主要以IP为主机标识进行数据通信的,但实际的数据链路层传输以MAC地址为数据传输的节点地址。那设备之间又是如何通过IP地址确认对应主机的MAC地址的?这就是ARP协议的工作。
ARP是一种以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址的网络协议。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。
二、ARP的工作机制
ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。如下图所示:
ARP的工作流程:
(1)主机A向主机发送IP数据包前,检查本地ARP缓存是否有主机B的ARP项,有则直接发送IP数据包;
(2)主机A本地没有主机B的ARP缓存项,开始广播发送ARP请求;
(3)主机B收到主机A的ARP请求的时自身的IP地址,单播恢复主机A的ARP响应;
(4)主机A收到ARP响应后,将[IP,MAC]缓存到本地APR表中,发送IP数据包;
三、ARP数据帧
(1)硬件类型:2字节,用来定义运行ARP的网络类型;以太网的类型未0x0001。
(2)协议类型:2字节,用来定义使用的类型,对于IPv4协议类型为0x0800。
(3)硬件长度:1字节,标识硬件地址长度,对于以太网的值为6。
(4)协议长度:1字节,标识软件逻辑地址长度,对于IPv4的值为4。
(5)操作码:2字节,用来定义报文的类型。已定义的分租类型有两种:ARP请求为0x01,ARP响应为0x02。
(6)源硬件地址:可变字段,发送方的硬件地址,以太网中该字段长度为6字节。
(7)源逻辑地址:可变字段,发送方的逻辑地址,IPv4中该字段长度为4字节。
(8)目的硬件地址:可变字段,接收方的硬件地址,以太网中该字段长度为6字节。
(9)目的逻辑地址:可变字段,接收方的逻辑地址,IPv4中该字段长度为4字节。