雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4417|回复: 16

[分享]一个简单的BC实验引发的各种为什么

    [复制链接]
发表于 2011-10-16 13:33:26 | 显示全部楼层 |阅读模式
本帖最后由 Jose 于 2011-10-16 18:14 编辑

实验拓扑:

实验配置:
PC1和PC2用路由器模拟。
PC1   F0/0:192.168.1.1/24   gw: 192.168.1.254

         no ip routing
PC2   F0/0:192.168.10.2/24 (MAC: cc03.13f0.0000)
         gw:192.168.10.254     no ip routing
SW1  F0/1:192.168.1.254/24 (no switchport)
         SVI vlan 10:192.168.10.1/24 (MAC:cc00.13f0.0000)
         F0/0:trunk
SW2   SVI vlan 10:192.168.10.254/24 (MAC: cc01.13f0.0000)
         F0/1: switchport access vlan 10
         静态路由:ip route 192.168.1.0 255.255.255.0 192.168.10.1
         F0/0:trunk

首先,先让PC1、PC2都能ping 通网关。这样免去了后续操作中PC1、PC2各自发ARP找网关的过程。

接下来的问题,PC1 ping PC2,能通吗?当然能通。那么,为什么能通呢?也就是说,当PC1输入ping 192.168.10.2,然后回车,会发生什么呢?



图一 (SW1和SW2之间捕获的数据包):


1.      PC1将PC2的地址和自己接口上的掩码进行与运算,判断PC2的地址和自己不是同一个网段,于是将ping请求报文发给自己的网关SW1。
2.      SW1收到第一个ping请求报文,同样做与运算,发现ping包的目的地址192.168.10.2和自己不是同网段的。于是SW1查路由表,发现目的地址在这一条路由所包含的网段范围内。于是把ping请求报文交给SVI vlan 10口。
3.      SVI vlan 10同样进行掩码与运算,发现192.168.10.2是和自己192.168.10.1同网段,于是发ARP广播请求,求192.168.10.2的MAC地址。见图一中的第41号报文。
4.      PC2收到ARP广播请求,于是回单播ARP,告诉SW1的SVI vlan 10(192.168.10.1)我的MAC地址是多少。于是SW1的SVI vlan 10知道了PC2的MAC地址。见图一中第42号报文。
5.      此时第一个ping请求报文已经超时,于是PC1发出第二个ping请求报文。
6.      由于SW1的SVI vlan 10已经有了PC2的MAC,这样SW1就可以直接把ping请求报文转发给PC2,见图一中第46号报文。
7.      ping请求报文到了PC2,PC2应该发一个ping回应报文。同样PC2发现PC1的地址和自己不在同一个网段,于是它会把ping回应报文发给网关192.168.10.254。
8.      192.168.10.254收到ping回应报文,发现目的地址是192.168.1.1不是和自己同网段,于是查路由表,查到这条路由满足需求,可达192.168.1.1。所以SW2要将报文发往下一跳192.168.10.1,但是SW2还不知道192.168.10.1这个同网段地址的MAC,所以SW2要发ARP广播请求,求192.168.10.1的MAC地址。见图一中第47号报文。
9.      同时SW2发现,来自192.168.10.2发往192.168.1.1的报文,下一跳是192.168.10.1。源地址和下一跳在同网段,那不如干脆让192.168.10.2直接把192.168.10.1当做真正的网关得了。于是SW2发送了一条ICMP重定向报文。

图二(SW2和PC2之间捕获的ICMP重定向报文):
    ICMP报文,Type是5表示这是重定向报文,Code是0表示这是对网络测重定向。(补充下,ICMP请求报文Type是8,回应报文Type是0)。重定向报文内容包含了一个网关字段,这个字段是告诉该报文的接收者真正的网关应该是谁。同时还告诉对方哪些报文需要重定向(如图中红色方框内所示,意思就是告诉192.168.10.2,它发给192.168.1.1的ICMP回应报文,真正的网关应该是192.168.10.1)。
10.   另一方面,SW1的SVI vlan 10口收到了第9步中所说的ARP请求,于是回应一个单播ARP给SW2的SVI vlan 10。这样SW2就知道了192.168.10.1的MAC。见图一中第48号报文。
11.   此时第二个ping请求报文已经超时,于是PC1发出第三个ping请求报文。
12.   当PC2收到请求报文时,就会去找新的网关192.168.10.1,于是再发ARP请求,然后SW1的SVI口回应ARP。如图一中第53,54号报文。
13.   此时第三个ping请求报文已经超时,于是PC1发出第四个ping请求报文,然后整个世界都畅通了。







