提问人:Franck Freiburger 提问时间:9/17/2009 最后编辑:amarnathFranck Freiburger 更新时间:1/19/2023 访问量:1360293
“连接重置by peer”是什么意思?
What does "connection reset by peer" mean?
答:
1069赞
ire_and_curses
9/17/2009
#1
这是致命的。远程服务器已向您发送 RST 数据包,该数据包表示连接立即断开,而不是通常的握手。这绕过了正常的半闭合状态转换。我喜欢这个描述:
“通过对等重置连接”相当于将电话重新挂在挂机上的 TCP/IP。这比仅仅不回复,留下一个悬而未决更礼貌。但这并不是真正有礼貌的 TCP/IP 对话者所期望的 FIN-ACK。
评论
83赞
Robert
9/26/2014
为什么它被标记为“对等方重置连接”?听起来应该是“主机重置连接”或“服务器重置连接”
40赞
user207421
12/18/2014
@Robert 因为这就是重置的来源。对等方发送了 RST 数据包。
181赞
codetaku
7/7/2015
...罗伯特,你的担心对我来说毫无意义。严格来说,Peer 比这更普遍。在典型的客户端-服务器模型中,服务器可以很容易地从“客户端”接收此通知。最初请求连接的计算机具有同样强大的功能来发送此通知。在TCP级别上,一旦连接持续进行,它看起来就是一样的。两台机器在通信时只是对等体。
17赞
Arnold Roa
9/23/2016
这个包装可能是由中间的另一台设备(如路由器)发送的?
10赞
Johannes Overmann
7/17/2017
它不能称为“服务器重置连接”,因为它可以由客户端或服务器发送。它不能被“绕过”。如果客户端收到此错误,这意味着 TCP 连接不再在服务器中打开,例如,由于服务器崩溃并重新启动。
269赞
mark4o
9/17/2009
#2
这意味着已收到 TCP RST,并且连接现已关闭。当数据包从连接的一端发送,但另一端无法识别连接时,就会发生这种情况;它将发回一个设置了 RST 位的数据包,以便强制关闭连接。
如果另一端崩溃然后重新启动,或者它在传输过程中有来自您的数据时调用套接字,并且向您表明您之前发送的某些数据可能尚未收到,则可能会发生这种情况。close()
这是否是错误由您决定;如果您发送的信息只是为了远程客户端的利益,那么任何最终数据丢失可能都无关紧要。但是,您应该关闭套接字并释放与连接关联的任何其他资源。
评论
14赞
Chris Huang-Leaver
3/2/2015
如果在打开新套接字时将套接字选项SO_LINGER设置为零,然后正常关闭它,则将设置 RST 位。因此,所有连接都将以重置结束。不要在家尝试这个,它只是烦人。stackoverflow.com/questions/3757289
1赞
user2225190
7/23/2018
那么如何解决这个问题,我们是否需要重新启动远程和主机?
3赞
user207421
7/29/2018
@user2225190 您需要重新连接客户端,但首先需要检查您的软件以确保它不是由于应用程序协议错误造成的,即关闭另一端仍在写入的连接。
1赞
user2225190
7/29/2018
感谢您的评论。它曾经工作了两个月。我也在从命令行尝试它,但仍然收到此错误。我尝试“sftp user@machine”。错误不一致。
0赞
j riv
3/26/2022
通过重新启动的路由硬件发送也很常见,在这种情况下,服务器或客户端都不会发送重置消息,因此它可能是误导性消息。
评论