# 地址解析协议(ARP) 协议号0X0806 ### 背景 在数据封装时需要封装目的IP地址和目的MAC地址,目的IP地址可以通过已知或通过DNS获取而来,但是目的MAC地址无法直接获取 #### 作用 通过目的IP地址获取目的MAC地址 #### 分类 普通ARP:已知目的IP地址求目的MAC地址 免费ARP:检测IP地址是否冲突 代理ARP:用于同一网段但是不同物理网络间的ARP请求(即充当网关) 路由式代理,VLAN间代理、VLAN内代理 逆向ARP:已知目的MAC地址求目的IP地址 ### 报文格式: 帧头+ARP+DATA+帧尾 #### 参数 物理地址类型:一般是以太网MAC地址 协议类型:一般指的是IP协议 协议长度:request报文和reply报文 物理地址长度:MAC地址的长度(默认6B) 源IP地址,目的IP地址,源MAC地址,目的MAC地址 ### 普通ARP工作过程 A--->B 1、 主机A向主机B广播发送一个ARP request报文,源IP地址为A,目的IP地址为B 源MAC地址为A,目的MAC地址为广播 2、 主机B收到ARP request报文后,根据收到的报文中的源IP地址和源MAC地址形成映射关系,建立ARP缓存表项,再向主机A回应一个ARP reply报文,源IP地址为B,目的IP地址为A,源MAC地址为B ,目的MAC地址为A 3、主机A收到ARP reply报文后,根据收到报文中的源IP地址和源MAC地址形成映射关系,建立ARP缓存表项,后续转发报文则查看ARP缓存表项 PS:ARP缓存表项:IP地址和MAC地址的映射关系,老化时间为1200S ### 代理ARP工作过程 A--->(1)R1(2)--->B A和B处于同一网段,路由器R1的1口和2口处于不同网段 1、A访问B,由于处于同一网段直接发送ARP request报文 2、R1收到A发送的ARP request报文后,R1不会转发广播报文,但在1口开启ARP的代理功能后,R1会查看request报文中的目的IP地址是否有去往该目的的路由,如果有,则以自己的1口为源,向A发送一个ARP reply报文,再以自己的2口为源向B发送一个ARP request报文 3、B收到R1发送的ARP request报文后,建立ARP缓存表项,并朝R1的2口发送一个ARP reply报文 4、R1收到B发送的ARP reply报文后,建立ARP缓存表项 ### 免费ARP 一般在刚开机、刚获取到IP地址或IP地址变更后,则会触发免费ARP,用来检测网络中是否存在IP地址冲突 原理: 以广播的形式发送一个ARP请求报文,ARP报文中携带的源IP地址与目的IP地址都是自己,源MAC地址为自己,目的MAC地址为广播,如果收到ARP reply报文,则认为IP地址冲突(不可用),如果没有收到ARP reply报文,则认为IP地址可用(不冲突) 最后修改:2021 年 08 月 20 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