Windows で Telnet を使用して HTTP をテストする

Windows で Telnet を使用して HTTP をテストする

私は 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 が原因です。デフォルトではローカル エコーが無効になっています。

関連情報