计网-静态路由实验解析
网络架构拓扑结构
根据实验手册的规定,拓扑结构如上图:
整个拓扑结构被划分为3个网段:10,11,12。其中10段为路由器之间的段,11段为Router1与PCA之间的段,12段为Router2与PCB之间的段。路由器为多端设备,因此每个端口都有一个IP地址;PC为单端设备,只有一个IP地址。
根据实验的设置,整个结构包含三个网,网络地址分别为:
- 10.0.0.0
- 11.0.0.0
- 12.0.0.0
三个地址对应三个网的划分。主机PCA想要到达PCB,途中必须经过两个路由器,vice versa。
路由器命令解释
1 | sys # 进入系统设置模式 |
路由表状态解释
1 | Destination/Mask Protocol Pre Cost Nexthop Interface |
例如:
1 | 10.0.0.0/24 Direct 0 0 10.0.0.2 Ethernet0/0 |
![未命名文件 (3).png][1]
因此,在这个拓扑内:
PCA ping Router1是可以ping通的,在设置了PCA的IP地址后;Router1 对 Router2是可以ping通的,其他直连路亦然。因为他们直接连起来了。
然鹅,PCA是不可以ping通PCB的,Router2也不可以ping通PCA的。R1同样ping不通PCB的。Why?这里就要解释一下ping的原理和路由的原理。
路由
路由,route,意思是,路径,即从某点a到某点b的一条道路。路由包含了目标地址,下一跳地址。也就是说,以上面的为例子,去往10.0.0.0这个网,路由器需要发往10.0.0.2这个地址。也就是说,然鹅,在没有设置路由的情况下,PCB想要到PCA,它把包发给Router2,(因为只有一个口可以发出去),然鹅router2不知道该发给谁,它就把包丢掉了。所以设置之前,PCA和PCB是不互联的。
在后续的实验步骤中,包含了设置路由的操作,目的就是告诉路由器,前往11,或者12这两个网段,需要把包发给谁。例如,在Router1设置:
1 | ip route-static 12.0.0.0 255.255.255.0 10.0.0.2 |
就是告诉路由器,若11段要前往12段,需要把数据包发给10.0.0.2这个口。子网掩码是为了确认两个网是平行的,不属于谁的子网。
设置完这个选项后,当PCA发送包出去,发送给路由器时,路由器就会发送给10.0.0.2这个口。于是Router2就会把数据包根据目标地址,发出去了。于是乎PCA就可以到达PCB。
在Router2的设置是类似的,为了让12段可以到达11段。
然鹅,只设置一边是不可以ping通的。Why?这里解释一下ping的原理。
ping program
ping常用来检测路径的连通情况。需要双向可达,这样才可以ping通。这是因为ping利用的ICMP协议,ping的主机发送请求,被ping的主机收到请求后回复。至于ICMP是什么,超出了我们要讨论的范围。我们知道这是一种IP层协议,以及ping的过程需要主机向目标发送请求,目标返回一个信号。
ping的工作过程如下:
ping程序以目标IP为地址,发送一个ICMP包(echo request)。ICMP通过一定的路径,到达了目标。目标收到后,立刻返回一个信号(echo reply)。ping主机收到信号后,就确定,在两台主机之间,存在一条通路,可以从一端到达另一端。如果这个包在中途被丢掉了,不管是在哪儿丢的,最后ping的主机都无法收到回复,超出了一定的时间无法收到回复后,发送端便认为,目标不可达。
ping的过程就是如此。若不存在一条路由,使得两端双向可达,哪怕存在链路,也是不可以ping通的。这就解释了为什么设置一端ping不通。假设ping的数据包从A主机发出,在Router1的指引下去到了Router2,然后Router2分发给了B。B立刻对A的地址进行回复,然鹅到了Router2后,Router2不知道发给谁,就把这个包视为非法包(invalid),对其丢弃。因此B的回复永远到不了A,A就会超时,自然会不通了。
设置过程
设置路由器端口IP、主机IP(略)
查看路由表(略)
第十步:添加静态路由。这里就是把路由器添加一条静态路由,目标网络为12.0.0.0,下一跳地址为10.0.0.2。回到上图,就是Router2的en0/0。因为对于路由器1,想要到达12网,就必须从10.0.0.2这个口进去。然后发生了什么,路由器1就不需要知道了。这样,一切从11段发出去的,以及路由器1发出去的,都会被发往10.0.0.2。
从PCA ping Router2的10.0.0.2以及ping PCB
这里,结论是,ping 10.0.0.2不可以通,PCB也通不了。原因是,Router2和Router1直接相连,因此Router1知道去往10段需要发给Router1的10.0.0.2口。因此,ping 10.0.0.2时,数据包从A主机跳到Router1,Router1查表,发现目标是router2的一个口,而且是直连的,就发出去了。router2的10.0.0.2收到后,立刻响应,然而路由2没有一条通往11段的记录,就无法把包回给11网段,因此被丢弃。ping B主机的原理类似,包到达Router1,Router1发给Router2,Router2分发给PCB,PCB回复,但Router2不知道发给谁,丢弃,A主机就永远收不到回复了。GG!
在Router2添加一条到11段的路由
Router2添加完这条路由,跟上文阐述的类似,它就知道了去往11段是要发给10.0.0.1了。所以,从A主机ping B,或者Router2,当B主机或者Router2回复的时候,回复的数据包到了Router2,就被发往10.0.0.1。然后Router1收到,分发给自己或者A主机。收到请求,ping成功。
删除RT1添加的路由,添加默认路由
默认路由的意思是,当路由器找不到目标主机相应的下一跳,就会发给这个地址。例如,A发往B,经过路由器1,路由器1不知道发给谁,就发给默认的那个口。至于结果,路由器不管。
在这里,我们添加的路由是:
1
0.0.0.0 0.0.0.0 10.0.0.2
全0,代表任意IP地址,意思是,当找不到一条特殊约定的路由,就使用它。而由于默认路由的规定,发给了10.0.0.2。也就是说,找不到该发给谁,统统发给这个地址,10.0.0.2。
这样,第三次ping是可以ping通的。A发给了Router1,Router1找不到目标,发给了10.0.0.2,然鹅10.0.0.2就是我们要的目标,所以B可以收到,也可以回复。回复的数据包由于先前的设置,也会发回去。于是,ping成功。
一些其他的设置:
- 交换机与主机、路由器之间用直连线,路由器、主机之间用交叉线。交叉线就是两头线序不一样的线,比如棕色的那条,一个在一边,一个在另一边
- 设置交换机IP,也需要手动设置主机IP
- 从超级终端ping,是利用路由器ping出去。从cmd ping,才是从主机ping出去
- 交叉线不够,可以把直连线插交换机,交换机再接路由器,然后再从路由器连交换机,然后连路由器。(具体看操作吧,说不清楚了——)