ARP与RARP 协议

概述

1、ARP协议和RARP协议就负责将IP地址映射到MAC地址上。
2、在IPV6的环境中已经没有ARP协议了。ICMPV6里的“NS/NA”结合“被请求节点组播地址”代替ARP完成了工作。

ARP存在的必要性:

OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议(ARP)
使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

以太网的传输机制

1、以太网是一种广播网络、即在同一个以太网中的任何一个主机都能接收到网络上的所有数据帧。但主机会检查数据帧的目的地址、如果该数据不是发送给自己的、那么就会将其丢弃。
2、连接到以太网中的每一个连接口(通常是网卡)都会有一个自己唯一的以太网地址(MAC地址)。
3、如果MAC地址匹配、再交给对应的网络层交给IP协议处理。
4、IP协议将数据包交给网卡发送的时候、必须告诉网卡将数据发送给那个MAC地址。
5、IP协议在通讯的时候必须知道对方的MAC地址。
6、IP协议中有一张表、表中记录着每个IP地址对应的MAC地址。这个表产生的过程、就是IP地址向MAC地址的映射过程。

两者的基本关系

地址解析协议 ARP和逆地址解析协议RARP
在这里插入图片描述

ARP

地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确地址解析协议定其物理地址的一种协议。

计算机A是如何得知B的MAC地址的呢?

在TCP/IP协议中,A给B发送IP包,在报头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址。

那A是如何得知B的mac地址呢?
解决问题的关键就在于ARP协议。

在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。

A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。

本机MAC缓存是有生存期的,生存期结束后,将再次重复上面的过程。

地址解析协议 ARP的实现过程

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

每一个主机都设有一个 ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。

当主机 A 欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的 IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。

在这里插入图片描述

ARP 高速缓存的作用

为了减少网络上的通信量,主机 A 在发送其 ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。

当主机 B 收到A的 ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。

ARP协议注意到的问题

ARP 是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。

如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址。

  • 当两个主机H1、H2处于同一个物理网络

在这里插入图片描述

1、当源主机H1的IP协议构造好IP数据包、但这时还并不知道目的地的M2、所以并不能交给网卡发送。
2、这时源ARP协议将构造一个ARP数据包、其中包含目的IP地址P2、目的M2空缺着、并将ARP数据包交给网卡广播发送给整个以太网。
3、H2网卡在收到ARP请求后、将其交给H2的ARP协议进行处理、如果查询的IP地址与自身的地址P2相符、会将自身的M2填写进去并作为ARP响应包交给网卡发送回去。如果查询的IP地址与自身的地址P2不符、则丢弃该ARP请求包。
4、H1在收到ARP应答包后、再开始向M2发送IP数据包。

  • 当两个主机H1、H2处于不同的物理网络

1、网关
网关IP就是默认路由的内网IP地址.正常环境下、当用户接入网络时、都会通过DHCP协议或手工配置的方式得到IP和网关信息
2、代理ARP
当ARP请求目标跨网段时、网关设备收到此ARP请求、会用自己的MAC地址返回给请求者、这便是代理ARP(Proxy ARP)。

在这里插入图片描述

  • ARP与代理ARP的选择

1、当电脑没有网关时、采用代理ARP
2、当电脑有网关时、采用正常ARP

ARP代理

如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(Proxy ARP)。
这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。
路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。即路由器代理ARP。

使用 ARP 的四种典型情况

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

ARP的分组格式

用于以太网的ARP请求或应答分组格式,如图所示

在这里插入图片描述

  • 以太网目的地址,目的地址为全1的特殊地址是广播地址,电缆上的所有以太网接口都要接收广播的数据帧。
  • 以太网源地址:
  • 帧类型:表示数据类型,对于ARP请求或者应答来说,该字段的值为0x0806,RARP为0x0835
  • 硬件类型:表示硬件地址的类型,1表示以太网地址。值为1表示Ethernet。
  • 协议类型:指定发送方支持的上层协议的类型,0x0800表示IP地址。
  • 硬件地址长度:指定物理(硬件)地址的长度,以字节为单位。
  • 协议地址长度:网络层协议的地址长度。若为IP协议,其值为4,以字节为单位。
  • 操作类型:ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。可见ARP和RARP的帧类型字段一致。
  • 发送端硬件地址:指定目的物理地址。
  • 发送端IP地址:指定发送方的IP地址
  • 目的端硬件地址:注意这里有重复信息。
  • 目的端IP地址:指定目的IP地址

RARP

逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP地址。

这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。

RARP工作原理

(1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。

(2)RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。

(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。

ARP和RARP请求是广播方式,应答都是单播方式

例子

我们敲入下面这个形式的命令:

% ftp bsdi

都会进行以下这些步骤。这些步骤的序号如图:

  • 应用程序FTP客户端调用函数gethostbyname(3)把主机名(bsdi)转换成32 bit的IP地址。这个函数在DNS(域名系统)中称作解析器,我们将在第14章对它进行介绍。这个转换过程或者使用DNS,或者在较小网络中使用一个静态的主机文件(/etc/hosts)。
  • FTP客户端请求TCP用得到的IP地址建立连接。
  • TCP发送一个连接请求分段到远端的主机,即用上述IP地址发送一份IP数据报(在第18章我们将讨论完成这个过程的细节)。
  • 如果目的主机在本地网络上(如以太网、令牌环网或点对点链接的另一端),那么IP数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。在这两种情况下,IP数据报都是被送到位于本地网络上的一台主机或路由器。
  • 假定是一个以太网,那么发送端主机必须把32 bit的IP地址变换成48 bit的以太网地址。从逻辑Internet地址到对应的物理硬件地址需要进行翻译。这就是ARP的功能。ARP本来是用于广播网络的,有许多主机或路由器连在同一个网络上。
  • ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,如图4-2中的虚线所示。ARP请求数据帧中包含目的主机的IP地址(主机名为bsdi),其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。”
  • 目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。
  • 收到ARP应答后,使ARP进行请求—应答交换的IP数据报现在就可以传送了。
  • 发送IP数据报到目的主机。

在这里插入图片描述

在ARP背后有一个基本概念,那就是网络接口有一个硬件地址(一个48 bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址:32 bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。

发布了51 篇原创文章 · 获赞 7 · 访问量 5597

猜你喜欢

转载自blog.csdn.net/xxx0028/article/details/104883168