Ich lerne http und versuche, mit Telnet meine eigenen http-Anfragen zu senden.
In der Eingabeaufforderung habe ich Folgendes eingegeben:
telnet google.com 80
Ergebnis: Der Bildschirm wird gelöscht und ich sehe einen blinkenden Cursor. 1. Warum sehe ich keine Anzeige, dass ich verbunden bin?
Wenn ich jetzt versuche, einen HTTP-Befehl einzugeben (get index.html...), sehe ich, wie sich der Cursor beim Tippen nach rechts bewegt, aber ich sehe keine Buchstaben auf dem Bildschirm. Nur Leerzeichen. 2. Warum ist das so?
(Verwendet Windows 7 64 Bit)
Antwort1
HTTP basiert nicht auf dem Telnet-Protokoll. Tatsächlich gibt es ein paar Dinge, die falsch sind, wenn man Telnet als Grundlage zum „Testen“ eines HTTP-Servers verwendet. Erstens sendet Telnet unmittelbar nach dem Herstellen einer TCP-Verbindung einige zusätzliche Bytes, um die Sitzungsparameter einzurichten. Zweitens gibt HTTP die vom Remote-Peer gesendeten Daten nicht wieder. Drittens können gute IPS-Geräte Verbindungen zum HTTP-Port trennen, wenn diese anfänglichen Sitzungsdaten gesendet werden oder wenn Protokollverletzungen auftreten.
Die Verwendung des Telnet-Clients zum Testen eines HTTP-Servers ist bestenfalls ein Hack. Der Client zeigt einen leeren Bildschirm an, wenn die TCP-Sitzung hergestellt ist, und zeigt nur an, was der Server zurücksendet. Wenn Sie clever sind, können Sie möglicherweise eine Seite auf vielen Servern abrufen ... aber ich würde das als schlechte Praxis betrachten. Lesen Sie im HTTP-Protokoll nach, wie eine GET
Anfrage formatiert wird.
Eine einfache HTTP-Anfrage läuft wie folgt ab:
GET / HTTP/1.0
Beachten Sie die zusätzliche Zeile nach der Anfrage. Eine vollständige Anfrage endet mit einem leeren Zeilenumbruch.
Antwort2
Warum wird mir keine Verbindung angezeigt?
Warum sollte der Server zusätzliche, nicht benötigte Daten senden und mehr Bandbreite verbrauchen? Sie sind jedoch verbunden und können das testen.
Geben Sie Folgendes ein HTTP/1.0
und drücken Sie die [Eingabetaste]. Sie sollten eine Antwort erhalten.
(Eine mit einem Fehler, die aber normalerweise ausreicht, um zu testen, ob der Webserver läuft.)
Ich sehe, wie sich der Cursor beim Tippen nach rechts bewegt, aber ich sehe die Buchstaben nicht auf dem Bildschirm erscheinen. Nur Leerzeichen.
Dies liegt an Windows Telnet. Dort ist das lokale Echo standardmäßig deaktiviert.