ARP协议报文格式及ARP表

本文详细介绍了ARP(地址解析协议)的功能及其工作原理。包括ARP报文的格式、如何通过ARP请求和应答完成IP地址到MAC地址的映射,以及ARP映射表的管理方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自:《深入理解计算机网络》 王达著 机械工业出版社
相关知识链接
IPV4数据报头部格式请点击这里
IPv6数据报头部格式请点击这里
IPv4数据报的封装与解封装请点击这里
IPv4数据报的分段与重组请点击这里

ARP协议报文格式及ARP表

ARP(Address Resolution Protocal,地址解析协议)是将IP地址解析为以太网的MAC地址(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址还是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。

ARP报文格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。


ARP报文格式

  • 硬件类型:占两字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。
  • 上层协议类型:占两字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。
  • MAC地址长度:占一字节,标识MAC地址长度,以字节为单位,此处为6。
  • IP协议地址长度:占一字节,标识IP得知长度,以字节为单位,此处为4。
  • 操作类型:占2字节,指定本次ARP报文类型。1标识ARP请求报文,2标识ARP应答报文。
  • 源MAC地址:占6字节,标识发送设备的硬件地址。
  • 源IP地址:占4字节,标识发送方设备的IP地址。
  • 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。
  • 目的IP地址:占4字节,表示接受方的IP地址。

ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网帧头。


ARP帧格式

以太网帧头的三个字段说明

  • 目的MAC地址:占6字节,如果是ARP请求帧,因为它是一个广播帧,所以要填上广播MAC地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
  • 源MAC地址:占6字节,这是发送ARP帧的节点MAC地址。
  • 帧类型:占两字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号0x0806表示就可以了。

ARP映射表

无论是主机,还是交换机都会有一个用来缓存同一网段设备IP地址和MAC地址的ARP映射表,用于数据帧的转发。设备通过ARP解析到目的MAC之后,将会在自己的ARP映射表中增加IP地址到MAC地址的映射表,以用于后续到同一目的地数据帧的转发。ARP表项分为动态ARP表项和静态ARP表项。

动态ARP表项

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,也可以被静态ARP表项所覆盖。当到达老化时间或接口关闭时会删除相应的动态ARP表项。

静态ARP表项

静态ARP表项通过手工配置(通过对应设备的IP地址与MAC地址绑定命定进行)和维护。不会被老化,也不会被动态ARP表项覆盖。配置静态ARP表项可以增加通信的安全性,因为静态ARP可以限定和指定IP地址的设备通信时只使用指定的MAC地址(也就是我们通常所说的IP地址和MAC地址的绑定),此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间正常通信。静态ARP表项又分为短静态ARP表项和长静态ARP表项

短静态ARP表项

在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的相应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接受ARP响应报文的接口加入该静态表项中,之后就可以用于IP数据包的转发了。

长静态ARP表项

在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表所对应的VLAN(虚拟局域网)和出接口。也就是长静态ARP表项同事绑定了IP地址、MAC地址、VLAN和端口,可以直接用于报文转发。

### ARP 协议报文格式分析及工作原理理解 #### ARP 报文格式 ARP(Address Resolution Protocol)用于将 IP 地址解析为对应的物理(MAC)地址。其报文格式如下: | 字段 | 含义 | 示例值 | |--|-------------------------------------| | **硬件类型** | 示使用的硬件类型(例如以太网) | Ethernet (1) | | **协议类型** | 示要映射到的协议类型(通常是 IP 协议) | IP (0x0800) | | **硬件地址长度** | 指定硬件地址的字节数 | 6 | | **协议地址长度** | 指定协议地址的字节数 | 4 | | **操作码** | 指明是请求还是应答 | 请求 (1), 应答 (2) | | **发送方硬件地址** | 发送者的硬件地址(MAC 地址) | 4e:f4:ea:f3:7f:f5 | | **发送方协议地址** | 发送者的协议地址(IP 地址) | 192.168.56.126 | | **目标硬件地址** | 目标设备的硬件地址(初始通常为全 0) | 00:00:00:00:00:00 | | **目标协议地址** | 目标的协议地址(IP 地址) | 192.168.56.1 | #### ARP 工作原理 ARP 协议的工作流程可以分为以下几步: 1. **ARP 请求**: 当一台主机想要向另一台主机发送数据但只知道对方的 IP 地址而不知道 MAC 地址时,它会发送一个 ARP 请求广播报文。这个广播会被同一局域网内的所有设备接收到。 ```plaintext 操作码: 请求 (1) 发送方硬件地址: 4e:f4:ea:f3:7f:f5 发送方协议地址: 192.168.56.126 目标硬件地址: 00:00:00:00:00:00 目标协议地址: 192.168.56.1 ``` 2. **ARP 响应**: 接收到 ARP 请求的目标设备如果发现自己就是被询问的对象,则会回复一个单播的 ARP 响应报文,告知发起者它的 MAC 地址。 ```plaintext 操作码: 应答 (2) 发送方硬件地址: ea:1b:1e:3f:40:69 发送方协议地址: 192.168.56.1 目标硬件地址: 4e:f4:ea:f3:7f:f5 目标协议地址: 192.168.56.126 ``` 3. **更新 ARP 缓存**: 在接收到 ARP 响应后,源主机将其存储进本地的 ARP 缓存中,以便将来可以直接使用该映射关系而无需再次发出 ARP 请求。这提高了通信效率并减少了广播流量。 #### 文档中的具体实例 在文档的第 7 步中,通过 Wireshark 截取到了 ARP 请求响应的报文,具体如下: - **ARP 请求**: - 时间戳:`0.000000` - 来源 MAC 地址:`4e:f4:ea:f3:7f:f5` - 目的地 IP 地址:`192.168.56.1` - **ARP 响应**: - 时间戳:`0.000044463` - 来源 MAC 地址:`ea:1b:1e:3f:40:69` - 目的地 IP 地址:`192.168.56.126` 以上过程展示了 ARP 如何帮助主机确定其他设备的 MAC 地址,从而实现有效的二层通信。同时,通过观察 ARP 缓存的变化,可以看到 ARP 缓存是如何随着新的 ARP 交互动态更新的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值