3.1.5 Windows系统中的IP路由表
每一个Windows系统中都有一个IP路由表,它存储了本地计算机可以到达的目的网络及如何到达的相关路由信息。
在CMD方式下用命令route print或netstat -r都能显示本地计算机上的IP路由表:
以上路由表中有5列,分为4个部分:
(1)Network Destination(目标网络)、Netmask(子网掩码):将目标网络和子网掩码“与”的结果定义本地计算机可以到达的目标网络。通常情况下,目标网络有以下4种特例:
①主机地址:某个特定主机的IP地址,其子网掩码为255.255.255.255,如路由表中的第6、7、9行。
②子网地址:某个特定子网的网络地址,如路由表中的第4、5行。
③网络地址:某个特定网络的网络地址,如路由表中的第2、3、8行。
④默认路由:所有未在路由表中指定的网络地址,均发往默认路由所指定的地址,如路由表中的第1行。
(2)Gateway(网关):在发送IP数据包时,网关定义了针对特定网络的目的地址,数据包发送的下一跳地址。如果本地计算机直接连接的网络,网关通常是本地计算机对应的网络接口,此时其接口列与网关列保持一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的路由器接口地址或服务器网卡IP地址。
(3)Interface(接口):定义了要到达目标网络所要经过的本地网卡的IP地址。
(4)Metric(跃点数):用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。跃点数越低,代表路由成本越低;跃点数越高,代表路由成本越高。当具有多条到达相同目标网络的路由表项时,TCP/IP会选择具有更低跃点数的路由项。
路由决策:
当PC向某个目标IP地址发起TCP/IP通信时,它将选择一条最佳路由,步骤如下:
(1)将目标IP地址和路由表中每一个路由表项中的子网掩码进行“与”计算,如果相与后的结果匹配对应路由表项中的目标网络地址,则记录下此路由表项。
(2)当计算完路由表中所有的路由表项后,TCP/IP选择记录下的路由表项中的最长匹配的路由(子网掩码中具有最多1位的路由表项)来和此目的IP地址进行通信。如果有多条最长匹配路由,那么选择具有最低跃点数的路由表项;如果有多个具有最低跃点数的最长匹配路由,那么:
①如果是发送响应数据包,并且数据包的源IP地址是某个最长匹配路由的接口的IP地址,那么选择此最长匹配路由。
②其他情况下均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定。
选择网关和接口:
在确定使用的路由项后,网关和接口通过以下方式确定:
(1)如果路由项中的网关地址为空或者网关地址为本地计算机上的某个网络接口,那么通过路由项中对应的网络接口发送数据包,成包情况如下:
①源IP地址为此网络接口的IP地址,目的IP地址为接收此数据包的目的主机的IP地址。
②源MAC地址为此网络接口的MAC地址;目的MAC地址为接收此数据包的目的主机的MAC地址。
(2)如果路由项中的网关地址并不属于本地计算机上的任何网络接口地址,那么通过路由项中对应的网络接口发送数据包,成包情况如下:
①源IP地址为路由项中对应网络接口的IP地址,目的IP地址为接收此数据包的目的主机的IP地址。
②源MAC地址路由项中对应网络接口的MAC地址,目的MAC地址为网关的MAC地址。
以上面的路由表为基础,举例进行说明:
①和单播IP地址192.168.6.8的通信:在进行相与计算时,1、3项匹配,但是3项为最长匹配路由,因此选择3项。3项的网关地址为本地计算机的网络接口192.168.6.6,因此发送数据包时,目的IP地址为192.168.6.8、目的MAC地址为192.168.6.8的MAC地址(通过ARP解析获得)。
②和单播IP地址192.168.6.6的通信:在进行相与计算时,1、3、6项匹配,但是6项为最长匹配路由,因此选择6项。6项的网关地址为本地环回地址127.0.0.1,因此直接将数据包发送至本地环回地址。
③和单播IP地址192.168.6.245的通信:在进行相与计算时,1、3、4、5项匹配,但是4、5项均为最长匹配路由,所以,此时根据跃点数进行选择,5项具有更低的跃点数,因此选择5项;在发送数据包时,目的IP地址为192.168.6.254、目的MAC地址为192.168.6.7的MAC地址(通过ARP解析获得)。
④和单播IP地址10.1.1.1的通信:在进行相与计算时,只有1项匹配;在发送数据包时,目的IP地址为10.1.1.1、目的MAC地址为192.168.6.1的MAC地址(通过ARP解析获得)。
⑤和子网广播地址192.168.6.255的通信:在进行相与计算时,1、3、4、5、7项匹配,但是7项为最长匹配路由,因此选择7项。7项的网关地址为本地计算机的网络接口,因此在发送数据包时,目的IP地址为192.168.6.255,目的MAC地址为以太网广播地址FF:FF:FF:FF:FF:FF。