“connection reset by peer” 是什么意思?

911
在TCP连接中,“connection reset by peer”错误的意思是什么?它是致命错误还是仅仅是通知,或者与网络故障有关?
3个回答

1068

致命的错误。远程服务器发送了一个RST数据包,这表示立即断开连接而不是通常的握手过程。这将绕过正常的半关闭状态转换。我喜欢这种描述

“对等方重置连接”是TCP / IP版的电话挂机。它比简单地不回复更有礼貌,但不像真正有礼貌的TCP/IP交谈者期望的那样发送FIN-ACK。


83
为什么标记为“connection reset by peer”?这听起来应该是“connection reset by the host”或“connection reset by the server”。 - Robert
40
因为这是重置信号的来源,对端发送了一个RST数据包。 - user207421
181
罗伯特,你的担忧对我来说没有意义。"Peer"这个概念比那更加普遍。在典型的客户端-服务器模型中,服务器可以轻松地从"客户端"接收此通知。最初请求连接的机器同样有能力发送此通知。在TCP级别上,一旦连接建立,它看起来是相同的。两台机器在通信时只是平等的 "p eer"。 - codetaku
17
这个数据包可能是被中间的设备(比如路由器)发送的吗? - Arnold Roa
10
这不能称为“服务器重置连接”,因为它可以由客户端或服务器发送。它是无法“绕过”的。如果客户端收到此错误消息,则意味着TCP连接在服务器端不再打开,例如,因为服务器崩溃并重新启动。 - Johannes Overmann
显示剩余6条评论

269

这意味着接收到TCP RST并且连接现已关闭。当从您的连接端发送数据包但另一端不识别该连接时,会返回一个带有RST位设置的数据包以强制关闭连接。

如果另一端崩溃然后重新启动或者在您发送数据时调用close()套接字,这种情况可能会发生,并向您指示先前发送的某些数据可能未被接收。

这是否为错误取决于您;如果您要发送的信息仅供远程客户端使用,则可能并不重要任何最终数据可能已丢失。然而,您应该关闭套接字并释放与连接相关的任何其他资源。


14
如果在打开新套接字时将套接字选项SO_LINGER设置为零,然后正常关闭它,则会设置RST比特。因此,所有连接都将以复位终止。请勿在家中尝试此操作,这只是令人烦恼的。 - Chris Huang-Leaver
1
如何解决这个问题,我们需要重启远程和我们的主机吗? - user2225190
3
你需要重新连接客户端,但首先需要检查你的软件,确保它不是由于应用程序协议错误而导致的,例如关闭对方仍在写入的连接。 - user207421
1
感谢您的评论。它曾经运行了两个月。我也尝试从命令行运行,但仍然出现这个错误。我尝试了“sftp user@machine”,但错误是不一致的。 - user2225190
通常也很常见由路由硬件发送并重新启动,这种情况下,既没有服务器也没有客户端发送重置消息,因此它可能是一条误导性的消息。 - j riv

-1
出现此错误并且连接服务器困难的一个原因是您在UNIX机器上启用了防火墙,但忘记添加接受SSH连接的规则。请搜索您的WPS提供商,您会找到连接到您的机器并添加这些规则的方法:
ufw allow ssh && ufw allow 22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接