Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Ports und eine Web-Anfrage, Schritt für Schritt

Nach dieser Lektion: Ich kann prüfen, auf welchen Ports ein Rechner lauscht, und eine Web-Antwort lesen.

Lektion, 55 Min.7 BefehleNAT-Gateway-Lab: Masquerading und Portweiterleitung mit nftables im Browser

Die Kasse, die Verbindung abgelehnt meldet

Ein Port ist eine Zahl, die ein Programm auf einem Rechner benennt, etwa einen Webserver auf Port 80. Wer Ports und Web-Antworten lesen kann, erkennt genau, warum eine Verbindung scheitert.

Die Kasse eines Ladens zeigt eine rote Meldung: Verbindung abgelehnt. Das Kartenlesegerät ist eingeschaltet, und sein Kabel ist in Ordnung.

Die Meldung sagt etwas Genaues. Die Kasse hat das Gerät erreicht, und dort wartete nichts an dieser Tür.

Am Ende dieser Lektion

Notiz

Ich kann prüfen, auf welchen Ports ein Rechner lauscht, und eine Web-Antwort lesen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Porteine Zahl, die eine Tür eines Rechners benennt80
Lauschenauf einem Port auf Verbindungen warten
HTTPdie Sprache der Web-Anfragen und Web-Antworten
Statuscodeeine dreistellige Zahl, die sagt, wie eine Anfrage ausging200
Headereine Zeile mit zusätzlicher Information in einer Anfrage oder Antwort

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Port ist eine Tür des Rechners

Eine Adresse findet einen Rechner. Ein Port findet ein Programm darauf. Ein Webserver wartet auf Port 80, und ein anderes Programm wartet auf einem anderen Port.

Ein Programm, das auf einem Port wartet, lauscht. Der Befehl ss -ltn listet alle lauschenden Ports auf: l für listening, t für TCP und n für reine Zahlen.

Auflisten, worauf der LAN-Rechner lauscht

Befehl
sudo ip netns exec lan ss -ltn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Auflisten, worauf der äußere Server lauscht

Befehl
sudo ip netns exec srv ss -ltn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

An einen Port klopfen und sehen, wer antwortet

Von einem anderen Rechner aus klopft nc -zv an einen Port, ohne etwas zu senden. Das z heißt nur prüfen, und v heißt sagen, was geschah.

Es gibt eines von drei Ergebnissen aus, und die Tabelle unten sagt, was jedes bedeutet.

An einen offenen Port klopfen

Befehl
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 80

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

An einen Port klopfen, auf dem niemand lauscht

Befehl
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 9999

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: was ein Klopfen verrät

nc gibt ausWas es bedeutetWo Sie nachsehen
succeededEin Programm lauschtDas Programm selbst
Connection refusedDer Rechner hat geantwortet, und dort lauscht nichtsLäuft das Programm, und auf welchem Port
timed outEs kam gar keine Antwort zurückEine Firewall oder eine Route, die scheitert

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Web-Antwort hat drei Teile

Eine Web-Anfrage ist einfacher Text. Die Antwort auch, in drei Teilen: eine Zeile mit dem Statuscode, einige Header und dann der Inhalt.

Der Statuscode sagt, wie es ausging. Die erste Ziffer gibt die Familie an. Eine 2 ist Erfolg und eine 3 ein Umzug. Eine 4 ist ein Fehler des Fragenden, und eine 5 ein Fehler des Servers.

Eine ganze Antwort lesen, Header zuerst

Befehl
sudo ip netns exec gw curl --noproxy '*' -s -i -m 3 http://10.0.0.2/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Nur den Statuscode ausgeben

Befehl
sudo ip netns exec gw curl --noproxy '*' -s -o /dev/null -w '%{http_code}\n' http://10.0.0.2:8081/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: die Familien der Statuscodes

CodeFamilieIn einfachen Worten
2002xxEs hat geklappt, und hier ist die Seite
3013xxEs ist umgezogen: Fragen Sie diese andere Adresse
4044xxUnter diesem Pfad ist nichts
5035xxDer Server konnte es gerade nicht tun

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Anfrage von Hand senden

Befehl
printf 'GET /hello HTTP/1.0\r\n\r\n' | sudo ip netns exec gw nc -w 2 10.0.0.2 80

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, Port 80 sei das Web und kein anderer Port könne es sein. Ein Port ist eine Zahl, die jemand gewählt hat, und 80 ist nur die übliche Wahl für HTTP. Der äußere Server spricht HTTP auf Port 8000. Fragen Sie, was lauscht, und stellen Sie ihm dann eine Frage.

Zum Weitermachen: den Prozess finden

Führen Sie sudo ip netns exec lan ss -ltnp aus und lesen Sie die letzte Spalte jeder Zeile. Sie nennt das Programm, das den Port hält.

Welches Programm lauscht auf Port 80? Ist es derselbe Prozess, der 8081 hält? Warum würde Ihnen das helfen, wenn ein Port schon belegt ist?