今日精选 ·Windows 2003如何迁移到Windows 2008 ·打不开网页但能上QQ的解决办法 ·配置Windows Server 2008高级防火墙 ·带你现场体验专业服务器机房 ·屏蔽五项功能 让Windows XP极速狂飙 ·木马免杀技术大盘点 ·如何让无线路由信号更强更广 ·各大路由器默认密码(完美汇总经典版) ·如何构建安全的入侵检测系统 ·电脑故障维修判断指导大全(联想内部文件) >>>>
编程开发  Java | .Net | C/C++ | Delphi | VC/VB | XML | ASP | PHP
数据库  Oracle | Mysql | DB2 | Sql server
应用方案 无线网络方案 | 有线网络方案 

网管天地  网吧管理 | 路由器 | 交换机 | 服务器
网络安全  黑客技术 | 病毒漏洞 | 网站安全 | 服务器安全 | 入侵防御 | 防火墙
操作系统 Linux/Unix | Windows 
相关文章
没有相关文章
您现在的位置: 企业网络安全 >> 文章·资讯 >> 技术文库 >> 网络类 >> 文章正文
TCP/IP网络故障诊断的结构化方法(一)
作者:佚名 文章来源:本站原创 点击数: 更新时间:2007-11-28 12:37:00

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

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

  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(由单个路由器连接)或一个远程网络的邻近子网(由几个中间网络之间的路由器连接)。

故障诊断小技巧

  在上述的过程中哪里会出问题呢?首先,Windows有可能无法选择一条网络目的地址字段与“与”运算的结果(即路由的掩码字段与数据包的目标字段“与”运算的结果)相匹配的路由。如果发生这种情况,你就会收到一个路由选择错误,这一般会通过一些运行在服务器上的网络应用程序指示给你。通常情况下,Windows会使用TCP来通知网络堆栈的上层,说明数据包不能送达,就会导致某种错误消息。

  在这种情况下,你的路由表可能已经损坏,或者说,你的路由表中有一个非法的持久性路由。持久性路由指的是你通过使用route -p add手动命令添加到路由表中的路由,这种路由需要重启才可以使用,因为其值是存储在注册表中的。如果你添加了非法的路由,就会产生奇怪的结果。(虽然这种非法路由多数情况下会导致数据通信被莫名其妙地丢弃。)

  另外一方面,如果目标主机位于一个远程子网上,Windows会将数据包转发给一个路由器(默认的网关地址),而这个路由器又不能选择一个路由,那么这种情况就会发生:路由会将把一个ICMP(网际控制报文协议)消息:“目标不可达到(Destination Unreachable)-主机不可到达(Host Unreachable)”返回给发送此数据包的主机。此例中,TCP会通知上层协议,然后就会显示某种错误消息。

  无论何种情况,一个处理问题的实用方法是在发送方主机上检查路由表,还要检查数据包在到达目的地的过程中沿途经过的路径所连接的路由器,查看这些路由表是否一致或已经损坏。一个损坏的路由表可以通过重置TCP/IP堆栈进行恢复(至少在Windows计算机上是这样),具体方法是使用netsh int ip reset命令,大家可以参考微软的KB299357查找祥细资料。不过,需要注意,这种重置操作并不会清除你手动添加到路由表中的路由。

  结论

  我们讨论了路由表是如何工作的,并且阐述了如何诊断路由表的故障,下一篇文章我们将讨论几个更为复杂的例子,例如看看拥有多个地址和多个网卡的服务器的情况。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页


Google
 
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:security    责任编辑:security 
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |