Come interpreto l'output 'netstat -a'
-
09-06-2019 - |
Domanda
Alcune cose mi sembrano strane:
- Qual è la differenza tra 0.0.0.0, 127.0.0.1 e [::]?
- Come va letta ciascuna parte dell'indirizzo estero (parte1:parte2)?
- Cosa significa uno stato Time_Wait, Close_Wait?
- eccetera.
Qualcuno potrebbe fornire una rapida panoramica su come interpretare questi risultati?
Soluzione
0.0.0.0 di solito si riferisce a cose in ascolto su tutte le interfacce.127.0.0.1 = localhost (solo la tua interfaccia locale) non sono sicuro di [:::
Time_wait significa che entrambe le parti hanno accettato di chiudere e il TCP deve ora attendere un tempo prescritto prima di abbattere la connessione.
Close_wait significa che il sistema remoto ha terminato l'invio e il tuo sistema non ha ancora detto che è finito.
Altri suggerimenti
Capisco che la risposta sia stata accettata, ma ecco alcune informazioni aggiuntive:
- Se lo dice
0.0.0.0
nella colonna Indirizzo locale, significa che la porta è in ascolto su tutte le "interfacce di rete" (ad es.il tuo computer, il tuo modem e la tua scheda di rete). - Se lo dice
127.0.0.1
nella colonna Indirizzo locale, significa che la porta è in ascolto SOLO per connessioni dal PC stesso, non da Internet o dalla rete.Nessun pericolo lì. - Se viene visualizzato il tuo
online IP
nella colonna Indirizzo locale, significa che la porta è in ascolto SOLO per connessioni da Internet. - Se viene visualizzato il tuo
local network IP
nella colonna Indirizzo locale, significa che la porta è in ascolto SOLO per connessioni dalla rete locale. - Indirizzo esterno: l'indirizzo IP e il numero di porta del computer remoto a cui è connesso il socket.Vengono visualizzati i nomi che corrispondono all'indirizzo IP e alla porta a meno che non venga specificato il parametro -n.Se la porta non è ancora stata stabilita, il numero di porta viene visualizzato come un asterisco (*).(da Wikipedia)
127.0.0.1 è il tuo indirizzo di loopback noto anche come "localhost" se impostato nel file HOSTS.Guarda qui per ulteriori informazioni: http://en.wikipedia.org/wiki/Localhost
0.0.0.0 significa che un'app è associata a tutti gli indirizzi IP utilizzando una porta specifica.Informazioni sulla SM qui: http://support.microsoft.com/default.aspx?scid=kb;en-us;175952
'::' è l'abbreviazione di ipv6 per ipv4 0.0.0.0.
Qual è la differenza tra 0.0.0.0, 127.0.0.1 e [::]?
- 0.0.0.0 indica qualcosa che è in ascolto su tutte le interfacce della macchina.
- 127.0.0.1 indica la tua macchina.
- [::] è la versione IPv6 di 0.0.0.0
- La mia macchina mostra anche *:\* per UDP, il che dimostra che le connessioni UDP non hanno realmente un indirizzo straniero: ricevono pacchetti da qualsiasi luogo.Questa è la natura dell’UDP.
Come va letta ciascuna parte dell'indirizzo estero (parte1:parte2)?
Send-Q è la quantità di dati inviati dall'applicazione, ma non ancora riconosciuti dall'altro lato del socket.
Recv-Q è la quantità di dati ricevuti dalla scheda NIC, ma non ancora utilizzati dall'applicazione.
Entrambe queste code risiedono nella memoria del kernel.Ci sono guide per aiutarti a modificare questi buffer del kernel, se ne hai voglia.Tuttavia, potresti scoprire che i parametri predefiniti funzionano abbastanza bene.
Questo collegamento mi ha aiutato molto a interpretare netstat -a
Una copia da lì -
TCP Connection States
Di seguito è riportata una breve spiegazione di questa stretta di mano.In questo contesto il "client" è il peer che richiede una connessione e il "server" è il peer che accetta una connessione.Si noti che questa notazione non riflette le relazioni client/server come entità architetturale.
Creazione della connessione
Il client invia un messaggio SYN che contiene la porta del server e l'ISN (Initial Sequence Number) del client al server (attivo aperto).
Il server restituisce il proprio SYN e ACK (che consiste nell'ISN + 1 del client).
Il Client invia un ACK (che consiste nell'ISN + 1 del server).
Connection Tear-down (handshake a tre vie modificato).
Il client invia una FIN (chiusura attiva).Questa è una connessione ormai semichiusa.Il client non invia più dati, ma è ancora in grado di ricevere dati dal server.Dopo aver ricevuto questo FIN, il server entra in uno stato di chiusura passiva.
Il server invia un ACK (che è la sequenza FIN del client + 1)
Il server invia il proprio FIN.
Il client invia un ACK (che è la sequenza FIN del server + 1).Dopo aver ricevuto questo ACK, il server chiude la connessione.
È possibile utilizzare una connessione semichiusa per terminare l'invio di dati durante la ricezione dei dati.Le applicazioni socket possono chiamare shutdown con il secondo argomento impostato su 1 per entrare in questo stato.
Spiegazioni dello stato come mostrato in Netstat:
Spiegazione dello stato
SYN_SEND
Indica l'apertura attiva.
SYN_RECEIVED
Il server ha appena ricevuto SYN dal client.
ESTABLISHED
Il client ha ricevuto il SYN del server e la sessione è stata stabilita.
LISTEN
Il server è pronto per accettare la connessione.
NOTA:Consulta la documentazione per la chiamata al socket listen().I socket TCP in stato di ascolto non vengono visualizzati: si tratta di una limitazione di NETSTAT.Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base:134404 NetStat.exe non mostra TCP ASSOGGIO FOCHET FIN_WAIT_1 indica Active Close.
TIMED_WAIT
Il client entra in questo stato dopo la chiusura attiva.
CLOSE_WAIT
Indica la chiusura passiva.Il server ha appena ricevuto il primo FIN da un client.
FIN_WAIT_2
Il client ha appena ricevuto la conferma del suo primo FIN dal server.
LAST_ACK
Il server è in questo stato quando invia il proprio FIN.
CLOSED
Il server ha ricevuto un ACK dal client e la connessione è stata chiusa.
Per coloro che vedono [::] nel loro output netstat, scommetto che la tua macchina esegue IPv6;sarebbe equivalente a 0.0.0.0, cioèascolta su qualsiasi indirizzo IPv6.