看完上面的分析,可能会有一个疑问。在第3步SW1的SVI口192.168.10.1求PC2 192.168.10.2的MAC时,按道理PC2应该会记录下192.168.10.1的MAC才对的,为什么在第12步的时候,PC2还要去求一次192.168.10.1的MAC呢?所以再做个小实验吧。

拓扑很简单,就是   R2------R3
R2模拟交换机,建立个SVI vlan 10,地址是1.1.1.2。R2连R3的口划入vlan 10。
R3模拟PC,连R2的口是三层口,配上IP地址1.1.1.3。
R2 ping R3,正常情况下只要发一个ARP请求就可以了。

如果R3上,全局下no ip routing。则R2所发的关于R3的ARP广播,R3会回应,但是R3不会保存R2上IP与MAC的映射。直到R3要回应ICMP的时候,再去发ARP请求,求R2的MAC地址。


  

分享完毕,欢迎拍砖。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2011-10-16 13:35:33 | 显示全部楼层
抢到沙发!
发表于 2011-10-16 14:01:04 | 显示全部楼层
本帖最后由 lin0131 于 2011-10-16 23:19 编辑

PC机需要保存MAC地址吗?  不同网段的数据都是发给网关 让网关去找的。所以你通过网关访问的内容,应该是只会出现网关的MAC地址的,在数据传输中MAC地址逐跳改变。所以只要是路线一致,是不大可能出现其他MAC地址的
最简单的方法打开CMD


1.PING 220.181.111.148            2.arp -a  看看有没有220.181.111.148  对应的MAC地址...






发表于 2011-10-16 14:01:47 | 显示全部楼层
呵呵,写的很详细,谢谢分享
发表于 2011-10-16 14:26:42 | 显示全部楼层
不错 很详细啊,感谢分享
 楼主| 发表于 2011-10-16 18:16:18 | 显示全部楼层
本帖最后由 Jose 于 2011-10-16 20:49 编辑
lin0131 发表于 2011-10-16 14:01
PC机需要保存MAC地址吗?  不同网段的数据都是发给网关 让网关去找的。所以你通过网关访问的内容,应该是只 ...

其实我想说,实验中PC是路由器模拟的.
然后,你觉得这个实验,ping通了以后,PC2的arp表上,应该有哪些ip地址的映射呢?

如果是同一个局域网内的真机,win7系统,PC A ping PC B, PC B的arp -a里肯定会有关于PC A的arp映射表项.
如果是用路由器打上no ip routing模拟的PC,同在局域网内,PC A ping PC B,PC B的arp表里就没有关于PC A的arp映射表项.
发表于 2011-10-16 19:20:48 | 显示全部楼层
肖老师入秋力作,兄弟们不要错过!
发表于 2011-10-16 21:14:20 | 显示全部楼层
哈哈,又学到东西了!
发表于 2011-10-16 22:56:11 | 显示全部楼层
本帖最后由 lin0131 于 2011-10-16 23:28 编辑
Jose 发表于 2011-10-16 18:16
其实我想说,实验中PC是路由器模拟的.
然后,你觉得这个实验,ping通了以后,PC2的arp表上,应该有哪些ip地址 ...

而第一张图中PC2 如果所料没错  只有SVI vlan 10:192.168.10.254/24 (MAC: cc01.13f0.0000)这个MAC

ARP协议的工作原理就是PC_A查看是否有PC_B的IP地址信息,如果有就会记录它的MAC信息,没有的话就相当于他们的MAC地址是网关。所以你所说的局域网中,“肯定会有主机B的ARP”是不准确的,条件至少要没有经过三层设备或接口

而你说的GNS3中的问题我也试了试,可以学到的
以下有图有真相
两机简单的互联 关闭了ip routing



这个是互ping 前后ARP的对照表



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2011-10-16 23:25:56 | 显示全部楼层
lin0131 发表于 2011-10-16 22:56
而第一张图中PC2 如果所料没错  只有SVI vlan 10:192.168.10.254/24 (MAC: cc01.13f0.0000)这个MAC

ARP协 ...

我都说.局域网中了,同一个LAN中间怎么会经过三层设备或接口...- -
还有,你是不是没注意到SW1上有个vlan 10的接口,192.168.10.1....
当SW2给PC2发了ICMP重定向报文后,PC2前往192.168.1.0/24就直接找192.168.10.1了,而不是192.168.10.254.
可是PC2并不知道192.168.10.1,所以会发ARP请求,也就是图一中的第53号报文.
也就是当所谓的整个世界都畅通了以后,PC2上还会有一条SW1 SVI VLAN 10口的ARP映射,也就是192.168.10.1和cc00.13f0.0000.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-11-25 05:23 , Processed in 0.084136 second(s), 19 queries , Gzip On.

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