署理ARP你牛啥?51CTO博客 - 千亿集团

署理ARP你牛啥?51CTO博客

2019年02月23日09时16分33秒 | 作者: 昊磊 | 标签: 地址,网段,网关 | 浏览: 606

ARP/署理ARP的总结 得益于褴褛熊的纠结,他很富有同情心的让我陪他一同纠结了,呵呵。咱们评论了两天,期间我查了google,查了wikipedia,查了百度,查了思科官方document,还把RFC1027及ARP相关都啃了。而且每想到一种状况也都用实在设备验证过。最终把一些心得和研讨得来的定论总结一下,也请咱们一同来评论评论。


1.ARP
首要讲到ARP,ARP是地址解析协议,它的作用是在以太网环境下,经过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表。转发数据的时分依据ARP缓存表来进行传输。下图具体阐明数据传输时ARP是怎么一步步操作的。
在装备IP地址后,不做任何ping操作,ARP缓存表是这样的:



当PC去ping R1的时分,你会发现第一个丢包了。像这样
R1#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
.!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/25/56 ms

第一个包其实是做ARP恳求去了。PC发现ping的是本网段,会宣布ARP播送,向R1恳求192.168.1.2的MAC地址。得到回应后ARP表会增加ARP恳求得来的相应内容。




PC:这个时分PC再去ping 10.1.1.3会发现ping的不是本网段,由于PC没有路由功用所以不知道该往哪里发送,会依照之前现已配好的默许网关发送出去,一般默许网关会装备成路由器的接口IP,在这里是192.168.1.2。检查ARP缓存表发现了192.168.1.2对应的MAC地址,就把包交给路由器处理了。

R1:路由器收到去往10.1.1.0网段的数据包会查询路由表,首要检查路由表发现数据该发往FastEthernet 0/1
#show ip route
C       10.1.1.0 is directly connected, FastEthernet0/1
然后检查ARP表是否有下一跳10.1.1.3的MAC地址信息,假如有则按MAC把数据发到下一跳;假如没有则宣布ARP查询,查询后取得下一跳地址10.1.1.3的MAC地址,存到ARP缓存表中,然后转发。


数据包发送到R2(已做好静态路由)。同理数据包回来,成功ping通。



2.署理ARP
“什么是署理ARP?署理ARP就是经过运用一个主机(一般为router),来作为指定的设备对另一设备的ARP恳求作出应对。”这个能够说是一个官方解说了。咱们能够用同一个拓扑来验证一下,在这里咱们最常运用Router封闭路由功用来模仿成PC完结这个试验(左方PC为路由器模仿,在做此试验前请把前一试验的ARP信息铲除,主张重启):


PC上不装备默许网关,此刻用PC去ping 192.168.1.2和10.1.1.3。会得到以下ARP表

由此可见,PC宣布ARP恳求10.1.1.3的MAC地址,R2以自己的FastEthernet0/0口地址署理R3去回应PC,通知PC自己的FastEthernet0/0就是10.1.1.3的MAC地址。
定论:有默许网关的的时分PC按默许网关走,没有默许网关的时分路由器经过署理ARP完结通讯。
到目前为止一切都看起来那么的合理,那么的顺畅。这个试验是一些培训班常做的试验之一。其实,错了!

问题出在哪里?问题就出在咱们是用一台路由器去模仿PC。不论是否封闭路由功用,它一直不是PC,它处理数据的办法与PC也不一样。请咱们考虑一下,假如是一台PC,在没有默许网关的状况下去ping一个非本网段地址,会呈现什么状况?

在没有默许网关的状况下ping一个非本网段地址,显现方针网络不可达,然后直接丢包,底子不会宣布ARP查询。
PC在什么时分会宣布ARP查询呢?ping一个本网段地址的时分(咱们能够抓包来验证一下)。其实就是思科文档的这种状况了:


看清楚了,PC-A的IP地址是/16位,PC-D的IP地址是/24位,所以当PC-A去ping PC-D的时分,PC-A认为是ping同一个网段,会宣布ARP恳求,这个时分ARP恳求就到了路由器上了。路由器假如敞开了署理ARP功用,会替代PC-D给PC-A回应,通知PC-A路由器的e0口MAC地址00-00-0c-94-36-ab就是PC-D的MAC地址,完结署理ARP操作,维护了PC-D的MAC地址隐私。

我认同这种说法,是入情入理的。可是不由有个问题,谁会用这么脑残的办法装备IP地址呢?好吧,就当是有。
以下转自鸟哥的Linux私房菜:
“假如你一開始設計的網路環境就是同一個 C class 的網域,例如 192.168.10.0/24 , 後來因為某些要素必須要將某些主機搬到比較內部的環境中,例如圖一的 PC2 ~ PC4 。 然後又因為某些要素,所以你不能變更 PC2 ~ PC4 的 IP ,也就是說,有點像底下這樣的圖示:”


署理ARP作为这种特殊状况的解决方案是无可厚非的,可是按道理说这种状况万中无一。已然这种状况呈现的概率那么低,为什么要把署理ARP设置为默许发动?这不是浪费资源吗?还存在ARP诈骗等安全隐患,完全能够把署理ARP功用设置为默许封闭。个人定见,有朋友知道原因请奉告。


3.三层交流机不同网段封闭路由互通问题
褴褛熊的问题:
一个三层交流机,f0/1设置成指定为pc同网段的网关的IP,f0/2指定为另一个网段的ip,封闭交流机的路由功用.pc能够ping通f0/2吗?

褴褛熊的答案:
我用dy做试验是能够通的,
pc的意图和自己是不同网段的,pc经过arp学习到网关的mac后,发ping恳求给网关,这个ping恳求包是一个三层包,这个数据包的格局是 方针mac(网关的),源mac(pc的), 源IP(pc的),方针ip(f0/2的IP)    网关收到此包后检测数据帧的头部,发现是给自己的,所以解封装,除掉帧头部,然后检查ip头部,网关发现方针IP和自己不是处于同一网段,由于三层现已没有了路由功用,所以没有去查找路由表,正常状况下是先查找路由表的.在有过第一次的转发数据记载后才会去检查arp表而不是路由表,要不然一收到和自己不网段的包就去找路由表,那arp表有啥用?所以经过查找找到了此IP现已被解析的mac,由于是交流机本身的接口配的IP的地址,当然是存在在路由器arp中的.也就是说这个方针的ip是不需要学习就能够找到的.查找到后就对帧进行从头封装.然后回来给pc,
纯个人见解,有不同观点的请指证......


个人认为十分正确,说的很透彻。可是有一点保留定见,“在有过第一次的转发数据记载后才会去检查arp表而不是路由表,要不然一收到和自己不网段的包就去找路由表,那arp表有啥用?”
这点我现已批改过来了。

还想弥补一点的是,三层交流机只要一个MAC地址。所以以上问题的状况在三层交流机中的ARP缓存表会这样显现:

F0/1和F0/2对应的MAC地址是相同的。


最终留个问题:相同封闭路由功用的状况下,我在三层交流机上用F0/1去ping F0/2口能否通? 附件:http://down.51cto.com/data/2355023
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章