25_路由(五),为更复杂网络编写
网络协议那些事儿
内容简介
- 前言
上一课我们用一个比较简单的网络图来进行了编写路由表的练习,我们重温一下上一课的图:

我们还介绍了一个编写路由表的普适方法,就是 “三步法”,应用此方法的顺序如下:
-
写出本机连接的网络;
-
写出默认路由;
-
写出本机无法通过前面的两个步骤加入的所有其他网络。
上一课,我们用这个 “三步法” 编写了路由器 1 以及 IP 地址为 192.168.0.1 的机器的路由表,分别如下:
路由器 1 的路由表
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
IP 地址为 192.168.0.1 的机器的路由表
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.1 |
| default | 192.168.0.254 |
为了简单起见,对于 IP 地址为 192.168.0.1 的机器,我们之后会简称其为 “192.168.0.1 这台机器”。其他的机器也类似。
- 路由的练习:编写路由表(二)
为了能够更加熟练地编写路由表,我们用一个更复杂的例子来练习。请看下图:

以上就是我们要研究的网络。尽管这个网络仍然不大,但也已经不错了。
与上一课的练习类似,我们首先来编写路由器 1 以及 192.168.0.1 这台机器的路由表。
好的,请开始你的表演!记得使用 “三步法” 噢。
路由器 1 的路由表
让我们从路由器 1 开始。
1. 写出本机连接的网络
路由器 1 的两个接口仍连接着和以前相同的网络,所以它的路由表暂时不变:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
2. 写出默认路由
这里,路由器 1 须要有一个默认路由,因为它能连接到互联网(Internet),但是它没法知道互联网上的所有网络。
路由器 1 的网关必须允许它连接到互联网,因此这个网关将是它进入互联网的第一步。路由器 1 必须经过路由器 3 才能连到互联网,通过路由器 3 的和自己位于同一网络的接口,也就是 192.168.1.253。
因此,路由器 1 的路由表变成了:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
| default | 192.168.1.253 |
但我们从网络图中看到,路由器 1 要连接到互联网,除了首先经过的路由器 3 以外,接下去还要经过路由器 4。那么,为什么路由器 1 的默认路由的网关不是路由器 4 的接口的 IP 地址呢?
好吧,这有点像 “蛇咬自己尾巴” 或“先有鸡还是先有蛋”的问题了。
这是因为,如果我要离开我所属的网络,去访问另一个网络,但我却指明一个位于我所属的网络之外的网关,那么我将永远无法达到目的。因为要到达这个网关,我必须知道如何离开我的网络;而要离开我的网络,我又必须到达网关… 我就不继续 “死循环” 了,相信你已经理解我的意思了。
因此,我们得出了一个非常重要的规则:机器的路由表中指明的网关肯定属于该机器的其中一个网络。
因此,对于路由器 1,我们只能从 192.168.0.0/24 和 192.168.1.0/24 这两个网络中去寻找默认路由的网关。
上面得出的路由表就符合了这一原则。
3. 写出本机无法通过前面的两个步骤加入的所有其他网络
这一步有点难。
我们的网络图中一共有 4 个网络,分别是 192.168.0.0/24、192.168.1.0/24、10.0.0.0/24 和 10.0.1.0/24,再加上互联网这个 “超级大网络”。
目前,我们已经知道如何加入前两个网络。多亏了默认网关,我们也知道如何访问互联网。因此,我们还需要知道如何加入 10.0.0.0/24 和 10.0.1.0/24 这两个网络。
但是,如果仔细看一下,我们也知道如何加入 10.0.1.0/24 这个网络,因为它位于我的默认网关(192.168.1.253)之后。
假设路由器 1 想要将数据包发送给 10.0.1.1 这台机器,它将查看自己的路由表。实际上,它将一一遍历路由表的记录(每一条记录对应一个路由),并检查要连接的机器是否属于路由表中定义的网络:
-
10.0.1.1 不属于第一条路由的 192.168.0.0/24 网络,因此不适合;
-
10.0.1.1 也不属于第二条路由的 192.168.1.0/24 网络,因此也不适合;
-
第三条路由是默认路由。就像默认路由的定义告诉我们的那样,我们将使用与默认路由关联的网关,数据包将被发送到路由器 3 的地址为 192.168.1.253 的接口。由于路由器 3 已连接到我们要加入的 10.0.1.0/24 网络,因此它将能够向其传输数据包。
我们推断出:我们能够加入默认网关之后的所有网络,无论它们是本地网络还是互联网上的网络。
你可能也已经注意到了,当我们遍历路由表以查找到达目的地的路由时,我们所做的计算与我们在 “子网掩码” 那几课所做的几乎完全相同,就是:确认一个地址是否属于一个网络。
好的,让我们回到练习,现在我们已经知道如何加入除 10.0.0.0/24 网络之外的所有网络了。
那就让我们为 10.0.0.0/24 网络在路由表中添加一条路由。在网络图上,我们看到必须经过路由器 2 的地址为 192.168.0.253 的接口才能到达 10.0.0.0/24 网络 。因此,路由器 1 的路由表最终是这样的:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
| default | 192.168.1.253 |
| 10.0.0.0/24 | 192.168.0.253 |
其实,默认路由除了 default 这种表示法,还有另一种可能的表示法,就是 0.0.0.0/0。用 default 还是 0.0.0.0/0 通常取决于操作系统。
因此,路由器 1 的路由表还有另一种写法:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
| 0.0.0.0/0 | 192.168.1.253 |
| 10.0.0.0/24 | 192.168.0.253 |
192.168.0.1 这台机器的路由表
对于 192.168.0.1 这台机器,你可以用 “三步法” 来编写,不难的。
我们直接给出 192.168.0.1 这台机器的路由表:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.1 |
| default | 192.168.0.254 |
| 10.0.0.0/24 | 192.168.0.253 |
很好,现在你知道数据包(packet)是如何从一个网络被分发到另一网络的,以及路由是如何工作的。相信你已经可以为一些不是那么复杂的网络中的机器编写它们的路由表了。
更多的练习
如果你还想练习,以下是网络图中其他一些机器的路由表:
10.0.0.1 这台机器的路由表
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 10.0.0.0/24 | 10.0.0.1 |
| default | 10.0.0.254 |
路由器 2 的路由表
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 10.0.0.0/24 | 10.0.0.254 |
| 192.168.0.0/24 | 192.168.0.253 |
| default | 192.168.0.254 |
10.0.1.2 这台机器的路由表
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 10.0.1.0/24 | 10.0.1.2 |
| default | 10.0.1.254 |
| 192.168.1.0/24 | 10.0.1.253 |
| 192.168.0.0/24 | 10.0.1.253 |
| 10.0.0.0/24 | 10.0.1.253 |
对于 10.0.1.2 这台机器的路由表,我们还可以通过将网络 192.168.0.0/24 和 192.168.1.0/24 合并为一个具有较大掩码的单个网络来简化。
但是请注意,这需要不少考量,以确定我们不是在干傻事:能被合并的两个网络必须具有相同的规模,一个网络的地址范围紧随另一个之后,并且有可能使用新的掩码进行合并(还记得我们在 “子网掩码” 那几课做的计算吗?)。
我们可以将网络 192.168.0.0/24 和 192.168.1.0/24 合并为 192.168.0.0/23。因此,10.0.1.2 这台机器的路由表也可以写成这样:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 10.0.1.0/24 | 10.0.1.2 |
| default | 10.0.1.254 |
| 192.168.0.0/23 | 10.0.1.253 |
| 10.0.0.0/24 | 10.0.1.253 |
好的,现在我们已经有了一些高级的理论知识,下一课开始我们终于可以进行一些路由的实践了!
一起加油吧~
}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953