本帖最后由 碧云天 于 2012-8-3 22:48 编辑
不知道是否是IOS的差别,我用wireshark抓包和楼主抓包不一样。(我觉得wireshark不可能与科来会有这么大的区别)
A.我在GNS3中测试的
B.用的IOS为:2691-adventerprisek9-mz.124-15.T14.BIN。
我测试的结果,R3给R1(192.168.2.2给192.168.1.1)发icmp包时,不管在SW1还是SW2上抓包(实际测试没有用交换机,大鲨鱼可以在接口直接抓包),源地址和目标地址都没有改变,源:192.168.2.2 目标:192.168.1.1 回包相反,但是在IP包头中ip选项是有变化的,并且在R3去萍 R1时在R2上debug ip icmp也没有抓到包。
我的推测可能是这样:
一:去的数据包:
A.R3准备ping R1,并且设定了第一跳是192.168.2.1 第二跳为192.168.1.1 loop方式
B.R2判断192.168.2.1,为自己直连网段,能直接到达,所以将ip路由选项中只保留192.168.1.1,告诉R2下一跳为192.168.1.1,三层包头源和目标不变
C.二层数据包目标mac为192.168.2.1的mac就将包扔给了R2
D.R2收到数据包后,一看三层包头目标地址为192.168.1.1,并且IP路由选项中192.168.1.1为自己直连路由,为了保证对方能够回包经过自己,在IP路由选项中把自己与192.168.1.1直连的接口地址加上,保留原有三层包头信息
E,三层封包完成后就是二层,二层目标MAC为192.168.1.1的mac后,把包扔给R1
二,回来的数据包:
A.R1收到数据包后,因为正好是给自己的,就准备给回复,源地址和目标地址刚好与来的数据包相反
B.但是在IP路由选项中设定了自己的接口地址和目标地址,因为对于它来说,它只知道给192.168.1.1回,其他的不知道
C.二层封包目标MAC为之前收到的IP路由选项中的192.168.1.2的地址,将包扔给了R2
D.R2收到了数据包之后,因为不是给自己的,并且路由选项中包含内容,如是将IP路由选项中192.168.2.2的地址换成自己的接口地址192.168.2.1(保证以后回包给这个地址回)后,三层源地址目标地址不变
E.三层封包完成后,就是二层,因为目标地址为192.168.2.2,为直连网段,将目标MAC地址设定为192.168.2.2的mac后,把包扔给了R3
以上是根据抓包的猜测,不一定正确,还请指正。 |