TCP/IP协议(4): 地址解析协议(ARP) —— 网络地址转换为物理地址的方式
TCP/IP协议(4): 地址解析协议(ARP)——网络地址转换为物理地址的方式
关于地址解析协议(Address Resolution Protocol, ARP)
关于 ARP
地址解析协议(Address Resolution Protocol, ARP) 协议是用于根据给定网络层地址,通常是 IPv4地址,查找其对应的数据链路层地址,如 MAC地址,的协议。 ARP 协议 定义于 1982 年的 RFC 826。
(The Address Resolution Protocol (ARP) is a communication protocol used for discovering the link layer address, such as a MAC address, associated with a given network layer address, typically an IPv4 address. ARP was defined in 1982 by RFC 826.)
ARP 协议在 TCP/IP 协议栈中的位置
由于 IP 协议 中使用了 ARP 协议,因此通常将 ARP 协议归为网络层协议。
但 ARP 协议的用途是从网络层使用的 IP地址 中解析出在数据链路层使用的硬件地址。其消息由数据链路层协议封装,它是在同一局域网内部通信的,从不跨网络节点路由。因此,也可以认为 ARP 协议是数据链路层协议。
地址解析协议的主要内容
本节内容改编自谢希仁编著**《计算机网络(第六版)》4.2.4 地址解析协议 ARP**。
- 如下图的网络中, 主机 A 要向某网络设备 X 发送数据时,需要先在其 ARP 高速缓存中查看有无 网络设备X 的 IP 地址。如果有,则直接在 ARP 高速缓存 查出其对应的 物理地址。
- 否则,主机 A 的 ARP 进程在本地局域网发送 ARP 请求广播。如下图。
- 在本地局域网中的所有主机上运行的 ARP 进程 都收到此 ARP 请求。如下图。
- 主机 D 的 IP 地址和要查询的网络设备 X 一样,它在收到该 ARP 请求后向主机 A 发送 ARP 响应。
- 主机 A 收到主机 B 的 ARP 响应后, 会在其 ARP 高速缓存中记录 主机B 的 IP 地址到其硬件地址的映射。
注意: ARP 协议是局域网内部的协议。它解决的是同一局域网内部的主机或路由器的 IP 地址和其对应的硬件地址的映射问题。根据 ARP 协议 , 主机 A 无法解析其他网络中的主机的硬件地址。实际上,也不需要主机 A 解析其他网络的主机地址。因为跨网络的数据传输一般是由上层协议来完成的。
地址解析协议包(Packet)格式
- 硬件类型(Hardware Type, HTYPE): 当前网络数据链路层的协议类型, 实际指定了硬件地址类型。如,以太网 的 HTYPE 是
1
。 - 协议类型(Protocol Type, PTYPE): 上层网络协议,实际指定了待映射的网络地址的类型。如,IPv4 协议的 PTYPE 是
0x0800
。 - 硬件大小(Hardware Length, HLEN): 硬件地址的长度(单位: 八位字节(Octets))。以太网的 HLEN 是
6
。 - 协议大小(Protocol Length, PLEN): PTYPE 指定的上层协议的网络地址长度(单位:八位字节(Octets))。IPv4 协议的 PLEN 是
4
。 - 操作(Operation, OPER): 该协议包的操作。ARP 请求包的 OPER 是
1
,而ARP 响应包的 OPER 是2
。 - 发送方硬件地址(Sender Hardware Address, SHA): 发送方的硬件地址。
- 发送方协议地址(Sender Protocol Address, SPA): 发送方的上层协议的网络地址。
- 目的硬件地址(Target Hardware Address, THA): 接收方的硬件地址。在 ARP 请求包的 THA 是
0
。 - 目的方协议地址(Target Protocol Address, TPA): 接收方的上层协议的网络地址。
地址解析协议的具体内容
- 主机 A 的 ARP 进程在本地局域网发送 ARP 请求广播。
- 主机 D 的 IP 地址和要查询的网络设备 X 一样,它在收到该 ARP 请求后向主机 A 发送 ARP 响应。