24_路由(四),路由的练习:编写
网络协议那些事儿
内容简介
- 前言
上一课我们开始了 OSI 第 3 层的关键硬件路由器的学习,也学习了一个关键的表格:路由表。
路由表指明了要使用哪个网关(Gateway)来加入一个网络。路由表中必须要有的两列元素是:要连接的网络和网关的 IP 地址。
路由器通过路由表来分发数据包。如果我要加入的网络地址不属于路由表中的任何网络,则必须使用默认路由中指示的网关。
上一课的内容不免偏理论,所以这一课我们来做一些练习,进一步学习路由的知识。
- 路由的练习:编写路由表
下面是一个网络的图示,其中包含若干网络。我们首先尝试为图中的路由器编写路由表。

在上图中,我们可以看到两个网络(192.168.0.0/24 和 192.168.1.0/24)通过路由器 1 连接在一起,路由器 1 对于这两个网络各有一个网络接口。
对于网络中的机器的地址,我们只标出了地址的最后一个字节(例如 .1,.2),因为前三个字节是网络地址。例如,网络 192.168.0.0/24 中的机器地址为 .1 的机器,我们可以推断出其完整的 IP 地址为 192.168.0.1。
你也许会认为路由器的图示中有一个错误,因为图中路由器的上下两个接口的地址都是 .254。但这是正常的,因为这两个地址对应的接口并不在同一个网络中。路由器的上面那个接口的地址是 192.168.0.254,对应上面那个网络(192.168.0.0/24);路由器的下面那个接口的地址是 192.168.1.254,对应下面那个网络(192.168.1.0/24)。
现在,让我们尝试为路由器 1 编写路由表。
有一种适用于所有情况的方法,应用此方法的顺序如下:
-
写出本机连接的网络;
-
写出默认路由;
-
写出本机无法通过前面的两个步骤加入的所有其他网络。
让我们来使用上述方法吧:
1. 指明本机连接的网络
我们的路由器 1 连接到两个网络 192.168.0.0/24 和 192.168.1.0/24。
因此,目前路由器 1 的路由表是这样的:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | ? |
| 192.168.1.0/24 | ? |
我们暂时还不急着写出网关的 IP 地址,过一会再写(暂时用 ? 号表示)。
我们进入第 2 步。
2. 写出默认路由
上面的网络图的情况有点特殊,因为我们的路由器 1 已经连接到图中的所有网络了。路由器 1 不需要默认路由即可转到其他网络,因为它已经都知道了!
3. 写出本机无法通过前面的两个步骤加入的所有其他网络
与第 2 步类似,除了路由器 1 直连的两个网络以外,并没有其他网络。
所以,目前路由器 1 的路由表还是维持原样:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | ? |
| 192.168.1.0/24 | ? |
那就只剩写出网关的 IP 地址了。我们将应用一个简单的规则:用来连接到我所属的网络的网关的地址也是我的地址。
因此,路由器 1 的路由表变成下面这样:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.254 |
| 192.168.1.0/24 | 192.168.1.254 |
真棒,我们编写好了路由器 1 的路由表!
那么,这是否足以使我们的两个网络相互通信呢?
可惜的是,回答是否定的。尽管路由器现在已经知道如何分发所收到的数据包(packet)了。
那么,网络中的机器又是怎么知道应该向这个路由器发送数据包呢?
其实呢,网络中的机器也有一个路由表。连接到网络的任何机器都具有路由表:一台打印机,一部电话,甚至是很老旧的一台电脑。
有了路由表,机器在要加入其他网络时才能知道应该向哪个网关发送数据包。因此,我们现在可以为网络中的机器编写路由表,以 IP 地址为 192.168.0.1 的机器为例。
我们再次使用之前的那个方法:
1. 指明本机连接的网络
我的机器( IP 地址为 192.168.0.1 )只连接到了 192.168.0.0/24 这一个网络,因此,路由表暂时是这样的:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | ? |
2. 写出默认路由
这次,我们可以写出除了自己的网络之外的其他网络(例如 192.168.1.0/24 这个网络)的默认路由(在我们的示例中也没有太多选择,因为此外只有 192.168.1.0/24 这一个网络…)。因此,路由表变成了这样(default 表示 “默认”):
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | ? |
| default | ? |
3. 写出本机无法通过前面的两个步骤加入的所有其他网络
我们已经写出了可以加入的两个网络,因此可以忽略这一步。
因此,目前 IP 地址为 192.168.0.1 的机器的路由表是:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | ? |
| default | ? |
我们已经知道如何填写第一行,因为它是我们本机所属的网络,因此可以为网关填写我们自己的地址。路由表变成了这样:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.1 |
| default | ? |
现在只剩写出用于加入 192.168.1.0/24 这个网络的网关的 IP 地址了。
所以现在的问题是:“192.168.0.1 这台机器应该向谁发送数据包,以使数据包能到达 192.168.1.0/24 这个网络呢?”
我们有理由相信必须将数据包发送到路由器 1,但是发送到路由器的两个接口中的哪个接口呢?
为了回答这个问题,我们来打个比方:
我们想象每个网络是一个大房子里的一个房间,而路由器就是连接两个房间(两个不同网络)的门。门有两个把手,每个把手位于两个房间之一,就像路由器的两个接口一样。
当我在一个房间里并且想去另一个房间时,我可以使用哪个把手?在我这边的把手,还是另一边的那个呢?
答案是显而易见的:我必须使用我这边的把手!
对于路由也一样。要加入某个网络,机器必须使用自己所属的网络的网关。
因此,就是与 192.168.0.1 这台机器位于同一网络(192.168.0.0/24)中的路由器的接口地址,地址是 192.168.0.254。
因此,192.168.0.1 这台机器的路由表是:
| 要连接的网络 | 网关的 IP 地址 |
|---|---|
| 192.168.0.0/24 | 192.168.0.1 |
| default | 192.168.0.254 |
很不错,现在我们知道如何编写路由表了!
不过练习还没结束,下一课我们会用一个比本课中更复杂的图示来做练习。
一起加油吧~
}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953