IP地址是用来通信的,但是和硬件地址是有区别的。物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上各层使用的地址。

发送数据时,数据从高层向下层传输,使用IP地址的IP数据报交给下层的数据链路层,就会被封装为MAC帧。IP数据报的首部存放着IP地址,包括源地址和目的地址。MAC帧的首部存放着物理地址,在数据链路层看不到数据报的IP地址。

在通信过程中,不管网络层使用什么协议,在实际网络的链路上传输数据必须使用硬件地址。

IP地址有32位,MAC地址有48位,它们之间不存在简单的映射关系,在网络中,经常会出现加入新主机,撤走主机,以及更换网卡,这些都会使主机的硬件地址发生改变,在主机中存放IP-MAC的映射表,应该要经常动态更新,实现起来很繁琐。

我们如何简便地实现IP地址到物理地址的转换呢,地址解析协议ARP很好地解决了上述问题。

首先,每个主机上都应该设有一个ARP高速缓存,存放着所在的局域网上的各主机IP地址和其物理地址的映射表。那么这些映射表是如何来的呢?

当主机A想向本局域网上的主机B发送IP数据报,那么先在ARP高速缓存中查找主机B的IP地址,如果有,就对应出主机B的硬件地址,将地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。

如果在ARP高速缓存中没有找到主机B的IP地址,有可能是主机B刚刚入网,或者主机A刚刚上电,高速缓存是空的。这个时候主机A就自动运行ARP,然后按照一定步骤来获取主机B的物理地址。

(1)ARP进程在本局域网上广播发送一个ARP分组请求。主要内容包括自己的物理地址和IP地址,以及主机B的IP地址。

(2)本局域网上的所有主机上运行的ARP进程都会收到这个ARP分组请求

(3)主机B在分组请求中看到自己的IP地址后,就向A发送ARP分组响应,写入自己的物理地址。并将A的IP地址和物理地址的映射写入自己的ARP缓存中,以便自己向主机A发送数据。其余所有的主机虽然收到但是不理睬A的这个分组请求。另外这个分组响应是普通的单播,即从一个源地址发送到一个目的地址。

(4)主机A收到B的分组响应后,将主机B的IP地址和MAC地址的映射写入自己的ARP高速缓存中

注意:ARP高速缓存中的映射表是有生存时间的,一般设为10-20分钟。超过生存时间就会被删除。那是因为,会出现其中一个主机的网卡坏了,立即更新了一块,这样该主机的硬件地址就变了,如果映射表没变的话,已经存储的其他主机还按照原来的物理地址来寻找它,自然就找不到了。有了生存时间,如果在高速缓存中找不到,再次广播就好了。

逆地址协议RARP是使只知道自己硬件地址的主机能够知道自己的IP地址。一般是无盘工作站,它都是只要运行ROM中的文件传送代码,就能用下行装载的方法从局域网的其他主机上得到所需的操作系统和TCP/IP通信软件,但这些软件中没有IP地址。要通过运行ROM中的RARP来获得IP地址

为了能使RARP工作,在局域网上至少要有一个主机充当RARP服务器,无盘工作站先向局域网发生RARP分组请求,并在此分组中给出自己的硬件地址。RARP服务器上有一个事先做好的从无盘工作站的硬件地址到IP地址的映射表,当收到RARP分组请求后,RARP服务器就从这映射表查出该无盘工作站的IP地址。然后写入RARP分组响应,发回给无盘工作站。无盘工作站用此方法获得自己的IP地址。

地址解析协议ARP与逆地址解析协议RARP的更多相关文章

  1. 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  2. (5)RARP:逆地址解析协议

    一.简介 无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的IP地址(在RARP应答中).感觉这个过程和上一章中 ...

  3. 《TCP/IP详解卷1:协议》——第5章 RARP:逆地址解析协议(转载)

    1.引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址. 网络上的每个系统都具有唯一的硬件地址,它是由网络接口生 ...

  4. TCP/IP具体解释学习笔记——地址解析协议ARP

    一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...

  5. 地址解析协议(ARP) 分析

    什么是ARP协议 ARP(A ddress R esolution P rotocol)- 地址解析协议 ,用于将IP地址解析为MAC地址.复杂来说,ARP用于32位IPv4地址和以太网的48位MAC ...

  6. 【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP

    第23章      RL-TCPnet之地址解析协议ARP 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家 ...

  7. <TCP/IP>地址解析协议ARP

    从前两章中有学到,网络层地址和链路层地址是由不同的,一个是物理地址,一个是IP地址.物理地址固定存储在网卡中,不会改变,而IP地址是可以网络管理员和用户自己分配的 在传统的IPv4网络中,一台A主机要 ...

  8. TCP/IP的排头兵――地址解析协议(ARP) (转载)

    转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...

  9. 2016.7.8 计算机网络复习要点第四章之地址解析协议ARP

    1.地址解析协议ARP:知道一个机器的IP地址,需要找到其相应的硬件地址:ARP协议的用途是为了从网络层使用的IP地址解析出在链路层使用的硬件地址: 2.由于是IP协议使用了ARP协议,因此通常就把A ...

随机推荐

  1. ObjectMapper将josn字符串转化为List

    一.利用ObjectMapper将json字符串转为List Student.java package objectmapper; import java.io.Serializable; publi ...

  2. 基于scrapy框架的分布式爬虫

    分布式 概念:可以使用多台电脑组件一个分布式机群,让其执行同一组程序,对同一组网络资源进行联合爬取. 原生的scrapy是无法实现分布式 调度器无法被共享 管道无法被共享 基于 scrapy+redi ...

  3. Py-re正则模块,log模块,config模块,哈希加密

    9.re正则表达式模块,用于字符串的模糊匹配 元字符: 第一:点为通配符 用.表示匹配除了换行符以外的所有字符 import re res=re.findall('a..x','adsxwassxdd ...

  4. try-catch 异常捕获学习

    #include <iostream> #include <string> #include <vector> #include <stdexcept> ...

  5. cookie中的domain和path

    div.example { background-color: rgba(229, 236, 243, 1); color: rgba(0, 0, 0, 1); padding: 0.5em; mar ...

  6. 从零搭建TypeScript与React开发环境

    前言 平时进行开发大多数是基于vue-cli或者create-react-app等官方或者公司内部搭建的脚手架.   我们业务仔做的最多就是npm i和npm run dev或者npm start,然 ...

  7. SpringMVC听课笔记(十:处理JSON: 使用HttpMessageConverter)

    1. 处理JSON 2. 原理 流程图 3. 看个应用吧 -- 上传 ①jsp ②handler -- 下载 ① jsp ② handler

  8. spark整合Phoenix相关案例

    spark 读取Phoenix hbase table表到 DataFrame的方式 Demo1: 方式一:spark read读取各数据库的通用方式 方式二:spark.load 方式三:phoen ...

  9. brew更换国内源

    来源:清华大学开源软件镜像站(https://mirror.tuna.tsinghua.edu.cn/help/homebrew/) 替换现有上游 1 # brew 程序本身,Homebrew/Lin ...

  10. 面向对象编程(封装、封装的意义、封装与扩展性、@property)

    1.封装之如何实现属性的隐藏 封装: __x=1 # 把数据属性隐藏 (如何实现隐藏) 类定义阶段 __开头发生了变形 __x --> _A__x特点: 1.在类外部无法直接:obj.__Att ...