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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Port | eine Zahl, die eine Tür eines Rechners benennt | 80 |
| Lauschen | auf einem Port auf Verbindungen warten | |
| HTTP | die Sprache der Web-Anfragen und Web-Antworten | |
| Statuscode | eine dreistellige Zahl, die sagt, wie eine Anfrage ausging | 200 |
| Header | eine 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
sudo ip netns exec lan ss -ltnHier 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
sudo ip netns exec srv ss -ltnHier 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
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 80Hier 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
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 9999Hier 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 aus | Was es bedeutet | Wo Sie nachsehen |
|---|---|---|
| succeeded | Ein Programm lauscht | Das Programm selbst |
| Connection refused | Der Rechner hat geantwortet, und dort lauscht nichts | Läuft das Programm, und auf welchem Port |
| timed out | Es kam gar keine Antwort zurück | Eine 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
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
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
| Code | Familie | In einfachen Worten |
|---|---|---|
| 200 | 2xx | Es hat geklappt, und hier ist die Seite |
| 301 | 3xx | Es ist umgezogen: Fragen Sie diese andere Adresse |
| 404 | 4xx | Unter diesem Pfad ist nichts |
| 503 | 5xx | Der Server konnte es gerade nicht tun |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Anfrage von Hand senden
printf 'GET /hello HTTP/1.0\r\n\r\n' | sudo ip netns exec gw nc -w 2 10.0.0.2 80Hier 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?