时间能够以这样的方式过去令人感到惊异。人们倾向于认为计算机技术属于高科技,但是,TCP/IP协议在过去的三十年里以各种形式出现,无所不在。因此,TCP/IP协议有时间变得真正成熟起来,并且更稳定和更可靠。然而,当涉及到计算机的时候,事情就没有那样简单了。当路由包通过网络的时候,有时候会出现错误。在这种情况下,熟悉Windows路由表是很有帮助的。路由表能够决定来自有问题的机器的数据包的去向。在本文中,我将向你介绍如何查看Windows路由表以及如何让Windows路由表中包含的数据有意义。
查看Windows路由表
路由表是Windows的TCP/IP协议栈的一个重要的部分。但是,路由表不是Windows操作系统向普通用户显示的东西。如果你要看到这个路由表,你必须要打开一个命令提示符对话框,然后输入“ROUTE PRINT”命令。然后,你将看到一个类似于图A中显示的图形。
图A:这是Windows路由表的外观
screen.width-500)this.style.width=screen.width-500;">
在我深入讨论这个路由表之前,我建议你在命令提示符对话框中输入另一个命令。这个命令是:IPCONFIG /ALL
我建议你使用IPCONFIG /ALL命令的理由是因为这个命令能够显示TCP/IP协议在机器中实际上是如何设置的。的确,你可以在网卡属性页认真查看TCP/IP协议,但是,如果你从IPCONFIG得到这个信息,这个信息会更可靠。在过去的几年里,我曾经遇到过这样一些例子,IPCONFIG报告的信息与机器中的TCP/IP协议设置屏幕中显示的信息完全不一样。这种事情不常见,但是,如果正好出现这种错误,你就会遇到这种不匹配的情况。坦率地说,键入到TCP/IP属性页中的信息反映了你想要Windows为选择的网络设置的TCP/IP协议。IPCONFIG提供的信息显示了Windows实际上设置的协议。
即使你没有出现一些奇怪的Windows错误,从IPCONFIG获得你的配置信息仍是非常有用的。如果一台机器有多个网卡,要记住每一个网卡绑定的设置是很困难的。IPCONFIG列出了如图B所示的每一个网卡的各种设置,很容易阅读。
图B:IPCONFIG /ALL显示这台机器上每一个网卡的TCP/IP设置
screen.width-500)this.style.width=screen.width-500;">
检查路由表
当这篇文章要讨论路由表的时候,你现在也许很想知道我为什么让你执行IPCONFIG /ALL命令。这样做的原因是你一般来说从来不看路由表,除非你的机器出现了问题。如果你遇到了问题,开始诊断故障的最佳地方就是对比IPCONFIG提供的信息和路由表中存储的信息。
正如你在图B中所看到的那样,IPCONFIG/ALL屏幕显示了IP地址、默认网关等一些基本的TCP/IP信息。然而,路由表却不是这样容易看懂。所以,我要用一些时间讨论如何阅读路由表以及路由表中的信息代表什么意思。
为了理解这些列中的信息代表什么意思,你需要稍微了解一下路由器是如何工作的。路由器的工作是协调一个网络与另一个网络之间的通信。因此,一台路由器包含多个网卡,每一个网卡连接到不同的网段。
当用户把一个数据包发送到本机以外的一个不同的网段时,这个数据包将被发送到路由器。路由器将决定这个数据包应该转发给哪一个网段。如果这台路由器连接两个网段或者十几个网段也没有关系。决策的过程都是一样的,而且决策都是根据路由表做出的。
如果你要查看执行“Route Print”命令之后屏幕显示的内容,你将发现路由表分为五列。第一列是网络目的地址。列出了路由器连接的所有的网段。网络掩码列提供这个网段本身的子网掩码,而不是连接到这个网段的网卡的子网掩码。这基本上能够让路由器确定目的网络的地址类。
第三列是网关。一旦路由器确定它要把这个数据包转发到哪一个目的网络,路由器就要查看网关列表。网关表告诉路由器这个数据包应该转发到哪一个IP地址才能达到目的网络。
接口列告诉路由器哪一个网卡连接到了合适的目的网络。从技术上说,接口列仅告诉路由器分配给网卡的IP地址。那个网卡把路由器连接到目的网络。然而,路由器很聪明,知道这个地址绑定到哪一个物理网卡。
最后一列是测量。测量本身是一种科学。但是,我将设法简单向你解释一下它们做什么。我听说过的一个最佳的解释测量的方法是用机场的词汇对此进行解释。设想一下,我需要从北卡罗来纳州的加洛特市飞往佛罗里达州的迈阿密。由于加洛特机场非常大,我要去迈阿密海滩可以有很多选择。我可以乘坐西北航空公司的班机。那个班机能把我带到密执安州的底特律,然后从底特律飞往迈阿密。我还可以乘坐大陆航空公司的班机飞往休斯顿,然后飞往迈阿密。另一个选择是乘坐美国航空公司的飞机直接飞往迈阿密。我应该选择哪一条线路呢?
在现实生活中,有许多因素值得考虑,如飞机票的价格和起飞的时间等。但是,让我们假设这一切都是相同的。如果除了航线之外,航班都是一样的,那么,我会选择中途停留最少的航班。那会使我以最快的速度到达目的地。由于停留的次数少,我的衔接出问题的机会就少,行李丢失等问题也会减少。
路由是以同样的方式工作的。许多时候,路由器有很多方法发送一个数据包。在这种情况下,以最短的(或者最可靠的)路径发送数据包是有意义的。测量就在这里发挥作用了。Windows一般不查看测量列,除非通向一个目的地有很多路径。如果有多个路径,Windows将查看测量列以确定最短的路径。这是一种非常简单的解释。但是,这种解释说明了要点。
额外的路由选择
早些时候,我曾介绍过“Route Print”命令。但是,你用“Route”命令实际上能够做很多事情。“Route”命令的参数如下:
ROUTE [-f] [-p] [command [destination] []
-f开关是可以选择的。这个开关告诉Windows清除路由表中所有的网关输入记录。如果这个-f开关与其它命令一起使用,那么,在执行这个命令中的其它指令之前,所有的网关输入记录都将被清除。
-p开关使指定的路由保持不变。一般来说,当服务器重新启动的时候,你通过“ROUTE”命令指定的任何路由都会被删除。-p开关告诉Windows保留这个路由,即使系统重新启动也不改变。
“ROUTE”命令参数的命令部分相对简单一些。这个命令集包含PRINT、ADD、DELETE和CHANGE四个选项。我曾向你们介绍过“ROUTE PRINT”命令。即使这个命令也包含其它的选项。例如,你可以使用通配符与这个命令一起使用。例如,如果你只要输出与192.x.x.x子网有关的路由,你可以使用这个命令:“ ROUTE PRINT 192*”。
“ROUTE DELETE”命令的工作方式与“ROUTE PRINT”非常相似。简单地输入“ROUTE DELETE”命令,然后输入你要从路由表中删除的目的地址和网关就可以了。例如,如果你要删除192.0.0.0网关,你可以输入这个命令:“ROUTE DELETE 192.0.0.0”。
“ROUTE CHANGE”和“ROUTE ADD”命令的基本参数都相同。当你输入这个命令的时候,你必须指定目的地、子网掩码和网关。你还可以指定一个测量和接口,不过,这是可以选择的。例如,如果你要使用最低参数增加一个目的地,你可以输入如下命令:ROUTE ADD 147.0.0.0 255.0.0.0 148.100.100.100
在这个命令中,147.0.0.0是你新增加的目的地址。255.0.0.0是这个目的地址的子网掩码,148.100.100.100是网关。你可以使用METRIC和IF这两个参数扩大这个命令的功能。例如:ROUTE ADD 147.0.0.0 255.0.0.0 148.100.100.100 METRIC 1 IF 1
测量这个参数是可以选择的。但是,它指定了测量或者路由跳数的数量。IF参数告诉Windows使用哪一个网卡。在这种特殊的情况下,Windows将使用作为接口1与Windows绑定的网卡。如果你不使用IF参数,Windows将搜索可供使用的最佳的网卡。
结论
在这篇文章中,我解释了如何使用“ROUTE”命令显示Windows路由表,和如果有必要的话如何修改这些路由表。如果你需要一些额外的帮助,你输入“ROUTE /?”命令可以得到更多的参数的例子。