O que são os estados CLOSE_WAIT e TIME_WAIT?


166

Quando o faço netstat -ana minha máquina Windows, obtenho uma lista das portas com um dos quatro estados:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

O que CLOSE_WAITe TIME_WAITdizer / indica?



veja 'man netstat', role para baixo até a seção state: linux.die.net/man/8/netstat
MaQleod

1
Plugue sem vergonha para responder à falha do servidor no site da irmã .
Hennes 24/06

Respostas:


179

Devido à maneira como o TCP / IP funciona, as conexões não podem ser fechadas imediatamente. Os pacotes podem chegar fora de serviço ou retransmitidos após o fechamento da conexão. 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 em volta para que todos os pacotes atrasados ​​possam ser correspondidos à conexão e manipulados adequadamente. As conexões serão removidas quando atingirem o tempo limite em quatro minutos. Veja http://en.wikipedia.org/wiki/Transmission_Control_Protocol para mais detalhes.


Mas isso não significa que, mesmo que os pacotes cheguem após o retorno da função, eles ainda serão descartados pelo aplicativo?
MonsterMMORPG

Pacotes @MonsterMMORPG que chegarem fora de ordem após o fechamento da conexão serão tratados pela pilha de rede. Geralmente, eles podem ser descartados com segurança, de acordo com as regras normais de pacotes duplicados. Pacotes que parecem estar relacionados a uma conexão ativa desconhecida são normalmente descartados e geram uma resposta. Os estados WAIT protegem contra esse tráfego.
BillThor

29

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 obter detalhes:

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


14
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 próprio. Agora estamos aguardando pacotes duplicados perdidos que possam perturbar um novo usuário da mesma porta.
precisa saber é o seguinte

1
@ ChrisSmowton, então quem está usando a terminologia correta? O diagrama ou netstat? ( cf. )
Pacerier

@ Pacerier Eu acho que eles correspondem - onde você acha que eles discordam?
Chris Smowton

@ ChrisSmowton Então, isso significa que o próximo proprietário da porta poderá obter bytes extras e que poderá interromper a resposta se definirmos TIME_WAIT = 0?
MonsterMMORPG

Possível, mas muito improvável, pois os números de sequência precisariam corresponder para o aplicativo ver o pacote não autorizado emendado 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. Não sei o suficiente sobre implementações práticas para dizer se o último é feito na prática.
Chris Smowton

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.