首页 > 其他分享 >协议篇-深入解析以太网ARP协议

协议篇-深入解析以太网ARP协议

时间:2024-07-22 15:55:37浏览次数:16  
标签:ARP 协议 IP MAC 地址 主机 以太网

简介

        ARP是TCP/IP协议族中的一个重要协议,‌主要用于局域网内部,‌当主机或网络设备需要发送数据到另一个主机时,‌必须知道对方的网络层地址(‌即IP地址)‌。‌然而,‌仅有IP地址是不够的,‌因为IP数据报文必须封装成帧才能通过物理网络发送,‌因此发送站还需要知道接收站的物理地址。‌ARP协议就是用来实现这个功能的。

  ARP通信原理

        ARP 映射是指将 IP 地址和 MAC 地址映射起来,分为静态映射和动态映射。 静态映射指手动创建一张 ARP 表,把 IP 地址和 MAC 地址关联起来。手动绑定之后,源主机在通信 之前,就可以直接从 ARP 表中直接找到 IP 地址对应的 MAC 地址,但这样做有一定的局限性,因为 MAC 地址在有些设备上是可能变化的。

        当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个 ARP 请求报文,这个报 文包含了发送方的 MAC 地址和 IP 地址以及接收方的 IP 地址。因为发送方不知道接收方的物理地址,所 以这个查询分组会在网络层中进行广播,即 ARP 请求时发送的接收方物理地址为广播地址,用 48’hff_ff_ff_ff_ff_ff 表示。由于是MAC是广播地址,所有网络系统设备会接收到该ARP帧,如下图所示:

                                                     图1 ARP发送寻址请求

        主机A通过交换机向主机B、主机C、主机D发送ARP信息,其中ARP内容目的MAC是广播地址,所有主句会接收该ARP信息并解析,然后分析目的IP地址,目的地址与主机B重合,主机B做ARP回复。

        上面说到对于IP地址一致的主机B会返回ARP报文,该报文包含自己的MAC和IP信息,返回的ARP报文以单播的形式返回给主机A。详情如下图所示:

                                                图2 主机应答ARP报文

ARP协议

如下图所示为ARP协议包格式:

                                                        图3 ARP帧格式

该协议符合以太网帧协议格式,其中以太网帧头内容也是固定帧格式,帧格式如下表所示:

                                                        表1 以太网帧头详情

以太网帧头(14Byte)

目的MAC地址(6Byte)

源MAC地址(6Byte)

