一、ARP 技术背景
1.1、网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须包含目的MAC地址。因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP协议来实现的。
1.2、ARP 报文格式
ARP报文分为ARP请求和ARP应答报文两种,报文长度28个字节,其中ARP报头是8个字节,包含硬件类型、协议类型、硬件地址长度、协议地址长度、操作代码5个字段。除去报头外,剩余20个字节分别表示源、目的MAC地址和IP地址。
硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | 操作代码 | 源MAC地址 | 源IP地址 | 目的MAC地址 | 目的IP地址 | |||
2 | 2 | 1 | 1 | 2 | 6 | 4 | 6 | 4 | |||
值为1表示以太网地址 | 0x0800表示IP地址 | 数值为6 | 数值为4 | 1表示请求报文,2表示应答报文 | 如果是ARP请求报文,MAC全为0 | ||||||
ARP首部 8字节 | ARP数据 20字节 |
1.3、ARP 报文的以太网封装格式
ARP是个独立的三层协议,并不需要IP协议封装,而是直接生成自己的报文,到达数据链路层后,由数据链路层协议进行封装,一般是以太网协议。封装的过程,就是在ARP报文的前面加上以太网帧头,再加上4字节的冗余校验码结尾,校验码用于检验数据传输是否出现损坏。
以太网帧头一共14个字节,包含目的MAC地址、源MAC地址、帧类型三个字段,如下所示:
以太网目的地址 | 以太网源地址 | 帧类型 | 硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | 操作代码 | 源MAC地址 | 源IP地址 | 目的MAC地址 | 目的IP地址 |
6 | 6 | 2 | 2 | 2 | 1 | 1 | 2 | 6 | 4 | 6 | 4 |
如果是ARP请求报文,该字段为广播MAC地址 | 0x0806表示是ARP协议 | 值为1表示以太网地址 | 0x0800表示IP地址 | 数值为6 | 数值为4 | 1表示请求报文,2表示应答报文 | 如果是ARP请求报文,MAC全为0 | ||||
以太网首部 14字节 | ARP首部 8字节 | ARP数据 20字节 |
1.4、以太网帧最小长度是64个字节,最长1518个字节。封装后的ARP帧,实际就是一个最小以太网帧,包含14个字节的以太网帧头,28个字节的ARP报文,一共是42个字节。再加上4个字节的冗余校验码,其余18个字节用0来填充,共计64个字节。
二、ARP 原理
2.1、ARP 工作过程:主机A要发送一个数据包给主机C之前,先要获取主机C的MAC地址
2.2、ARP 请求
主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机C的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机C)会对该请求进行处理
目的IP | 源IP | 目的MAC | 源MAC | 类型 |
10.0.0.3 | 10.0.0.1 | 00-00-00-00-00-00 | 00-01-02-03-04-AA | Request |
抓包
2.3、ARP 响应
主机C比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
目的IP | 源IP | 目的MAC | 源MAC | 类型 |
10.0.0.1 | 10.0.0.3 | 00-01-02-03-04-AA | 00-01-02-03-04-CC | Reply |
抓包
2.4、ARP 缓存
为了避免重复发送ARP请求,产生大量的广播包,每台主机都有一个ARP缓存列表,当源主机得到 ARP 响应后,将目标主机的 IP 地址和物理地址存入本机 ARP 缓存中,并保留一定时间。下次请求 MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。当缓存生存期结束后,才会再次发送ARP请求报文。
主机A>arp -a
Internet Address Physical Address Type
10.0.0.3 00-01-02-03-04-CC dynamic
主机C>arp -a
Internet Address Physical Address Type
10.0.0.1 00-01-02-03-04-AA dynamic
主机B>arp -a
Internet Address Physical Address Type
10.0.0.1 00-01-02-03-04-AA dynamic
标签:ARP,协议,字节,报文,地址,MAC,IP地址
From: https://blog.51cto.com/mshxuyi/6149126