route print

C:\>route print
  IPv4 Route Table
  ===========================================================================
  Interface List
  0x1 ........................... MS TCP Loopback interface
  0x10003 ...00 03 ff 25 88 8c ...... Intel 21140-Based PCI Fast Ethernet Adapter
  (Generic)
  ===========================================================================
  ===========================================================================
  Active Routes:
  Network Destination     Netmask        Gateway     Interface     Metric
  0.0.0.0                 0.0.0.0        172.16.11.1 172.16.11.30  20
  127.0.0.0               255.0.0.0      127.0.0.1   127.0.0.1     1
  172.16.11.0             255.255.255.0  172.16.11.30 172.16.11.30 20
  172.16.11.30            255.255.255.255 127.0.0.1  127.0.0.1     20
  172.16.255.255          255.255.255.255 172.16.11.30 172.16.11.30 20    
  224.0.0.0               240.0.0.0       172.16.11.30 172.16.11.30 20
  255.255.255.255         255.255.255.255 172.16.11.30 172.16.11.30 1
  Default Gateway: 172.16.11.1
  ===========================================================================
  Persistent Routes:
  None
 
  路由表中每一个路由表项(或路由)都由五个字段组成:

  网络目标地址(Network Destination):代表某个可能的目的地址,它是一个IP地址或子网,即表示IP数据包被转发到何处的地址。
  掩码(Netmask):一个用于将某数据包中的IP地址中的目标地址字段与上面可能的网络地址匹配起来的位模式。
  网关(Gateway):下一跳的IP地址,数据包必须被转发到此,才能到达特定的目的网络。
  接口(Interface):下一跳的接口,这个接口必须用于将数据包进行转发,以达到特定的目的网络。
  跳数(metric):表示到达目的的过程中经过了多少跳数(路由器数),即路由的成本。


示例一:目标主机在本地子网上

  假设这个服务器(172.16.11.30)要将数据包发往同一子网内的另一台主机(IP地址为172.16.11.80)。那么这个数据包的源地址为172.16.11.30,目标地址为172.16.11.80。下面我们将展示Windows是如何用其路由表来决定选择使用哪条路由的:
  1. Windows首先依次从路由表中取出每一个路由,并将数据包的目标地址(172.16.11.80)与选中路由的掩码执行逻辑“与”运算。下面展示结果,这里,路由表中的每一个路由是通过其网络目的地址确定的:


Route                   Netmask           172.16.11.80 AND Netmask

0.0.0.0                 0.0.0.0           0.0.0.0
127.0.0.0               255.0.0.0         172.0.0.0
172.16.11.0             255.255.255.0     172.16.11.0
172.16.11.30            255.255.255.255   172.16.11.80
172.16.255.255          255.255.255.255   172.16.11.80
224.0.0.0               224.0.0.0         160.0.0.0
255.255.255.255         255.255.255.255   172.16.11.80

 2. 对每一个路由来说,这个“与”运算的结果要与路由的网络目标地址比较,二者的一次匹配意味着这条路由可用于将数据包转发到其目标地址。如果发现不只有一个匹配,Windows就会选用拥有最长匹配的路由(即1的位数最高的路由)。如果这并没有产生唯一的路由,Windows就任意地选用一个作为路由。从上面的列表中,这个“与”运算的结果导致了两个匹配(路由1和3),因此Windows选择了拥有最长匹配的路由,即第三行的那个。其结果是Windows知道了使用哪个路由将数据包传送到目的地。下面是这条路由在服务器的路由表中看起来的样子:

  Network Destination     Netmask         Gateway           Interface Metric
  172.16.11.0               255.255.255.0   172.16.11.30    172.16.11.30 20

  3. Windows现在要使用下面的算法来决定下一步做什么:

  a) 如果路由的网关字段与服务器上的一个网络接口的地址相匹配(或者如果网关是空的话),那么Windows就会用在路由中指定的接口将数据包直接发送到目标地址。

  b) 如果路由的网关字段并不与服务器上网络接口的任意地址相匹配,Windows将会把数据包转发给路由中的网关字段的地址。

  很明显,这里符合条件a,路由的网关字段(172.16.11.30)即为分配给服务器单个网卡的地址。Windows因此会作出决定认为目标地址位于本地子网上,这也就是说Windows不需要将数据包发送到任何路由器,而是直接发送给其目的地址。在此例中,Windows使用服务器的172.16.11.30的网络接口,简单地将数据包发送给172.16.11.80,接收主机得到了数据包。

 示例二:目标主机在远程子网上

  现在,让我们继续同样的过程,不过这次我们假定服务器想把数据包发往一个不同子网上的一台主机(IP地址为172.16.10.200)。换句话说,数据包的源地址为172.16.11.30,目标地址为172.16.10.200。下面我们看一下Windows是如何利用路由表决定选择哪条路由的: 网管网bitsCN_com

  1. Windows从路由表中取出每一条路由,将数据包的目标地址(172.16.10.200)与路由中的掩码进行“与” 运算。运算结果如下:

 

    Route           Netmask                  172.16.10.200 AND Netmask
    0.0.0.0         0.0.0.0                   0.0.0.0
    127.0.0.0       255.0.0.0                 172.0.0.0 
    172.16.11.0     255.255.255.0             172.16.10.0
    172.16.11.30    255.255.255.255           172.16.10.200 
    172.16.255.255  255.255.255.255           172.16.10.200
    224.0.0.0       224.0.0.0                 160.0.0.0 
    255.255.255.255 255.255.255.255           172.16.10.200

 
    2. 对于每一条路由来说,“与”运算的结果要与路由中网络目标地址相比较,二者匹配意味着这条路由可被用于将数据包转发到其目标地址。从我们上面的第二张路由表,你可以看出这次只有一个匹配,也就是说是第一行,这个路由的网络目地字段(0.0.0.0)与“与”运算的结果匹配。因此Windows用来将数据包转发到其目标地址的路由即为下面的路由:

 

  Network Destination    Netmask     Gateway     Interface Metric
  0.0.0.0           0.0.0.0    172.16.11.1   172.16.11.30 20

  3. 然后Windows就会使用前述的算法来决定下一步做什么,这次符合条件b,因为路由的网关字段(172.16.11.1)与分配给服务器的单独网卡的地址(172.16.11.30)并不匹配。Windows因此会决定目标地址位于一个远程子网上,将数据包转发给路由器,路由器通过继续转发数据包将其传送到目的地。在此例中,Windows使用服务器的172.16.11.30网络接口,将数据包发送到在网关字段中所显示的地址。一旦位于172.16.11.1的路由器收到了数据包,它会决定下一步需要采取什么步骤,才能将数据包转发到其最后的目标地址172.16.10.200,而这又依赖于172.16.11.10/24网络是172.16.11.11/24(由单个路由器连接)或一个远程网络的邻近子网(由几个中间网络之间的路由器连接)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章