IP协议------路由选择

路由选择

         当一个数据包发送到某个路由器时,该路由器将数据报如何发送呢。在每个路由器中都会维护一张路由表,路由表的每一行有三个基本消息:目的网络   下一跳IP地址    子网掩码

        当路由器收到数据报后,会做如下处理:

(1)解析数据报中的目的IP地址;

(2)将该IP地址和路由表的第一行的子网掩码进行按位与操作,将结果与该行的目标网络进行对比。

        如果与目标网络不相等,则进入(3);

        如果相等,则看该行的下一跳地址。如果下一跳地址为空,说明该路由器与该目标网路相连,说明数据报已经到达目标网络了。此时,就可以根据目的IP地址得到MAC地址将数据报发送给目的主机;如果下一跳地址不为空,即该路由器不与目标网络直接相连,所以还需要经过其他的路由器。所以,将数据报再转发给下一跳地址表示的路由器,至于后面再怎么走,由下一个路由器决定。

(3)将该IP地址和路由表的第二行的子网掩码进行按位与操作,将结果与该行的目标网络进行对比。重复(2)中的操作;

(4)如果在最后一行之前都没有对应的目标网络,则执行默认路由。最后一行一般为默认路由,该行中会指出默认的下一跳地址,此时将数据发送给默认的下一跳地址即可。至于后面怎么走,由下一个路由器决定。

        上述过程,就像是数据报在一次次问路的过程,当到达某个路由器时,会出现以下三种情形:

(1)已经到达目标网络,直接将数据报转发给目的主机;

(2)没有到达,但是该路由器知道下步应该发给哪个路由器;

(3)没有到达,但是该路由器不知道下一步应该发给哪个路由器,所以,此时,执行默认路由。

        主机中的路由表可以通过route命令查看,如下图,为某主机上的网络接口配置及路由表:


        上图显示该主机连接在一个网络中(只有一个目标网络)。

        Desination表示目标网络地址,Gateway表示下一跳地址,Genmask表示子网掩码。Flags中U表示该行有效。Iface表示通往该目标网络的接口。

        如果按位与操作后的结果与目标网络对应,G表示要达到目标网络,需先到达下一跳地址表示的路由器。没有G的表示该目标网络直接与该主机相连。不需要经过路由器转发。

        例如,如果数据报的目的IP是:192.168.43.25。当达到该节点后:首先与路由表中的第一行的子网掩码进行按位与操作,发现结果与目标网络对应,说明已经到达目标网络,此时,直接将数据通过接口0发往该网络中即可。

        如果数据报的目的IP是:192.168.3.15.当到达该节点后:也是与路由表的第一行的子网掩码进行按位与操作,发现结果为192.168.3.0,与目标网络192.168.43.0不相等,因此继续下一行。下一行已经是最后一行的默认路由,所以,此时,将该数据报直接根据默认路由通过接口0将数据发送给下一跳路由器地址192.168.43.1。之后该数据报如何走,则根据下一个路由器的路由表再进行判定。

        上述中数据报根据IP地址如何发往下一跳路由器或目标主机的过程,见之后的数据链路层的相关知识。







你可能感兴趣的:(计算机网络)