目录
1、 什么是ARP协议?
地址解析协议ARP(Address Resolution Protocol)
当一台计算机需要与另一台计算机进行通信时,它首先需要知道目标计算机的MAC地址。在实际应用中,我们会遇到这样的问题:已经知道一个机器(主机或路由器)的IP地址,需要找到其对应的MAC地址。地址解析协议ARP就是用来解决这样的问题的。
简而言之,ARP协议的作用就是:知道目标IP地址,找目标MAC地址。
2、 ARP的工作原理
ps:主机的MAC地址实际上是其网络适配器(网卡)的MAC地址。
每一台主机有设有一个ARP高速缓存(ARP cache),里面存有本局域网上的各主机和路由器的IP地址到MAC地址的映射表,这些都是该主机知道的一些MAC地址。并且这个映射表还经常动态更新(新增或超时删除)。
当主机A要向本局域网上的某台主机B发送IP数据报时,就现在ARP高速缓存(ARP cache)查看有无主机B的IP地址。
若有,则在映射表中找到对应的MAC地址,再把这个MAC地址写入MAC帧,通过局域网把该MAC帧发送此MAC地址。
若在ARP高速缓存(ARP cache)中找不到B的IP地址,主机A会自动运行ARP,然后按照以下步骤找到主机B的MAC地址:
(1)A的ARP进程在本局域网上广播发送一个ARP请求分组。在本局域网的所有主机上运行的ARP进程都能收到此ARP请求分组。
ARP请求分组的主要内容是:“我的IP地址是xxx.xxx.xxx.xxx, 我的MAC地址是00-11-22-33-44-55。 我想知道IP地址为yyy.yyy.yyy.yyy的主机的MAC地址”
(2)B的IP地址和ARP请求分组中的IP地址一致,所以B在收到A广播的ARP请求分组后就会向A单播ARP响应分组。其他与ARP请求分组中的IP地址不一致的主机,在收到A广播的ARP请求分组后不予理睬。
ARP响应分组的主要内容是:“我的IP地址是yyy.yyy.yyy.yyy, 我的MAC地址是00-11-22-33-44-55”
(3)主机A在收到B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址和MAC地址的映射。为了减少网络的通信量,主机B在收到A的ARP请求分组时,就把主机A的IP地址和MAC地址的映射写入了自己的ARP高速缓存。(主机A在发送ARP请求分组时,就把自己的IP地址和MAC地址的映射写入了ARP请求分组)
3、 ARP协议相关细节
(1)ARP请求分组是广播发送,ARP响应分组是单播发送。(单播:即从一个源地址发送到一个目的地址)
(2)ARP对保存在高速缓存中的每一个映射地址项目设置了生存时间(例如,10~20min)。凡超过生存时间的项目就从高速缓存中删掉。
(3)ARP是用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。当主机H1想要发送IP数据报给另一个局域网上的主机H2时,ARP把H1所在局域网上的路由器R1的IP地址解析为MAC地址,然后把IP数据报传送到路由器R1。以后,R1从转发表知道应把IP数据报转发到路由器R2。路由器R2用同样的方法解析出目的主机H2的MAC地址,使IP数据报最终交付主机H2。