1、什么是ARP与RARP协议

  地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

  在⽹络通讯时,源主机的应⽤程序知道⽬的主机的IP地址和端⼜号,却不知道⽬的主机的硬件地址,⽽数据包⾸先是被⽹卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得⽬的主机的硬件地址。 ARP协议就起到这个作⽤。

ARP通过IP地址获取MAC地址方式:

(1)源主机发出ARP请求, 询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求⼴播到本地⽹段(以太⽹帧⾸部的硬件地址填FF:FF:FF:FF:FF:FF表⽰⼴播);

(2)⽬的主机接收到⼴播的ARP请求, 发现其中的IP地址与本机相符, 则发送⼀个ARP应答数据包给源主机, 将⾃⼰的硬件地址填写在应答包中;

(3)源主机收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  反向地址转换协议(RARP)顾名思义,是根据物理地址获取IP地址的一个TCP/IP协议。每个主机都有一个ARP高速缓存表,这样避免每次发包时都需要发送ARP请求来获取硬件地址。反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。RARP协议广泛应用于无盘工作站引导时获取IP地址。

RARP工作原理:

(1) 源主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
(2) 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
(3) 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
(4) 如果不存在,RARP服务器对此不做任何的响应;
(5) 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

2、ARP数据报的帧格式

以太网目的地址:目的主机的硬件地址(48位MAC地址)。目的地址全为1的特殊地址是广播地址。

以太网源地址:源主机的硬件地址。

帧类型:对于ARP协议,该字段为0x0806。对于RARP协议,该字段为0x8035。

硬件类型:表示链路层⽹络的类型。值为1时表示以太网地址。也就是说ARP协议不仅仅应用于以太网协议,还可以支持别的链路层协议。

协议类型:表示要映射的协议地址类型。值为0x0800时表示IP协议。

硬件地址长度:与硬件类型对应的硬件地址的长度,以字节为单位。如果是以太网,则是6字节(MAC长度)。

协议地址长度:与协议类型对应的协议地址长度,以字节为单位。如果是IP协议,则是4字节(IP地址长度)。

操作类型(op):四中操作类型。ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。

发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网头中的源地址对应。

发送端协议地址:如果是IP协议,则表示源主机的IP地址。

目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网头中的目的地址对应。

目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。

  对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。由于以太⽹规定最⼩数据长度为46节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。

3、ARP缓存

  每个主机都有一个ARP高速缓存表,这样避免每次发包时都需要发送ARP请求来获取硬件地址。利用arp -a命令可以查看显示系统中高速缓存的内容。缓存表中的表项有过期时间(⼀般为20分钟),如果20分钟内没有再次使⽤某个表项,则该表项失效,下次还要发ARP请求来获得⽬的主机的硬件地址。

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

4、使用ARP的四种典型场景

(1)发送方是主机H1,要把IP数据报发送到另一个网络上的另一个主机H2.这时H1发送ARP请求分组(在网1上广播),找到目的主句H2的硬件地址;

(2)发送方是主机H1,要把IP数据报发送到另一个网络上的另一个主机H2.这时H1发送ARP请求分组(在网1上广播),找到网1的一个路由器R1,剩下的工作由路由器R1来完成;

(3)发送方是路由器R1,要把IP数据报发送到R1连接在同一个网络(网2 )上的主机H3。这时R1发送ARP请求分组(在网2上广播),找到目的主机H3的硬件地址;

(4)发送方是路由器R1,要把IP数据报发送到网3上的一个主机H4。这时R1发送ARP请求分组(在网2上广播),找到连接在网2上的一个路由器R2的硬件地址,剩下的工作由路由器R2来完成。

5、ARP欺骗

  ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。 ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。

6、用arp脚本抓取对应主机mac地址

