计算机网络第五弹——ARP协议的工作原理

地址解析协议(ARP)是通过解析网络层地址来找寻数据链路层地址,通过网络地址(IP地址)定位MAC地址的网络传输协议。

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址;而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址,这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

在每台安装TCP/IP协议的计算机或路由器里都有一个ARP缓存表,表里的IP地址和MAC地址都是一一对应的,如下表所示:


以上表中的主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例。

  1. 当发送数据时,主机A会在自己的ARP缓存表例寻找是否有目标IP地址。如果找到就知道目标MAC地址,直接把目标MAC地址写入帧里面发送就可。
  2. 如果在ARP缓存表中没有找到对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机都发出这样的询问:“192.168.38.11的MAC地址是什么”
  3. 网络上其他主机都不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回应以单播方式。这样,主机A就知道主机B的MAC地址,,他就可以向主机B发送信息。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找就可。

概括起来说,即:

  1. 首先,每台主机都会在自己的ARP缓冲区建立一个ARP列表,当源主机需要发送一个数据报给目的主机时,会检查自己的ARP列表中是否含有目的IP地址,如果有则可以查到对应的MAC地址,直接发送到此MAC地址就可以了
  2. 如果源主机的ARP列表中不存在此IP地址,就发送一个广播,向所有主机查询此IP地址对应的MAC地址
  3. 如果查找到了,目的主机会将发送端的MAC地址和IP地址添加到自己的ARP列表中,并向源主机发送一个ARP响应数据包,告诉对方自己是它要查找的MAC地址;源主机则会向目的主机发送数据,同时将目的主机的IP地址和MAC地址添加到自己的ARP列表中

ARP缓存表采用老化机制,在一段时间内,如果表中某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80851125