ARP和RARP协议详解

释放双眼,带上耳机,听听看~!

ARP概述

为什么要用ARP?即ARP的作用

(1) TCP/IP 的32bit的IP地址,仅知道主机的IP地址不能让内核发送数据帧给主机

(2) 网络接口的硬件地址,它是一个48bit的值,用来标识不同的以太网或令牌环网络接口

在硬件层次上,进行数据交换必须有正确的接口地址,内核必须知道目的端的硬件地址才能发送数据

在以太网中,一台主机要把数据帧发送到同一局域网上的另一台主机时

设备驱动程序必须知道以太网地址才能发送数据

而我们只知道IP地址,这时就需要采用ARP协议将IP地址映射为以太网地址

( 以太网地址即:硬件地址 MAC )

ARP在OSI模型中的位置

OSI模型有七层,TCP在第4层传输层,IP在第3层网络层,而ARP在第2层数据链路层

高层对低层是有强依赖的,所以TCP的建立前要进行ARP的请求和应答

ARP高速缓存表在IP层使用

如果每次建立TCP连接都发送ARP请求,会降低效率,因此在主机、交换机、路由器上都会有ARP缓存表

建立TCP连接时先查询ARP缓存表,如果有效,直接读取ARP表项的内容进行第二层数据包的发送;

只有表失效时才进行ARP请求和应答进行MAC地址的获取,以建立TCP连接

ARP高速缓存

每个主机都有一个ARP高速缓存表,这样避免每次发包时都需要发送ARP请求来获取硬件地址

默认老化时间是20分钟,利用arp -a命令可以查看显示系统中高速缓存的内容

Windows下arp -d命令可以清除arp高速缓存表

ARP分组帧格式

ARP和RARP协议详解

ARP和RARP协议详解

字段1 ARP请求的目的以太网地址,全1时代表广播地址

字段2 发送ARP请求(源主机)的以太网地址

字段3 以太网帧类型;于ARP协议,该字段为0x0806;对于RARP协议,该字段为0x8035

字段4 硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1

字段5 表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。

字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。

字段8 操作类型字段,ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)

字段9 发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。

字段10 发送ARP请求或应答的IP地址

字段11和12是目的端的硬件地址和协议地址。

下边两张图,分别是,ARP请求包和响应包

ARP和RARP协议详解

 

ARP和RARP协议详解

ARP和RARP协议详解

ARP和RARP协议详解

代理ARP

代理ARP就是通过使用一个主机(通常为router)

来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答

为什么要用代理ARP

先要了解,路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。

ARP请求是个广播包,它询问的对象如果在同一个局域网内,就会收到应答

但是如果询问的对象不在同一个局域网该如何处理?路由器就提供的代理ARP为这个问题提供了解决方案。

工作过程

两台主机A和B处于同一网段但不同的广播段时,主机A发送ARP请求主机B的MAC地址时

因为路由器不转发广播包的原因,ARP请求只能到达路由器

如果路由器启用了代理ARP功能,并知道主机B属于它连接的网络

那么路由器就用自己接口的MAC地址代替主机B的MAC地址来对主机A进行ARP应答

主机A接收ARP应答,但并不知道代理ARP的存在

优点:

代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化

一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上

缺点:

从工作工程可以看到,这其实是一种ARP欺骗。

而且,通过两个物理网络之间的路由器的代理ARP功能

其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括。

此外,代理ARP增加了使用它的那段网络的ARP流量,主机需要更大的ARP缓存空间

也不会为不使用ARP进行地址解析的网络工作

RARP:逆地址解析协议

将局域网中某个主机的物理地址转换为IP地址

比如局域网中有一台主机只知道物理地址而不知道IP地址

那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答

RARP协议广泛应用于无盘工作站引导时获取IP地址。

RARP允许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址。

存在的问题

RARP通过非常精简的交互实现了IP地址的获取,但同时也暴露了一些问题:

RARP Server必须提前将MAC和IP的映射静态绑定在本地;

若没有提前绑定,则电脑用自己MAC询问时,Server也不会回应;

RARP Server只能给电脑分配IP地址,不包括其他信息,包括网关、DNS等信息;

RARP基于二层封装,只能运行在同一网段;每个网段分配地址,都需要一个RARP Server。

在RARP的基础上,后面又有了Bootp协议,直译过来便是\"启动协议\",功能同RARP

也是用于电脑接入网络时,用来获取IP地址的

但是毕竟做了增强,Bootp协议能让电脑启动时不仅仅获取IP地址

而且能获取到网关地址从而让电脑实现跨网段通信

Bootp协议虽然让电脑能够获取到更多的信息,但是仍然没有解决最大的问题:

服务器仍然需要提前手工绑定MAC和IP地址,而对于现在的移动网络或者公共网络而言,这根本无法实现。

因为用户什么时候接入,接入的MAC是多少,管理员没法提前知道。

这就有了后面的DHCP,DHCP通过动态分配的方式解决了这个诟病

并且通过DHCP中继技术实现了跨网段地址分配,实现了全网IP地址的统一管理。

小结:

RARP是一种逝去的地址分配技术,是Bootp和DHCP的鼻祖

目前我们的电脑基本不会用到这个协议,只有部分无盘工作站等情况需要用到

IARP反向地址解析协议

(Inverse Address Resolution Protocol)是DLCI到IP的映射,他应用的场景不是以太网,而是在帧中继网络里面

DLCI即数据链路连接标识(Data Link Connection Identifier)

是帧中继网络里面的二层地址,好比以太网里面的MAC地址,用于标记帧中继里面的虚拟专线

帧中继协议是一种统计复用的协议,它在单一物理传输线路上能够提供多条虚电路

DLCI由SAPI和TEI组成,用来唯一的识别一个数据链路连接

DLCI只具有局部意义,即交换机上不同的端口可以使用相同的DLCI号

ARP和RARP协议详解

ARP和RARP协议详解

IARP不像ARP协议可以实时交互,它是周期性运行的

通信双方若丢失IARP映射表,则需要等待到固定的时间交互才能重新生成并通信。

另外不同厂商不同型号对IARP的兼容性也可能不同。

基于这些原因,一般建议直接关闭IARP协议,采用静态绑定的方式生成映射表

总结

ARP是把IP地址转换为MAC地址的协议;一般ARP协议只适用于局域网

RARP用于实现MAC到IP的映射,本质就是为了获取IP地址,是Bootp和DHCP协议的鼻祖;

IARP用于实现帧中继网络中DLCI到IP地址的映射,生成帧中继映射表(类似ARP表),实现数据封装与通信;

相比ARP、免费ARP、代理ARP、ARP攻防等技术,RARP和IARP随着技术的更新迭代正在退出历史舞台

成为\"被遗忘的兄弟协议\" (对于初学者来说,也算是个好事,因为终于不用\"翻转\"\"反向\"\"逆向\"各种分不清了)

 

给TA打赏
共{{data.count}}人
人已打赏
站长资讯

javafx中多场景的切换

2020-11-9 3:45:48

站长资讯

面试官问我,Redis分布式锁如何续期?懵了。

2020-11-9 3:45:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索