IP地址与MAC地址

要理解ARP协议的工作原理必须先理解IP地址MAC地址的区别,MAC地址是数据链路层和物理层使用的地址而IP地址是网络层和以上各层使用的地址是一种逻辑地址(IP地址使用软件实现的)如下图:

在发送数据时,数据从高层到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址。连接在通信链路上的设备(主机或路由器)在接收MAC帧时,根据是MAC帧首部的硬件地址。在数据链路层看不到隐藏在MAC帧中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。 

1.ARP地址解析协议

地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

2.基本功能

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程

3.ARP过程

假设同一局域网主机A和主机B,IP地址是192.168.1.150和192.168.0.151。下面是一个ping过程的实例,用这个实例来说明ARP协议的作用和在实际过程中的位置。其过程下图所示,会进行如下过程的步骤,步骤的编号在图中。

  • 步骤a:应用程序ping会判断发送的是主机名还是IP地址,调用函数 gethostbyname()解析主机名B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析。
  • 步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包。
  • 口步骤c:由于主机A和主机B在同一个局域网内,必须把目标主机的IP地址转换为48位的硬件地址,即调用ARP协议,在局域网内发送ARP请求广播,查找主机B的硬件地址。
  • 步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到合适的位置后,发送ARP应答到主机A。
  • 步骤e:发送ICMP数据包到主机B。
  • 步骤f:主机B接收到主机A的IMP包,发送响应包。
  • 步骤g:主机A接收到主机B的ICMP响应包。

4.ARP分组数据格式

以太网的地址解析协议ARP协议分组数据格式,如下图所示。ARP协议的实现方式是在以太网上做广播,查询目的IP地址,接收到ARP请求的主机响应请求方,,将本机=的MAC地址反馈给请求的主机。

ARP分组字段格式
  • 以太网头部部分的目的硬件地址源硬件地址,分别为以太网硬件的地址的发送方和接收方的硬件地址,例如MAC地址。当目的硬件地址为全1(即0 0xFF FF FF FF FF FF)的地址时,为广播帧,在以太网上的所有接口都要接收此帧数据。
  • 帧类型为两个字节长度,表示后面数据的类型。对于ARP请求应答,该字段为0x0806
  • 硬件类型表示硬件地址的类型,值为1表示以太网硬件地址。
  • 协议类型表示要映射的协议地址类型,值为0x0800表示询问IP地址。
  • 硬件地址长度,表示硬件地址以字节为单位的长度,对于ARP请求来说,硬件地址为以太网的MAC地址,值为6。
  • 协议地址长度,表示协议地址以字节为单位的长度,对于ARP请求来说,协议地址为IP地址,为32位,值为4。
  • 操作方式字段为本次操作的类型,可选方式如下表所示,ARP请求帧和ARP应答帧的区别,可用此字段的值不同来确定。

  • 余下的4个字段分别为发送方的硬件地址、发送方的IP地址、接收方的硬件地址、接收方的IP地址。
  • ARP请求应答的操作方式很简单,将接受到数据字段的发送方和接收方的值对调,将所有本机的硬件地址和IP地址的值填充到合适的发送方位置。
  • 在ARP操作中,有效数据的长度为28个字节,不足以太网定义的最小长度46字节长度,需要填充字节,填充字节最小长度为18个字节。

