tcp/ip学习之3: ARP协议之ARP公告

tcp/ip学习之3: ARP协议之ARP公告

在做项目中测试发现,当我们设备每次启动时,使用wireshare工具进行抓包,可以看到如下报文:

从报文协议上容易发现是个ARP数据包,而且后面还显示ARP Announcement for 192.168.1.2。接下来我们就谈谈ARP协议。

1. ARP协议是什么

ARP(Address Resolution Protocol,地址解析协议)是网络层协议(第三层),用于将网络层的IP地址解析为链路层的MAC地址。它是网络通信中非常重要的一个协议,确保了数据包能够在局域网(LAN)中正确地从源设备传输到目标设备。

ARP 的主要功能

IP 地址到 MAC 地址的解析:

在以太网等局域网中,设备之间通过 MAC 地址进行通信。当设备需要发送数据包到另一个设备时,它需要知道目标设备的 MAC 地址。

如果设备只知道目标设备的 IP 地址,而不知道其 MAC 地址,它会使用 ARP 协议来查询目标设备的 MAC 地址。

动态解析:

ARP 是动态的,这意味着设备不需要预先知道目标设备的 MAC 地址。它可以通过发送 ARP 请求来获取目标设备的 MAC 地址。

ARP 请求是一个广播消息,发送到整个局域网中的所有设备。目标设备会响应一个 ARP 响应,告知其 MAC 地址。

缓存机制:

为了提高效率,设备会将解析到的 IP 地址和 MAC 地址的映射关系存储在本地的 ARP 缓存表中。

当设备再次需要与同一目标设备通信时,它可以直接从 ARP 缓存表中获取 MAC 地址,而无需再次发送 ARP 请求。

说了这么多,其实我只需要记住: ARP的主要功能是将IP地址解析为链路层的MAC地址。 那ARP公告又是什么东东呢?

2. ARP公告(ARP Announcement)

1. ARP公告

ARP公告是一种特殊的ARP消息,用于向网络中的其他设备宣告某个IP地址与特定MAC地址的映射关系。它通常包含以下内容:

发送方IP地址:这是设备正在宣告的IP地址(例如192.168.1.2)。

发送方MAC地址:这是设备的物理地址(MAC地址)。

目的IP地址:通常与发送方IP地址相同(即192.168.1.2)。

目的MAC地址:通常是广播地址(FF:FF:FF:FF:FF:FF),表示消息是广播给网络中的所有设备的。

2. ARP公告的常见场景

ARP公告通常出现在以下几种场景中:

(1)设备启动时

当设备(如计算机、路由器等)启动时,它会发送一个ARP公告,以告知网络中的其他设备它的IP地址和MAC地址。这有助于更新其他设备的ARP缓存,确保网络通信的准确性。

(2)IP地址冲突检测

设备可能会发送ARP公告来检测网络中是否存在其他设备使用相同的IP地址。如果设备收到一个ARP公告,而该公告中的IP地址与自己的IP地址相同,但MAC地址不同,这表明存在IP地址冲突。设备通常会记录冲突信息,并可能尝试重新分配IP地址。

(3)动态IP地址分配

当设备通过DHCP(动态主机配置协议)获得一个新的IP地址时,它会发送一个ARP公告,以确保网络中的其他设备知道新的IP地址与MAC地址的映射关系。

(4)网络拓扑变化

当网络中的设备(如路由器、交换机等)重新启动或配置发生变化时,设备可能会发送ARP公告,以更新网络中的ARP缓存。

3. ARP公告的作用

ARP公告的主要作用是:

更新ARP缓存:确保网络中的其他设备的ARP缓存中包含最新的IP地址与MAC地址的映射关系。

检测IP地址冲突:帮助设备检测是否存在其他设备使用相同的IP地址,从而避免通信冲突。

优化网络通信:通过主动更新ARP缓存,减少因ARP缓存过期或错误而导致的通信问题。

终于搞清楚了。抓包工具wireshare抓取这个包是这个意思:设备启动时,设备在向网络中报到,宣告自己的IP和MAC地址,即表示设在向网络中的其他设备宣告其IP地址和MAC地址的映射关系。这种行为是完全正常的,是ARP协议设计的一部分,用于确保网络中的IP地址分配是唯一的,并且设备的网络配置是正确的。这种行为也称为“Gratuitous ARP”(免费ARP)。

个人理解: ARP公告和正常的ARP请求/响应是有点差异的(可以这样认为,ARP公告就是设备给自己发送ARP请求,而设备自己早就知道自己的IP和MAC了,所以就没必要做响应了。这是种非常特别的ARP请求/响应。 当然,如果网络出现IP冲突等情况另论了)。