计算机网络笔记——地址解析协议(ARP)的工作原理

2,295 阅读5分钟

什么是地址解析协议(ARP)

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址(即MAC地址)。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称为ARP表,使用ARP来动态维护此ARP表。
需要说明的是每台主机每个路由器的接口都有一个MAC地址,交换机的接口无MAC地址,ARP工作在网络层

地址解析协议(ARP)的工作流程

源主机首先检查ARP高速缓存,有对应的表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一个局域网中所有主机都能收到该请求。目的主机收到请求后向源主机单播一个ARP响应分组(只有源主机能收到),源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

局域网内的主机通信过程

下面以下图为例说明局域网内ARP的工作过程,假设现在1号主机要给3号主机发送数据
第一步:1号主机先根据3号主机的IP地址去ARP表中查3号主机的MAC地址,若存在,则写入MAC帧,把数据发给3号主机,如没有则转第二步;

第二步:用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组这个ARP请求分组的内容包括1号(源主机)IP地址,3号(目的主机)IP地址,局域网内的每台主机和默认网关都能收到该分组,而只有3号主机做出响应,3号主机向1号主机(也就是源主机)单播一个ARP的响应分组这个响应分组的内容包括3号主机的IP地址和3号主机的MAC地址

第三步:1号主机在收到ARP响应分组后将此映射写入ARP缓存,然后再将3号主机的MAC地址写入MAC帧,这样1号主机就能向3号主机发送数据了

不同网络的两台主机通信过程

以下图为例,假设现在1号主机要给5号主机发送数据
第一步:1号主机先根据5号主机的IP地址去ARP表中查5号主机的MAC地址,发现不存在(肯定不存在,因为都不在同一个网段内)转第二步;

第二步: 1号主机将6号主机的IP地址与子网掩码相与一下,发现1号主机和6号主机不在同一个网段,这时,1号主机用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组这个ARP请求分组的内容包括1号(源主机)IP地址,和它的默认网关(路由器接口)的IP地址局域网内的每台主机和默认网关都能收到该分组,而只有默认网关做出响应,默认网关向1号主机(也就是源主机)单播一个ARP的响应分组这个响应分组的内容包括默认网关的IP地址和MAC地址

第三步:1号主机在收到ARP响应分组后将此映射写入ARP缓存,然后再将默认网关的MAC地址写入MAC帧,这样1号主机就能向默认网关发送数据了;

第四步:默认网关在收到数据帧之后解封装,然后再转发出去,这时再用一次ARP协议找到下一跳路由的MAC地址(MAC8),注意路由器之间转发数据的时候的时候源MAC地址变成了图中的MAC7,目的MAC地址变成了图中的MAC8,这样左边的路由器就可以向右边的路由器发送数据了。类似路由器将数据发给5号主机的过程也是一样

ARP的4种典型情况总结如下:

1)发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址。
2)发送方是主机时,要把IP数据报(分组)发送到另一个网络上的一台主机。这时候用ARP找到本网络的一个路由器(默认网关)的硬件地址,剩下的工作由这个路由器来完成。
3)发送方是路由器时,要把IP数据报发送到本网络上的一台主机。这时候要用ARP找到目的主机的硬件地址。
4)发送方是路由器,要把IP数据报转发到另一个网络的一台主机上。这时用ARP找到本网络上的一个路由器(下一跳)的硬件地址,剩下的工作由找到的这个路由器来完成。

写在最后

几点需要注意的地方
1.ARP协议只能用在同一个局域网内
2.跨网段通信的时候MAC地址是不断变化的,而IP地址是保持不变的(不考虑NAT的情况)

补充一道ARP协议练习题

主机发送IP数据报给主机B,经过了5个路由,请问此过程总共用了几次ARP协议?
答:6次