ARP:地址解析协议
由于IP地址只是主机在抽象的网络层的地址,若要将网络层中传送的数据报交给目的地址,还需要传到链路层变成MAC帧后才能发送到实际的网络中。因此,不管网络层使用的是什么协议,在实际的网络链路上传送数据帧时,最终必须使用硬件地址。
由于各种原因(例如,更换网卡、网络中加入了新的主机等等),不能根据IP地址得出物理地址。这时,想到了在主机中存放一个从IP地址到硬件地址的映射表,并且这个表还得时常更新。这个映射表就是地址解析协议(ARP)。
每一个主机就有一个ARP高速缓存,这里面有所在局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些就是目前该主机知道的一些地址。
如果A想和B通信,但是A是才入网,总之,在主机A的RAP查找不到B的物理地址。在这种情况下,主机A就自动运行ARP,然后进行一下的步骤:
- ARP向本局域网广播发送一个ARP请求分组,ARP的内容包括自己的IP地址和硬件地址,以及主机B的IP地址。
- 在本局域网上的所有主机上运行的ARP进程都会收到这个ARP请求分组。
- 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组。并写入自己的硬件地址,其余的主机就不理睬这个ARP请求分组。注意:请求分组是广播发送的,但是响应分组是普通的单播。
- 主机A收到主机B的ARP响应分组后,就在它的ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
在A向B发送数据报以后,B也可能向B发送数据报,如果,主机B收到主机A的请求分组时,就到主机A的这一地址映射写入自己的ARP的高速缓存中