Heim >php教程 >PHP开发 >Detaillierte Erläuterung des Netstat-Befehls

Detaillierte Erläuterung des Netstat-Befehls

高洛峰
高洛峰Original
2016-12-15 09:15:531269Durchsuche

Hauptverwendung und ausführliche Erklärung!
(Befehl netstat -na), in diesem Artikel geht es hauptsächlich um das Netstat-Tool unter Linux und anschließend um eine ausführliche Erläuterung der verschiedenen Netzwerkverbindungsstatus.
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -nr
1. Detaillierte Erklärung des Netstat-Befehls
Tatsächlich verwende ich häufig netstat -tnl | 443 (Überprüfen Sie, ob Port 443 belegt ist). Wenn Sie derzeit der Root-Benutzer sind, verwende ich gerne netstat -pnl | (es kann auch die Prozess-PID anzeigen, die den lokalen Port 443 belegt).
netstat
Funktionsbeschreibung: Netzwerkstatus anzeigen.
Syntax: netstat [-acCeFghilMnNoprstuvVwx] [-A][--ip]
Ergänzender Hinweis: Mit dem Befehl netstat können Sie den Netzwerkstatus des gesamten Linux-Systems ermitteln.
Parameter:
-a oder –all Zeigt alle angeschlossenen Sockets an.
-a & lt; Netzwerktyp & gt; oder-& lt; Netzwerktyp & gt;
-c oder –continuous Netzwerkstatus kontinuierlich auflisten.
-C oder –cache Zeigt Cache-Informationen der Router-Konfiguration an.
-e oder –extend Zeigt andere verwandte Informationen über das Netzwerk an.
-F oder –fib                             FIB anzeigen.
-g oder –groups Zeigt die Liste der Gruppenmitglieder mit Multicast-Funktion an.
-h oder –help Online-Hilfe.
-i oder –interfaces Zeigt das Formular mit den Informationen zur Netzwerkschnittstelle an.
-l oder –listening Zeigt den Socket des überwachten Servers an.
-M oder –masquerade zeigt maskierte Netzwerkverbindungen an.
-n oder –numeric Verwenden Sie die IP-Adresse direkt, ohne den Domänennamenserver zu durchlaufen.
-N oder –netlink oder –symbolic Zeigt den symbolischen Linknamen des Netzwerk-Hardware-Peripheriegeräts an.
-o oder –timers Zeigt Timer an.
-p oder –programs Zeigt den Programmidentifikationscode und den Programmnamen an, der Socket verwendet.
-r oder –route zeigt die Routing-Tabelle an.
-s oder –statistice zeigt die Statistiktabelle mit Netzwerkarbeitsinformationen an.
-t oder –tcp zeigt den Verbindungsstatus des TCP-Transportprotokolls an.
-u oder –udp zeigt den Verbindungsstatus des UDP-Übertragungsprotokolls an.
-v oder –verbose zeigt den Befehlsausführungsprozess an.
-V oder –version zeigt Versionsinformationen an.
-w oder –raw zeigt den Verbindungsstatus des RAW-Übertragungsprotokolls an.
-x oder –unix Die Wirkung dieses Parameters ist dieselbe wie die Angabe des Parameters „-A unix“.
–ip oder –inet Dieser Parameter hat die gleiche Wirkung wie die Angabe des Parameters „-A inet“.

2. Detaillierte Erläuterung des Netzwerkverbindungsstatus
Es gibt 12 mögliche Zustände. Die ersten 11 werden entsprechend dem Drei-Wege-Handshake des TCP-Verbindungsaufbaus und dem Vier-Wege-Wellenprozess der TCP-Verbindungstrennung beschrieben .
1), LISTEN: Zuerst muss der Server einen Socket zum Abhören öffnen, und der Status ist LISTEN./* Der Socket lauscht auf eingehende Verbindungen von Remote-TCP-Ports*/

2), SYN_SENT: Der Client ruft eine Verbindung über das Anwendungsprogramm für aktives Öffnen auf. Dann sendet der Client-TCP eine SYN-Anfrage, um eine Verbindung herzustellen. Danach wird der Status auf SYN_SENT gesetzt./*Der Socket versucht aktiv um eine Verbindung herzustellen. Warten Sie dann auf die entsprechende Verbindungsanforderung */

