seegongsik
网络

路由 怎么工作

前面讲过,信要经过中间的邮局一站站转送。可每到岔路口,邮局是怎么决定下一站往哪儿送的?没有人在中央一一指挥,而是每个站自己选路。这就是路由。

01

在岔路口做选择

数据包要经过一个个中转站。可到了某个站一看,出去的路很少只有一条,相邻的站往往有好几个。
那么,下一步该交给哪个站?做出这个选择,就是路由的开始。在互联网上,这些站叫作路由器。

SABCD
现在这里: S目的地: D
点闪烁的旁边站点,把数据包交过去

点一个正在闪烁的相邻站点,把数据包传过去。(站 = 路由器 · 点击 = 选择下一站)每个岔路口都选一次,就能到达目的地。

传了一次,数据包就到了相邻的站,那里又出现了岔路。像这样一站站传下去,总有一天会到达目的地。
可要是随便挑一个相邻站,数据包可能会在不相干的地方兜圈子。所以每个站都需要一个选路的依据。

02

查看路线表

每个站都有一张小表,我们叫它路线表。表里每一行写着:“要去这个目的地,就交给这个相邻站。”
数据包一到,站点就看目的地址,在表里找到那一行,按上面写的交给下一站。在真实的路由器里,这张表叫作路由表。

R 站点的路线表
目的地下一站
点目的地那一行,查下一站

在路线表里点一行目的地,就会显示要去那里,下一步该交给哪个站。(表 = 路线表)不同的目的地,也可能指向同一个相邻站。

有了表,站点就不会迷路。不管目的地在哪儿,只要找到那一行,下一步就定了。
关键在于,站点不需要知道整条路线,只要知道下一步交给谁就行;接下来,下一站会看自己的表接着传。
一张张小表连起来,就成了一条长长的路。

03

选更短的路

去目的地的路往往不止一条,有绕远的,也有抄近的。那么,表里该写哪条路?当然是最短的那条。
这个问题我们之前就遇到过:在算法那一单元里,在由点和线组成的图上找最短路径,路由用的正是这个方法。
在真实的互联网上,除了距离,往往还会一起考虑线路速度、拥堵程度等好几种因素。

67324STUVD
点这两条路比一比距离总和

点上面和下面两条路,比一比距离总和。下面那条经过的段数更多,可距离总和更短,所以写进表里的是下面那条。

选出短路写进表里,以后去那个目的地的数据包就会自动走快路。
所以,路由要做两件事:一件是找出最短路、做好路线表;另一件是数据包一到,就照表往下传。
前一件就是算法单元里学过的最短路径查找,后一件就是在岔路口做选择。

04

没有中央控制塔

这里有最让人惊讶的一点:没有一个中央控制塔来指挥这一切。哪儿都没有一个握着全图的人。
每个站只看自己的表,自己决定下一步。像这样不由一处决定一切、而由众多站点分头判断的方式,叫作分布式。
站点之间还会不断和相邻站交换路线信息,随时更新自己的表。

SMND
点 M 站点让它停掉

先在中央控制和分布式之间选一个,再点中间的站让它停下。中央控制下路会断掉;分布式下,相邻的站会自己找到绕行的路。

一个站停了,路却没断,因为相邻的站改了自己的表,绕到别的路上去了。
要是由一座中央控制塔决定所有的路,那座塔一停,一切都会跟着停下。正因为是分布式,即使一处倒下,整体也照样运转。

05

小结

用一句话归纳路由:数据包一站站被传下去,从而找到路。每个站看路线表选择下一步交给谁,表里写的是最短的路。
没有中央控制塔。因为每个站自己做判断,即使一个站停了,数据包也会绕道继续前进。

依次点路由的要点来收尾

依次点四个要点来归纳。(在岔路口选择 → 路线表 → 最快的路 → 没有中央的分布式)四个都亮起来,归纳就完成了。

互联网很少断掉的秘密就在这里:没有把一切交给中央某一处。无数站点各自看路线表,把数据包沿快路传下去;哪里堵了,别的站就会找到绕行的路。
一个个小小的判断汇集起来,就成了连接全世界的巨大道路。下一课,就来讲把我们在地址栏输入的名字换成数字地址的那个问讯处。

一句话总结路由,就是把数据包一站站传向目的地、从而找到路。每个站(路由器)都看一张路线表,上面写着去每个目的地下一步该交给谁。路有好几条时,就选最短的那条。最重要的是没有中央控制塔:每个站自己做判断,所以一个站停了,别的站也会找到绕行的路,数据包照样前进。正是靠这种分布式,互联网才不容易断。
← 网络
如果有帮助,请支持我们