长度/类型(2Byte)

        前导码(Preamble):为了实现底层数据的正确阐述,物理层使用 7 个字节同步码(0 和 1 交替(55- 55-55-55-55-55-55))实现数据的同步。

        帧起始界定符(SFD,Start Frame Delimiter):使用 1 个字节的 SFD(固定值为 0xd5)来表示一帧的 开始,即后面紧跟着传输的就是以太网的帧头。

        目的 MAC 地址:即接收端物理 MAC 地址,占用 6 个字节。MAC 地址从应用上可分为单播地址、组 播地址和广播地址。单播地址:第一个字节的最低位为 0,比如 00-00-00-11-11-11,一般用于标志唯一的 设备;组播地址:第一个字节的最低位为 1,比如 01-00-00-11-11-11,一般用于标志同属一组的多个设 备;广播地址:所有 48bit 全为 1,即 FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备,ARP使用广播地址。

        源 MAC 地址:即发送端物理 MAC 地址,占用 6 个字节。

        长度/类型:0x0806 特指ARP 协议。

         帧检验序列(FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了 4 个字 节的循环冗余校验码(CRC 校验)来检测数据是否传输错误。CRC 数据校验从以太网帧头开始即不包含前导码和帧起始界定符。通用的 CRC 标准有 CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系 统中应用最广泛的是 CRC-32 标准。

        上面讲到ARP数据段固定长度为46Byte(以太网数据段最短帧长度),其中填充数据18Byte可以为任意值,一般填写0,另外28Byte固定长度数据包内容格式如下:

                                                             图4 ARP数据包格式

        硬件类型(Hardware type):硬件地址的类型,1 表示以太网地址。

        协议类型(Protocol type):要映射的协议地址类型,ARP 协议的上层协议为 IP 协议,因此该协议类 型为 IP 协议,其值为 0x0800。

        硬件地址长度(Hardware size):硬件地址(MAC 地址)的长度,以字节为单位。对于以太网上 IP 地址的 ARP 请求或者应答来说,该值为 6。

         协议地址长度(Protocol size):IP 地址的长度,以字节为单位。对于以太网上 IP 地址的 ARP 请求或 者应答来说,该值为 4。

        OP(Opcode):操作码,用于表示该数据包为 ARP 请求或者 ARP 应答。1 表示 ARP 请求,2 表示 ARP 应答。 源 MAC 地址:发送端的硬件地址。

        源 IP 地址:发送端的协议(IP)地址,如 192.168.1.102。

        目的 MAC 地址:接收端的硬件地址,在 ARP 请求时由于不知道接收端 MAC 地址,因此该字段为广 播地址,即 48’hff_ff_ff_ff_ff_ff。

        目的 IP 地址:接收端的协议(IP)地址,如 192.168.1.10。

       

        以上就是ARP详细介绍,如有疑问可以留言。

       

标签:ARP,协议,IP,MAC,地址,主机,以太网
From: https://blog.csdn.net/weixin_51418325/article/details/140604864

相关文章

  • 蓝牙H4传输层协议
    蓝牙几种不同接口的传输协议:H2/H4/H5/BCSP/SDIO及区别H2:基于USB的传输H4:基于五线UART(RX/TX/CTS/RTS/GND带硬件流控)的传输,最简单的传输方式,只在HCIrawdata前面加上一个type;H5:基于三线UART(RX/TX/GND)的传输,需要软件协议层加一个数据完整性校验机制;BCSP:基于UART的传输SD......
  • DH协议-迪菲-赫尔曼密钥交换协议
    DH算法即Diffie–Hellmankeyexchange-迪菲-赫尔曼密钥交换协议,是一种密钥交换的方法。主要用于TLS握手中安全的交换对称加密密钥。根据不同的算法,DH协议可以分为基于离散对数算法StaticDH:静态DH协议(服务端私钥固定)DHE:临时私钥DH协议(服务端私钥随机)基于ECC椭圆曲线......
  • HTTP协议解析
    HTTP协议解析详解HTTP(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。它是客户端和服务器之间进行请求和响应的标准协议。理解HTTP协议的解析过程对于开发WEB应用至关重要,因为它定义了客户端和服务器如何进行通信。1.HTTP协议的基本概......
  • 嵌入式C++、FreeRTOS、MySQL、Spring Boot和MQTT协议:智能零售系统详细流程介绍(代码示
    项目概述随着科技的发展,零售行业正经历着一场数字化转型。智能零售系统通过集成嵌入式技术和大数据分析,为商家提供了高效的运营管理工具。该系统的核心目标是提升顾客体验、优化库存管理、降低运营成本以及实现精准营销。本项目将结合多种技术栈,包括嵌入式硬件、嵌入式软件、......
  • 嵌入式C++、InfluxDB、Spark、MQTT协议、和Dash:树莓派集群物联网数据中心设计与实现(代
    1.项目概述随着物联网技术的快速发展,如何高效地收集、存储和分析海量IoT设备数据成为一个重要课题。本文介绍了一个基于树莓派集群搭建的小型物联网数据中心,实现了从数据采集到分析可视化的完整流程。该系统采用轻量级组件,适合资源受限的边缘计算环境。主要功能包括:通......
  • 网络基础 Modbus协议学习总结
    协议简介Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Modbus......
  • DNS/域名解析协议 and Telnet/远程控制
     DNS概述:我们日常上网访问服务器时(以百度为例)其实访问的是百度的IP地址(目前采用点分16进制进行表示-240e:83:205:5a:0:ff:b05f:346b),但由于IP地址实在不便记忆,因此我们通常使用便于记忆的域名(www.baidu.com)指代IP地址--域名与IP地址的关系类似于电话簿:IP对应号码,域名对......
  • 用Python实现Cmpp协议的教程
    引言&协议概述(CMPP)是中国移动为实现短信业务而制定的一种通信协议,全称叫做ChinaMobilePointtoPoint,用于在客户端(SP,ServiceProvider)和中国移动短信网关之间传输短消息,有时也叫做移动梦网短信业务。CMPP3.0是该协议的第三个版本,相比于前两个版本,它增加了对长短信的支持、优......
  • STM32H7基于STM32CubeMX的以太网示例
    本自述文件适用于STM32CubeIDE版本1.9.0和STM32CubeH7版本1.10.0。对于较旧的工具版本,请参阅存储库中的此自述文件的较旧版本基于LwIP和FreeRTOS的简单以太网示例,运行在STNucleo和Discovery板上。这些例子附在ST社区的FAQ文章中。下面也提供了同样的步骤#特性*固定IP地址192......
  • STM32H7基于STM32CubeMX的以太网示例
    本自述文件适用于STM32CubeIDE版本1.9.0和STM32CubeH7版本1.10.0。对于较旧的工具版本,请参阅存储库中的此自述文件的较旧版本基于LwIP和FreeRTOS的简单以太网示例,运行在STNucleo和Discovery板上。这些例子附在ST社区的FAQ文章中。下面也提供了同样的步骤#特性*固定IP地址192......