一、引言

在真实的网络上传输的数据帧不是IP地址来传的,是通过每一个网卡的特有的物理地址(MAC地址)来传输的。上层协议一般是只知道IP地址,不知道MAC地址的。因此需要有通过IP地址知道MAC地址的方法,这就是ARP(Addess Resolution Protocol)。   有时候知道一台机器的物理地址,而不知道该机器的IP地址(如,具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机/无盘工作站,则需要采用其他方法(RARP)来获得 I P地址)。通常是某主机发送一份RARP数据包到网络上,另一主机(RARP服务器)响应该RARP数据包,告诉当前主机他的IP地址。

二、ARP与RARP数据包

  这是是一个完整的以太网ARP/RARP数据帧(图1中,每一域的长度单位是字节),该帧去掉了CRC校验和,前三个区域为前面介绍的链路层以太网帧格式。ARP与RARP的数据包格式是相同的,只是某些区域字段值(以太帧类型、操作数)不相同而已。除去以太帧首部外的其他域解释如下:

  • 以太帧帧类型:长度2个字节,0x0800-IP数据包,0x0806-ARP请求/应答数据包,0x8035-RARP请求/应答数据包。
  • 硬件类型(Hardware type):指明该ARP数据包的网络硬件类型,长度2个字节,0x0001-以太网。
  • 协议类型(Protocol type):指明该ARP数据包的使用协议,长度2个字节,0x0800-IP地址协议。协议类型与硬件类型共同确定后面数据存储结构,这里只是以太网ARP/RARP。
  • 硬件地址长度(Hardware Size): 指明之后的硬件地址长度,长度1个字节。0x06-以太网地址长度(6个字节),该长度的单位是字节。
  • 协议地址长度(Protocol Size):指明之后的协议地址长度,长度1个字节。0x04-IP地址长度(4个字节),该长度的单位是字节。
  • 操作码(Opcode):指明该数据包是干嘛的,长度2个字节。0x0001-ARP请求包,0x0002-ARP应答包;0x0003-RARP请求包,0x0004-RARP应答包。
  • 源以太网MAC地址(Sender MAC Address):发送端以太网物理地址,长度6个字节。
  • 源IP地址(Sender IP Address):发送端IP地址,长度4个字节。
  • 目的以太网MAC地址(Target MAC Address):目的以太网MAC地址,长度6个字节。ARP发送包初始化为0,ARP应答包为具体MAC地址;RARP发送包初始化为需要解析的MAC地址。
  • 目的IP地址(Target IP Address):目的IP地址,长度为4个字节。ARP发送包初始化为需要解析的IP地址。RARP发送包初始化为0,RARP应答包填充对应的IP地址。

ARP与RARP数据包既可以单播(以太网目的地址为具体的某个机器的MAC地址),也可以广播(以太网目的地址为全为1的MAC地址)。

三、ARP与RARP特性

1. ARP特性

  • ARP高速缓存:ARP能够高效运行的原因是每一个主机都有一个ARP高速缓存。这个高速缓存存放了最近的IP地址与硬件之间的映射关系。高速缓存一般设置的生存时间是20分钟。起始时间是从被创建时候开始算起。在命令行中,我们可以通过arp命令查看这些缓存。
  • ARP代理(Proxy ARP):有时候需要将网络A中的数据包发送到网络B中某主机,当在网络A中发送ARP请求包的时候,网络A与网络B之间的路由器会响应该ARP包。这样就让ARP请求包发送端,误认为路由器是目的主机。
  • 额外的ARP(gratuitous ARP):指的是主机A发送查找主机A的IP地址对应MAC的ARP请求包。发送查找自己的ARP包怪吗?不怪,因为可以通过这种方式:(1).该网络上是否具有相同IP地址的主机。(2).如果主机A的物理地址发生变化,可以通过这种方式更新其他主机中相应的ARP高速缓存。

2.RARP特性

  • RARP的响应需要RARP服务器的。该服务器记录了IP地址与物理地址的对应关系。通常一个网络中有多个RARP服务器。
  • 当服务器的数目增加时(以提供冗余备份),网络流量也随之增加,因为每个服务器对每个RARP请求都要发送RARP应答。发送RARP请求的无盘系统一般采用最先收到的 RARP应答(对于 ARP,我们从来没有遇到这种情况,因为只有一台主机发送 ARP应答)。另外,还有一种可能发生的情况是每个 RARP服务器同时应答,这样会增加以太网发生冲突的概率。

