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

简介

        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’h00_00_00_00_00_00。

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

       

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

       

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值