24_路由(四),路由的练习:编写 ## 网络协议那些事儿

94 阅读6分钟

24_路由(四),路由的练习:编写

网络协议那些事儿

内容简介


  1. 前言

上一课我们开始了 OSI 第 3 层的关键硬件路由器的学习,也学习了一个关键的表格:路由表。

路由表指明了要使用哪个网关(Gateway)来加入一个网络。路由表中必须要有的两列元素是:要连接的网络网关的 IP 地址

路由器通过路由表来分发数据包。如果我要加入的网络地址不属于路由表中的任何网络,则必须使用默认路由中指示的网关。

上一课的内容不免偏理论,所以这一课我们来做一些练习,进一步学习路由的知识。

  1. 路由的练习:编写路由表

下面是一个网络的图示,其中包含若干网络。我们首先尝试为图中的路由器编写路由表。

在上图中,我们可以看到两个网络(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. 写出本机连接的网络;

  2. 写出默认路由;

  3. 写出本机无法通过前面的两个步骤加入的所有其他网络。

让我们来使用上述方法吧:

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/24192.168.0.254
192.168.1.0/24192.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/24192.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/24192.168.0.1
default192.168.0.254

很不错,现在我们知道如何编写路由表了!

不过练习还没结束,下一课我们会用一个比本课中更复杂的图示来做练习。

一起加油吧~

}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953