深入解析ARP协议:IP转MAC的秘密

发布时间:2026/6/27 4:17:22
深入解析ARP协议:IP转MAC的秘密 一、ARP协议简介ARPAddress Resolution Protocol地址解析协议是一种通信协议用于将IP地址解析为MAC地址。在一个局域网中当一台设备需要与另一台设备通信时它通常知道目标设备的IP地址由于IP数据包必须封装成帧才能通过物理网络发送因此还需要知道对方的物理地址就需要将IP地址转换成目标设备的MAC地址这样才能向目标设备发送数据包。简单来说ARP协议的功能就是帮助设备发现其他设备的MAC地址以便进行直接的数据通信。当一个设备在局域网中需要发送数据包到目标设备时如果它不知道目标设备的MAC地址它会发送一个ARP请求广播到局域网中询问目标设备的IP地址对应的MAC地址。目标设备收到ARP请求后会将这个arp请求中的mac地址与IP地址学习到自己的ARP缓存表中并且会回复一个包含自己MAC地址的ARP应答请求设备收到回复后会将ARP回复报文中的mac地址与IP地址学习到自己的ARP缓存表中这样就能够建立目标设备的IP地址与MAC地址的映射关系。在 IPv6 网络中NDP 协议可以替代 ARP 协议来解析 IPv6 地址到 MAC 地址的映射并提供更好的安全性和可靠性。每个网络设备都有自己的ARP缓存表。比如我们的PC可以在cmd命令提示框中输入arp -a查看arp缓存表。可以通过arp -d清理ARP缓存表每个设备的ARP缓存表会有一个老化时间TTL。如下图二、ARP的报文结构ARP报文分为请求报文与ARP应答报文协议号为0806.ARP报文累计有28字节。结构如下图硬件类型2字节表示硬件地址的类型。它的值为1表示以太网地址协议类型2字节表示要映射的协议地址类型。它的值为0x0800即表示IPv4地址硬件地址长度和协议地址长度1字节分别指出硬件地址和协议地址的长度以字节为单位。对于以太网上IP地址的ARP请求或应答来说它们的值分别为6和4操作类型OP2字节1表示ARP请求2表示ARP应答发送端MAC地址6字节发送方设备的硬件地址发送端IP地址4字节发送方设备的IP地址目标MAC地址6字节接收方设备的硬件地址目标IP地址4字节接收方设备的IP地址。三、ARP协议工作原理假设主机A和B在同一个网段主机A要向主机B发送信息。如图所示具体的地址解析过程如下(1) 主机A首先查看自己的ARP表确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址则主机A直接利用ARP表中的MAC地址对IP数据报进行帧封装并将IP数据报发送给主机B。(2) 如果主机A在ARP表中找不到对应的MAC地址则将缓存该IP数据包然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送该网段上的所有主机都可以接收到该请求但只有被请求的主机即主机B会对该请求进行处理。(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址当两者相同时进行如下处理将ARP请求报文中的发送端即主机A的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A其中包含了自己的MAC地址。(4) 主机A收到ARP响应报文后将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发同时将IP数据包进行封装后发送出去。若主机A和主机B不在同一网段时主机A就会先向网关发出ARP请求ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后将报文封装并发给网关。如果网关没有主机B的ARP表项网关会广播ARP请求目标IP地址为主机B的IP地址当网关从收到的响应报文中获得主机B的MAC地址后就可以将报文发给主机B如果网关已经有主机B的ARP表项网关直接把报文发给主机B。四、ARP缓存表动态表项动态ARP表项由ARP协议通过ARP报文自动学习生成和维护可以被老化可以被新的ARP报文更新可以被静态ARP表项覆盖。当到达老化时间、网络接口状态down时系统会删除相应的动态ARP表项也可以手工清除。一般网络通信绝大部分都是动态表项静态表项手工配置的不会老化也不会被动态表项覆盖只能手工删除。由于静态arp表项不会被改写所以攻击报文无法改写该表项这样保证了网络的安全性。openflow ARP表项OpenFlow ARP表项由OpenFlow添加不会被老化不能通过ARP报文更新。Rule ARP表项比较特殊的表项Rule ARP表项不会被老化不能通过ARP报文更新可以被静态ARP表项覆盖可以直接用于转发报文。通常是某些特殊的特性添加。比如portal、vxlan、IPOE、OVSDB五、ARP报文分析ARP请求报文字段1以太网目的地址(Destination)。是ARP请求的目的以太网地址全f时代表广播地址。字段2以太网源地址(Source)。发送ARP请求的以太网地址。字段3帧类型(Type)。以太网帧类型表示的是后面的数据类型ARP请求和ARP应答这个值为0x0806。常见类型0800IP数据报0806ARP请求/应答数据报8035RAPP请求/应答字段4硬件地址(Hardware type)。表示硬件地址的类型硬件地址不只有以太网这一种是以太网类型时此值为1。字段5协议类型(Protocol type)。指定协议地址类型如0x0800表示协议地址类型为IPv4地址。该值与以太帧首部的类型字段相同。字段6硬件地址长度(Hardware size)。表示硬件地址的大小单位字节如以太网地址为6。字段7协议地址长度(Protocol size)。表示协议地址的大小单位字节如IPv4地址大小为4。字段8操作类型(Opcode)。值为1表示进行ARP请求值为2表示进行ARP应答值为3表示进行RARP请求值为4表示进行RARP应答。字段9发送端以太网地址(Sender MAC address)。这里是以太网地址和字段2相同。字段10发送端 IP 地址(Sender IP address)。字段11目的端硬件地址(Target MAC address)。字段12目的端 IP 地址(Target IP address)。ARP答复报文与请求报文不同的几个点字段1以太网目的地址(Destination)。不再为全f是应答设备的mac地址字段8操作类型(Opcode)。值为2表示进行ARP应答字段11目的端硬件地址(Target MAC address)不再为全0为对端设备的mac地址。六、免费ARP免费 ARP 是指主机发送 ARP 查找自己的 IP 地址。通常发生在系统引导期间进行接口配置时。与标准 ARP 的区别就是免费 ARP 分组的目的 IP 地址字段封装的是自己的 IP 地址即向所在网络请求自己的 MAC 地址。免费ARP报文是一种特殊的ARP报文该报文中携带的发送端IP地址和目标IP地址都是本机的IP地址。设备通过对外发送免费ARP报文来确定其他设备的IP地址是否与本机的IP地址冲突并实现在设备硬件地址改变时通知其它设备更新ARP表项。免费 ARP 的作用防止攻击有的攻击者会仿冒网管来发送免费的arp报文会使得同网段的设备ARP表项学习到攻击者的mac与IP地址被欺骗的主机访问网管的流量就会发给攻击者的mac导致主机无法正常访问网络。为了降低这种仿冒网关的ARP攻击所带来的影响可以在网关的接口上开启定时发送免费ARP功能。开启该功能后网关接口上将按照规定的时间周期性发送免费ARP报文。环境中的网络设备就会即使的更新自己的ARP表项。防止老化动态学习的ARP表项有个老化时间时间到了后会自动老化。这样下次和这台主机通信就要重新发送ARP来学习学习不到arp的这段时间网络会有一定的中断。发送免费arp就会保证环境中的网络设备按照一定时间更新自己的表项。防止IP地址冲突网络中有相同的Ip的时候发送免费的arp报文在相同的ip收到该报文后就会报地址冲突。用户需要修改环境中的地址配置七、ARP代理如果 ARP 请求是从一个网络的主机发往另一个网络上的主机那么连接这两个网络的路由器就可以回答该请求这个过程称作委托 ARP 或 ARP 代理(Proxy ARP)。相当于路由器伪造了主机的身份这里需要说明的是这是一种善意的欺骗。可以帮助同一网段却不在同一物理网络的设备间不通过路由与网关来通信。代理ARP功能屏蔽了分离的物理网络这一事实使用户使用起来好像在同一个物理网络上。ARP代理分类代理ARP分为普通代理ARP和本地代理ARP二者的应用场景有所区别普通代理ARP的应用场景为想要互通的主机分别连接到设备的不同三层接口上且这些主机不在同一个广播域中。本地代理ARP的应用场景为想要互通的主机连接到设备的同一个三层接口上且这些主机不在同一个广播域中。通俗说就是在同一个网络同时开启了广播隔离的场景。代理的其他用途通过两个物理网络之间的路由器可以互相隐藏物理网络。在这种情况下两个物理网络可以使用相同的网络号只要把中间的路由器设置成一个 ARP 代理以响应一个网络到另一个网络主机的 ARP 请求。这种技术在过去用来隐藏一组在不同物理电缆上运行旧版 TCP/IP 的主机。分开这些旧主机有两个共同的理由其一是它们不能处理子网划分其二是它们使用旧的广播地址所有比特值为 0 的主机号而不是目前使用的所有比特值为 1 的主机号。如果 ARP 请求是从一个网络的主机发往另一个网络上的主机那么连接这两个网络的路由器就可以回答该请求这个过程称作委托 ARP 或 ARP 代理(Proxy ARP)。ARP 代理的优点可以添加到网络上的单个路由器不会干扰网络其他路由器的任何表项ip主机如果没有网关或者路由就可以使用ARP代理来通信。ARP 代理的缺点增加了某一网段上ARP流量主机需要更大的ARP 表项来处理IP地址到MAC地址的映射安全问题,为了拦截数据包某台计算机可能会假借另一台计算机的名义。仅适用于使用arp进行地址解析的网络八、ARP snooping与ARP快速应答ARP snoopingARP Snooping功能是一个用于二层交换网络环境的特性通过侦听ARP报文建立ARP Snooping表项从而提供给ARP快速应答。ARP snooping工作原理设备上启用ARP Snooping后该设备接收的所有ARP报文都会被解析用于获取ARP报文的发送端IP地址、发送端MAC地址、接口信息等建立记录网络信息的ARP Snooping表项。ARP快速应答该功能是根据设备上的IP Source Guard表项或者ARP Snooping表项在指定的网络中对ARP请求进行代答从而减少ARP广播报文。快速应答的工作原理如果请求报文的目的IP地址是本机的则不会查询表项进行正常的ARP答复报文。如果ARP请求报文的目的IP地址不是本机的地址则设备查询自己的IP Source Guard表项和ARP Snooping表项查找成功判断当前收到报文的信息与表项记录的信息是否一致如果一致不应答认为是其他设备自己请求自己不做处理如果不一致立即进行应答请注意如果是无线接口不判断表项记录信息与保温信息全部应答。如果查询失败了就转发该报文到网络中或者交给其他特性处理。声明本文图片均来自本人的公众号。