ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将 IP 地址转换为 MAC 地址。
在以太网中,数据帧通过 MAC 地址进行传输,而 IP 地址则用于网络层的路由,因此在局域网中发送数据前,需要将目标 IP 地址解析为对应的 MAC 地址。
ARP 正是用于完成这一任务的。
一、ARP 协议的工作原理
①、ARP 请求(ARP Request)
当一台主机需要向同一局域网内的另一台主机发送数据时,它首先需要知道目标主机的 MAC 地址。如果源主机只知道目标主机的 IP 地址但不知道其 MAC 地址,它会发出一个 ARP 请求。
广播发送:ARP 请求是以广播方式发送的,数据帧的目标 MAC 地址设置为全 F(即 FF:FF:FF:FF:FF:FF),表示网络中所有设备都能接收到这个请求。
请求内容:ARP 请求帧中包含了源主机的 IP 地址和 MAC 地址,以及目标主机的 IP 地址。此时,目标主机的 MAC 地址是未知的。
②、ARP 回复(ARP Reply)
局域网内所有的设备都会接收到这个广播请求,但只有目标主机会做出响应。
单播回复:目标主机在确认该 ARP 请求中包含的 IP 地址与自己的 IP 地址匹配后,会发送一个 ARP 回复。这是一个单播消息,直接发送给发出请求的源主机。
回复内容:ARP 回复中包含了目标主机的 MAC 地址,以及请求中对应的 IP 地址。
③、更新 ARP 缓存
源主机更新缓存:源主机在接收到 ARP 回复后,会将目标主机的 IP 地址与 MAC 地址的对应关系存入本地的 ARP 缓存中。之后,源主机可以直接使用这个 MAC 地址进行数据传输,而无需再次发送 ARP 请求。
目标主机更新缓存:同时,目标主机也可以将源主机的 IP 地址和 MAC 地址对存入它自己的 ARP 缓存中,以备将来使用。
④、数据传输
在获得目标主机的 MAC 地址后,源主机可以构建数据帧,将其 IP 数据包封装在以太网帧中,并将帧的目标 MAC 地址设置为刚刚解析到的目标主机的 MAC 地址,然后通过物理层将数据发送出去。
二、ARP 缓存
缓存机制:为了减少频繁的 ARP 请求和提高网络效率,每台主机会维护一个 ARP 缓存,用于存储 IP 地址与 MAC 地址的映射。这个缓存是有时间限制的,通常条目会在几分钟后过期,以保证映射的有效性。
缓存查看:在大多数操作系统中,可以通过命令(如 arp -a)查看当前的 ARP 缓存内容。
三、ARP 协议中的问题
①、ARP 欺骗(ARP Spoofing)
在局域网中,由于 ARP 请求是以广播方式发送的,恶意主机可以伪装成其他设备,发送伪造的 ARP 回复,导致网络中的其他主机更新错误的 IP-MAC 对应关系。这种攻击方式称为 ARP 欺骗,常被用来执行中间人攻击(MITM)。
②、广播风暴
如果局域网中的主机数量很多,频繁的 ARP 广播请求可能导致网络拥塞,影响性能。
四、总结
ARP 协议通过广播 ARP 请求来解析 IP 地址,并通过 ARP 回复获取目标主机的 MAC 地址。
这一过程在局域网内进行,通常是无感知且高效的,但也存在一定的安全风险,如 ARP 欺骗等。
ARP 缓存的引入提高了解析效率,但需要注意缓存的有效性和安全性。
互联网协议 第1.6章 五层模型-ARP协议工作原理