当前位置: 首页 > news >正文

代理ARP与传统ARP在网络通信中的应用及区别研究

一些问题

  1. 路由器隔离广播域,每个接口/网段都是独立的广播域
  2. ARP请求是二层广播包,广播包没法通过路由器
  3. ARP请求没法穿越互联网到达目标主服务器

一些思考

  1. 电脑访问互联网服务器的时候,ARP询问的内容,真的是访问服务器么?
    1. 当电脑访问互联网服务器(如百度)时,​​ARP询问的是默认网关的MAC地址,而非服务器本身的MAC​​。
    2. 访问互联网服务器是跨网段通信,目标服务器与本地设备不在同一个子网,数据必须通过网关转发
    3. ARP仅在同一广播域有效,无法跨越路由器直接获取外网设备的MAC
  2. 什么是代理ARP?和ARP有什么区别?什么场景会用到代理ARP?
    1. 代理ARP:路由器代替其他设备响应ARP请求的行为,使设备误以为目标IP在同一个子网内
    2. 代理ARP与ARP的区别
      特性普通ARP代理ARP
      ​响应者​目标设备自身路由器/网关
      ​使用场景​同一子网内通信跨子网通信(无网关配置时)
      ​ARP表记录​真实IP-MAC映射外网IP→路由器MAC
      ​拓扑要求​无需路由器需启用代理ARP的路由器
    3. 代理ARP的使用场景
      1. 无网关配置的网络
        1. 场景:设备未设置默认网关,但需访问其他子网
        2. 解决方案:路由器代理ARP欺骗设备,使其认为目标可达
      2. 透明桥接环境
        1. 场景:防火墙或透明模式设备需隐藏自身存在
      3. 移动IP/VPN通道
        1. 场景:远程设备需要像本地设备一样被访问
        2. 实现:本地网关代理响应远程设备的ARP请求
  3. 代理ARP和网关(默认路由)设置有什么关系?
    1. 互补关系
      1. 有网关配置:设备直接通过网关转发跨子网流量
      2. 无网关配置:依赖代理ARP实现跨子网通信
    2. 设备通信决策流程:
      1. 检查目标IP是否在同一子网
        1. 是 → 直接ARP询问目标
        2. 否 → 检查是否有默认网关
          1. 有网关 → ARP询问网关MAC    
          2. 无网关 → 仍会ARP询问目标IP → 触发代理ARP(如果启用)

代理ARP

  1. 原理:当ARP请求目标跨网段的时候,网关设备收到这个ARP请求,会用自己的MAC地址返回给请求者,这就是代理ARP

    电脑发送ARP请求服务器8.8.8.8的MAC地址,路由器(网关)收到这个请求时会进行判断,由于目标8.8.8.8不属于本网段(即跨网段),此时便返回自己的接口MAC地址给PC,后续电脑访问服务器时,目标MAC直接封装为MAC254。
  2. 本质:代理ARP是一个善意的欺骗,是一个错位的映射,是为了电脑可以和外网的服务器实现通信

    从图中我们看到服务器地址的正常映射是<8.8.8.8-MAC2>,而路由器返回给电脑的,却是 <8.8.8.8-MAC254>。
  3. 在实际的网络中,代理ARP由网络中的网关设备来执行,包括路由器、多层交换机、无线路由器、防火墙等设备。并且网关即便有代理ARP的功能,也未必一定执行,需要满足两个条件:
    1. 网关已经开启代理ARP的功能
    2. 网关有目标的路由信息
    3. 假设路由器已具备全网的路由,但连接电脑的接口没有开启(或不支持)代理ARP功能,此时便造成一个尴尬的情况:电脑反复询问到8.8.8.8的MAC地址,路由器收到之后,处理流程跟正常ARP是一致的,"问自己的回复,不是问自己的丢弃"。因此,当网络通信采用代理ARP时,可能会"受制于沿途网关设备",造成网络通信故障
    4. 既然代理ARP不是一种特别流畅的实现,会"受限于别人",那我们没必要一定要使用它。甚至,这里我们需要搞清一个事实:实际网络中,无论是同网段还是跨网段通信(例如访问互联网),绝大情况下都是使用正常的ARP,而不是代理ARP。
  4. 重点
    1. 代理ARP仅仅是正常ARP的一个拓展使用,是可选项不是必选项
    2. 代理ARP由特定的使用场景,与网关或路由的设置有直接关系:当电脑没有网关/路由功能且需要跨网段进行通信的时候,就会触发代理ARP(电脑有网关或路由功能就不需要代理ARP)
    3. 正常环境下,当用户接入网络的时候,都会通过DHCP协议或手工配置的方式得到IP和网关的信息
      1. 当用户接入网络的时候,DHCP和ARP是两个紧密配合但是功能不同的协议,共同确保设备能正常通信
      2. DHCP:动态分配IP地址、子网掩码、默认网关、DNS等参数
        1. 交互的过程:设备广播DHCP Discover → DHCP Server响应Offer → 设备请求IP(Request)→ Server确认(ACK)
      3. ARP:实现通信
        1. 作用:将DHCP获取的网关地址转换为网关的MAC地址(物理寻址)
        2. 触发时机:设备首次访问外网时
        3. 交互的过程:设备广播:Who has 网关IP? → 网关回复:My MAC is XX:XX:XX → 设备缓存ARP条目
        4. 核心作用:网络层和数据链路层的翻译官
          1. 物理寻址:IP-->MAC
            1. 场景:已知网关的IP是192.168.1.1,但是网卡需要知道其MAC才能发送帧
          2. 本地通信的基石
            1. 同一子网内通信:直接通过ARP获取打印机的MAC
            2. 不同子网内的通信:PC通过ARP获取网关的MAC,通过网关转发数据
          3. ARP缓存优化
            1. 设备会缓存IP-MAC的映射,减少重复广播
            2. 缓存超时会重新发起ARP请求
      4. DHCP告诉你“网关是谁”(IP),ARP帮你找到“网关在哪”(MAC),两者如同地址簿和导航的关系。若DHCP分配了错误的网关IP,ARP将无法找到正确路径
      5. 协议作用层级核心功能与另一协议的关系
        DHCP应用层分配IP、网关等逻辑地址为ARP提供目标网关IP
        ARP网络层将IP转换为MAC物理地址依赖DHCP提供的网关IP完成寻址