四、ARP抓包

上面,两图是一对。我们可以看到这是一个单播的ARP。

都看到这里了,要不要扫二维码关注一下微信公众号林湾村龙猫

转载于:https://juejin.im/post/5cb68a93518825324c44ed8c

系列TCP/IP协议-ARP与RARP相关推荐

  1. TCP/IP协议--ARP协议(有了IP地址为什么还需要ARP协议)

    首先我们需要先大致了解一下MAC地址,MAC(Media Access Control, 介质访问控制)地址是烧录在Network Interface Card(网卡,NIC)里的,也叫硬件地址,是由 ...

  2. TCP/IP 协议 —— ARP

    通过 ARP 广播获得对方的 MAC 地址: 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议. 1. 特点 ARP ...

  3. 系列TCP/IP协议-ping与traceroute命令(006)

    一.引言 在错综复杂的网络的世界里,如何知道对方主机是否可达,链路是否畅通是一个不太简单的问题.现在有两种常用的程序或命令来检查这些问题(ping与traceroute命令).   "pin ...

  4. TCP/IP协议——ARP详解

    本文主要讲述了ARP的作用.ARP分组格式.ARP高速缓存.免费ARP和代理ARP. 1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第 ...

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

    本文主要讲述了ARP的作用.ARP分组格式.ARP高速缓存.免费ARP和代理ARP. 1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第 ...

  6. TCP/IP:ARP与RARP详细解析

    地址解析协议 ARP和逆地址解析协议RARP 1.基本关系: 2.地址解析协议 ARP的实现过程: 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址. ‚每一个主机 ...

  7. 系列TCP/IP协议-动态IP选路协议(008)

    一.引言 前一章已经说过了IP数据包是如何分发的.为啥这一章还要说这个问题?在网络很小.只有单个连接点.没有多余的路由的时候,使用静态选路是可以的.但是一旦网络变大一点就会出现各种问题.在大网络中的网 ...

  8. 系列TCP/IP协议-广播与多播(010)

    一.引言 在一开始的IP层介绍的时候就已经提供了三种IP地址:单播地址,广播地址,多播地址.对于这些通讯方式的理解是:单播地址是一对一的通讯,广播是一对多的通讯,多播是一对多的通讯.多播是对一个特定的 ...

  9. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

最新文章

  1. mac安装python3
  2. logstic 回归
  3. SpringBoot中使用Thymeleaf常用功能(二):测试Thymeleaf条件判断
  4. 最长公共子序列(C语言)
  5. AOP in dotnet :AspectCore的参数拦截支持
  6. 三条中线分的六个三角形_八年级数学上册:三角形已知两条边如何求第三边
  7. 二 SVN代码冲突的解决
  8. js中数组filter过滤奇偶数_JS filter()方法:根据指定条件过滤数组元素
  9. qq2013 sp1 去广告方法及代码
  10. box2D斜面摩擦力和sprite朝向的兼顾取舍
  11. 契税申报期限_纳税申报的5个小常识,会计不知道,真不适合干会计 D1
  12. quartz mysql 配置_Quartz框架(一)—Quartz的基本配置
  13. 基于群智能的路径规划算法(五)------狼群算法
  14. 华为浏览器工具箱 html修改,华为电子文档浏览器(HedEx Lite)
  15. 视频编码格式和封装格式有哪些?视频封装格式和编码格式有什么区别?一篇弄懂
  16. 链新:区块链大赛火热,成为技术与创意的练兵场
  17. [RS] 基础概念区分:DN-辐射率-反射率
  18. JS调用新旧windowsMedia的方法
  19. 码农三十岁之后过上了怎么的生活?
  20. 如何备份思科cisco路由器配置

热门文章

  1. udp linux 获取本机ip
  2. L2-033 简单计算器 (25 分)-PAT 团体程序设计天梯赛 GPLT
  3. L1-021. 重要的话说三遍-PAT团体程序设计天梯赛GPLT
  4. L1-004. 计算摄氏温度-PAT团体程序设计天梯赛GPLT
  5. python是一种代表简单主义思想的语言_setuptools-36.6.0
  6. linux中开启snmp协议
  7. 批量复制文件并改成有顺序的文件名
  8. bat命令运行java程序
  9. 2019最新k8s集群搭建教程 (centos k8s 搭建)
  10. Flask-----轻量级的框架,快速的搭建程序