Router是路由器的英文,字面意思理解就是「找到路的工具」,那到底路由器是找什么路呢?
寻找各个网络节点之间的路。
换言之,路由器类似于寄快递时的一个中转站,你邮寄的包裹会路过一个个的中转站,然后从很远的地方发寄送到你家。那数据包也是一样的道理。
路由器是连接两个或者多个网络的硬件设备,它也被称为网关设备(Gateway),因为它承担寻路功能,是网络的大门。
01 路由表
就像交换机一样,路由器也有他们自己的小本本。该路由表记载了各网络节点之间的路,记录数据来源、对应的路由条目以及下一跳。
路由表就是路由器的导航,路由器只要按照路由表指示走即可。
当然,这个前提必须是路由表中存在匹配该数据包目的 IP 地址的路由条目。路由表每周更新一次,并在网络拓扑变化时更新。所以不必担心走错路。
当路由器在收发数据包时,路由器首先会检查路由表。如果路由表中有匹配项,则它将数据包传递给下一跳。
如果完全没有匹配项,数据包就会被直接扔掉,而且会告诉主机,这个目的到不了。
02直连、静态路由、动态路由
想要获取路由条目的来源有很多方式,直连、静态路由还有动态路由这些都可以。
直连,即路由器的直接邻居。路由器会自己主动认识邻居,并记录下来。
其次,你还可以用手动添加路由器的方法让路由器知道目的网段的路径,即手动静态路由,这个就比较适合网络规模很小的场景。但是,如果网络拓扑发生变化或规模增大,配置和维护成本就会增加。
此时,便需要结合动态路由,让路由器自己通过动态的方法进行学习。在很多大型网络中,一般都会使用动静结合的方式进行部署。
03三层寻址
二层寻址,你们知道这是什么吗?二层寻址就是交换机根据 MAC 地址,在物理层来进行寻址。
三层寻址就是指路由器根据 IP 地址,在网络层进行寻址。
当主机尝试发送数据时,首先确保目标与自身位于同一网段中,如果位于同一网段,则向交换机进行二层转发。
如下图所示,PC1 要给 PC2 发送数据,就会通过交换机来完成。
如果数据包不在同一网段中,主机会将数据包传递给自己的路由器,路由器会根据目标IP检查其路由表,将其传递给吓一跳,如果没有匹配的条目,则丢弃该数据包。
如下图所示,PC1 要给 PC3 发送数据,发现 自己 和PC3并不在同一网段,便会把数据包交给路由器 A,然后根据路由表的条目转发给路由器 B -> C,最后通过交换机 C 送达 PC3。
04寻路原则
那么路由器的责任是来找路的,那既然有那么多条道路,到底哪条路会更近一些呢?
缺省情况下,我们根据查询遵循最长匹配原则,即掩码越长、越精确,路由器就会首选那条路。
然后,我们考虑路径开销,例如带宽、管理距离和度量值。那么你走这条路需要多少时间和金钱呢?
大部分数据通信行为是双向的,在考虑流量时必须注意流量的往复运动。
即使我从这条路走,我也必须从这条路回来。如果没有回去的路,这肯定是不行的。
路由查询的行为是逐跳的。
达到目标网络沿路的每一个路由器必须具有关于这个目标网段的路由信息。
简而言之,每次数据包通过路由器时,路由器都会告诉它吓一跳是谁以及要去哪个方向。
05如何选择路由器?
如果你不知道怎么去选择路由器,那你可以结合这几个因素来考虑:带宽需求/转发性能、端口数量、带机量。
例如,千兆宽带在家中使用,那么路由器必须是千兆路由器,并且需要满足千兆NAT转发的性能。
另外,由运营商提供的光猫需要具有路由功能的。如果没有特别的需求,普通家庭成员就都足够啦。
在常见的家庭场景中,路由端口普遍不多,可以使用交换机进行补充。
在大多数商业场景中,4到12个口就足够了。那像大公司一般会选择三层交换机。
有一个比较重要的指标就是带机量,我们一般会考虑并发用户,还有用户的业务类型。
以 UniFi 的网关设备为例:USG 可以到 100 并发,普通家庭或小微企业,都足够用了;USG-Pro-4 带机量可以到 1000 并且,中小企业需求基本可以满足;如果还有更高需求,可以使用 UDM-Pro。