【计算机网络学习笔记09】ARP地址解析协议

ARP地址解析协议

在实际应用中,我们常会遇见这样的问题:已知一个机器(主机或路由器)的IP地址,需要找出其相应的硬件,这时就需要使用到地址地址解析协议(Address Resolution Protcol,ARP)。

1 ARP数据包格式

图1 ARP数据包格式
下面介绍 ARP报文中各字段的含义。
(1)硬件地址类型。指明硬件的类型,一般是以太网,值为1。
(2)协议类型。指明发送者映射到数据链路标识的网络层协议类型,一般为P协议,对应值为0x0800。
(3)硬件地址长度。也就是MAC地址的长度,单位是字节。
(4)协议地址长度。网络层地址即IP地址的长度,单位是字节
(5)操作代码。指定了ARP报文的类型,包括ARP Request和 ARP Reply。
(6)源MAC地址和源IP地址。指的是发送ARP报文的设备的MAC地址和IP地址。
(7)目的 MAC地址和目的IP地址。目的MAC地址指的是接收者MAC地址,在ARP Request报文中,该字段值为0;目的IP地址指的是指接收者的IP地址。

2 ARP协议的要点

众所周知,网络层使用的是IP地址,但实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。此外,为了解决在一个网络上可能经常会有新的主机加入、撤走,或更换网络适配器也会使主机的硬件地址改变的问题,在主机ARP高速缓存中设有一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。
ARP高速缓存映射表的建立采用的是自学习的方法,学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中,一般ARP表项的默认存放时间为180s。

3 ARP工作过程

① 源主机和目的主机处在同一局域网络中的情况,如图2所示。


图2 ARP的工作过程

假设PC2为刚接入的主机,PC1的ARP缓存表中没有PC2的MAC地址。在这种情况下,主机 PC1就自动运行 ARP,然后按以下步骤找出主机PC2的硬件地址。
(1) ARP进程在本局域网上广播发送一个ARP Request帧进行请求。如图3所示为被封装的ARP Request帧的具体内容,此时该报文会在整个网络上传播,包括所有主机和网关都会收到此报文。

图3 被封装的ARP Request帧的具体内容

(2)网关会阻止该报文发送ARP Request 报文到其他局域网中去,其他主机会检查所接收的报文目的协议地址字段与自身的IP地址是否匹配,如果不匹配,则直接丢弃。如果匹配,如 PC2,则首先将ARP报文中的源MAC地址和源IP地址信息写入到自己的ARP缓存映射表中,然后通过ARP Reply报文进行响应。ARP Reply被封装成帧的内容如图4所示,封装后的帧和ARP Reply 报文的源地址信息是PC2的,而目的地址信息是 PC1的,同时ARP Reply报文中的操作代码被设置为Reply。ARP Reply报文通过单播传送。

图4 被封装的ARP Reply帧的具体内容

PC1收到ARP Reply后,会检查ARP报文中的目的MAC地址是否和自己的MAC地址匹配,如果匹配,则首先将源MAC地址和源IP地址写入自己的ARP缓存映射表中。

② 源主机和目的主机处在不同局域网络中的情况,如图5所示


图5

(1)发送方是主机PC1,要把IP数据报发送到另一个网络上的一台主机PC2。这时PC1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。
(2)发送方是路由器R1,要把IP数据报转发到与R1连接在同一个网络(网2)上的主机PC2。这时R1发送ARP请求分组(在网2上广播),找到目的主机PC2的硬件地址。
虽然在网络链路上传送的帧最终是按照硬件地址来找到目的主机的,但是我们仍然要用到抽象的IP地址,而不是直接使用硬件地址进行通信。其原因就是在全世界上存在各式各样的网络,它们使用不同硬件地址,要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但IP编址把这个复杂问题解决了。

4 免费ARP和代理ARP

免费ARP
当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查其所分配的IP地址在网络上是否唯一,以避免地址冲突。
代理ARP
代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。


作者: 郑伟钦
排版: 胖虎
初审: 正山小种
复审: 二月二

更多视频课程请访问 “CSDN 正月十六工作室讲师学院首页