ARP与代理ARP:不是互斥而是互补

  1. 当用户访问互联网的时候,使用ARP还是代理ARP?和网关/路由设置有什么关系?数据封装有什么关系?
  2. 当电脑没有网关的时候,采用代理ARP

    当电脑有网关的时候,采用ARP
    1. 电脑没有网关的时候,ARP直接询问目标IP对应的MAC地址(跨网段),采用代理ARP
    2. 电脑有网关的时候,ARP只需要询问网关IP对应的MAC地址(同网段),采用正常ARP
    3. 无论是代理ARP还是ARP,电脑最终得到的都是同一个目标MAC地址:网关MAC
  3. ARP请求的终极目标:ARP始终是通过IP找MAC,无论是否跨网段,关键在于询问的对象是谁(ARP永远在问"这个IP的MAC是谁"
    1. 普通ARP:直接问目标IP的MAC(PC发一个广播询问目标的MAC地址,目标设备单播回应自己的MAC地址)
    2. 代理ARP:问网关目标IP的MAC(跨网段的时候网关代为应答)(PC发一个广播询问目标的MAC地址,路由器启用代理ARP,用路由器的MAC应答,数据包会发往路由器,由路由器转发到目标子网)
    3. 场景ARP请求内容响应者数据最终目标
      同一子网who has [目标IP]?目标设备自身目标MAC
      跨网段+代理ARPwho has [目标IP]?路由器(代理应答)路由器MAC → 目标IP
      跨网段+无代理ARPwho has [目标IP]?无响应通信失败

参考文章
图解ARP协议(四)代理ARP:善意的欺骗 - 知乎
图解ARP协议(一) - 知乎
图解ARP协议(二)ARP攻击篇 - 知乎
图解ARP协议(三)ARP防御篇-如何揪出"内鬼"并"优雅的还手"? - 知乎
图解ARP协议(五)免费ARP:地址冲突了肿么办? - 知乎
图解ARP协议(六)RARP与IARP:被遗忘的兄弟协议 - 知乎
图解IP协议(一) IP协议原理与实践 - 知乎

    相关文章:

  1. Linux快速入门
  2. C++ - 函数重载
  3. 深入解析多线程与多进程:从理论到Python实践
  4. C语言—指针3
  5. 若依定制pdf生成实战
  6. gradle3.5的安装以及配置环境变量
  7. PX4开始之旅(二)通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信
  8. 力扣题解:21.合并两个有序链表(C语言)
  9. 2025数维杯数学建模C题完整分析参考论文(共36页)(含模型、可运行代码、数据)
  10. 赛季7靶场 - Environment
  11. Android 移动应用开发:页面跳转与数据传递功能
  12. Android屏蔽通话功能和短信功能
  13. MySQL(4)如何查看MySQL数据库的版本?
  14. 『不废话』之Python 3.14 Beta版新特性
  15. 【传感器】代码——DHT11温湿度传感器
  16. 从0开始学linux韦东山教程第一三章问题小结(1)
  17. 4.2java包装类
  18. STM32--PWM--函数
  19. 微软系统 红帽系统 网络故障排查:ping、traceroute、netstat
  20. 40-算法打卡-二叉树-深度优先(前、中、后序遍历)-递归遍历-第四十天
  21. 经济日报刊文:品牌经营不能让情怀唱“独角戏”
  22. 14岁女生瞒报年龄文身后洗不掉,法院判店铺承担六成责任
  23. 雇来的“妈妈”:为入狱雇主无偿带娃4年,没做好准备说再见
  24. 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实
  25. 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  26. 湖南张家界警方公告宣布一名外国人居留许可作废