【计算机网络】网际层协议--ARP&RARP

来源:互联网 发布:大帮手计件工资软件 编辑:程序博客网 时间:2024/06/05 20:27
TCP/IP的四层结构分别是:网络接口层、网际层、传输层、应用层。本文分享关于网际层的两个基本协议:ARP,RARP。
地址解析协议ARP:
1.为什么需要地址解析协议?
通常A主机向B主机进行发送数据,A主机一般是知道B主机的IP地址,光有一个IP地址就可以发送数据吗?不是的,在网络接口层,位于局域网内部的主机都是通过MAC地址进行通信的,所以我们就应该能把给定的IP地址转为MAC地址,地址解析协议就是来解决这个问题的。
2.如何通过地址解析协议根据对方主机的IP地址获取对方主机的MAC地址?
其实地址解析协议ARP就是为网络接口层进行服务的,因为网络接口层进行数据传输的时候才需要对方的MAC地址。然而,我们必须在网络层完成地址解析协议,因为IP地址只对网络层以及以上的层是可见的,对网络层以下的层均是透明的。
ARP数据报的格式:

有人说,以太网首部的源地址、目的地址和ARP地址应答中的源地址、目的地址是否有重复?答案是否。如果链路层不是以太网,首部还是需要的。
举例说明ARP地址解析协议:
A主机向B主机发送数据,A主机的ip地址为ip1,硬件地址(MAC地址)是m1,B主机的ip地址是ip2,硬件地址为m2(未知)。通过B主机的ip地址得到B主机的硬件地址。
ARP请求的数据报格式为:
目的主机收到ARP请求之后,就会发出ARP应答,应答的数据报情况是:

这个时候,两台主机就可以进行通信了。那么问题又来了,下次A主机还要和B主机进行通信(或者其他主机要给B主机进行发送数据)的时候,还是需要进行ARP协议获取B主机的MAC地址。所以,在网络层,就会存在一个高速缓存,用来存储主机的ip地址到硬件地址的映射关系,所以,下次需要和B主机进行通信的时候,只需要在ARP高速缓存中查找B的硬件地址即可。但是,B的硬件地址也是一直都不变的吗?如果有一次B的网络适配器突然坏了,B马上换了一个,这时,B的硬件地址就改变了,所以ARP缓存中的数据就是无效数据,所以,ARP缓存中的数据也是需要不断更新的。

可以通过arp -a命令来查看当前的arp缓存;也可以通过ifconfig命令查看当前机子的ip地址和硬件地址。

注意:ARP解决的是同一个局域网内部IP地址和硬件地址的映射问题。如果源主机和目的主机不是在同一个局域网内部,就无法进行地址的转换(在ARP请求的时候,只有局域网内部的所有主机才可以收到请求,所以此时的目的主机就无法收到ARP请求),解决办法:
路由器:是工作在网络层的设备,具有交换机的功能。假设源主机和目的主机之间只需要一个路由器R就可以。源主机发送给目的主机的数据报通过路由器R来转发,源主机需要将路由器的IP地址解析为硬件地址,然后把IP数据报发给路由器R,此时路由器R将目的主机的的IP地址解析为硬件地址,这样也就实现了地址的转换。

使用ARP的几种典型情况:
(1)发送方是主机,接收方是同一个局域网内部的其他一个主机,此时发送方的主机以广播的形式在发送方所属的局域网内部发出ARP请求,直接找到目的主机的硬件地址;
(2)发送方是主机,接收方是不同网络中的其他主机,这时,发送方主机通过路由器进行转换;
(3)发送方是路由器(R1),接收方是与该路由器R1直接相连的一个网络中的主机,这时R1通过ARP请求分组,找到接收方主机;
(4)发送方是路由器R1,接受方是在不与R1直接相连的网络中,这时R1发送请求,依次通过到达接收方主机的所有路由器,找到硬件地址。

反地址解析协议RARP:将MAC地址转换为IP地址,这个实现起来就没有ARP那么复杂了,直接给已知硬件地址目的主机发送信息,直接可以获取其IP地址。
如果我们将ARP比喻为:问身份证号为******的同学的姓名(所有收到信息的同学都看自己的身份证号是否和那个身份证号匹配,不匹配就不管了,匹配的同学说出自己的姓名);那么RARP就是,问某某同学的身份证号(直接交到某同学,同学说出自己的身份证号),所以,后者实现起来比较容易。




3 0