【计算机网络学习笔记09】ARP地址解析协议相关推荐

  1. 【计算机网络学习笔记07】PPP协议、IP编址、NAT技术

    [计算机网络学习笔记07]PPP协议.IP编址.NAT技术 一.PPP协议 是TCP/IP网络中最重要的点到点的数据链路层协议. 1 PPP协议的组成 1)链路控制协议:建立并维护数据链路连接(身份验 ...

  2. 【计算机网络学习笔记】(汇总目录)

    计算机网络学习笔记(汇总目录) 文章目录 点击以下标题,跳转到对应章节的详细讲解 [计算机网络学习笔记01]计算机网络概述(上) [计算机网络学习笔记02]计算机网络概述(中) [计算机网络学习笔记0 ...

  3. 计算机网络学习笔记(2. 什么是网络协议)

    计算机网络学习笔记(2. 什么是网络协议) 1. 协议是计算机网络有序运行的重要保证 硬件(主机,路由器,通信链路等)是计算机网络的基础 计算机网络中的数据交换必须遵守事先约定好的规则 如同交通系统 ...

  4. 【计算机网络学习笔记06】以太网帧结构、HDLC协议

    [计算机网络学习笔记06]以太网帧结构.HDLC协议 一.以太网帧结构 1.1 两种帧格式 1)Ethernet_II帧格式 2)IEEE802.3帧格式 1.2 帧的3种发送方式 1)单播: 帧从单 ...

  5. 【计算机网络学习笔记】计算机网络

    计算机网络学习笔记 第一章 计算机网络概述 1. 计算机网络概述 1.1 计算机网络的概念 1.2 计算机网络的组成 1.3 计算机网络的功能 1.4 计算机网络的分类 1.5 计算机网络的标准化工作 ...

  6. 计算机网络学习笔记(详尽版)

    计算机网络学习笔记 计算机网络 第一章 定义和特点 网络 定义 功能 特点 组成 类别 性能 结构 本章重要概念 第二章 物理层 基本概念和标准 数据通信基础知识 物理层下的传输媒体 引导型传输媒体 ...

  7. 片偏移怎么计算_计算机网络学习笔记(四)之网络层

    点击蓝字关注我吧 越努力越幸运!!! 1 网络层的功能 1.1异构网络互联 网络的互联:指将两个以上的计算机网络,通过一定的方法, 用一种或多种通信处理设备(即中间设备)相互联接起来,以构成更大的网络 ...

  8. 计算机网络学习笔记---第一章

    计算机网络学习笔记 第一章 文章目录 计算机网络学习笔记 第一章 前言 一.计算机网络的概念 (一)计算机网络的功能 1.数据通信(连通性) 2.资源共享(硬件 软件 数据) 3.分布式处理 (Had ...

  9. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

最新文章

  1. SharpSvn使用说明
  2. golang 常量简介
  3. 【VS开发】C++线程安全
  4. Class.getResource()、ClassLoader.getResource()和this.class.getClassLoader()解析
  5. 红队中易被攻击的一些重点系统漏洞整理
  6. 无法删除sqlserver的jobs的方式
  7. 产品迭代的节奏怎样适应需求的变化?
  8. CentOS7 安装RabbitMQ 亲测(编写中,有大神请帮忙指点下文中遇到的问题,谢谢)...
  9. StringBufferStringBuilder 源码详解
  10. 工程测量(地形图测量)
  11. 面试题(两个栈实现一个队列和两个队列实现一个栈)
  12. Labview与三菱PLC通讯 (2)
  13. ping: www.baidu.com: 域名解析暂时失败 简单解决
  14. HeadFirstC笔记_7 高级函数:发挥函数的极限
  15. cocos creator(12)
  16. 计算机毕业设计Java城市出行行程智能推荐系统(源码+系统+mysql数据库+lw文档)
  17. 第14节:lstm原理及numpy
  18. 前端利用高德实时定位_web使用高德地图
  19. 怎么用CDR将图片转换为JPG格式
  20. 信息平台和数据科学家的兴起

热门文章

  1. ROS学习笔记(1)6轴机器臂的URDF文件的生成并用rviz和moveit显示
  2. “阿里新零售技术”天团闪耀硅谷 淘系技术推动线上新零售业产业革命
  3. 100内奇数之和流程图_四步入门包装开发之工艺篇
  4. Java 统计输入字符串中’e’字符出现的频数
  5. kali 抓取无线数据包
  6. 如何搭建普通人的自由现金流模型
  7. Android学习笔记 56. TabLayout 选项卡布局
  8. dataTable修改后数据刷新(数据重载)
  9. 使用Webupload实现异步上传图片
  10. 有一个排好序的数列,数列中只有一个数只出现1次,其余每个数均出现了两次,设计出一个算法,找出那个只出现了一次的数