热门标签 | 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 服务器的响应信息,则表示初始化失败。

 


推荐阅读
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细解释了华为ENSP模拟器中常用的命令,涵盖用户模式、系统模式、接口模式和地址池视图模式下的操作。这些命令对于进行计算机网络实验至关重要,帮助用户更好地理解和配置路由器及PC机的通信。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
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社区 版权所有