3), SYN_RECV: Der Server sollte eine ACK senden, um die SYN des Clients zu bestätigen, und gleichzeitig eine SYN senden Danach wird der Status auf SYN_RECV/* gesetzt. Es wurde eine Verbindungsanfrage vom Netzwerk empfangen. Nach dem Empfang und Senden einer Verbindungsanfrage wird auf die Bestätigung gewartet*/

4), ESTABLISHED: Stellt eine offene Verbindung dar und beide Parteien können Daten austauschen oder sind bereits dabei. /* Der Socket hat eine bestehende Verbindung. Stellt eine offene Verbindung dar und Daten können an den Benutzer übertragen werden */

5), FIN_WAIT1: Die aktive Endanwendung (Active Close) ruft close auf, sodass ihr TCP eine FIN-Anfrage ausgibt, um die Verbindung aktiv zu schließen, und dann in den Status FIN_WAIT1 wechselt./* Der Socket wird geschlossen und die Verbindung wird heruntergefahren . Warten auf die Remote-TCP-Verbindungsunterbrechungsanforderung oder Bestätigung der vorherigen Verbindungsunterbrechungsanforderung*/

6), CLOSE_WAIT: Nachdem das passive Schließen (passives Schließen) TCP die FIN empfangen hat, sendet es eine ACK als Antwort Geben Sie die FIN-Anfrage ein (ihr Empfang wird auch als Dateiendezeichen an die übergeordnete Anwendung übergeben) und geben Sie CLOSE_WAIT ein./* Das entfernte Ende wurde heruntergefahren und wartet auf das Schließen des Sockets. Warten auf eine Verbindungsunterbrechungsanforderung von der lokalen Seite user*/

7 ), FIN_WAIT2: Nach dem aktiven Schließen des Endes und dem Empfang von ACK wird FIN-WAIT-2 eingegeben./* Die Verbindung wird geschlossen und der Socket wartet auf das Herunterfahren vom entfernten Ende. Warten auf eine Verbindungsunterbrechungsanforderung vom Remote-TCP*/

8), LAST_ACK: Nachdem das Ende für einen bestimmten Zeitraum passiv geschlossen wurde, ruft die Anwendung, die das Dateiendezeichen empfängt, CLOSE auf, um die Verbindung zu schließen . Dadurch sendet sein TCP auch eine FIN und wartet auf die Bestätigung der anderen Partei./* Das entfernte Ende wurde heruntergefahren und der Socket wird geschlossen. Warten auf die ursprünglich an die andere Partei gesendete Bestätigung Remote-TCP soll unterbrochen werden. */

9), TIME_WAIT: Nachdem das aktive Schließende FIN empfangen hat, sendet TCP ein ACK-Paket und wechselt in den TIME-WAIT-Status. /* Der Socket wartet nach dem Schließen darauf, Pakete zu verarbeiten, die sich noch im Netzwerk befinden. Warten Sie ausreichend Zeit, um sicherzustellen, dass der Remote-TCP eine Bestätigung der Verbindungsunterbrechungsanfrage erhält*/

10), SCHLIESSEN: relativ selten./* Beide Sockets sind heruntergefahren, aber wir haben immer noch nicht alle unsere Daten gesendet. Wir warten darauf, dass der Remote-TCP die Verbindungsunterbrechung bestätigt*/

11), GESCHLOSSEN: Das passive geschlossene Ende tritt ein, nachdem das ACK-Paket empfangen wurde geschlossener Zustand. Die Verbindung wird beendet./* Der Socket wird nicht verwendet. Es gibt keinen Verbindungsstatus */

12), UNBEKANNT: Unbekannter Socket-Status. /* Der Status des Sockets ist unbekannt. */

SYN: (Sequenznummern synchronisieren) Dieses Flag ist nur gültig, wenn der Drei-Wege-Handshake eine TCP-Verbindung aufbaut. Stellt eine neue TCP-Verbindungsanforderung dar.
ACK: (Acknowledgement Number) ist ein Bestätigungszeichen für die TCP-Anfrage und zeigt außerdem an, dass das Peer-System alle Daten erfolgreich empfangen hat.
FIN: (End-Flag, FINish) wird verwendet, um eine TCP-Konversation zu beenden, aber der entsprechende Port ist noch offen und bereit, nachfolgende Daten zu empfangen.

