Что означает «сброс соединения по пиру»? - PullRequest
564 голосов
/ 16 сентября 2009

Что означает ошибка «сброс соединения по одноранговой сети» в TCP-соединении? Является ли это фатальной ошибкой или просто уведомлением или связано с сетевым сбоем?

Ответы [ 2 ]

680 голосов
/ 16 сентября 2009

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

«Сброс соединения по одноранговой сети» - это эквивалент TCP / IP для возврата телефона на крючок. Это более вежливо, чем просто не отвечать, оставляя одного повешенным. Но это не FIN-ACK, ожидаемый от действительно вежливого конвертера TCP / IP.

178 голосов
/ 16 сентября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...