ARP(地址解析协议)和RARP(逆地址解析协议)

ARP基本过程:

1) 主机发送一份称作ARP请求的以太网数据帧给以太网上的每一个主机。这个过程称作广播(注意这是数据链路层的广播,不是网络层的广播)。ARP请求包含目的主机的IP地址。这个动作的意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址(MAC)”。

2) 目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答(单播)。这个ARP应答包含IP地址及对应的硬件地址。

3) 收到ARP应答后,使ARP进行请求应答交换的IP数据报现在就可以传送了。

4) 发送IP数据报到目的主机。

 

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

 

点对点链路并不使用ARP。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。像以太网这样的硬件地址并不涉及。

 

 

ARP代理:

如果ARP请求是从一个网络主机发往另一个网络上的主机,那么(直接)连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或者ARP代理。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上,目的主机在路由器的“另一边”,路由器相当于目的主机的代理,把分组从其他主机转发给它。注意这里源主机发送给路由器的帧中,帧地址是路由器的MAC地址,而路由发给目的主机的帧中,帧地址是目的主机的MAC地址;但是两边的目的IP地址都是目的主机的IP地址。

ARP代理也称作混合ARP或者ARP出租。这些名字来自于ARP代理的其他用途:通过两个物理网络之间的路由器可以互相隐藏物理网络。在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个ARP代理,以响应一个网络到另一个网络的ARP请求。

 

 

免费ARP

指主机发送ARP查找自己的IP地址。通常发生在系统引导期间进行接口配置的时候。

两个主要的作用:

1) 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。(主机问“谁有这个IP地址(它自己的IP地址)”,如果有人回答,则说明两者设置了相同的IP地址)

2) 如果发送免费ARP的主机正好改变了硬件地址,那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。

注意,如果主机收到某个IP地址的ARP请求(即使该IP地址不是这个主机的IP),而且它已经在这个主机的高速缓存中,那么就要用ARP请求中的发送端硬件地址(发送请求的主机的当前最新硬件地址)对自己高速缓存中相应的内容进行更新。(每有一个主机发送ARP,子网中的所有主机都要做这个操作)。

 

 

RARP(逆地址解析协议)

       已知硬件地址,请求自己的IP地址。通常是用在无盘系统引导时用来获取IP地址。(概念简单,但实现起来比ARP要难)

       提供一个ARP服务器很简单,通常是TCP/IP在内核中实现的一部分。由于内核知道IP地址和硬件地址,因此当它收到一个询问IP地址的ARP请求时,只需要用相应的硬件地址来提供应答就可以了。

       RARP作为服务器的复杂性在于,服务器一般要为多个主机(多个无盘机)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。

       更为复杂的是,RARP请求是作为一个特殊类型的以太网数据帧来传送的,RARP服务器必须能够发送和接收这种类型的以太网数据帧。由于发送和接收这些数据帧与系统有关,因此RARP服务器的实现是与系统捆绑在一起的。

       此外,为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上(例如一根电缆)要提供多个RARP服务器。容易产生冲突。

 

 

声明:文章内容来自《TCP/IP详解》第一卷,部分内容经过本人整理,仅作学习笔记之用。

猜你喜欢

转载自codepeak.iteye.com/blog/777830