欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
地址解析协议(ARP)的核心功能,就是将32位的IP地址解析为48位的MAC地址,以便在数据链路层进行通信。一个ARP报文会被完整封装在以太网帧的数据部分中,而ARP请求和响应则通过帧内的不同标识来区分。
下图清晰地展示了ARP请求和响应这两种帧的结构组成:
ARP报文详解 (28字节)
这是ARP协议的核心部分,请求和响应共享相同的28字节固定头部结构-。
硬件类型 (Hardware Type, 2字节)
该字段指明帧所要传输的硬件接口类型。对于以太网,该值为1-。
协议类型 (Protocol Type, 2字节)
该字段指明发送方需要映射的协议地址类型。对于IPv4地址,该值为0x0800。
硬件地址长度 (Hardware Address Length, 1字节)
该字段指明硬件地址(MAC地址)的长度,对于以太网,该值为6个字节-。
协议地址长度 (Protocol Address Length, 1字节)
该字段指明协议地址(IP地址)的长度,对于IPv4,该值为4个字节-。
操作码 (Operation Code, 2字节)
该字段是区分请求和响应的关键,指明ARP报文的类型-:
值为1:表示这是一个 ARP请求 (ARP Request)
值为2:表示这是一个 ARP响应 (ARP Reply)
发送端MAC地址 (Sender MAC Address, 6字节)
该字段是发起请求或响应的主机的MAC地址-。
发送端IP地址 (Sender IP Address, 4字节)
该字段是发起请求或响应的主机的IP地址-。
目标MAC地址 (Target MAC Address, 6字节)
该字段是目的主机的MAC地址,是ARP协议要解析的目标。它在请求和响应中的填充内容不同-。
目标IP地址 (Target IP Address, 4字节)
该字段是目的主机的IP地址,是发起请求的主机希望通信的IP-。
以太网帧首部 (14字节)
每个ARP报文被封装在一个以太网帧中,该帧首部的信息指导其在物理网络上的传输。
目的MAC地址 (Destination MAC Address, 6字节)
这是数据帧的接收方地址,是区分请求和响应帧发送方式的关键:
ARP请求: 该字段是广播地址,即FF:FF:FF:FF:FF:FF。
ARP响应: 该字段是单播地址,即请求方的MAC地址-。
源MAC地址 (Source MAC Address, 6字节)
发送方主机的MAC地址。无论是请求帧还是响应帧,该字段都是发送方自己的MAC地址-。
帧类型 (EtherType, 2字节)
该字段指明帧内封装的上层协议类型,ARP协议的值为0x0806-。
示例分析:完整通信流程
假设主机A(IP: 192.168.1.1,MAC: AA:AA:AA:AA:AA:AA)需要与主机B(IP: 192.168.1.2)通信,但本地ARP缓存中没有B的MAC地址。
A发送ARP请求(请求):
以太网帧头:目的MAC = FF:FF:FF:FF:FF:FF(广播),源MAC = AA:AA:AA:AA:AA:AA。
ARP报文:操作码 = 1(请求),发送端MAC = AA:AA:AA:AA:AA:AA,发送端IP = 192.168.1.1,目标MAC = 00:00:00:00:00:00(填充0),目标IP = 192.168.1.2-。
网络内所有主机接收请求:网络内的所有主机都收到此广播帧。
主机B发现目标IP 192.168.1.2与自己匹配,准备响应。
B向A发送ARP响应(响应):
以太网帧头:目的MAC = AA:AA:AA:AA:AA:AA(单播给A),源MAC = BB:BB:BB:BB:BB:BB。
ARP报文:操作码 = 2(响应),发送端MAC = BB:BB:BB:BB:BB:BB,发送端IP = 192.168.1.2,目标MAC = AA:AA:AA:AA:AA:AA(A的MAC),目标IP = 192.168.1.1-。
A接收并缓存:
主机A收到响应,将主机B的IP与MAC地址映射关系存入ARP缓存中,即可开始通信。-1
补充说明
帧填充:完整的ARP帧长度为42字节(14字节以太网头 + 28字节ARP数据)。由于以太网最小帧长为64字节(包含4字节的FCS校验),因此实际发送时会在ARP数据之后添加至少18字节的填充数据(PAD:18个字节的0即可) 以满足最小长度要求-
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
237