Eine detaillierte Einführung in den netstat-Befehl in Linux

Eine detaillierte Einführung in den netstat-Befehl in Linux

1. Einleitung

Netstat ist ein Konsolenbefehl und ein sehr nützliches Tool zur Überwachung von TCP/IP-Netzwerken. Es kann Routingtabellen, aktuelle Netzwerkverbindungen und Statusinformationen jedes Netzwerkschnittstellengeräts anzeigen.

Netstat wird zum Anzeigen statistischer Daten zu den Protokollen IP, TCP, UDP und ICMP verwendet und wird im Allgemeinen zum Überprüfen des Netzwerkverbindungsstatus jedes Ports auf dem lokalen Computer verwendet.

2. Beschreibung der Ausgabeinformationen

Die Ausgabe nach der Ausführung von netstat lautet wie folgt:

[root@sy-suz-srv51 ~]# netstat
Aktive Internetverbindungen (ohne Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status
tcp 0 0 k8sdev.sui:sun-sr-https k8sdev.suiyi.com.:34880 SYN_RECV
tcp 0 0 k8sdev.suiyi.com.c:2379 10.1.62.21:47910 ESTABILISIERT
tcp 0 0 k8sdev.suiyi.com.c:2379 k8sdev.suiyi.com.:37790 HERGESTELLT
tcp 0 0 sy-suz-srv:pcsync-https 10.1.62.162:49200 HERGESTELLT
tcp 0 0 k8sdev.suiyi.com.:52866 k8sdev.sui:sun-sr-https HERGESTELLT
tcp 0 0 k8sdev.suiyi.com.:37728 k8sdev.suiyi.com.c:2379 HERGESTELLT
tcp 0 0 k8sdev.sui:sun-sr-https k8sdev.suiyi.com.:52852 ESTABILISIERT
tcp 0 0 k8sdev.sui:sun-sr-https 10.1.62.162:32841 HERGESTELLT
tcp 0 0 sy-suz-srv:pcsync-https sy-suz-srv51:60094 HERGESTELLT
tcp 0 0 localhost:webcache localhost:40136 HERGESTELLT
tcp 0 0 k8sdev.suiyi.com.:35466 10.1.62.21:sun-sr-https HERGESTELLT
tcp 0 0 k8sdev.suiyi.com.:34358 10.1.62.21:sun-sr-https HERGESTELLT
Aktive UNIX-Domänen-Sockets (ohne Server)
Proto RefCnt Flags Typ Status I-Node Pfad
unix 3 [ ] DGRAM 18442 /run/systemd/notify
unix 2 [ ] DGRAM 18444 /run/systemd/cgroups-agent
unix 2 [ ] DGRAM 23822 /var/run/chrony/chronyd.sock
unix 8 [ ] DGRAM 18455 /run/systemd/journal/socket
unix 18 [ ] DGRAM 18457 /dev/log
unix 2 [ ] DGRAM 14151 /var/run/nscd/socket
unix 2 [ ] DGRAM 584 /run/systemd/shutdownd
unix 3 [ ] STREAM VERBUNDEN 124439388 /run/dbus/system_bus_socket
unix 3 [ ] STREAM VERBUNDEN 42312 /run/systemd/journal/stdout
unix 3 [ ] STREAM VERBUNDEN 39909
unix 3 [ ] STREAM VERBUNDEN 21675
unix 3 [ ] STREAM VERBUNDEN 47538
unix 3 [ ] STREAM VERBUNDEN 124585242 /var/run/docker/containerd/docker-containerd.sock
unix 3 [ ] STREAM VERBUNDEN 21658
unix 2 [ ] STREAM VERBUNDEN 30160
unix 3 [ ] STREAM VERBUNDEN 33750 /run/systemd/journal/stdout
unix 3 [ ] STREAM VERBUNDEN 124614293 @/containerd-shim/moby/c44e49ee0f86d8a4109afb176701795c64f44655abb1861275bbd3b2a9f76394/shim.sock
unix 3 [ ] STREAM VERBUNDEN 124609611 @/containerd-shim/moby/a736ba153c07f0bbf099ae1a1069530e35bfa28ae93f8f235d6c35a6c5ed9ce7/shim.sock
unix 3 [ ] STREAM VERBUNDEN 124601653 @/containerd-shim/moby/20d3fd59d03455d45b1da2636fca25d0edd79dac1947c17045a797eb8506157c/shim.sock

Die Ausgabe von netstat kann in zwei Teile unterteilt werden

1. Aktive Internetverbindungen sind aktive TCP-Verbindungen, wobei sich „Recv-Q“ und „Send-Q“ auf die Empfangs- und Sendewarteschlange beziehen. Diese Zahlen sollten im Allgemeinen 0 sein. Wenn nicht, stapeln sich die Pakete in der Warteschlange. Diese Situation kann nur in sehr seltenen Fällen auftreten.

2. Aktive UNIX-Domänen-Sockets sind aktive UNIX-Domänen-Sockets (dasselbe wie Netzwerk-Sockets, können jedoch nur für die lokale Kommunikation verwendet werden und die Leistung kann verdoppelt werden).

Erklärung der Spaltennamen:

Proto: Zeigt das von der Verbindung verwendete Protokoll an.

RefCnt: ​​Gibt die Nummer des mit diesem Socket verbundenen Prozesses an.

Typen: Zeigt den Typ der Steckdose an.

Status: Zeigt den aktuellen Status der Steckdose an.

Pfad: Gibt den Pfadnamen an, der von anderen Prozessen verwendet wird, die mit dem Socket verbunden sind.

3. Allgemeine Parameter von netstat

-a (alle) zeigt alle Optionen an. Standardmäßig werden LISTEN-bezogene Optionen nicht angezeigt.

-t (TCP) Zeigt nur TCP-bezogene Optionen an.

-u (udp) Zeigt nur UDP-bezogene Optionen an.

-n verweigert die Anzeige von Aliasnamen und wandelt alle angezeigten Zahlen in Zahlen um.

-l listet nur die Dienste im Listen-Status auf.

-p Zeigt den Namen des Programms an, das den entsprechenden Link erstellt.

-r Routing-Informationen und Routing-Tabelle anzeigen

-e Zeigt erweiterte Informationen an, wie etwa UID usw.

-s Statistiken nach Protokoll

-c Führen Sie den Netstat-Befehl in einem festen Zeitintervall aus.

Die Zustände LISTEN und LISTENING können nur mit -a oder -l angezeigt werden.

4. Detaillierte Erklärung des Netstat-Netzwerkstatus

Eine normale TCP-Verbindung besteht aus drei Phasen: 1. TCP-Drei-Wege-Handshake; 2. Datenübertragung; 3. TCP-Vier-Wege-Handshake

Wie in der Abbildung gezeigt:

SYN : (Sequenznummern synchronisieren) Dieses Flag ist nur gültig, wenn eine TCP-Verbindung über einen Drei-Wege-Handshake hergestellt wird. Zeigt eine neue TCP-Verbindungsanforderung an.

ACK : (Acknowledgement Number) ist ein Bestätigungszeichen für die TCP-Anfrage und zeigt dem Peer-System zusätzlich an, dass alle Daten erfolgreich empfangen wurden.

FIN : (Endflag, FINish) wird verwendet, um eine TCP-Sitzung zu beenden. Der entsprechende Port ist jedoch noch geöffnet und bereit, nachfolgende Daten zu empfangen.

LISTEN : Zuerst muss der Server einen Socket zum Lauschen öffnen. Der Status ist LISTEN. Der Socket lauscht auf eingehende Verbindungen. Lauscht auf Verbindungsanfragen von Remote-TCP-Ports.

SYN_SENT : Der Client ruft connect über die Anwendung auf, um ein aktives Öffnen durchzuführen. Der Client-TCP sendet dann eine SYN-Anforderung zum Herstellen einer Verbindung, und der Status wird auf SYN_SENT gesetzt. Der Socket versucht aktiv, eine Verbindung herzustellen. Nach dem Senden der Verbindungsanforderung wartet er auf eine passende Verbindungsanforderung.

SYN_RECV : Der Server sollte ein ACK senden, um das SYN des Clients zu bestätigen, und gleichzeitig ein SYN an den Client senden. Dann wird der Status auf SYN_RECV gesetzt.

Eine Verbindungsanfrage wurde vom Netzwerk empfangen. Nach dem Empfangen und Senden einer Verbindungsanfrage wird auf die Bestätigung der Verbindungsanfrage gewartet.

ESTABLISHED : Stellt eine offene Verbindung dar, beide Parteien können oder haben bereits Daten ausgetauscht. Der Socket hat eine etablierte Verbindung. Stellt eine offene Verbindung dar, Daten können an den Benutzer übertragen werden.

FIN_WAIT1 : Die aktive Close-Anwendung ruft „close“ auf, sodass ihr TCP eine FIN-Anforderung zum aktiven Schließen der Verbindung sendet und dann in den Status FIN_WAIT1 wechselt. Der Socket wird geschlossen und die Verbindung wird beendet. Warten auf die Anforderung des Remote-TCP zum Herunterfahren der Verbindung oder auf die Bestätigung der vorherigen Anforderung zum Herunterfahren der Verbindung.

CLOSE_WAIT : Nach dem Empfang von FIN sendet das passive TCP am geschlossenen Ende eine ACK als Antwort auf die FIN-Anforderung (der Empfang wird auch als Dateiende-Markierung an die Anwendung der oberen Ebene weitergegeben) und tritt in CLOSE_WAIT ein. Das Remote-Ende wurde heruntergefahren und wartet auf das Schließen des Sockets. Warten auf die vom lokalen Benutzer gesendete Anforderung zur Verbindungsunterbrechung.

FIN_WAIT2 : Nachdem das aktive Ende zum Schließen eine ACK empfangen hat, wird FIN-WAIT-2 eingegeben, die Verbindung wird geschlossen und der Socket wartet auf eine Herunterfahranforderung vom Remote-Ende. Warten auf die Verbindungsunterbrechungsanforderung vom Remote-TCP.

LAST_ACK : Nach einer gewissen Zeit beim passiven Schließen ruft die Anwendung, die das Dateiende-Zeichen empfängt, CLOSE auf, um die Verbindung zu schließen. Dies führt dazu, dass sein TCP ebenfalls ein FIN sendet und auf die ACK der anderen Partei wartet. Dann tritt LAST-ACK ein. Das Remote-Ende wurde heruntergefahren und der Socket ist geschlossen. Warten auf Bestätigung. Warten auf Bestätigung der Verbindungsunterbrechungsanforderung, die ursprünglich an das Remote-TCP gesendet wurde.

TIME_WAIT : Nach dem Empfang von FIN am aktiven Abschlussende sendet TCP ein ACK-Paket und wechselt in den Zustand TIME-WAIT. Der Socket wartet nach dem Schließen darauf, Pakete zu verarbeiten, die sich noch im Netzwerk befinden. Warten Sie lange genug, um sicherzustellen, dass das Remote-TCP eine Bestätigung der Anforderung zur Verbindungsbeendigung erhält.

SCHLIESSEN : Seltener. Beide Sockets sind heruntergefahren, aber wir haben noch nicht alle unsere Daten gesendet. Warten auf die Bestätigung des Remote-TCP, dass die Verbindung unterbrochen ist.

GESCHLOSSEN : Nach dem Empfang des ACK-Pakets wechselt das passive Schließende in den geschlossenen Zustand. Die Verbindung ist beendet. Der Socket wird nicht verwendet. Es liegt kein Verbindungsstatus vor.

Die Bildung des TIME_WAIT-Zustands erfolgt nur bei der Partei, die die Verbindung aktiv schließt.

Nach dem Empfang der FIN-Anforderung von der passiven Abschlusspartei sendet die aktive Abschlusspartei erfolgreich eine ACK an die andere Partei und ändert dann ihren eigenen Status von FIN_WAIT2 in TIME_WAIT. Sie muss 2 Mal die MSL (Maximum Segment Lifetime, MSL ist die Zeit, die ein Datagramm im Internet existieren kann) warten, bevor beide Parteien

Erst dann kann der Status auf GESCHLOSSEN geändert werden, um die Verbindung zu schließen. Derzeit wird der Status TIME_WAIT in RHEL 60 Sekunden lang aufrechterhalten.

Verwandte Keepalive-Parameter für Linux

1. tcp_keepalive_time – INTEGER

Wie oft TCP Keepalive-Nachrichten sendet, wenn Keepalive aktiviert ist. (Standard: 2 Stunden)

Die Zeitspanne in Sekunden, die eine Verbindung im Leerlauf sein muss, bevor TCP mit dem Senden von Keepalive-Testpaketen beginnt.

2. tcp_keepalive_probes – INTEGER

Wie viele Keepalive-Tests TCP sendet, bis es entscheidet, dass die Verbindung unterbrochen ist. (Standardwert: 9)

Die maximale Anzahl gesendeter TCP-Keepalive-Erkennungspakete. Der Standardwert ist 9. Wenn der Peer nach dem Senden von 9 Keepalive-Erkennungspaketen immer noch nicht antwortet, wird die Verbindung geschlossen.

3. tcp_keepalive_intvl – INTEGER

Wie oft die Probes gesendet werden. Multipliziert mit tcp_keepalive_probes ist dies die Zeit, um eine nicht reagierende Verbindung zu beenden.
nachdem die Tests gestartet wurden. Standardwert: 75 Sek., d. h. die Verbindung wird nach ca. 11 Minuten erneuter Versuche abgebrochen.

Das Intervall zwischen dem Senden zweier TCP-Keepalive-Erkennungspakete beträgt standardmäßig 75 Sekunden.

5. Häufig verwendete netstat-bezogene Befehle

1. Alle Ports auflisten #netstat -a

2. Alle TCP-Ports auflisten #netstat -at

3. Alle UDP-Ports auflisten #netstat -au

4. Nur den Abhörport anzeigen#netstat -l

5. Nur alle abhörenden TCP-Ports auflisten #netstat -lt

6. Listen Sie nur alle lauschenden UDP-Ports auf #netstat -lu

7. Alle abhörenden UNIX-Ports auflisten #netstat -lx

8. Statistiken aller Ports anzeigen #netstat -s

9. Statistiken der TCP- oder UDP-Ports anzeigen#netstat -st oder -su

10. PID und Prozessnamen in der Ausgabe anzeigen #netstat -p

11. Der Host, Port und Benutzername werden in der Netstat-Ausgabe nicht angezeigt (Host, Port oder Benutzer)

Wenn Host, Port und Benutzername nicht angezeigt werden sollen, verwenden Sie netstat -n. Anstelle dieser Namen werden Zahlen verwendet.

Außerdem kann die Ausgabe beschleunigt werden, da keine Vergleichsabfrage erforderlich ist.

#netstat -an

Wenn Sie nur nicht möchten, dass einer der drei Namen angezeigt wird, verwenden Sie den folgenden Befehl

# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users

12. Kontinuierliche Ausgabe von Netstat-Informationen #netstat -c

13. Finden Sie den Port heraus, auf dem das Programm läuft #netstat -ap | grep ':80'

14. Zeigen Sie die IP-Adressen mit den meisten Verbindungen zu einem Service-Port an (Top 20)

#netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

15. TCP-Liste verschiedener Status 

#netstat -nat |awk '{print $6}'

Statistische Größe

#netstat -nat |awk '{print $6}'|sort|uniq -c

Sortierung

#netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

16. Zählen Sie direkt die Anzahl der TCP-Listener

#netstat -ant | wc -l

Dies ist das Ende dieses Artikels über die detaillierte Einführung des netstat-Befehls unter Linux-Systemen. Weitere relevante Inhalte zum netstat-Befehl unter Linux-Systemen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des Linux-Netstat-Befehls
  • Einige gängige Verwendungen des netstat-Befehls in Linux
  • Detaillierte Erklärung des Linux-Netstat-Befehls
  • Detaillierte Analyse des Linux-Netstat-Befehls

<<: 

>>:  HTML-Grundlagen-Zusammenfassungsempfehlung (Titel)

Artikel empfehlen

Node.js erstellt ein einfaches Crawler-Case-Tutorial

Vorbereitung Zuerst müssen Sie nodejs herunterlad...

HTML-Codebeispiel: Detaillierte Erklärung von Hyperlinks

Hyperlinks sind die am häufigsten verwendeten HTM...

So implementieren Sie eine steuerbare gepunktete Linie mit CSS

Vorwort Die Verwendung von CSS zum Generieren gep...

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript...

Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker

Ziehen Sie zuerst das Image (oder erstellen Sie e...

CSS -webkit-box-orient: vertikale Eigenschaft nach der Kompilierung verloren

1. Ursache Die Anforderung besteht darin, zwei Ze...

Zusammenfassung der Dockerfile-Maven-Plugin-Nutzungsanleitung

Inhaltsverzeichnis POM-Konfiguration Setting.xml-...

HTML-Maus-CSS-Steuerung

Im Allgemeinen wird die Maus als nach oben gericht...

So ziehen Sie das Docker-Image herunter, um die Version anzuzeigen

Um die Version und das Tag des Bildes anzuzeigen,...

Gruselige Halloween-Linux-Befehle

Auch wenn nicht Halloween ist, lohnt es sich, sic...

Detailliertes Tutorial zum Löschen von Linux-Benutzern mit dem Befehl userdel

Was ist Serdel userdel ist ein Low-Level-Tool zum...

JavaScript implementiert Konstellationsabfragefunktion mit detailliertem Code

Inhaltsverzeichnis 1. Titel 2. Code 3. Ergebnisse...