В чем смысл ошибки соединения reset by peer "в TCP-соединении? Является ли это фатальной ошибкой или просто уведомлением или связано с сетевым сбоем?
Что означает "соединение reset by peer"?
Ответ 1
Это смертельно. Удаленный сервер отправил вам пакет RST, который указывает на немедленное удаление соединения, а не обычное рукопожатие. Это обходит нормальный полузакрытый переход состояния. Мне нравится это описание:
"Соединение reset by peer" - это эквивалент TCP/IP, который захлопывает телефон обратно на крючок. Он более вежливый, чем просто не отвечающий, оставляя одну висящую. Но это не FIN-ACK, ожидаемый от действительно вежливого TCP/IP-взаимодействия.
Ответ 2
Это означает, что был получен TCP RST, и соединение теперь закрыто. Это происходит, когда пакет отправляется с вашего конца соединения, но другой конец не распознает соединение; он отправит обратно пакет с установленным битом RST, чтобы принудительно закрыть соединение.
Это может произойти, если другая сторона выйдет из строя, а затем возвращается или если она вызывает close()
в сокете, пока есть данные от вас в пути, и является указанием на то, что некоторые из ранее отправленных вами данных возможно, не были получены.
Это зависит от вас, является ли это ошибкой; если информация, которую вы отправляли, была только в интересах удаленного клиента, тогда может быть неважно, что любые окончательные данные могут быть потеряны. Однако вы должны закрыть сокет и освободить любые другие ресурсы, связанные с соединением.