ARP与RARP协议及arp脚本的更多相关文章

  1. TCP/IP协议栈 ARP和RARP协议

    上几章中我们提到以太网协议中,在以太网首部中一个帧类型的字段,它可以表示为IP ARP RARP协议. 这里说一下ARP 和RARP协议. 首先看ARP协议: 要想网络中的数据包准确到达某个主机,最后 ...

  2. ARP和RARP协议详解

    ARP概述 为什么要用ARP?即ARP的作用 (1) TCP/IP 的32bit的IP地址,仅知道主机的IP地址不能让内核发送数据帧给主机 (2) 网络接口的硬件地址,它是一个48bit的值,用来标识 ...

  3. TCP/IP学习笔记(3)-IP、ARP、RARP协议

    这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...

  4. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  5. arp和rarp协议

    ARP与RARP详细解析 原创zlnnjit 发布于2016-04-03 15:12:15 阅读数 9544 收藏 展开 地址解析协议 ARP和逆地址解析协议RARP 1.基本关系: ​ 2.地址解析 ...

  6. 【随笔】ARP和RARP

    ARP协议是什么? ARP协议是"Address Resolution Protocol"(地址解析协议)的缩写.在局域网中,网络中实际传输的是"帧",帧里面是 ...

  7. ARP及RARP简介

    1.概念 ARP(Address Resolution Protocol) 地址解析协议 RARP(Reverse Address Resolution Protocol) 反向地址解析协议 2.AR ...

  8. 地址解析协议(ARP)

    地址解析协议(ARP) 地址解析协议(ARP)是指网络地址和MAC地址之间的转换 当一台主机需要向另一台主机发送数据时,需要知道目的主机的ip地址外还需要知道目的主机的mac地址.源主机首先会在自己的 ...

  9. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

随机推荐

  1. java中得到图片的宽度 高度:

    java中得到图片的宽度 高度:BufferedImage srcImage = null;srcImage = ImageIO.read(new File(srcImagePath));int sr ...

  2. 不支持placeholder浏览器下对placeholder进行处理

    if(document.createElement('input').placeholder !== '') { $('[placeholder]').focus(function() { var i ...

  3. 【Android Developers Training】 64. 绘制形状

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. 极致精简的webservice例子

    看了网上好多关于webservice的例子,基本上对初学者来说都是模棱两可云里雾里,现在,我将网上关于webservice的讲解提炼出来,通过一个最简单使用并且方便的例子,告诉大家什么是webserv ...

  5. java生成首字母拼音简码的总结

    百度找到了某论坛高人写的java(具体论坛记不清了),直接用来调用,再次非常感谢,基本上实现了我的需求 package MD5;import java.util.Scanner;public clas ...

  6. centos 7 部署Thinksns

    因为Thinksns是PHP项目,我们这里部署需要搭建Apache+mysql+php环境. 1.mysql的安装,这里使用yum安装可以解决很多依赖包的问题.由于centos 7 没有自带mysql ...

  7. mysql基础篇-----mysql简介

    2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...

  8. .NET平台的ORM分析工具

    众所周知,“ORM”和“性能问题”常常一起出现.ORM通过对开发人员隐藏SQL细节可以大大的提高生产力.然而,它们很容易产生一些未被发现的荒谬查询.通常情况下,数据库管理员可以通过交叉引用有问题的存储 ...

  9. [CF787D]遗产(Legacy)-线段树-优化Dijkstra(内含数据生成器)

    Problem 遗产 题目大意 给出一个带权有向图,有三种操作: 1.u->v添加一条权值为w的边 2.区间[l,r]->v添加权值为w的边 3.v->区间[l,r]添加权值为w的边 ...

  10. [基础架构]PeopleSoft工作原理(从浏览器发送请求开始)

    PeopleSoft体系结构是由几大组成部分构成,之前文章已经详细讲过,了解这几大组成部分是怎么协同工作的更为重要.在本文中将帮助您了解PeopleSoft的工作原理以及用户发送的请求是如何被解析以及 ...