( http://blog.chinaunix.net/u/9951/showart_304813.html)
关键字:故障特点是ping或tracert时总是出现一个?号,解析不了域名,故不能上网。
客户端:Win XP SP2, 主板: MSI 845 网卡:Realtek RTL8139 Family PCI Fast Ethernet(板载),网卡驱是安装XP SP2是自动安装的.IE 6。
网络:电信ADSL (ADSL猫、ADSL线路和电信DNS服务器确认无故障--我用笔记本时可正常上网)
故障现象:
开始上网正常,都用了好几天。今天上网想安装一个防木马的东东,下载一个软件安装后并重启,却发现不能上网了(ADSL可以拨通)。移除安装的软件,也不能。用最新的病毒代码升级杀毒软件,扫描系统,没发现病毒。可以ping通电信的DNS服务器IP(221.228.255),本地IP,电信网关等,就是无法解析域名。手动分配一个IP和设定为DNS服务器,故障依旧。
IE显示Cannot find server or DNS Error (刚才提到过,电信DNS服务器及ADSL线路和猫是OK的)
在命令状态用NSLOOKUP:显示
C:/Documents and Settings/administrator>nslookup
*** Can’t find server name for address 221.228.255.1: No response from server
Default Server are not availabe
Default Server: Unknow
Addres: 221.228.255
C:/Documents and Settings/ administrator >tracert 192.168.0.2
Tracing route to ? over a maximum of 30 hops
1 <1 ms <1 ms <1 ms No resources.
D:/Documents and Settings/wgchen>tracert 221.228.255.1
Tracing route to b.center-dns.jsinfo.net [221.228.255.1]
over a maximum of 30 hops:
1 20 ms 29 ms 19 ms 58.214.216.1
2 19 ms 19 ms 19 ms 58.215.67.21
3 19 ms 19 ms 19 ms 58.215.66.17
4 19 ms 19 ms 19 ms b.center-dns.jsinfo.net [221.228.255.1]
Trace complete.
故障分析:
1,可能是网卡驱动原因,前面提到网卡驱动是安装操作系统时自动安装的(但能Ping通,除可能排除).
2, 防火墙的原因.
tracert 程序 windows系统 使用的是icmp报文,nslookup 程序使用的是 udp 报文,port 53。(但关闭防火墙后,故障还是一样)
3,WINSOCK接口出现问题(最后从网上找到资料,确实如下)
相关解决方法见下.
相关资料一:
Windows下任何基于TCP/IP的应用程序都必须通过WinSock接口访问网络,Winsock提供与底层传输协议无关的高层数据传输编程接口。在Windows系统中,使用WinSock接口为应用程序提供基于TCP/IP协议的网络访问服务。既然该文件已损坏,当然无法上网浏览网页了。但为什么用腾讯QQ可以聊天呢?我们知道Internet上的通信是基于TCP/IP协议的,TCP/IP协议又分为TCP和UDP两种,QQ正是使用UDP进行通讯的,而Winsock损坏并不影响UDP的正常传输。这也正是本文所说的不能上网浏览网页,但可以用QQ聊天的原因所在。
相关资料二
修复时破坏了winsock2系统文件
原因应该是修复时破坏了winsock2系统文件。从网上 找到lspfix。exe这个软件。
LSPFix.exe这个软件主要用来辅助修复HijackThis扫描发现的010项。
使用时,请关闭所有IE界面和文件夹界面后运行LSPFix,运行后,把要修复的那一个010项从左边转到右边,点“Finish”即可。(不过这之前,需要在“I know what I`m doing”前面打勾。)具体方法如下:
1,下载LSPFix.exe和WinsockxpFix.exe两个软件。
2,运行lspfix.exe,可以在窗口左边看到目前使用的winsock协议文件,其中就有msplus.dll
3,选中那个“I know what I am doing”,选择msplus.dll,将其移到右边窗口去。
以上就是很多网上论坛提供的解决办法。但是很多情况下你会发现,这样是没有效果的,重新启动后会发现msplus.dll还是没有被移除,也就不能被删除了。
真正的解决办法接下来要这样做:
4,发现上述办法无效时,就按3的办法,把左边窗口所有文件都移到右边去!这样msplus.dll也待不下去了!没有必要的话不要轻易将所以文件移除,这样可能造成系统无法启动。
5,重新启动,这时msplus.dll可以删除了,赶快删了它!
6,运行WinsockxpFix.exe,选择修复。
7,重新启动,发现msplus.dll已经消失,问题解决。
特别提醒:在使用LSPFix.exe进行修复前一定要下载WinsockxpFix.exe到本地,因为LSPFix.exe进行修复后不能连接网络的.
ispfix下载: http://www.cnblogs.com/Files/myhjcqk/ispfix.rar
WinsockXPFix下载: http://www.cnblogs.com/Files/myhjcqk/WinsockXPFix.rar
如果上述方法仍无效的话,使用以下工具保证可以:
winsockfix
DubaTool_RepairLSP
相关资料三:
修复WINXP无法上网问题(系统winsock2损坏)
不能上网了。查看网络设置 IP、DNS、网关都设置正确。ping 外网的IP可以PING得通,不过回显的信息不能显示出解释出该域名的域名服务器,而是显示一个“?“号,如:
Pinging ? [192.168.10.11] with 32 bytes of data:
Reply from 192.168.10.11: bytes=32 time=138ms TTL=49
Reply from 192.168.10.11: bytes=32 time=135ms TTL=49
Reply from 192.168.10.11: bytes=32 time=136ms TTL=49
Reply from 192.168.10.11: bytes=32 time=135ms TTL=49
Ping statistics for 192.168.10.11:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 135ms, Maximum = 138ms, Average = 136ms
正常情况下,应该是这样显示的:
Pinging www.homepage.com [192.168.10.11] with 32 bytes of data:
Reply from 192.168.10.11: bytes=32 time=138ms TTL=49
Reply from 192.168.10.11: bytes=32 time=135ms TTL=49
Reply from 192.168.10.11: bytes=32 time=136ms TTL=49
Reply from 192.168.10.11: bytes=32 time=135ms TTL=49
Ping statistics for 192.168.10.11:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 135ms, Maximum = 138ms, Average = 136ms
如果ping域名的话会出现这样的错误解释:
C:/>ping www.nbip.net
Ping request could not find host www.nbip.net. Please check the name and try again.
一直没整明白问题在哪里,后来使用超级兔子的强力修复winsock2,结果好了。原来NOD32在杀毒的时候修改了系统的winsock2接口,来达到保护系统的目的。此外如果此接口被其他程序占用,或者是winsock2占用程序丢失也导致不能上网。
随后我在微软的网站找到《如何确定 Winsock2 是否损坏并从损坏中恢复》 ,对此有了更详细的说明
本文介绍如何确定 Winsock2 是否损坏并从损坏中恢复。重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。
症状
在尝试使用 Ipconfig 程序释放并更新 IP 地址时,您可能会收到以下错误信息:
An error occurred while renewing interface 'Internet':An operation was attempted on something that is not a socket.
当您启动 Internet Explorer 时,可能会收到以下错误信息:
该页无法显示。
在使用计算机时,可能会收到以下错误信息:
在 IPMONTR.DLL 中初始化函数 INITHELPERDLL 启动失败,错误代码为 10107
此外,您可能没有 IP 地址或自动专用 IP 寻址 (APIPA) 地址,并且可能会收到 IP 数据包,但没有发送它们。
当您使用 ipconfig /renew 命令时,可能会收到以下错误信息。
消息 1
An error occurred while renewing interface local area connection:an operation was attempted on something that is not a socket.Unable to contact driver Error code 2.
消息 2
The operation failed since no adapter is in the state permissible for this operation.
消息 3
The attempted operation is not supported for the type of object referenced.
在设备管理器中,当您单击“显示隐藏的设备”时,“非即插即用驱动程序”下面的列表中停用“TCP/IP Protocol Driver”,并收到错误代码 24。
当您创建拨号连接时,可能会收到以下错误信息:
Error 720:No PPP Control Protocols Configured
原因
如果 WinSocks 注册表项损坏,则可能出现这些问题。
解决方案
如何确定 Winsock2 注册表项是否损坏
要确定症状是否由 Winsock2 注册表项的问题引起,请使用以下方法。
方法 1:使用 Netdiag 工具
要使用 Netdiag 工具,您必须安装 Microsoft Windows XP 支持工具。为此,请按照下列步骤操作。
注意:
· 如果已经安装了支持工具,请直接执行本部分的第二步。
· 如果未安装支持工具并且没有 Windows XP 安装 CD,请转到“方法 2”。
1. 插入 Windows XP 安装 CD,然后找到 Support/Tools 文件夹。
2. 双击“Setup.exe”文件。
3. 按照屏幕上的步骤操作,直至看到“请选择安装类型”屏幕。
4. 在“请选择安装类型”屏幕上,单击“完全”,然后单击“下一步”。
安装完成后,请按照下列步骤操作:
1. 单击“开始”,单击“运行”,键入 Command,然后单击“确定”。
2. 键入 netdiag /test:winsock,然后按 Enter。
Netdiag 工具将返回若干网络组件(包括 Winsock)的测试结果。要了解该测试的更多详细信息,请在以下 netdiag 命令结尾处添加 /v:netdiag /test:winsock /v
方法 2:使用 Msinfo32 程序
注意:只有在没有 Windows XP 安装 CD 并且未安装支持工具时,才应使用此方法。
1. 单击“开始”,单击“运行”,键入“Msinfo32”,然后单击“确定”。
2. 展开“组件”,展开“网络”,然后单击“协议”。
3. “协议”下有 10 个节。如果 Winsock2 注册表项未损坏,则节标头应包含以下名称:
?MSAFD Tcpip [TCP/IP]
MSAFD Tcpip [UDP/IP]
RSVP UDP Service Provider
RSVP TCP Service Provider
MSAFD NetBIOS [/Device/NetBT_Tcpip...
MSAFD NetBIOS [/Device/NetBT_Tcpip...
MSAFD NetBIOS [/Device/NetBT_Tcpip...
MSAFD NetBIOS [/Device/NetBT_Tcpip...
MSAFD NetBIOS [/Device/NetBT_Tcpip...
MSAFD NetBIOS [/Device/NetBT_Tcpip...
如果名称与此列表中的内容有任何不同,则说明 Winsock2 注册表项已经损坏,或者您安装了第三方加载项(如代理服务器软件)。
如果安装了第三方加载项,则加载项的名称将替换列表中的字母“MSAFD”。
如果列表的内容超过 10 个节,则说明安装了第三方加载项。
如果少于 10 个节,则说明缺少信息。
注意:这些条目所代表的是仅装有 TCP/IP 协议的安装。您可能有一个正在工作的 Winsock,如果安装了另一个协议,则可能会看到其他条目。例如,如果安装 NWLink IPX/SPX,您将另外看到 7 个节,也就是总共 17 个节。下面的示例展示了一个新的节标头:
MSAFD nwlnkipx [IPX]
通过安装 NWLink IPX/SPX 创建的每个新节也以“MSAFD”开头。因此,仍然只有两个不以这些字母开头的节。
如果 Netdiag 测试失败,或者,如果通过查看 Msinfo32 信息确定了 Winsock 的损坏,您必须使用下一部分的步骤修复 Winsock2 注册表项。
如何恢复损坏的 Winsock2
#带 Service Pack 2 的 Windows XP
要在安装了 Windows XP Service Pack 2 (SP2) 的情况下修复 Winsock,请在命令提示符处键入 netsh winsock reset,然后按 Enter。
注意:运行此命令后请重新启动计算机。此外,对于运行 Windows XP SP2 的计算机,还有一个新的 netsh 命令可用于重新构建 Winsock 注册表项。有关更多信息,请访问下面的网站:
http://www.microsoft.com/china/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx ( http://www.microsoft.com/china/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx)
警告:在运行 netsh winsock reset 命令时,访问或监视 Internet 的程序(如防病毒程序、防火墙或代理客户端)可能会受到不良影响。如果执行此解决方案后某个程序无法正常工作,请重新安装该程序以恢复功能。
注意:如果这些步骤都无法解决问题,请执行下一部分的步骤。
#不带 Service Pack 2 的 Windows XP
如果要在未安装 Windows XP SP2 的情况下修复 Winsock,请删除损坏的注册表项,然后重新安装 TCP/IP 协议。
第 1 步:删除损坏的注册表项
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,有可能会导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。
有关如何备份注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 ( http://support.microsoft.com/kb/322756/) 如何在 Windows XP 和 Windows Server 2003 中备份、编辑和还原注册表
1. 单击“开始”,然后单击“运行”。
2. 在“打开”框中,键入“regedit”,然后单击“确定”。
3. 在注册表编辑器中,找到以下注册表项,右键单击每一项,然后单击“删除”:
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock2?
4. 当提示您确认删除时,单击“是”。
注意:删除 Winsock 注册表项后请重新启动计算机。这样做可以让 Windows XP 操作系统为这两个注册表项创建新的 shell 条目。如果在删除 Winsock 注册表项后未重新启动计算机,则下一步将无法正常进行。
第 2 步:安装 TCP/IP
1. 右键单击网络连接,然后单击“属性”。
2. 单击“安装”。
3. 单击“协议”,然后单击“添加”。
4. 单击“从磁盘安装”。
5. 键入 C:/Windows/inf,然后单击“确定”。 (注:inf是个受系统保护的文夹,默认是隐藏的)
6. 在可用协议列表中,单击“Internet 协议 (TCP/IP)”,然后单击“确定”。