网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到 下一个路由器。这一步转发的工作原理和交换机类似,也是通过查表判断包 转发的目标。
不过在具体的操作过程上,路由器和交换机是有区别的。
因为路由器是基于IP设计的,而交换机是基于以太网设计的 。
我们都用过路由器,比如手机连接WIFI的时候,就是使用了无线路由器的信号连接的。
路由器和交换机虽然外观类似,但内部却不同,路由器的内部结构如下图所示:
我们都知道计算机通过更换无线网卡可以支持无线局域网,同样路由器也一样,如果路由器的端口模块安装了支持无线局域网的硬件(就是那几根天线),就可以支持无线局域网了,就是说可以发射WIFI信号了。
此外,路由器不仅支持无线通信模块,还支持ADSL、FTTH等宽带专线,只要端口模块安装了支持这些技术的硬件即可。
路由器在网络中和交换机类似充当一个快递员的角色,但是路由器比交换机高级,可以认为它是一个高级快递员,为什么?
因为交换机是基于mac地址查找目的地的,而路由器是基于IP地址的。简单来说就是,交换机比较底层,查找目的主机的方式比较少,比较简单,而路由器是高层的设备,查找目的主机的方式比较多也比较高级。
路由器在收到数据包后会根据收到包的IP头部中记录的IP地址,在路由表中进行查询,以此判断转发目标。
然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思。
这就是路由器的基本原理,下面再做一些补充。刚才我们讲到端口模块会根据相应通信技术的规范来执行包收发的操作,这意味着端口模块是以实际的发送方或者接收方的身份来收发网络包的。
以以太网端口为例,路由器的端口和交换机不同,它是具有MAC 地址的,因此它就能够成为以太网的发送方和接收方。
端口还具有 IP 地址,从这个意义上来说,它和计算机的网卡是一样的。当转发包时,首先路由器端口会接收发给自己的以太网包,然后查询转发目标,再由相应的端口作为发送方将以太网包发送出去。
这一点和交换机是不同的,交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方。
路由器的各个端口都具有 MAC 地址和 IP 地址,可以作为一台普通的计算机收发数据包。
在“查表判断转发目标”这一点上,路由器和交换机的大体思路是类似的,不过具体的工作过程有所不同。
交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的,而路由器则是根据 IP 头部中的 IP 地址来判断的。
由于使用的地址不同,记录转发目标的表的内容也会不同,交换机根据MAC地址表转发数据,而路由器根据路由表转发数据。
如下图是一个路由器的路由表,路由器就是根据类似下图中的表来判断,收到的数据包应该发往哪个端口的。
从上图可以看出,路由表的记录还有一个叫子网掩码的东西,这个只是用来在匹配目标地址时告诉路由器应该匹配多少个比特。
此外,通过上述方法,我们也可以将某台具体计算机的地址写入路由表中,这时的子网掩码为 255.255.255.255,也就是说地址中的全部 32 个比 特都为 1。
这样一来,主机号部分比特全部为 0 可以表示一个子网,主机号部分比特不全部为 0 可以表示某一台计算机,两种情况可以用相同的规则来处理。
最后一列是跃点计数(也叫做跳数),它表示距离目标 IP 地址还有多少个路由器。这个数字越小,表示距离目的地越近;数字越大,表示距离目的地越远。
对于路由表的维护,有2种方法:
一是,手工维护,一般企业级路由器都是可以人工添加、删除、修改记录的。
二是,自动维护,根据路由器的协议,通过路由器之间的信息交换,路由器可以自行维护路由表的记录。
我们最后再来总结一下,路由器的工作步骤,首先路由器收到数据包后,查询路由表确定输出端口,然后再根据路由表的情况更新路由表,如果找不到匹配的路由时就会选择一条默认的路由,最后根据匹配的路由表记录转发数据到下一个设备。
默认路由一般是路由表的最后一行,这一行的子网掩码为 0.0.0.0,意思是网络包接收方 IP 地址和路由表目标地址的匹配中需要匹配的比特数为 0,换句话说,就是根本不需要匹配。
只要将子网掩码设置为 0.0.0.0,那么无论任何地址都能匹配到这一条记录,这就是默认路由了。