Вопрос Что такое состояния CLOSE_WAIT и TIME_WAIT?


Когда я делаю netstat -a на моей машине Windows я получаю список портов с одним из четырех состояний:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Что CLOSE_WAIT а также TIME_WAIT значит / указать?


147
2017-08-08 19:23


происхождения


Видеть webmasters.stackexchange.com/q/22946 - Dheeraj V.S.
см. «man netstat», прокрутите вниз до раздела состояния: linux.die.net/man/8/netstat - MaQleod
Бесстыдный штекер ответ на наш сестринский Ошибка сервера, - Hennes
Кросс-сайт: askubuntu.com/questions/538443/... - Mokubai♦


ответы:


Из-за того, как работает TCP / IP, соединения не могут быть немедленно закрыты. Пакеты могут выходить из строя или повторно передаваться после закрытия соединения. CLOSE_WAIT указывает, что удаленная конечная точка (другая сторона соединения) закрыла соединение. TIME_WAIT указывает, что локальная конечная точка (эта сторона) закрыла соединение. Соединение поддерживается так, что любые задержанные пакеты могут быть сопоставлены с соединением и обрабатываться соответствующим образом. Соединения будут удалены, когда они будут отключены в течение четырех минут. Видеть http://en.wikipedia.org/wiki/Transmission_Control_Protocol Больше подробностей.


155
2017-08-08 19:42



Ласковые слова «другая сторона» и «эта сторона» сбивают с толку. Можем ли мы это переписать (правильно) с «источником» и «местом назначения» вместо этого? - ADTC
@ADTC Нет, потому что это не имеет смысла - TCP является полнодуплексным, обе стороны могут быть источником или получателем. Правильными словами будут «локальная конечная точка» и «удаленная конечная точка». - Jonathon Reinhart
@JonathonReinhart, Это просто "местный" а также "дистанционный пульт«Конечная точка» является избыточной. - Pacerier
@Pacerier За исключением «конечной точки», это существительное, а «local» - нет. - Jonathon Reinhart
@JonathonReinhart, Оба "местный" а также "дистанционный пульт«Могут быть существительные. В стороне я нашел здесь еще одну дискуссию, в которой говорится, что это« местные / вглядываться"вместо" local / remote ": stackoverflow.com/questions/14388706/... - Pacerier


В основном состояния «WAIT» означают, что одна сторона закрыла соединение, но окончательное подтверждение закрытия ожидает.

См. эта диаграмма состояний TCP для деталей:

http://www.jxos.org/Projects/TCP/tcpstate.html


27
2017-08-08 19:44



Это точно описывает CLOSE_WAIT, но не TIME_WAIT. TIME_WAIT указывает, что локальное приложение закрыло соединение, а другая сторона подтвердила и отправила собственный FIN. Мы сейчас ждем любые бродячие дублированные пакеты, которые могут нарушить новый пользователь того же порта. - Chris Smowton
@ChrisSmowton, Итак, кто использует правильную терминологию? Диаграмма или netstat? (ср) - Pacerier
@Pacerier Я думаю, они совпадают - как вы думаете, они не согласны? - Chris Smowton
@ChrisSmowton Итак, это означает, что следующий владелец порта может получить дополнительные байты, и это может сломать ответ, если мы установим TIME_WAIT = 0? - MonsterMMORPG
Возможно, но очень маловероятно, так как порядковые номера должны были бы соответствовать приложению, чтобы увидеть, как пакет изгоев, сращиваемый в потоке, или получателю нужно будет буферизовать пакет явно не по порядку, пока не появится нужный порядковый номер. Я не знаю достаточно о практических реализациях, чтобы рассказать вам, осуществляется ли последнее на практике. - Chris Smowton


TIME_WAIT представляет ожидание достаточного времени, чтобы убедиться, что удаленный TCP получил ACK своего запроса FIN. Видеть en.wikipedia.org/wiki/Transmission_Control_Protocol (а также RFC 793)


-1
2018-05-20 11:39



Что это добавляет к информации, предоставленной существующими ответами? - fixer1234
Добавляет ссылку на RFC 793 - Denio Mariz