ARP 协议概述
ARP(Address Resolution Protocol),即地址解析协议,用于把 IP 地址映射到物理地址。网段上的每台主机都维护着一个被称为 ARP Table 或 ARP Cache 的表格,其中包含着网段上其他主机的 IP 地址与物理地址的对应关系。当主机需要向网段上的其他主机发送数据时,它会查看 ARP Cache 来获得目的的物理地址。ARP 缓存是动态变化的。如果要接收数据的地址当前并不存在于 ARP Cache,主机就会广播一个 ARP 请求帧。
ARP 请求帧包含未解析的 IP 地址,还包含发送这个请求的主机的 IP 地址和物理地址。网段上的其他主机接收到这个 ARP 请求,拥有这个未解析的 IP 地址的主机会向发出请求的主机发送自己的物理地址。这个新的 IP 地址与物理地址的对应关系就会添加到请求主机的 ARP Cache 中。一般来说,ARP Cache 里的条目在一定时间后会过期,条目就会被从表里删除。当主机需要向这个条目所包含的 IP 地址发送数据时,解析过程会再次重复。
ARP 报文格式
ARP 报文格式如下:
HTYPE | PTYPE | HLEN | PLEN | OPER | SHA | SPA | THA | TPA |
HTYPE(Hardware Type): 该字段有 2 个字节,表示硬件类型。
PTYPE(Protocol Type): 该字段有 2 个字节,表示协议类型。
HLEN(Hardware Address Length ): 该字段有 1 个字节,表示硬件地址长度。
PLEN(Protocol Address Length ): 该字段有 1 个字节,表示协议地址长度。
OPER(Operation): 该字段有 2 个字节,表示操作类型。1 表示 ARP 请求,2 表示 ARP 应答。
SHA(Sender Hardware Address): 该字段有 6 个字节,表示发送者硬件地址。
SPA(Sender Protocol Address): 该字段有 4 个字节,表示发送者 IP 地址。
THA(Target Hardware Address): 该字段有 6 个字节,表示目标硬件地址。
TPA(Target Protocol Address): 该字段有 4 个字节,表示目标 IP 地址。