《TCP/IP详解》_卷一_ARP和RARP协议

首先,我们要弄明白一个概念:网络实现当中的地址。


在网络中,只要提到地址,我们会马上想到IP地址。实际上,数据在以太网上传输的时候,并不是直接根据IP地址确定目的接口的,而是根据一个叫做以太网地址的东西确定 的。


设备驱动程序从不检查IP数据报中的目的IP地址!!


和IP地址类似,以太网地址是一个48bit的序列号。每个生产厂商在生产网络硬件接口的时候,都会为它配置一个独一无二的硬件地址,当然,应用于以太网的硬件配置叫以太网地址。


那么,随之而来的是,48bit的硬件地址和32bit的IP地址之间理应有一个对应关系。这样,当我向某个IP地址发送数据的时候,才能找到那个正确的网络接口。


ARP(地址解析协议)就是为IP地址到对应的硬件地址(可以是采用不同网络技术的)之间提供动态映射的。之所以用动态这个词是因为这个过程是自动完成的,通常应用程序用户和系统管理员不需要关心。


在以太网上解析IP地址时,ARP请求和应答分组格式(以字节为单位):


6字节:以太网目的地址。48bit以太网地址一般用6个十六进制的数字来表示,如8:0:20:3:f6:42.下同


6字节:以太网源地址


2字节:帧类型。表示后面数据的类型,对于ARP请求或者应答来说,值为0x0806


2字节:硬件类型。如值为1时,表示以太网网络


2字节:协议类型。表示要映射的协议地址类型。如值为0x0800表示IP地址


1字节:硬件地址长度,以字节为单位,所以,对于以太网上IP地址的ARP请求来说,值为6


1字节:协议地址长度,同上,值通常为4


2字节:op,即操作字段。指出操作类型,他们是ARP请求(值为1),ARP应答(值为2),RARP请求(值为3),RARP应答(值为4)。


6字节:发送端以太网地址。没错,这个与前面的以太网源地址重复了,但是,前面的信息属于以太网首部,这个信息属于ARP/RARP信息


4字节:发送端IP地址


6字节:目的端以太网地址。同上


4字节:目的端IP地址。同上



还有一点要注意的,就是ARP高速运行的关键之一:主机上的ARP高速缓存。在这个缓存中存储了最近的Internet地址与硬件地址之间的映射。每个映射的存在时间大概为20分钟。



RARP:

在某些主机中(具有本地磁盘),一般是从本地的配置文件中读取IP地址的。但对于无盘机,则需要其他的方式获取IP地址,这就是RARP(逆地址解析协议)


RARP的实现过程就是从无盘机自己的接口卡上读取硬件地址(唯一的),然后发送一份RARP请求(在网络上广播),请求某个主机响应该无盘机的IP地址(在RARP应答中)


RARP格式与ARP格式基本一致,他们之间的主要差别是RARP请求或者应答的帧类型值为0x8035.当然op(操作代码)也不同。而求,相对于ARP,RARP请求以广播的形式发送,RARP应答则以单播的形式发送


RARP的几个注意点:


1、作为用户进程的RARP服务器

RARP服务器的实现难度之一就是服务器一般要为多个主机(广播上的所有无盘机)提供服务,即硬件地址到IP地址之间的映射。这些数据会保存在磁盘文件中。由于雷飞一般不读取和分析磁盘文件,所以RARP的功能必须由用户进程来实现,而不是TCP/IO实现的内核之一


2、每个网络上有多个RARP服务器

RARP请求是在硬件层(链路层)上进行广播的,这意味着他们不经由路由器(路由属于IP层)转发。为了让无盘机在某个RARP服务器关机的情况下也能工作,通常在网络上提供多个RARP服务器。这样做也是有弊端的:当服务器增多时,网络流量也随之增多,因为每个服务器都需要对每个RARP请求发送RARP应答。无盘系统通常采用最先收到的RARP应答。







猜你喜欢

转载自263796001-qq-com.iteye.com/blog/1162718