1.地址解析协议(ARP)
IP协议使互联网自IP层开始,表现为统一的地址格式,IP层以上的各层均使用IP地址;而物理网络内部,依然使用各自原来的物理地址(如MAC地址)。IP数据包的实际传输是通过将其封装在物理网络的数据帧中,并由底层物理网络传送数据帧。但因为物理网络无法识别IP地址,因此,必须在二者之间建立一种映射的关系,这种关系称为地址解析。
也就是说,不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
ARP协议就是在已知目的主机IP地址的情况下,查找到目的主机的物理地址。为此,每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
当主机A希望向本局域网上的某个主机B(IP地址为IPB)发送IP数据包时,就先在其ARP高速缓存中查看有无主机B的IP地址。如果有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
如果没有,主机A则广播发送一个ARP请求分组,询问IP地址为IPB的主机的硬件地址,该分组中也包含主机A的IP地址和硬件地址。网络中的主机都能收到该请求分组,所有主机都会接受该请求分组,并将主机A的IP地址和硬件地址,写入自己的ARP高速缓存中。但只有IP地址匹配的主机B才会返回一个响应分组,分组中包含B的IP地址和硬件地址。主机A在收到响应分组后,会将B的IP地址和硬件地址写入ARP高速缓存,再将此MAC地址写入要发送的MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
由于当主机B收到A的ARP请求分组时,将主机A的这一地址映射写入主机B自己的ARP高速缓存中,以后,当主机B需要向A发送数据包时,就可以直接从自己的ARP高速缓存中得到A的硬件地址,而不用再发送ARP请求了。
ARP协议的工作是自动的,对用户是透明的。例如,当用户输入命令“ftp主机名”时,会引起ARP的操作,过程为:
(1)应用程序FTP客户端调用函数gethostbyname()把主机名bsd转换成32bit的IP地址。该转换过程或者使用DNS(域名服务),或者在较小网络中使用一个静态的主机文件(hosts文件)。
(2)FTP客户端请求TCP用该IP地址建立连接。
(3)TCP发送连接请求到远端的主机,即用上述IP地址发送一份IP数据包。
(4)IP数据包会发送给本网的一台主机或路由器。不论是发送给本网的主机,还是发送给路由器,以以太网为例,发送端主机必须把32 bit的IP地址变换成48 bit的MAC地址。
(5)为此,ARP广播一个ARP请求的以太网数据帧,给以太网上的每个主机。ARP请求数据帧中包含目的主机的IP地址(主机名为bsd)。
(6)目的主机的ARP层收到这份广播报文后,识别出这是在询问它,则发送一个ARP应答,包含IP地址及对应的硬件地址。
(7)收到ARP应答后,FTP客户端得到硬件地址。
(8)发送IP数据包到目的主机。(www.xing528.com)
ARP数据包的格式如图4-12所示。
图4-12 ARP数据包的格式
2.逆地址解析协议(RARP)
逆地址解析协议(RARP)是使仅知道自己的硬件地址的主机,能够得到其IP地址。这种主机往往是无盘工作站。
RARP协议解析过程:
(1)在RARP服务器中存入一个本地网络的<物理-IP>地址映射表。
(2)无盘工作站发出RARP请求,在请求中携带本机的物理地址。
(3)网络上所有主机均收到请求,但只有RARP服务器处理请求。
(4)RARP服务器根据请求中的物理地址,查找<物理-IP>地址对的映射表,直接发给请求者,而不采用广播方式。
(5)如果网络中存在多个RARP服务器,请求者会收到所有服务器的响应,但只能使用最先到达的一个解析响应。
RARP现在已经很少使用。
随堂练习
ARP和RARP是用来做什么的?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。