先提下路由器是干嘛的。非常粗略的说,或许不是很精确,路由器收到数据包,要根据自己的路由表将数据包发给下一个设备(下一个设备可以是另外一个路由器、也可以是终端设备,终端设备就叫直接"交付"),这个下一个设备就叫下一跳,下一条会按照同样的规则转发,直到送到目的主机。
静态路由:
目的地址:指的是目标网络的网络号,比如说目标主机的IP为192.168.1.2,那么此处的目的地址即为192.168.1.0
子网掩码:暂填当前网段的默认子网掩码
下一跳:对于当前路由器来说,需要送到的下一个路由器的IP的地址
以这个图为例,最左侧的路由器4连接了两个设备,左侧为主机PC0,手动分配了IP地址192.168.1.2
右侧和另外一个路由器连接,分配自己端口的IP为192.168.2.1,对方路由器的IP为192.168.2.2
对于路由器4来说,数据包如果要发给右侧的主机(192.168.7.2),那么目的地址必须指明为192.168.7.0,子网掩码为默认的255.255.255.0,下一跳为将要送往的下一个设备的IP,在这里也就是192.168.2.2
对于这个路由器来说,它只需要设置一个静态路由,因为回程的数据包直接可以有路由器交付。但是对于他右侧的路由器,却需要有两条哦不三条静态路由。
因为Router4是和主机直接相连的路由器,所以它只需要设置一条静态路由即可。同理,右侧的和主机直接相连的Router0也只需要一条静态路由。
可是只有一条怎么够呢!看看三条静态路由的!、
要知道ping的ICMP是双程的。先分析下Router5的去程。
ICMP报文需要从PC0(192.168.1.2)送到PC1(192.168.7.2),
那么去程的目的地址即为192.168.7.0,子网掩码为255.255.255.0
分析下这个图,左侧路由的"出口"有两个,router6或者router7,就是说报文有两条路径可以走。第一条右侧直行,第二条从上面"绕道"。
对于右侧,下一跳应该为与之相连的路由器IP,即192.168.3.2;
对于上面,同理,下一跳应该为192.168.8.2
去程分析完了,回程分析下。
回程杜宇Router05来说,ICMP报文要到达192.168.1.2,所以目的地址为192.168.1.0
而R5该怎么送呢?下一跳应该是与之相连的Router4,也就是192.168.2.1
而Router4知道该怎么送报文,就连在了自己身上当然知道该怎么送啦。
所以综上所述,Router5的静态路由为三条:
其他路由器的静态路由表以此类推。
其实像这样的设计是不科学、不合理的。
R5有两条送去程报文的路,可是R5并不知道该怎么送。它选择的路径只是从路由表里看,先拿出来的复合规则的路由表,就按照这个路由表走。
假如切断了R5和R6之间的连接,两个主机之间还可以连同,但是会发生超时。毕竟你设置了静态路由,路由器哪怕知道和自己连接的路由器挂了也得跟着规则来送报文。(静态路由的优先级要高于动态路由,就好比要先看hosts再去找ISPDNS一样)
所以接下来要玩下动态路由。动态路由可以避免上面的这个傻乎乎的问题。