分享

什么是Winsock2劫持?

 mactel 2006-10-21
利用WinSock2 SPI可以进行网络内容访问控制的问题。与传统的包过滤防火墙技术不同,
Winsock2 SPI(Service Provider Interface)服务提供者接口建立在Windows开放系统架构WOSA(Windows Open System Architecture)之上,是Winsock系统组件提供的面向系统底层的编程接口。Winsock系统组件向上面向用户应用程序提供一个标准的API接口;向下在Winsock组件和Winsock服务提供者(比如TCP/IP协议栈)之间提供一个标准的SPI接口。各种服务提供者是Windows支持的DLL,挂靠在Winsock2 的Ws2_32.dll模块下。对用户应用程序使用的Winsock2 API中定义的许多内部函数来说,这些服务提供者都提供了它们的对应的运作方式(例如API函数WSAConnect有相应的SPI函数WSPConnect)。多数情况下,一个应用程序在调用Winsock2 API函数时,Ws2_32.dll会调用相应的Winsock2 SPI函数,利用特定的服务提供者执行所请求的服务。

Winsock2 SPI允许开发两类服务提供者——传输服务提供者和名字空间服务提供者。“传输提供者”(Transport Providers, 一般称作协议堆栈,例如TCP/IP)能够提供建立通信、传输数据、日常数据流控制和错误控制等传输功能方面的服务。“名字空间提供者”(Name Space Providers,例如DNS名字解析服务)则把一个网络协议的地址属性和一个或多个用户友好名称关联到一起,以便启用与应用无关的名字解析方案。

Winsock2中使用的传输服务提供者有两类:基础服务提供者和分层服务提供者。基础服务提供者执行网络传输协议(比如TCP/IP)的具体细节,其中包括在网络上收发数据之类的核心网络协议功能。“分层式”(Layered)服务提供者只负责执行高级的自定义通信功能,并依靠下面的基础服务提供者,在网络上进行真正的数据交换。
 
 如果 Winsock 注册表项已损坏,则可能出现这些问题。
症状
在尝试使用 Ipconfig 程序 (Ipconfig.exe) 释放或更新 IP 地址时,可能会收到下列错误消息之一。

消息 1
An error occurred while renewing interface ‘Internet‘:An operation was attempted on something that is not a socket.
消息 2
An error occurred while renewing interface Local Area Connection:the requested service provider could not be loaded or initialized.
在启动 Internet Explorer 时,可能会收到以下错误消息:
The page cannot be displayed
在使用计算机时,您可能会收到以下错误消息:
Initialization function INITHELPERDLL in IPMONTR.DLL failed to start with error code 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





解决方案
确定 Winsock2 是否损坏的手动步骤
要确定症状是否由 Winsock2 项的问题引起,请使用以下方法。
方法 1:使用 Netdiag 工具
要使用 Netdiag 工具,必须安装 Microsoft Windows XP 支持工具。为此,请按照下列步骤操作。

注意• 如果已安装支持工具,请转到本节中的步骤 2。
• 如果未安装支持工具,并且没有 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/t ... ntain/sp2netwk.mspx (http://www.microsoft.com/china/t ... tain/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,然后单击“确定”。  
6. 在可用协议列表中,单击“Internet 协议(TCP/IP)”,然后单击“确定”。
7. 重新启动计算机。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多