Windows下TCP连接拒绝错误码1225与10061的区别及触发场景
Windows TCP连接拒绝相关错误码差异与触发场景
核心差异
两个错误码的核心区别来自所属错误域、覆盖API范围、语义精度三个维度:
- 所属层级与错误域不同:
ERROR_CONNECTION_REFUSED(错误值1225/0x4C9)是Windows核心系统级错误码,定义于系统通用错误头文件中,不属于网络子模块专属错误;WSAECONNREFUSED(错误值10061)是Winsock(Windows套接字栈)专属错误码,归属Winsock自定义的10000号段错误区间,仅在套接字编程链路中返回。 - 覆盖API范围不同:1225错误覆盖Windows全品类网络相关API,包括高层网络封装API、跨协议网络组件接口;10061仅会在直接调用Winsock原生套接字接口(如
connect、WSAConnect)时返回,高层网络API默认不会透传该错误。 - 语义精度不同:1225是粗粒度通用错误,仅标识“连接被远端拒绝”的结果,不携带拒绝发生的链路层级、具体原因信息;10061是套接字层细粒度错误,明确指向TCP三次握手流程被对端主动拒绝的场景。
各错误码触发场景
ERROR_CONNECTION_REFUSED(1225) 常见触发场景
- 调用高层网络封装API发起连接被拒:比如通过WinINet/WinHTTP接口发起HTTP请求、访问SMB远程共享、建立NetBIOS会话、连接远程命名管道时,若目标端口无服务、被对端主动拒绝,高层接口会将底层网络错误统一映射为系统级1225错误返回,不会透传Winsock层的10061。
- 连接请求在系统网络栈上层被拦截:本地Windows防火墙、第三方安全软件在网络过滤驱动层、非套接字层直接拦截出站连接请求,未进入实际发送TCP握手包的流程时,会返回该错误。
- 系统内置网络服务连接失败:调用RPC、远程桌面、远程服务管理等系统内置网络组件时,若目标端对应服务未启动、访问策略拒绝连接,组件封装错误时会统一返回1225。
WSAECONNREFUSED(10061) 常见触发场景
- 原生套接字连接时收到对端RST包:直接调用Winsock接口发起TCP连接,三次握手阶段收到目标主机返回的RST报文,最典型场景就是目标IP的对应端口没有处于监听状态的服务端进程,目标主机内核协议栈直接回RST拒绝连接。
- 目标端服务主动拒接:目标端口虽然有服务在监听,但服务配置了IP黑名单、连接数达到上限、访问规则校验不通过,在收到SYN包后主动回RST拒绝连接,Winsock层会返回10061。
- 本地套接字层拦截:本地安装的Winsock LSP(分层服务提供商)、网络加速/抓包类组件在套接字层拦截连接请求,模拟对端拒绝行为返回错误时,也会抛出该错误码。
内容的提问来源于stack exchange,提问作者zentrunix
相关产品推荐
相关产品推荐

