才子佳人博客

我的故事我讲述

图解ARP代理原理
###SmallArticleTitle###
来源:blog.csdn.net;  编辑:xjh;  2019-05-16

1) 什么是ARP代理?

路由器收到ARP-Request时,若发现查询的目的IP地址在不同子网,路由器会扮演ARP代理的角色,代为回答,告诉查询者它所询问的MAC地址(其实用的是自己接口的MAC地址)。

2)为什么要有ARP代理? 路由器的一个重要功能是把局域网广播包限制在该网内,不让扩散,否则会造成网络风暴。ARP-Request是个广播包,它询问的对象若在同一个局域网内,就会回答。但如果查询对象不在同一个局域网,那怎么办呢?为了解决这个问题,路由器就提供一个服务:代理ARP。

3) 还有什么方法来解决跨局域网的地址查询?若主机配置了默认网关,当查询MAC地址的对象位于局域网之外的时候,可以把查询任务交给默认网关。

4) 什么情况下用ARP代理? 网络中主机、路由器都有ARP cache。 主机通常配置了默认网关,它们会用默认网关查询局域网外的MAC地址。 路由器在需要查询远程网段里的MAC地址时, 与其相连接的路由器,在收到ARP-Request时就会扮演代理ARP的角色。

下面给出ARP代理的原理,如下图所示:

主机 A 172.16.10.100 要发送数据包到主机 D 172.16.20.200,但不知道主机 D 的MAC。

于是主机A直接发送一个ARP请求给目的站点。即主机 A 需要得到主机 D 的MAC地址,所以主机A广播ARP请求包:src 00-00-0c-94-36-aa 172.16.10.100  dst ff- ff-ff-ff-ff-ff 172.16.20.200。



请求包里主机A将自己的MAC地址作为源地址, ff- ff-ff-ff-ff-ff 做为目的地址进行广播。但是路由器的e0 接口默认不支持转发广播,所以主机D 收不到这个ARP请求,但是路由器知道主机D在其他子网,于是用自己的MAC地址来应答 A,响应包为 src 00-00-0c-94-36-ab 172.16.20.200 dst 00-00-0c-94-36-aa 172.16.10.100,即路由器用自己接口的MAC地址作为源地址回复ARP应答给主机A。这个ARP应答总是利用单播来回复。

主机A收到ARP请求后更新自己的MAC地址表172.16.20.200 00-00-0c-94-36-ab,现在主机A如果发送数据包给主机D就将数据发送给MAC为 00-00-0c-94-36-ab的路由器,由路由器转发给主机D。

目的地址为子网B的数据包都发送给路由器,故,子网A内所有主机的ARP地址表显示为:去往子网B的所有主机的MAC地址全是路由器接口的MAC地址。即由路由器转发其他数据包到子网B。

比如,主机A的ARP 地址表为:

172.16.20.200 00-00-0c-94-36-ab

172.16.20.100 00-00-0c-94-36-ab

172.16.10.99  00-00-0c-94-36-ab

172.16.10.200 00-00-0c-94-36-bb

可见,多个IP地址被映射到一个MAC地址。这一事实正是路由器使用了 proxy-arp 的标志。查看主机A的arp表就能清楚看到。

来源参考:
https://blog.csdn.net/junjun222222/article/details/42555189

分类:网络日志 | 评论数:0 | 浏览数:65
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: