最近遭遇的一个网络共享文件访问故障非常奇怪,以某一台固定的主机为例,不同时间访问另外一台主机的共享文件时,却出现时通时不通的现象。
现象介绍
具体表现为在主机上运行“\IP地址”命令,来尝试连接另外一台主机,输入正确的用户名和密码之后却提示“当前没有可用的登录服务器来服务登录请求”,但是过一阵子再使用相同的操作又有可能正常访问。
在对希望互访的两台计算机进行检查,发现它们有一个共同的特点,那就是它们都配置了两个IP地址。当前内网使用的IP地址是192.168.0网段的,网关为192.168.0.1;但为了让几台服务器之间进行文件交换,不让其他客户端访问,因此在服务器上又添加了10.10.20网段的IP地址,由于只是内网访问,因此就没有配置10.10.20网段的网关。
共享协议介绍
碰到这样的问题只能求助于网络。在网络上经过一翻搜索之后,才发现是因为共享协议才引发这个故障的。要想彻底认识这个问题,必须先了解共享协议的工作原理。
在Windows系统中,文件共享是通过SMB协议来完成的。SMB协议有两种工作方式,分别为NetBios Over TCP/IP(简称NetBT)和Direct hosting。当采用NetBT方式通信时,会通过NetBIOS接口来进行连接,分占别用UDP137、138和TCP139端口,其中137端口用来进行名字解析,138端口传递数据包,139用于会话服务,进行文件传输,因此最重要的就是139端口了;而采用Direct hosting则更为简单,直接跳过NetBIOS直接口,不需要进行名称解析,直接使用TCP445端口传输。
在早期的Windows系统之中,主要使用NetBIOS进行通讯,但是到了Windows 2000后,又新增加了Direct hosting方式,但并没有取消NetBT。同时NetBT是随网卡绑定的,并且只能绑定在网卡的第一个IP地址上,在本例中,即192.168.0网段的IP地址;而Direct hosting却没有这样的限制。在本例中,访问10.10.20网段的其它主机时,会优先使用自己绑定的同网段的IP地址进行连接,而不会采用192.168.0网段的地址进行连接。看到这里,大家或许已经明白了。问题的关键就在于主机不能自动识别采用正确的连接方式,而是采取的类似“随机抢答”的方式,既可能采用NetBT,也可能采用Direct hosting,当选择前者时就会出现不通的故障,使用后者时则完全正常。
故障解决
知道了其真实原因后,解决起来就方便多了,我们只需要取消NetBT方式,强制使用Direct hosting即可。打开本地连接的属性窗口,双击其中的“Internet协议(TCP/IP)”,在打开的窗口中单击“高级”按钮,再切换到“WINS”选项卡,将其中的“NetBIOS设置”设为“禁用TCP/IP上的NetBIOS”选项,然后单击“确定”按钮保存设置就可以了(图1)。
图1
其实,解除问题的步骤是非常简单的。但是作为优秀的网络管理人员,在网络出现故障的时候,不仅要能够及时排除,而且能够知道引发故障的原因,对相关的原理能够有充分的了解,这样会提高网络素养,提高自己的综合能力将有极大的帮助。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
网络冗余设计并不总是等同于弹性
Ivan Pepelnjak在一篇IPSpace文章中重点阐述了冗余是否等于弹性的问题,他指出:网络冗余设计不等于一切……
-
网络故障一点通 V2:解决网络层故障
出现网速慢,掉线等问题,很多人认为只要加大带宽就行了,但这事实上却是治标不治本,企业需要专业的网络测试工具。
-
案例分析:连接错误导致的网络崩溃
很多用户说不能访问网络,有的不能访问内网,有的不能访问外网,到故障现场查看后,我们发现内网中的电脑获取到的都是外网的IP地址,这究竟是什么原因造成的呢?
-
图解Tracert命令的运行过程
Tracert命令作为一个路由跟踪、诊断实用程序,在DOS和Unix系统下都有此命令,是网管必备的TCP/IP工具之一,经常被用于测试网络的连通性,确定故障位置。