这个ARP代理检查用最简单的拓扑、场景来显示ARP怎么能够跨路由器找到其它局网里的MAC地址。案例有两个版本:仿真、图解。图解版本是从仿真截图,并加标注释,说明每一个步骤的关键。
-
背景:ARP只适用于局网,如果目的计算机位于另一个局网,两者得用路由器相连,而路由器的一个重要作用是把洪泛局限在一个局网之内,防止洪泛蔓延到其他局网。所以ARP不能跨过路由器查询。这个矛盾可用ARP代理解决。
-
ARP代理原理:如果ARP查询的对象位于不同的局网,ARP的查询又不能跨过路由器在另一个局网广播,路由器就成为另一个局网的代表,回复ARP Request, 这就是ARP代理 (Proxy ARP).. -
预备知识:ARP,IP地址,子网划分, 路由表,请见参考资料。
-
ARP 代理仿真:
这个图解教程是根据ProxyARP仿真创作。仿真用动画显示代理 ARP 的过程,读者可以互动的检查数据包内容,观察数据包 - ARP 表 – 路由表之间的因果关系。
拓扑
file:///C:/DOCUME%7E1/chu/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif
代理ARP的生成、应用过程可用以下步骤说明:
1.
拓扑:路由器R1 连接了两个局网,每个局网有一个子网。主机H1 在子网10.1.1.0/24 , H2在子网10.1.2.0/24, 它们位于不同的子网。
2.
在初始化时,H1, R1, H2 的ARP表都只有本身的MAC地址。
H1 的路由表用“show ip route” 命令显示:Gateway of last resort is not set,
这是说H1没有配置命令网关。
R1的路由表有两个条目:(10.1.1.0,E0/0), (10.1.2.0, E0/1)。作用是把目的IP地址在子网10.1.1.0的数据包从接口E0/0转发,把目的IP地址在子网10.1.2.0的数据包从接口E0/1转发. 3.
H1 ping H2. 但H1不知道H2的MAC地址,所以H1发送 ARP Request查询.
同时,H1的ARP表添加了一个条目 (10.1.2.2,Incomplete),
表示正在查问H2的MAC地址,还没有结果。
运行Ping后,H1在命令窗口打印信息:”H1#ping 10.1.2.2; Sending 5 …”. 意思是H1要发送5个ping给 H2, 一收到回复就发送下一个ping。
如果两秒还没收到回复,H1就再发一个ping。
【注】若要观察ARP Request 数据包的细节,可运行从ProxyARP仿真,
点击ARP Request. 。
4.
R1 回复ARP Reply 给H1, 告诉“H2”的 MAC地址
(R1是H2的代理)
R1怎么扮演ARP 代理? R1收到 ARP Request 后,看到H1, H2 在不同的局网,R1就代理第二个局网,替H2发送 ARP Reply,所提供的MAC地址是R1自己的E0/0接口MAC地址。
5.
H1 收到ARP Reply, 得到了“H2”的 MAC。H1 再Ping H2.
H1收到了 ARP Reply,知道了”H2”的MAC地址: (10.1.2.2,
cc00.7c87.0000s1E0/0接口的MAC地址) H1 第二次ping H2.
6.
R1 转发第二个ping失败,R1 发送ARP Request查询H2 的MAC。
R1收到 ping, 准备把ping 从 E0/1转发。转发前,R1得把:Link报头的目的MAC地址设为H2的MAC地址,但ARP表里没有H2的MAC地址,R1只好把Ping丢弃,
发送ARP Request 查询H2 的MAC地址。
7.
H2 收到ARP Request, 回复ARP Reply。R1 收到ARP Reply, 更新ARP表.
8.
H1发送第三个ping ,抵达 H2。H2要回复Echo. 但不知道H1的MAC地址而失败,就发送 ARP Request查询H1的MAC地址.
9.
R1 (代理ARP) 收到了H2 的ARP Request, 代理H1,回复ARP Reply, 告知“H1” 的MAC地址。H2收到后,把”H1”的MAC地址
添加到ARP表。
10.
H1第四次 pingH2,H2收到后回复Echo.H1 收到Echo,这次Ping成功了。.H1 的命令窗口可见到 “…!” 意思是前三个ping失败,第四个才成功。
参考资料:
[a] ARP 谢希仁
计算机网络第五版 4.2.4b地址解析协议ARP RFC 826 http://www.faqs.org/rfcs/rfc826.html
MAC address
谢希仁
计算机网络第五版 3.4.3 MAC层
Wikipedia MAC address http://en.wikipedia.org/wiki/MAC_address
[c] 路由器怎么转发数据包?
谢希仁
计算机网络第五版 4.3
划分子网
Wikipedia:
IP address . http://en.wikipedia.org/wiki/Ip_address
|