PS: Es ist gut, ein kleines Tool unter Windows zu haben, das Ihnen detaillierte Listen aller TCP- und UDP-Endpunkte auf Ihrem System anzeigt, einschließlich der lokalen und Remote-Adressen und des Status von TCP Verbindungen. Siehe http://technet.microsoft.com/en-us/sysinternals/bb897437. Wenn Sie die Datenpakete im Detail analysieren möchten, können Sie natürlich leistungsfähigere Tools wie Sniffer und Wireshark verwenden.

Referenz:

http://linux.sheup.com/linux/4/31225.html

http://hi.baidu.com/mqbest_come_on/ Blog /item/18526dcef73d791a00e928e5.html

http://www.daxigua.com/archives/1355


Systemverbindungsstatus:

1. TCP-Verbindungsstatus anzeigen
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

netstat -n |. END {for(a in S) print a, S[a]}' oder
awk '/^tcp/ {++state[$NF]}; key,"t",state[key]}'
netstat -n |. awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t ", arr[k]}'

netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn

netstat -ant awk '. {print $NF}' |. grep -v '[a-z]' |. sort | >netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn |head -n20

3. Verwenden Sie tcpdump, um den Zugriff auf Port 80 zu überwachen
tcpdump -i eth0 -tnn dst port 80 -c 1000 |.“ {print $1 ″.“$2″.“$4}' |. sort |. uniq -c | grep TIME_WAIT |awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

5. Weitere SYN-Verbindungen finden
netstat -an | $5}' |. awk -F: '{print $1} |. sort -c | '{print $7}' |. cut -d/ -f1

Website-Protokollanalyse 1 (Apache):

1. Erhalten Sie die 10 am häufigsten aufgerufenen IP-Adressen
Cat-Protokoll| awk '{print $1}'|sort|uniq -c|sort -nr|head -10
cat access.log|awk '{counts[$(11)]+=1}; END {for( url in counts) print counts[url], url}'

2. Die am häufigsten besuchten Dateien oder Seiten, nehmen Sie die Top 20
cat access.log|awk '{print $11}'|sort|. c|sort -nr|head -20

3. Listen Sie die größten Exe-Dateien auf (wird häufig bei der Analyse von Download-Sites verwendet)
cat access.log |awk '($7~/ .exe/){print $10 ” ” $1 ” ” $4 ” ” $7}'|sort -nr|head -20

4. Listen Sie die Exe-Dateien mit einer Ausgabegröße von mehr als 200.000 Byte (ca. 200 KB) und die entsprechenden Dateivorkommen auf
cat access.log |awk '($10 > 200000 && $7~/.exe/){print $7}'|sort -n|uniq -c|sort -nr|head -100

5 Die letzte Spalte des Protokolls zeichnet die Übertragungszeit der Auslagerungsdatei auf, und die Seite mit der höchsten Zeitaufwendung zum Client wird aufgeführt
cat access.log |awk '($7~/.php/){print $NF ” ” $1 ” ” $4 ” ” $7}'|sort -nr|head -100

6. Listen Sie die Seiten auf, die am meisten Zeit in Anspruch nehmen (mehr als 60 Sekunden) und die Anzahl der entsprechenden Seitenauftritte
Cat-Zugriffe. log |. awk '($NF > 60 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

7 Zeit länger als 30 Sekunden Datei
cat access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20

8 . Statistik Website-Traffic (G)
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'

9. Statistik 404 Verbindungen
awk ' ($9 ~/404/)' access.log |. awk '{print $9,$7}' |. Statistik http-Status.
cat access.log |awk '{counts[$( 9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn

10. Spider-Analyse
Überprüfen Sie, welche Spider den Inhalt crawlen.
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 |
Tägliche Website-Analyse 2 (Squid)

2. Traffic-Statistiken nach Domain
zcat squid_access.log.tar.gz| "[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%st%dn",domain,trfc[domain]}}'

Effizienter für High-End-Perl-Versionen können Sie hier herunterladen: http://docs.linuxtone.org/soft/tools/tr.pl

Datenbankkapitel
1. Sehen Sie sich die von der Datenbank ausgeführte SQL an
/usr/ sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 |. egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

System-Debug-Analyse

1. Debugging-Befehl
strace -p pid

2. Verfolgen Sie die PID des angegebenen Prozesses
gdb -p pid



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn