尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层
这些复杂细节。
4. 地址解析协议 ARP
地址解析协议 ARP 用来寻找已知 IP 地址主机的硬件地址。
ARP 在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映
射表还经常动态更新(新增或超时删除)。
每一台主机都设有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP
地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
当主机 A 要向本地局域网的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存查
看有无主机 B 的 IP 地址,如有就在 ARP 高速缓存中查出其对应的硬件地址再把它写入
MAC 帧,通过局域网把 MAC 帧发往此硬件地址。
若差不到主机 B 的 IP 地址,主机 A 就自动运行 ARP,然后按以下步骤查出主机 B
的 IP 地址:
(1)ARP 进程在本局域网上广播发送一个 ARP 请求分组,ARP 分组的主要内容是:
我的 IP 地址是...,我的硬件地址是...,我想知道 IP 地址为...的硬件地址。
(2)在本局域网上的所有主机上运行的 ARP 进程都收到此 ARP 请求分组。
(3)主机 B 的 IP 地址与 ARP 请求分组中要查询的 IP 地址一致,收下这个 ARP 请
求分组,并向主机 A 发送 ARP 响应分组。ARP 响应分组的主要内容是:我的 IP 地址
是...,我的硬件地址是...。ARP 请求分组是广播,但响应是单播。
(4)主机 A 收到 ARP 响应后,在 ARP 高速缓存中写入主机 B 的 IP 地址到硬件地
址的映射。
为减小网络通信量,当 A 发送其 ARP 请求时就把自己的 IP 地址到硬件地址的映射
写入 ARP 请求分组,B 收到后将其写入自己的 ARP 高速缓存。
ARP 对保存在高速缓存中的每一个映射地址项目都设置生存时间,超过生存时间的
项目将被删除。ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映
射问题,若不在一个局域网上就无法解析。
从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种过程是不知道的。
由于全世界存在各种网络,它们使用不同的硬件地址。要使这些异构网络能相互通
信就必须进行非常复杂的硬件地址转换工作,IP 编址解决了此问题,因此不直接用硬
件地址而额外使用抽象的 IP 地址。
5. IP 数据报的格式