热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP/IP详解卷一-第4、5章ARP协议和RARP协议

4.1引言在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址(硬件地址)。而在TCPIP协议中,网络层和传输
4.1 引言

       在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC 地址(硬件地址)。而在 TCP/IP 协议中,网络层和传输层只关心目标主机的 IP 地址。这就导致在以太网中使用 IP 协议时,数据链路层的以太网协议接到上层 IP 协议提供的数据中,只包含目的主机的 IP 地址。ARP是一种地址解析协议,是一个位于 TCP/IP协议栈中低层的协议,主要是负责将 IP地址解析为对应的 MAC 地址。ARP 协议只适用于局域网。另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的 MAC 地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过 ARP 协议获得的将不是目的主机的真实 MAC 地址,而是一台可以通往局域网外的路由器的 MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理。 

4.3 ARP高速缓存        ARP高效运行的关键是由于每个主机上都有一个 ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为 20分钟,起始时间从被创建时开始算起。

4.4 ARP 的分组格式

        报文格式如下图所示:其中操作类型:代表 ARP 数据包类型;0 表示 ARP 请求数据包,1 表示 ARP 应答数据包。

 

 4.5  ARP 工作过程

        局域网中每台主机都有一个ARP 高速缓存,这个缓存存放的是最近发起的 IP 地址到 MAC 地址的映射记录。ARP 高速缓存中的表项一般都要设置超时值,如果一段时间内没有与某主机通信,就将该主机对应的 IP 与 MAC 之间的映射关系去掉,下次在需要通信时,依然发送广播。

ARP的基本工作原理如下:

       每台主机都会根据以往在网络中与其他主机的通信,在自己的 ARP 缓存区(ARP Cache)中建立一个 ARP 列表,以表示网络中主机 IP 地址和 MAC 地址的对应关系。

       当源主机需要将一个数据包发送到目标主机时,会首先检查自己 ARP 列表中是否存在该包中所包含的目标主机 IP 地址对应的 MAC 地址。如果有,则直接将数据包发送到这个 MAC 地址主机上;如果没有,就向本地网段(局域网)发起一个 ARP 请求的广播包,查询此 IP 地址目标主机对应的 MAC 地址。此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址,以及目标主机的 IP 地址。

       网络中所有的主机在收到这个 ARP 请求后,会检查数据包中的目标 IP 地址是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将源端的MAC 地址和 IP 地址的对应表项添加到自己的 ARP 列表中。如果发现 ARP 表中已经存在该 IP 地址所对应的 MAC 地址表项信息,则将其覆盖,然后给源主机发送一个ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址主机。

       源主机在收到这个 ARP 响应数据包后,将得到的目标主机的IP 地址和 MAC 地址对应表项添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,则表示 ARP 查询失败。 

RARP 协议

       ARP 协议是根据 IP 地址找其对应的 MAC 地址,而 RARP 则是根据 MAC 地址找其对应 IP 地址,所以称之为"逆向 ARP"。具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取 IP 地址,然后即可直接用 ARP 协议找出与其对应的主机 MAC 地址。但是无盘机,如 X 终端或无盘工作站,启动时是通过 MAC 地址来寻址的,这时就需要通过 RARP 协议获取 IP 地址。

RARP 的基本工作原理如下:

       发送端发送一个本地的 RARP 广播包,在此广播包中声明自己的 MAC 地址,并且请求任何收到此请求的 RARP 服务器分配一个IP地址。

       本地网段上的 RARP 服务器收到此请求后,检查其 RARP 列表,查找该 MAC 地址对应的 IP 地址。如果存在,RARP 服务器就给源主机发送一个响应数据包,并将此 IP 地址提供给对方主机使用;如果不存在,RARP 服务器对此不做任何响应。

       源端在收到从 RARP 服务器来的响应信息后,利用得到的 IP 地址进行通信;如果一直没有收到 RARP 服务器的响应信息,则表示初始化失败。

 


推荐阅读
  • 校园监控项目整理
    1、项目步骤下面我们来举例说明一个监控改造项目,先说下背景,一栋一层小别院,业主要求在大门口、大厅、儿童房、厨房以及后门洗衣处增加监控。由 ... [详细]
  • netstat1.作用检查整个Linux网络状态。2.格式netstat[-acCeFghilMnNoprstuvVwx][-A][--ip]3.主要参数-a--all࿱ ... [详细]
  • openstack安装和使用
    前言本篇文章会介绍openstack的安装、openstack各组件的配置和功能、还会演示openstack云主机的创建流程,整篇文章花费一天时间完成, ... [详细]
  • 利用cacti添加mysql监控_cacti监控mysql  mysql复制
    监控mysqlmysql复制5.1.1主机配置1台cactiserver10.10.54.1593台msyqlservermaster:10.10.54.157sla ... [详细]
  • 1套接字发展史及发展套接字起源于20世纪70年代加利福尼亚大学伯克利分校版本的Unix,即人们所说的BSDUnix。因此,有时人们也把套接字称为“伯克利套接字&rdquo ... [详细]
  • Linux DNS
    libnss_files.solibnss_dnslibnss_ldap展现的就是一个配置文件etcnsswitch.conf?查看这个文件这个files就是通过libnss_fi ... [详细]
  • 如何提高工程编译速度
    点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~     文章首发  公众号——Pou光明公众号还在维护,大家莫慌~LinuxQt平台为例测试编译 ... [详细]
  • java大数据量调优(超赞值得收藏)
    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节: ... [详细]
  • 1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI参考模型的层次是什么?有7个OSI层 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了Redis管道事务Lua脚本对比相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 网络Cisco考试
    二、操作题(共80分)请将以下拓扑实验配置完毕,保存拓扑,建立一个文本文档,按照交换机-路由器1234的顺序,将每台设备的showrunning-config复制粘贴出来,将文本文 ... [详细]
  • Python 硬盘容量单位及网络速率单位换算
    目标:    了解常见数据单位和数据速率的换算关系。数据单位的换算: ... [详细]
  • 1、概述hdfs文件系统主要设计为了存储大文件的文件系统;如果有个TB级别的文件,我们该怎么存储呢?分布式文件系统未出现的时候࿰ ... [详细]
  • 低windows版本下安装高版本tensorflow
    1.直接通过pip安装,会出现dll问题。因此,需要在gith ... [详细]
  • oracle存储_Oracle存储(物理+逻辑)结构
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Oracle存储(物理+逻辑)结构相关的知识,希望对你有一定的参考价值。   ... [详细]
author-avatar
网上游走
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有