一、什么是MAC地址
MAC地址(英语:Media Access Control Address),直译为媒体访问控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。
它是网络设备(如计算机、手机、路由器等)在物理层上的唯一身份标识符。它由48位二进制数组成,通常表示为12个十六进制数,每两个数用冒号或短横线隔开。MAC地址是由设备厂商预设的,无法修改,因此可以用来区分不同的网络设备。在局域网中,数据包的传输是根据MAC地址进行路由的。
二、什么是ARP协议
ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将IP地址转换成MAC地址,以便在网络中传输数据。它可以通过广播方式使网络中的所有主机都能够知道IP地址与MAC地址的对应关系,从而实现网络上的数据通信。
当主机需要与另一个主机通信时,它会首先向网络中广播一个ARP请求,询问该主机的MAC地址。接收该请求的主机会返回自己的MAC地址,以便发送方能够将数据发送到接收方。ARP协议是IPv4中非常重要的一种协议,它是实现网络通信的关键之一。(注意:ARP 只用于 IPv4 协议中,IPv6 协议使用的是 Neighbor Discovery Protocol,译为邻居发现协议,它被纳入 ICMPv6 中。)
简而言之,ARP 就是一种解决地址问题的协议,它以 IP 地址为线索,定位下一个应该接收数据分包的主机 MAC 地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的 MAC 地址。
三、ARP工作流程
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
- 第1步:根据主机A上的路由器内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
- 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
- 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
- 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
- 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
下面我们通过图片进一步理解一下:
四、ARP帧格式
1、MAC头部
前 14
个字节是 MAC(以太网)头部 ,其余部分由 ARP 协议定义。 ARP 帧的前 8
个字节是通用的,剩余部分用于将 IPv4 协议映射到 48
位的以太网地址。
首先让我们看看以太网头部,第一个字段是 DST
即目的地址 ,第二个字段是 SRC
即源地址 。这里需要注意一点,对于一个 ARP 请求来说,目的地址字段填充的是以太网地址 ff:ff:ff:ff:ff:ff
,即以太网广播地址,这样在同一个广播域中的每个接口都能收到该帧。第三个字段是长度或类型,此字段占据 2
字节大小,对于 ARP 请求或响应该字段的值一定为 0x0806
。
2、最后 4 个字段的类型和大小
接下来的 4 个字段指定了最后 4 个字段的类型和大小
(1)硬件类型字段:硬件地址类型。硬件地址常见的有 MAC 物理或者以太网地址,对于以太网,硬件类型字段值为 1
。
(2)协议类型字段:映射的协议地址类型。对于 IPv4 ,协议类型字段的值为 0x800
。
(3)硬件大小字段:硬件地址的字节数。对于以太网中使用 IPv4 地址的 ARP 请求或响应,硬件大小字段的值为 6
。
(4)协议大小字段:协议地址的字节数。对于以太网中使用 IPv4 地址的 ARP 请求或响应,协议大小字段的值为 4
。
(5)Op
字段:如果是 ARP 请求,Op = 1,ARP 应答 ,Op = 2,RARP 请求 Op = 3,RARP 应答,Op = 4。
3、发送方和目的的硬件地址和协议地址
接下来的字段指出了发送方和目的的硬件地址和协议地址。
(1)发送方硬件地址字段:发送方的以太网 MAC 地址。
(2)发送方协议地址字段:发送方的 IPv4 地址。
(3)目的硬件地址字段:目的以太网 MAC 地址。
(4)目的协议地址字段:目的IPv4 地址。
4、填充字段和FCS
五、ARP 的 4 种典型情况总结
1、发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
2、发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
3、发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
4、发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。