文章内容总览还是看上篇文章提到的图片。计算机A跨设备向C传输数据。A向C发送一个IP数据报,查询路由表发现下一跳为E,A将IP数据报交给数据链路层,告知目的MAC地址为E。那么A如何知道E的MAC地址?这就是本文要介绍的ARP协议ARP(AddressResolutionProtocol)地址解析协议。地址解析协议的作用:将网络层的32位IP转换为数据链路层的48位MAC地址。缓存表的形式如下,也是一种映射:对于ARP缓存表的使用,ARP缓存表有缓存的IP地址和MAC地址的映射关系有两种情况。ARP缓存表中没有缓存的IP地址和MAC地址的映射关系。如果关系被缓存了,就像上篇介绍的步骤一样,A可以直接告诉数据链路层,E的MAC地址。A会查询ARP缓存表,看看E的MAC地址是多少,然后通知数据链路层。如果没有缓存,ARP会广播某个IP的信息,收到这个广播的设备会回复一个包,说明我是不是这个IP地址。如果是,广播IP地址的设备会记录对应设备的MAC地址。ARP缓存表是ARP协议和RARP协议运行的关键。ARP缓存表缓存了IP地址和硬件地址的映射关系(用于网络层的数据转发)当需要数据链路层和物理层时,网络层发送数据时,首先需要转换IP地址通过ARP协议转化为MAC地址,然后通知数据链路层。此时,数据链路层的ARP缓存表中的记录并不是永久有效的,有一定时间(因为MAC地址是永久的,但IP地址会变)可以使用arp-a命令查看路由表中的内容是ARP协议的报文信息。ARP协议的报文信息直接封装在数据链路层的数据帧中。最上面是数据链路层的数据帧格式,中间是ARP协议的报文信息,PAD为填充内容。这里可能会有疑问。既然ARP协议直接封装在数据链路层的数据帧中,为什么ARP协议属于网络层呢?主要原因是ARP协议使用的是IP地址,所以属于网络层的内容。因此,ARP协议是与数据链路层和网络层结合使用的协议。RARP协议RARP(ReverseAddressResolutionProtocol)反向地址解析协议与ARP协议相反。它将48位的MAC地址转换成32位的IP地址,内容和ARP协议很相似。了解了ARP协议和RARP协议后,你应该知道,计算机A在跨设备传输数据时,A并没有直接告诉数据链路层目的MAC是E。但是,找到一个技术人员的核心竞争力是在快速变化的技术中先检查自己的缓存表后未更改的目的MAC地址。知行合一,理论与实践相结合
