Что означает "соединение reset by peer"?

В чем смысл ошибки соединения reset by peer "в TCP-соединении? Является ли это фатальной ошибкой или просто уведомлением или связано с сетевым сбоем?

Ответ 1

Это смертельно. Удаленный сервер отправил вам пакет RST, который указывает на немедленное удаление соединения, а не обычное рукопожатие. Это обходит нормальный полузакрытый переход состояния. Мне нравится это описание:

"Соединение reset by peer" - это эквивалент TCP/IP, который захлопывает телефон обратно на крючок. Он более вежливый, чем просто не отвечающий, оставляя одну висящую. Но это не FIN-ACK, ожидаемый от действительно вежливого TCP/IP-взаимодействия.

Ответ 2

Это означает, что был получен TCP RST, и соединение теперь закрыто. Это происходит, когда пакет отправляется с вашего конца соединения, но другой конец не распознает соединение; он отправит обратно пакет с установленным битом RST, чтобы принудительно закрыть соединение.

Это может произойти, если другая сторона выйдет из строя, а затем возвращается или если она вызывает close() в сокете, пока есть данные от вас в пути, и является указанием на то, что некоторые из ранее отправленных вами данных возможно, не были получены.

Это зависит от вас, является ли это ошибкой; если информация, которую вы отправляли, была только в интересах удаленного клиента, тогда может быть неважно, что любые окончательные данные могут быть потеряны. Однако вы должны закрыть сокет и освободить любые другие ресурсы, связанные с соединением.