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分组帧格式

字段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

代理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号

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随着技术的更新迭代正在退出历史舞台

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

ARP和RARP协议详解的更多相关文章

  1. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  2. ARP协议详解之Gratuitous ARP(免费ARP)

    ARP协议详解之Gratuitous ARP(免费ARP) Gratuitous ARP(免费ARP) Gratuitous ARP也称为免费ARP,无故ARP.Gratuitous ARP不同于一般 ...

  3. ARP协议详解之ARP动态与静态条目的生命周期

    ARP协议详解之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自动添加和删除. q  每个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉.所以,生 ...

  4. 【转载】TCP /IP协议详解

    首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...

  5. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  6. 入木三分学网络第一篇--VRRP协议详解第一篇(转)

    因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...

  7. 第3章 TCP协议详解

    第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...

  8. linux高性能服务器编程 (三) --TCP协议详解

    第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP ...

  9. [转]VRRP协议详解

    原文地址:VRRP协议详解 文中涉及缩略语 缩略语 英文全名 中文解释 VRRP Virtual Router Redundancy Protocol 虚拟路由器冗余协议 NQA Network Qu ...

随机推荐

  1. CentOS中安装Nginx

    一.背景 最近在写一些自己的项目,用到了nginx,所以自己动手来在Centos7上安装nginx,以下是安装步骤. 二.基本概念以及应用场景 1.什么是nginx Nginx是一款使用C语言开发的高 ...

  2. 终端命令行开启和关闭mac隐藏文件

    defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件defaults write com.apple.finde ...

  3. 阿里云apache服务器外网无法访问(配置安全组,添加80服务)

    CentOS的系统 ,已经安装好了 apache php mysql 常规排错过程(ps:没耐心的童鞋请直接看最后一步,学习在阿里云控制台配置 安全组,允许 http服务) 第一步:检查apache ...

  4. Debian 无线网卡驱动问题

    参考这里:https://wiki.debian.org/iwlwifi Debian 9 "Stretch" Add a "non-free" compone ...

  5. 【ARTS】01_10_左耳听风-20190114~20190120

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. Linux下锁定账号,禁止登录系统的设置总结【转】

    在我们运维工作中,会经常要求一些用户不允许登陆系统,以加固系统安全.今天这里介绍下锁定账号登陆的几种方法: (推荐使用)这种方式会更加人性化一点,因为不仅可以禁止用户登录,还可以在禁用登陆时给提示告诉 ...

  7. nginx配置集群

    1.准备两个Tomcat 首先在Linux机器上部署两个Tomcat,端口分别为80和8080 2.分别部署测试应用 在两个tomcat下分别部署同一个应用testapp,很简单,就是在页面显示当前系 ...

  8. 用C#代码来安装、卸载、启动、关闭服务

    /// <summary>        /// 启动服务         /// </summary>        /// <param name="sen ...

  9. 统一异常处理@ExceptionHandler

    异常处理功能中用到的注解是:@ExceptionHandler(异常类型.class). 这个注解的功能是:自动捕获controller层出现的指定类型异常,并对该异常进行相应的异常处理. 比如我要在 ...

  10. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...