IP层关联协议之ARP&RARP

来源:互联网 发布:沈阳华晨宝马知乎 编辑:程序博客网 时间:2024/05/16 17:03

                                          ARP&&RARP

        ARP:根据机器的IP地址找到他的物理地址。解决同一个局域网上的主机或者路由器的IP地址和硬件地址的映射问题。

        RARP:根据机器的物理地址找到他的IP地址。

        DHCP协议包含了RARP协议的一些内容,因此RARP没有人单独使用RARP协议。重点介绍ARP协议。

        大家都知道在网络层使用IP地址,但在实际的网络的链路上传输数据帧时使用的是硬件地址。但是IP地址和硬件地址之间并不是简单的映射关系。另外,在一个网络上可能会有新的主机加进来或者撤走一些主机。这些都会影响主机硬件地址的改变。那么ARP解决这个问题的方法:在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表经常更新。

       每个主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。如何get这些地址呢?

       当A主机要向本局域网的B主机发送数据报时,就先在其ARP高速缓存中查看有无B主机的IP地址,有,就在ARP高速缓存中查出其对应的硬件地址。吧这个硬件地址写入MAC帧的首部,然后通过局域网吧这个MAC帧发送到该硬件地址。

        如果B才接入网内或者A刚启动,则可能找不到B的硬件地址。此时

        (1)主机A在本局域网上广播一个ARP请求分组,说:“我是209.0.0.5,我的硬件地址是XXXXXXXX,我要找IP地址为2059.0.0.6的物理地址”.

        (2)在本局域网上的所有主机上运行的ARP进程都将接受到此ARP分组。

        (3)主机B在ARP请求分组中看到自己的IP地址就向主机A发送ARP响应分组,并写入自己的硬件地址。其余主机不理睬这个ARP请求。B的响应分组的主要内容是“我的IP地址是209.0.0.6,我的硬件地址是xxxxxxx”。ARP请求分组是广播的而ARP响应分组是单播的。

        (4)主机A收到主机B的ARP响应分组后就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

        A向B发送数据报可能过一会儿B也要向A发送数据报,因此A在发送请求分组时,就把自己的IP地址到物理地址的映射写入ARP请求分组。当主机B收到主机A的ARP请求分组时就把主机A的这一地址映射写入了B的ARP高速缓存中。这样可以减少网络上的通信量。

        ARP高速缓存中的每一个地址映射项目都设置生存时间,凡超过生成时间都将被从高速缓存中删除掉。这个生存时间很重要。假设A里存放了B的硬件地址则可能过一段时间B的硬件地址改变了(B更换了适配器)而A存放的还是B得老地址因此A无法找到B。一旦有了生成时间那么过一段时间以后B的老的硬件地址就已经删除

       如果H1和H2不在同一个局域网上,H1就无法解析出H2的地址。主机H1发送给H2的数据报首先通过与H1在同一个局域网上的路由器R1来转发。因此主机H1这时需要把路由器R1的IP地址IP3解析为硬件地址HA3,以便能够把IP地址数据报传送给路由器R1。以后R1从转发表找出了吓一跳路由器R2,同时使用ARP解析出R2的硬件地址HA5,于是IP数据报按照硬件地址HA5转发到路由器R2。路由器R2在转发这个IP数据报时用类似的方法解析出目的主机H2的硬件地址。使IP数据报最终交付给主机H2。

       ARP的四种典型情况:

       (1)发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址

       (2)发送方是主机,要把IP地址发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来做。

       (3)发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。

       (4)发送方是路由器,要把IP数据报转发给另一个网络上的一个主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来做。

         用IP地址通信是因为各个网络的硬件地址结构不一样。 

0 0
原创粉丝点击