设为首页收藏本站language 语言切换
查看: 2788|回复: 2
收起左侧

[gns3] GNS3用路由器模拟PC的几个误区

[复制链接]
发表于 2015-10-12 09:43:47 | 显示全部楼层 |阅读模式
拓扑如下:

                               
登录/注册后可看大图
 楼主| 发表于 2015-10-12 10:02:01 | 显示全部楼层
很多人在做实验的时候,都喜欢拿路由器模拟PC(no ip routing之类的)
但实际上PC和路由器的工作机制相同吗?这么模拟的结果会不会误导人呢?




参照上述拓扑PC1 – PC2的场合:


PC1的arp表如下

                               
登录/注册后可看大图


PC1去往10.26.218.235,由于PC1不知道10.26.218.235的MAC地址(无法封装帧)
此时PC1检查自身路由表(如下)

                               
登录/注册后可看大图


得知10.26.218.235和自身处于同一网段
(PC设置IP地址和子网掩码会自动生成一条直连路由,设置网关地址会自动生成一条缺省路由)

PC1判断目的IP(10.26.218.235)和自身处于同一网段,但又不知道目的IP的MAC地址,此时PC1会发送arp请求,询问10.26.218.235对应的MAC地址

                               
登录/注册后可看大图


10.26.218.235会应答PC1


PC1收到应答后,更新本地arp表

                               
登录/注册后可看大图

PC1知道了10.26.218.235的MAC地址,于是可以进行帧的封装,进而完成通信

                               
登录/注册后可看大图




PC1 – PC3的场合(PC填写正确的网关地址):

PC1的arp表如下

                               
登录/注册后可看大图


PC1去往10.26.220.1,由于PC1不知道10.26.220.1的MAC地址(无法封装帧)
此时PC1检查自身路由表(如下)

                               
登录/注册后可看大图


得知10.26.220.1不和自身处于同一网段
但PC1根据缺省路由得知去往10.26.220.1下一跳是10.26.218.233

此时PC1会发送arp请求,询问下一跳(10.26.218.233)的MAC地址

                               
登录/注册后可看大图


网关收到arp请求后会应答PC1

PC1收到应答后更新本地arp表

                               
登录/注册后可看大图


PC1知道了10.26.218.233的MAC地址后,去往10.26.220.1的时候,封装帧的时候目的MAC地址为10.26.218.233的MAC地址(如下)

                               
登录/注册后可看大图





PC1 – PC3的场合(PC不填写网关地址):

                               
登录/注册后可看大图


PC1去往10.26.220.1,由于PC1不知道10.26.220.1的MAC地址(无法封装帧)
此时PC1检查自身路由表(如下)

                               
登录/注册后可看大图



PC1根据自身路由表无法得知怎么去往10.26.220.1
(由于PC1没有填写网关地址,因此PC1不会有缺省路由)

此时PC1根本就不会发送arp请求10.26.220.1的MAC地址(如下)

                               
登录/注册后可看大图

PC1不发送任何arp信息,直接返回“目的主机不可达”




PC1 – PC3的场合(PC填写错误的网关地址):

                               
登录/注册后可看大图


PC1去往10.26.220.1,由于PC1不知道10.26.220.1的MAC地址(无法封装帧)
此时PC1检查自身路由表(如下)

                               
登录/注册后可看大图



得知10.26.220.1不和自身处于同一网段
但PC1根据错误的缺省路由得知去往10.26.220.1下一跳是8.8.8.8

此时PC1会发送arp请求,询问错误下一跳(8.8.8.8)的MAC地址

                               
登录/注册后可看大图


Arp是二层广播,该广播域内的所有节点(包括正确的网关地址10.26.218.233)都能收到这份arp请求,但正常的情况下,由于网关未开启代理arp特性,因此不会应答这份目的IP不为自己的arp请求

但如果网关地址开启了代理arp特性(例如思科的路由器)此时网关会应答这份arp请求,告诉PC1我就是8.8.8.8,PC获悉了8.8.8.8的MAC地址就可以进行帧的封装,从而完成通信


总结:
PC在去往一个目的IP的时候,需要先检查自身路由表来判断目的IP是否可达
如果目的IP可达,并且和PC在同一个网段,PC直接发送arp请求目的IP的MAC地址
如果目的IP可达,但不和PC在同一个网段,PC直接发送arp请求网关IP的MAC地址
如果目的IP不可达,PC不予理会(不会发送arp请求)




误区1:
MS系统的PC去往非直连网段IP的时候,不会发送arp询问非直连网段IP的MAC地址信息,PC的做法是直接检查自身路由表,发送arp请求网关的MAC地址
(如PC已知网关的MAC地址则不发arp)


误区2:
很多教学视频里在做arp实验的时候,都会拿“路由器来模拟PC(no ip routing)”
但路由器的发包机制和PC不相同
以思科的GNS3为例,路由器在no ip routing模拟PC后,在上述情况下会发送一份arp请求,请求10.26.220.1的mac地址,网关如果开启了代理arp特性会应答这份arp请求,从而使得“PC”完成通信(但真实环境中PC根本就不会发送arp请求)


误区3:

                               
登录/注册后可看大图

在这个拓扑中,GNS3路由器模拟PC,双方是可以互相ping通的,但真实的PC不会
为什么呢?
其实答案很简单,路由器模拟PC需要关闭路由功能,而PC发帧时要检查自身路由表,这两者就已经相斥了


楼主之所以写这一篇贴子,是因为偶然一次在论坛里说 闫辉2015年第四讲里说代理arp有点错误,就遭到群体攻击,楼主首先说明一下,闫辉是我心中的大神,这点没问题,但是人就会出错,讲错一点没什么,大体都是正确的就行了,另外很大一部分人喜欢拿模拟器里的实验做真知,楼主说明所以然也不能令他们信服,他们只认同自己曾经错误的实验
沙发 2015-10-12 10:02:01 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-12 10:07:14 | 显示全部楼层
上述图片,结论,全部收录在 “ PC ARP.doc”里,可供下载交流

PC ARP.doc

245.5 KB, 下载次数: 27, 下载积分: 鸿鹄币 -1 个

板凳 2015-10-12 10:07:14 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-4 03:57 , Processed in 0.062680 second(s), 14 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表