网络编程(31)—— 路由控制原理

一、数据包的路由控制

        一个IP数据包,从一台主机到达另一台主机,中间往往需要经过多个数据链路以及路由器。而中间的一个路由器,往往通过接口和多个路由器或者主机相连,我们知道IP数据包的首部包含该包的源地址和目标地址,当IP数据包到达该路由器时,路由器有怎么知道把这个包发到哪个接口相连的路由器或者主机呢?

       这就需要路由控制表了,所谓路由控制表其实就是就是与本主机或者路由器相连的路由器的IP地址和与其连接网络的地址映射表。比如说某路由器的路由映射表形如下:

 网络编程(31)—— 路由控制原理_第1张图片

    查看时请暂时忽略最后两个网络地址和路由器的映射关系,稍后会解释着两个的特殊之处。在一般情况下,路由映射表的左边就是一系列的网络地址(主机位都是0IP地址),右边是和拥有改映射表的路由器(或主机)的IP地址。

   网络编程(31)—— 路由控制原理_第2张图片

 

   如上图所示,主机A192.168.5.179)想要传送一个数据包,目标地址是主机B192.168.1.3),首先主机A会参照自己的路由控制表,发现和它相连的路由器并没有连接主机B所在的网络,于是它会把数据包发给包含默认路由0.0.0.0/0(默认路由:在没有找到对应的网络的情况下会先发给包含默认路由的路由器)的路由器A,然后路由A再查看自己的路由控制表,发现目标地址所在的网段属于路由器B,然后把数据包再转发给路由器B,最后由路由器B根据路由控制表将数据包转发给目标主机B。上面就是根据路由控制表转发数据包的整个过程。

 

二、几个特殊的IP地址

2.1 默认路由

      上面已经提到过0.0.0.0/0这个特殊的路由,也叫作default,它没有网络位,而主机位全部是0,它的作用就是在路由控制表中如果不存在合适的网络地址,数据包将会被发送到配置了默认路由的路由器上。

2.2 主机路由

   就是上面表中192.168.3.15/32这种路由,它32位全部为网络位,不存在主机位,主要用在主机不想通过网络地址接收数据包时,而将自己的IP地址全部写入到路由控制表中。

2.3 环回地址

   这就是我们熟悉的127.0.0.0,或者叫localhost,主要用于计算机本机上应用程序之间的通信,目标地址是环回地址的数据包不会向本机之外传递。

 

三、通过子网的合并实现向上一级路由器写入路由控制表

       我们知道一个路由器下可能连着数个不同网段的子网,而该路由器的上级路由器的路由控制表中又记录着该路由器和其管理网段的映射关系。路由控制表中是怎么做到将一个路由器对应的多个网络合并成一个网络的呢?答案就是通过修改子网掩码。

 网络编程(31)—— 路由控制原理_第3张图片

    上图演示子网的合并方法,通过修改IP地址的子网掩码,可以将两个不同的子网进行合并,这样就大大减少了路由控制表中的体积,同时实现了路由器和网络的逐级向上映射写入路由控制表。

你可能感兴趣的:(网络通信编程,网络通信编程)