【计算机网络】详解网络层(二)ARP和RARP
ARP
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送。因此发送方还需要有接收方的物理地址,也就需要一个从IP地址到物理地址的映射,ARP就是事先这么功能的协议。
1、ARP报文格式
ARP是一个独立的三层协议,所以ARP报文在此数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议进行封装。ARP报文分为ARP请求和ARP应答报文两种,二者格式可以统一用下图表示:
硬件类型,表示ARP报文可以在哪种类型的网络上传输
上层协议类型,表示硬件地址要映射的协议地址类型
操作类型,指定本次ARP报文类型(请求/应答)
ARP报文并不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所有当ARP报文传输到数据链路层后,需要再次进行封装。在以太网中,ARP传输到数据链路层后会封装成ARP帧。其格式如下图所示
可以看出,其帧封装都是一样的,网络层的直接作为数据链路层帧的数据部分。
目的MAC地址,如果是ARP请求帧,因为它是一个广播帧(后面会介绍),所以要填上广播MAC地址——FF-FF-FF-FF,其目标为网络上的所有主机
源MAC地址,发送ARP帧的节点MAC地址
帧类型,标识帧封装的上层协议
2、ARP映射表
无论是主机,还是交换机都会有一个用来缓存同一网段设备IP地址和MAC地址的ARP映射表,用于数据帧的转发。设备通过ARP解析到目的MAC地址后,将会在自己的ARP映射表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地数据帧的转发。
ARP表项分为动态ARP表项和静态ARP表型。
3*、ARP地址解析原理
- 主机A首先查看自己的ARP表(一个IP地址与MAC地址的映射表),确定其中是否包含有主机B的IP地址和对应的MAC地址。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址对IP数据报进行帧封装,并将数据报发送给主机B。类似于计算机组成中高速缓存的命中。
- 如果主机A在ARP表中找不到对应的MAC地址,则先缓存该数据报文,然后以广播方式(参见数据链路层物理地址寻址部分,目的MAC地址为广播MAC地址——FFFFFF,任一同网段的节点均可收到,该网络上的所有主机)发送一个ARP请求报文,ARP请求报文中的发送端(源)IP地址和发送端MAC地址分别为主机A的IP地址和MAC地址,目的IP地址和目的MAC地址为主机B的IP地址和全0的MAC地址。ARP请求报文是以广播的形式发送,所以该网段上的所有主机都会接收到这个请求包,但只有其IP地址与目的IP地址一致的主机B会对该请求进行处理。
- 主机B将ARP请求报文中的发送端(主机A)的IP地址和MAC地址存入自己的ARP表中,然后以单播方式(一对一,点对点形式)向主机A发送一个ARP响应报文,应答报文中就包含了自己的MAC地址,即原来请求报文中要请求的MAC地址。
- 主机A在收到来自主机B的ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将原来缓存的IP数据报再次修改(在目的MAC地址子弹填上已获得的主机B的的MAC地址)后发送出去。
- 如果主机A不知道网关(一个网络连接另一个网络的关口)的MAC地址(即主机A的ARP表没有命中),则主机A现在本网段中发出一个ARP请求广播报文,ARP请求报文中的目的IP地址为网关IP地址,代表其目的就是想获得网关的MAC地址。如果主机A已知网关MAC地址,则略过此步。
- 如果网关的ARP表(网关也有ARP映射表项)中已有主机B对应的MAC地址,则网关直接将在来自主机A的报文中的目的MAC地址字段填上主机B的MAC地址后转发给主机B。
- 如果网关ARP中没有,那么网关会再次向主机B所在网段发送ARP广播请求报文,此时目的IP地址为主机B的IP地址,其后续处理同前。
这里说一下网关,网关实质上是一个网络通向其他网络的IP地址,是一个逻辑概念,定义网络的边界。路由器是物理设备,除具备网关功能外,还具备路由功能(以后再说)。
比如说只有两个网络,网络A(192.168.1.1~192.168.1.254)和网络B(192.168.2.1`192.168.2.254),子网掩码为255.255.255.0。可以看出这两个网络属于不同的两个网络,不能直接进行通信。即使连接在同一台交换机上,TCP/IP协议也会根据子网掩码判定两个网络中的主机处于不同网络里,不能进行网络间通信。(交换机是在物理层上工作,按MAC地址访问,所以也称二层交换机,两个子网间不能互访,除非是具备路由功能和VLAN功能的三层交换机)。这种情况下则需要通过网关进行通信。因为只有两个网络,也就一条连接路径,所以只需要网关就可以。
但如果是多个网络结构,形成一个网状,即两个网络之间可以有多条访问路径,这样则需要网关和路由器两种设备,不过现在路由器已经继承了网关的功能,所以只需要一个路由器即可,利用路由器的路由功能选择最佳路径进行通信。
RARP
RARP分组的格式与ARP分组基本一致。RARP为逆地址解析协议,作用与ARP相反,用于将MAC地址转换为IP地址。
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址,但是无盘机,如X中断或无盘工作站,则需要采用其他方法来获得IP地址。
总得说来就是,网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。
RARP的工作过程如下:
- 网络上每台设备都会有一个独一无二的硬件地址,一般是由设备厂商分配的MAC地址。发送主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求任何收到此请求的RARP服务器分配一个IP地址;
- RARP服务器收到此请求后,检查其RARP表项,查找该MAC地址对应的IP地址;
- 如果存在,RARP服务器就给发送主机回复一个响应数据包,并将此IP地址提供给对方主机使用;
- 如果不存在,RARP服务器对此不做任何的响应;
- 发送主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯,如果一直没有收到RARP服务器的响应消息,表示初始化失败。
【计算机网络】详解网络层(二)ARP和RARP的更多相关文章
- 【转】logback logback.xml常用配置详解(二)<appender>
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- OutputCache属性详解(二)一 Location
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- 【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
- 安卓集成发布详解(二)gradle
转自:http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/ 安卓集成发布详解(二) 15 Ju ...
- ViewPager 详解(二)---详解四大函数
前言:上篇中我们讲解了如何快速实现了一个滑动页面,但问题在于,PageAdapter必须要重写的四个函数,它们都各有什么意义,在上节的函数内部为什么要这么实现,下面我们就结合Android的API说明 ...
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html 一. 概况 本文接着 iOS 开 ...
- Tomcat--各个目录详解(二)
Tomcat整体目录: 一.bin文件(存放启动和关闭tomcat脚本) 其中.bat和.sh文件很多都是成对出现的,作用是一样的,一个是Windows的,一个是Linux. ① startup文件: ...
随机推荐
- OSPF详解
OSPF 详解 (1) [此博文包含图片] (2013-02-04 18:02:33) 转载 ▼ 标签: 端的 第二 以太 第一个 正在 目录 序言 初学乍练 循序渐进学习OSPF 朱皓 入门之前 了 ...
- Java—集合工具类
集合中的元素工具类排序: Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作,还提供了将集合对象置为不可变.对 ...
- UNP学习总结(一)
本文主要为对UNP第五章部分内容的实验和总结. UNP第五章对一个echo服务器和客户端在各种连接状态下的表现做了详细的分析,包括了: 正常启动和终止: accept返回前连接中止: 服务器进程终止: ...
- DNS隧道工具iodine
DNS隧道工具iodine 在受限制的网络中,如果DNS请求没有被限制,就可以通过DNS请求建立隧道而突破网络限制.iodine是Kali Linux提供的一款DNS隧道工具.该工具分为服务器端i ...
- web客户端安全之跨站脚本攻击
跨站脚本攻击,Cross-site script,是Web程序中最常见的漏洞.为了和CSS层叠样式表区分开,所以取名为 XSS. 一.XSS的重点 跨域和客户端执行. 二.XSS的原理 攻击者向有XS ...
- 「HNOI2018」毒瘤
「HNOI2018」毒瘤 解题思路 先考虑只有一棵树的情况,经典独立集计数. \[ dp[u][0]=\prod (dp[v][0]+dp[v][1]) \\ dp[u][1]=\prod dp[v] ...
- [CodeChef-QTREE]Queries on tree again!
题目大意: 给定一个环长为奇数的带权基环树,支持以下两种操作: 1.两点间最短路取反: 2.两点间最短路求最大子段和. 思路: 首先找出环,然后对每一个外向树轻重链剖分, 用线段树维护每一个区间的和. ...
- hdu 5301 Buildings (2015多校第二场第2题) 简单模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5301 题意:给你一个n*m的矩形,可以分成n*m个1*1的小矩形,再给你一个坐标(x,y),表示黑格子 ...
- 【对比分析二】Web Storage和cookie的区别
1) 存储空间不同. a) Web Storage能提供5MB的存储空间(不同浏览器的提供的空间不同).Cookie仅4KB. b) Web Storage每个域(包括子域)有独立的存储空间,各 ...
- 设置ubuntu 终端显示路径长度
~/.bashrc 这个文件记录了用户终端配置. 打开~/.bashrc 这个文件 $: sudo vim ~/.bashrc 找到 将蓝色的w由小写改成大写,可以表示只显示当前目录名称.