私は http を学習しており、telnet を使用して独自の http リクエストを送信しようとしています。
コマンドプロンプトで次のように入力しました。
telnet google.com 80
結果: 画面がクリアされ、点滅するカーソルが表示されます。 1. 接続されていることを示す表示が表示されないのはなぜですか?
今、http コマンド (get index.html...) を入力しようとしています。入力するとカーソルが右に動いているのがわかりますが、画面に文字が表示されません。空白のみが表示されます。2. なぜでしょうか?
(Windows7 64ビット使用)
答え1
HTTP は、telnet プロトコルに基づいていません。実際、HTTP サーバーを「テスト」するための基礎として telnet を使用することには、いくつかの問題があります。まず、telnet は、TCP 接続を確立した直後に、セッション パラメータを設定するために余分なバイトを送信します。次に、HTTP はリモート ピアから送信されたデータをエコーしません。3 番目に、優れた IPS デバイスは、最初のセッション データが送信されたとき、またはプロトコル違反が発生したときに、HTTP ポートへの接続を切断できます。
Telnet クライアントを使用して HTTP サーバーをテストするのは、せいぜいハックっぽいです。TCP セッションが確立されると、クライアントは空白の画面を表示し、サーバーが送り返したものだけを表示します。巧妙な人なら、多くのサーバーでページを取得できるかもしれませんが... 私はそれを悪い習慣と見なします。リクエストのフォーマット方法については、HTTP プロトコルについて読んでくださいGET
。
基本的な http リクエストは次のように実行されます。
GET / HTTP/1.0
リクエストの後の追加行に注意してください。完全なリクエストは空の改行で終わります。
答え2
接続されていることを示す表示が表示されないのはなぜですか?
なぜサーバーは余分な不要なデータを送信し、より多くの帯域幅を使用するのでしょうか? ただし、接続しているので、それをテストできます。
入力してHTTP/1.0
[Enter] キーを押してみてください。応答が返されるはずです。
(応答にはエラーが含まれますが、通常は Web サーバーが起動して実行されているかどうかをテストするには十分です。)
入力するとカーソルが右に動くのはわかりますが、画面に文字が表示されません。空白だけが表示されます。
これは Windows Telnet が原因です。デフォルトではローカル エコーが無効になっています。