与IP协议配套使用的还有三个协议:地址解析协议ARP(Address Resolution Protocol);网际控制报文协议ICMP(InternetControl Message Protocol);网际组管理协议IGMP(Internet Group Management Protocol)。
网际协议IP及其配套协议
1.地址解析协议ARP:用途是从网络层使用的IP地址解析出在数据链路层使用的硬件地址。有的书籍上写ARP属于数据链路层的协议,这也可以。
下面介绍ARP地址解析协议的要点:网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系(例如,IP地址有32位,而局域网的硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器(网卡:硬件地址已经固化在网卡上的ROM中)也会使主机的硬件地址改变,地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或者超时删除)。
每一个主机都设有一个ARP高速缓存(ARPcache),里面有本局域网上的其他各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么问题来了,主机怎样知道这些地址呢?这里用图 IP3来进行说明
这里需要注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
也有可能查不到B的IP地址,这可能是主机B才入网,也可能是主机A刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,然后按照以下步骤找出主机B的硬件地址。
(1)ARP进程在本局域网上广播发送一个ARP请求分组。如图中(a)所示,ARP请求分组的主要内容是:“我是209.0.0.6,硬件地址。。。”
(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
(3)主机B的IP地址与ARP请求分组中要查的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,并在这个响应分组中写入自己的硬件地址。由于其余所有主机的IP地址都与ARP请求分组中要查询的IP地址不一致,因此都不理睬这个ARP请求分组。ARP响应分组的的主要内容是“我是209.0.0.6,硬件地址是…”,这里需要注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
(4)主机A收到主机B的ARP相应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
主机A在发送其ARP请求分组时,就把自己的IP地址到硬件地址的映射写入ARP请求分组,当主机B收到A的ARP请求分组时,就把主机A的这一映射地址写入主机B自己的ARP高速缓存中,以后主机B向主机A发送数据报时就很方便了。
可见ARP高速缓存非常有用,如果不使用ARP高速缓存,那么任何一个主机只要进行一次通信,就必须在网上用广播的方式发送ARP请求分组,这就使得网络上的通信量大大增加。ARP把已经得到的地址映射保存在高速缓存中,这样就使得该主机下次再和具有同样目的地址的主机通信时,可以直接从高速缓存中找到所需的硬件地址而不必再用广播的形式发送ARP请求分组。
ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间(10~20分钟)。凡是超过生存时间的项目就从高速缓存中删除掉。设置这种地址映射项目的生存时间很重要,设想这样一种情况。主机A和B通信。A的ARP高速缓存里保存有B的硬件地址,但B的网络适配器突然坏了,B立即更换了一块,因此B的硬件地址就改变了。假定A还要和B继续通信。A在其ARP高速缓存中查找到B原先的硬件地址,并使用该硬件地址向B继续通信。但B原先的硬件地址已经失效,因此A无法找到主机B。但是过了一段不长的生存时间,A的ARP高速缓存中已经删除了B原先的硬件地址,于是A重新广播发送ARP请求分组,又找到了B。
上面说到:ARP是解决同一个局域网上的主机或路由的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上呢?
主机H1就无法解析出另一个局域网上主机H2的硬件地址。主机H1发送给H2的IP数据报首先需要通过与主机H1连接在同一个局域网上的路由器R1来转发。因此主机H1这时需要把路由器R1的IP地址IP3解析为硬件地址HA3,以便能够把IP数据报传送到路由器R1.以后,R1从转发表找出了下一跳路由器R2,同时使用ARP解析出R2的硬件地址HA5,于是IP数据报按照硬件地址HA5转发到路由器R2,路由器R2在转发这个IP数据报时用类似方法解析出目的主机H2的硬件地址HA2,使得IP数据报最终交付主机H2。
下面是归纳出使用ARP的四种典型情况