Como interpreto a saída 'netstat -a'
-
09-06-2019 - |
Pergunta
Algumas coisas me parecem estranhas:
- Qual é a distinção entre 0.0.0.0, 127.0.0.1 e [::]?
- Como deve ser lida cada parte do endereço estrangeiro (parte1:parte2)?
- O que significa um estado Time_Wait, Close_Wait?
- etc.
Alguém poderia dar uma visão geral rápida de como interpretar esses resultados?
Solução
0.0.0.0 geralmente se refere a coisas que estão sendo ouvidas em todas as interfaces.127.0.0.1 = localhost (apenas sua interface local) não tenho certeza sobre [::
Time_wait significa que ambos os lados concordaram em fechar e o TCP agora deve esperar um tempo prescrito antes de derrubar a conexão.
Close_wait significa que o sistema remoto terminou de enviar e seu sistema ainda não disse que está concluído.
Outras dicas
Entendo que a resposta foi aceita, mas aqui estão algumas informações adicionais:
- Se diz
0.0.0.0
na coluna Endereço Local, significa que a porta está escutando em todas as 'interfaces de rede' (ou seja,seu computador, seu(s) modem(s) e sua(s) placa(s) de rede). - Se diz
127.0.0.1
na coluna Endereço Local, significa que a porta está escutando SOMENTE conexões do próprio PC, não da Internet ou rede.Não há perigo aí. - Se ele exibir seu
online IP
na coluna Endereço Local, significa que a porta está escutando SOMENTE conexões da Internet. - Se ele exibir seu
local network IP
na coluna Endereço Local, significa que a porta está escutando SOMENTE conexões da rede local. - Endereço Estrangeiro - O endereço IP e o número da porta do computador remoto ao qual o soquete está conectado.Os nomes que correspondem ao endereço IP e à porta são mostrados, a menos que o parâmetro -n seja especificado.Se a porta ainda não estiver estabelecida, o número da porta será mostrado como um asterisco (*).(da Wikipédia)
127.0.0.1 é o seu endereço de loopback, também conhecido como 'localhost' se definido no seu arquivo HOSTS.Veja aqui para mais informações: http://en.wikipedia.org/wiki/Localhost
0.0.0.0 significa que um aplicativo está vinculado a todos os endereços IP usando uma porta específica.Informações MS aqui: http://support.microsoft.com/default.aspx?scid=kb;en-us;175952
'::' é uma abreviação de ipv6 para ipv4 0.0.0.0.
Qual é a distinção entre 0.0.0.0, 127.0.0.1 e [::]?
- 0.0.0.0 indica algo que está escutando em todas as interfaces da máquina.
- 127.0.0.1 indica sua própria máquina.
- [::] é a versão IPv6 de 0.0.0.0
- Minha máquina também mostra *:\* para UDP, o que mostra que as conexões UDP não possuem realmente um endereço externo - elas recebem pacotes de qualquer lugar.Essa é a natureza do UDP.
Como deve ser lida cada parte do endereço estrangeiro (parte1:parte2)?
Send-Q é a quantidade de dados enviados pela aplicação, mas ainda não reconhecidos pelo outro lado do soquete.
Recv-Q é a quantidade de dados recebidos da NIC, mas ainda não consumidos pela aplicação.
Ambas as filas residem na memória do kernel.Há guias para ajudá-lo a ajustar esses buffers do kernel, se você desejar.Embora você possa achar que os parâmetros padrão funcionam muito bem.
Este link me ajudou muito a interpretar netstat -a
Uma cópia de lá -
TCP Connection States
A seguir está uma breve explicação desse aperto de mão.Neste contexto, o “cliente” é o par que solicita uma conexão e o “servidor” é o par que aceita uma conexão.Observe que esta notação não reflete os relacionamentos Cliente/Servidor como princípio arquitetônico.
Estabelecimento de Conexão
O cliente envia uma mensagem SYN que contém a porta do servidor e o Número de Sequência Inicial (ISN) do cliente para o servidor (aberto ativo).
O servidor envia de volta seu próprio SYN e ACK (que consiste no ISN + 1 do cliente).
O Cliente envia um ACK (que consiste no ISN + 1 do servidor).
Desmontagem da conexão (handshake de três vias modificado).
O cliente envia um FIN (fechamento ativo).Esta é agora uma conexão semifechada.O cliente não envia mais dados, mas ainda pode receber dados do servidor.Ao receber este FIN, o servidor entra em um estado de fechamento passivo.
O servidor envia um ACK (que é a sequência FIN do cliente + 1)
O servidor envia seu próprio FIN.
O cliente envia um ACK (que é a sequência FIN do servidor + 1).Ao receber este ACK, o servidor fecha a conexão.
Uma conexão semifechada pode ser usada para encerrar o envio de dados durante o recebimento de dados.Os aplicativos de soquete podem chamar shutdown com o segundo argumento definido como 1 para entrar nesse estado.
Explique as explicações conforme mostrado no Netstat:
Explicação do estado
SYN_SEND
Indica abertura ativa.
SYN_RECEIVED
O servidor acabou de receber SYN do cliente.
ESTABLISHED
O cliente recebeu o SYN do servidor e a sessão foi estabelecida.
LISTEN
O servidor está pronto para aceitar a conexão.
OBSERVAÇÃO:Consulte a documentação para chamada de soquete listen().Os soquetes TCP no estado de escuta não são mostrados - esta é uma limitação do NETSTAT.Para obter informações adicionais, consulte o seguinte artigo na Base de Conhecimento da Microsoft:134404 netStat.exe não mostra os soquetes de escuta TCP FIN_WAIT_1 Indica Active Close.
TIMED_WAIT
O cliente entra neste estado após o fechamento ativo.
CLOSE_WAIT
Indica fechamento passivo.O servidor acaba de receber o primeiro FIN de um cliente.
FIN_WAIT_2
O cliente acaba de receber a confirmação do seu primeiro FIN do servidor.
LAST_ACK
O servidor está neste estado quando envia seu próprio FIN.
CLOSED
O servidor recebeu ACK do cliente e a conexão foi encerrada.
Para aqueles que veem [::] na saída do netstat, aposto que sua máquina está rodando IPv6;isso seria equivalente a 0.0.0.0, ou seja,ouça em qualquer endereço IPv6.