网络层使用的是IP地址,但实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。
ARP高速缓存---IP地址到硬件地址的映射表
那么一台主机(A)是如何获知本局域网内其他主机或路由的硬件地址的?
主机A广播ARP请求分组:我的IP是%.%.%.%,硬件地址是#-#-#-#-#-#,请告知我IP地址为@.@.@.@主机的硬件地址。
本局域网内的所有主机上的ARP进程都会收到此ARP请求分组。
主机B在ARP请求分组中见到自己的IP地址,就像主机A发出ARP响应分组。该相应分组的内容信息为:我的IP 地址
是@.@.@.@ 我的硬件地址是$-$-$-$-$-$。
注意:ARP请求分组是广播的,但ARP响应分组是单播的。
收到主机B的ARP相应分组后,主机A在本机的ARP缓存中记录下主机B的地址映射表。
【问题】既然在网络链路上传送的帧最终是按照硬件地址找到目的地址。那么为什么不直接用硬件地址进行通信,
而要使用抽象的IP地址并调用ARP来寻找相应的硬件地址?
个人感觉这个问题也是在问网络层存在的意义。引入IP后,网络上不同主机或路由中的ARP进程可以更便捷、高效
的发现目标。从而可以轻松地为数据帧加载MAC地址。