Questão Quais são os estados CLOSE_WAIT e TIME_WAIT?


Quando eu faço netstat -a Na minha máquina Windows, recebo uma listagem das portas com um dos quatro estados:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Fazer o que CLOSE_WAIT e TIME_WAIT significar / indicar?


147


origem


Vejo webmasters.stackexchange.com/q/22946 - Dheeraj V.S.
veja 'man netstat', desça até a seção de estado: linux.die.net/man/8/netstat - MaQleod
Plugue sem vergonha para uma resposta em nosso sisterite Falha do servidor. - Hennes
Cross site dupe: askubuntu.com/questions/538443/… - Mokubai♦


Respostas:


Devido ao modo como o TCP / IP funciona, as conexões não podem ser fechadas imediatamente. Os pacotes podem chegar fora de ordem ou ser retransmitidos após a conexão ter sido fechada. CLOSE_WAIT indica que o terminal remoto (outro lado da conexão) fechou a conexão. TIME_WAIT indica que o terminal local (este lado) fechou a conexão. A conexão está sendo mantida de forma que qualquer pacote atrasado possa ser correspondido à conexão e manipulado apropriadamente. As conexões serão removidas quando terminarem dentro de quatro minutos. Vejo http://en.wikipedia.org/wiki/Transmission_Control_Protocol para mais detalhes.


155



As palavras weasel "other side" e "this side" são confusas. Podemos ter isso reescrito (corretamente) com "source" e "destination"? - ADTC
@ ADTC Não, porque isso não faria sentido - o TCP é full-duplex, cada lado pode ser a origem ou o destino. As palavras corretas seriam "endpoint local" e "endpoint remoto". - Jonathon Reinhart
@JonathonReinhart, é apenas "local"e"controlo remoto"." endpoint "é redundante. - Pacerier
@Pacerier Exceto "endpoint" é um substantivo e "local" não é. - Jonathon Reinhart
@JonathonReinhart, ambos "local"e"controlo remoto"podem ser substantivos. Deixando isso de lado, encontrei outra discussão aqui que afirma que é" local / peer"em vez de" local / remote ": stackoverflow.com/questions/14388706/… - Pacerier


Basicamente, os estados "WAIT" significam que um lado fechou a conexão, mas a confirmação final do fechamento está pendente.

Veja por exemplo este diagrama de estados TCP para detalhes:

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


27



Isso descreve com precisão CLOSE_WAIT, mas não TIME_WAIT. TIME_WAIT indica que o aplicativo local fechou a conexão e o outro lado reconheceu e enviou um FIN do seu próprio. Agora estamos aguardando qualquer pacote duplicado que possa perturbar um novo usuário da mesma porta. - Chris Smowton
@ChrisSmowton, Então, quem está usando a terminologia correta? O diagrama ou netstat? (cf.) - Pacerier
@Pacerier Eu acho que eles combinam - onde você acha que eles discordam? - Chris Smowton
@ChrisSmowton Portanto, isso significa que o próximo proprietário da porta pode obter bytes extras e isso pode interromper a resposta se definirmos TIME_WAIT = 0? - MonsterMMORPG
Possível, mas muito improvável, já que os números de sequência precisariam corresponder para o aplicativo ver o pacote desonesto inserido no fluxo, ou o receptor precisaria armazenar em buffer o pacote aparentemente fora de ordem até que o número de sequência correto aparecesse. Eu não sei o suficiente sobre implementações práticas para dizer se o último é feito na prática. - Chris Smowton


TIME_WAIT representa aguardar tempo suficiente para garantir que o TCP remoto recebeu o ACK de sua solicitação FIN. Vejo en.wikipedia.org/wiki/Transmission_Control_Protocol (e também o RFC 793)


-1



O que isso adiciona às informações fornecidas pelas respostas existentes? - fixer1234
Adiciona uma referência ao RFC 793 - Denio Mariz