ARP(Address Resolution Protocol)是一种用于解析网络层地址(如IPv4地址)和数据链路层地址(如MAC地址)之间对应关系的协议。它主要用于在局域网(LAN)中根据目标设备的IP地址获取其对应的MAC地址,以便在数据链路层进行准确的数据传输。
ARP 协议工作原理:
-
ARP 请求和响应:
-
ARP请求(ARP Request):当主机A知道目标主机B的IP地址,但不知道B的MAC地址时,A会在本地网络广播一个ARP请求帧。这个帧中包含了A自己的IP地址、MAC地址、目标IP地址(即B的IP地址)以及一个目标MAC地址(通常设置为全0,表示请求)。
-
ARP响应(ARP Reply):收到ARP请求的主机B会检查请求中的目标IP地址是否与自己的IP地址匹配。如果匹配,B会向A单播发送一个ARP响应帧,包含自己的IP地址和MAC地址。这样,主机A就能更新自己的ARP缓存,将B的IP地址和MAC地址的对应关系保存起来,以便将来的数据传输。
-
-
ARP 缓存:
每台主机和路由器在收到有效的ARP响应后,会将IP地址和MAC地址的对应关系存储在本地的ARP缓存中,这样在发送数据时就不需要再次发送ARP请求,提高了数据传输的效率。 -
ARP 重试和超时处理:
如果主机在一定时间内未收到对应的ARP响应,则会进行重试,通常会重试几次(通常为3次),如果仍未收到响应,则会认为目标不可达。ARP缓存中的对应关系会有一个超时时间,如果一段时间内没有使用某个条目,就会从缓存中删除,以确保ARP缓存中的条目是最新和有效的。 -
ARP 欺骗(ARP Spoofing):
ARP协议是基于广播的,并且没有身份验证机制,因此存在ARP欺骗的安全风险。攻击者可以伪造ARP响应,向网络中的主机发送虚假的IP地址与MAC地址对应关系,导致数据被发送到错误的目的地或中间人攻击等安全问题。 -
ARP代理(ARP Proxy)
ARP代理是一种网络设备或路由器的功能,用于帮助解析非本地子网的IP地址和MAC地址映射关系。具体来说,当一个主机A需要与另一个子网内的主机B通信时,A向其所在子网的ARP代理发送ARP请求,而不是直接广播整个子网。ARP代理在收到ARP请求后,会代表主机A向目标子网内的主机B发送ARP请求,并将B的MAC地址作为响应返回给主机A。当发送端广播ARP请求时,本地网络上不会有主机回应 (因为IP地址是外网的),此时路由器将会回应该清求,则发送源误认为路由器就是目的主机,会将报文全部转发给它,再由路由器转发报文到外网,则该路由器就被称为ARP代理。
-
免费ARP(Gratuitous ARP)
免费ARP是一种特殊形式的ARP请求,通常不是用来请求解析IP地址对应的MAC地址,而是用来通知局域网中的其他主机自己的IP地址与MAC地址的对应关系已经发生变化。在主机开机配置时,会发送一个目的IP地址为自己IP地址的ARP请求报文,该报文称为免费ARP其作用如下: 1、让主机确认本地网络上是否有与自己IP地相同的主机,若有,则会返回一个错误报文 2、告诉整个广播域,目前某个IP所对应的MAC地址是什么---这一行为就像是在发宣传单,而宣传单是不需要回应的。若接收主机ARP缓存中本身就有发送源主机的IP---MAC对,则会更新,否则,会缓存发送源的IP---MAC对。下图的第一个红框免费ARP数据链路层destinationMAC为广播地址。
ARP 协议的应用场景:
-
局域网内部通信:当主机需要向同一局域网内的其他主机发送数据时,首先通过ARP协议获取目标主机的MAC地址,然后封装成数据链路层帧发送出去。
-
路由器转发:路由器在进行数据包转发时,通常也需要先通过ARP协议获取目标主机的MAC地址,然后才能将数据包转发到正确的出口。
-
网络故障排查:通过ARP缓存可以查看当前主机与其他设备的IP地址和MAC地址对应关系,有助于网络管理员诊断和解决网络连接问题。
ARP协议是TCP/IP协议族中重要的一部分,负责解析IP地址与MAC地址之间的映射关系,使得网络通信能够在数据链路层正确进行。
标签:ARP,协议,缓存,主机,地址,计算机网络,MAC,IP地址 From: https://blog.csdn.net/weixin_63162063/article/details/140315450