地址解析协议(ARP)相关推荐

  1. 地址解析协议 (ARP) 是什么

    地址解析协议 (ARP) 是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议. ARP是通过网络地址(例:IPv4)来定位MAC地址 (也称为乙太地址). ARP已经在 ...

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

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

  3. 计算机网络地址解析协议实验,计算机网络地址解析协议(ARP)实验报告.doc

    计算机网络地址解析协议(ARP)实验报告 实验目的: 1. 掌握ARP协议的报文格式 2. 掌握ARP协议的工作原理 3. 理解ARP高速缓存的作用 4. 掌握ARP请求和应答的实现方法 5. 掌握A ...

  4. 网络层地址解析协议ARP

    想了解地址解析协议ARP,首先要知道网络层IP地址和链路层MAC地址的区别. IP地址的特点是:IP地址往往固定在某一个区域(和路由器相关),且IP地址具有层次特点,取决于节点所连的那个子网:但是MA ...

  5. 图解地址解析协议ARP

    我们知道,网络层使用的是 IP 地址,而在实际网络的链路上传送数据帧时,最终还是必须使用链路层的 MAC 地址.所以,在链路上传送数据帧时只知道 IP 地址是不够的,我们还需要知道主机在网络中的有效 ...

  6. 地址解析协议ARP(计算机网络)

    目录 一.IP地址与物理地址 二.ARP 与 RARP 三.ARP表 四.ARP 的工作过程 五.ARP 高速缓存的作用 六.地址映射项目的生存时间 七.ARP 的作用范围 八.为什么不直接使用物理地 ...

  7. 地址解析协议ARP工作过程

    ARP工作过程 这是完整的以太网数据帧 .原始数据PDU协议数据单元(应用层)打上传输层头部之后叫数据段,再打上网络层头部后叫数据包,最后打上数据链路层头部和尾部就是数据帧. 在通信过程中,有必备四个 ...

  8. 地址解析协议 ARP

    一. ARP 简介 ARP 协议 英文名叫作:"Address Resolution Protocol"--地址解析协议.所谓"地址解析"就是主机在发送帧前将目 ...

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

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

  10. 【ARP地址解析协议(完整解析过程、ARP欺骗、免费ARP、ARP代理)】-20211125【下】

    目录 一.ARP地址解析协议 ARP地址解析协议:将IP地址解析为Mac地址 ARP地址解析过程 1)pc1首先会查询自身的ARP缓存表,是否存在目标ARP缓存条目. ARP请求报文(原理) 2)由于 ...

最新文章

  1. 用计算机写作ppt文库,[百度文库.ppt
  2. python公历转农历_Python如何实现阳历转阴历的方法分享
  3. OpenGL Shadow Mapping阴影贴图的实例
  4. javascript设计模式系列 - LukeLin - 博客园
  5. C++函数和类的封装
  6. c++扫雷游戏代码_C语言学习教程,用C语言编写扫雷游戏
  7. 深入学习c++--智能指针(二) weak_ptr(打破shared_ptr循环引用)
  8. LayaAir 文本 Text API 详解
  9. 易语言与stc89c52通信,51单片机激光雕刻机制作 含易语言上位机源码等资料
  10. 车流量计数、不同车型统计算法
  11. 小米note 3从miui12稳定版刷到开发版亲测可用的教程
  12. android webview软键盘监听删除键、回车键、其他键
  13. org.apache.kafka.clients.consumer.CommitFailedException
  14. 英语口语练习五十五之英语委婉提建议
  15. js template换行_D3.js实现文本的换行详解
  16. html内容页上一页下一页,帝国CMS内容页增加内容分页上一页标签功能!
  17. 神经网络模型文件后缀名,神经网络模型文件格式
  18. UOS Deepin 安装 flatpak
  19. NDK开发——Android Studio+CMake实现QQ变声效果
  20. 华为、TCL、大疆面试经历!32K高薪996和18K朝九晚五,我该怎么选?

热门文章

  1. 什么是数据库的存储过程?
  2. ad如何自动布线布单层_pcb单层板如何布线_pcb单层板自动布线设置
  3. MySQl:子查询和关联查询哪个效率高
  4. 整车CAN网络基本结构
  5. java框架难吗_java框架难学吗?怎样才能学好java框架?
  6. Nginx 412 Precondition Failed
  7. Topaz ReMask 5 for Mac(抠图神器)
  8. ESP32-C3入门教程 IoT篇⑤——阿里云 物联网平台 EspAliYun RGB LED 实战之设备生产流程
  9. ad18常用快捷键可以修改吗_AD18快捷键
  10. RHEL配置网卡vlan tag