SOFTELメモ

Softel Inc.

telnetで手入力でHTTPをしゃべってみる

プログラマならtelnetはでHTTPをしゃべったり、POPやSMTPをしゃべることを一度はやってみるとよいでしょう。
今回はHTTPの場合。

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\>telnet

telnetのコマンドモード開始。
今は自分が入力した文字を見たいので、ローカルエコーをONにして、Webサーバーが起動している自マシンにアクセスしてみます(ローカルではなくて、www.yahoo.co.jp などへアクセスも可能)

Microsoft Telnet クライアントへようこそ

エスケープ文字は 'CTRL+]' です

Microsoft Telnet> set localecho
ローカル エコー: オン
Microsoft Telnet> o 127.0.0.1 80

これで 127.0.0.1 に 80番ポートで接続しました。
Windowsのtelnetクライアントでは、カーソルが変なところに移動したりする場合がありますが、落ち着いて、リクエストを一文字も間違えないように入力します。
間違えたら、また最初から入力しなおしです。

GETメソッドでリクエストする例

GET /URLのパス部分.html HTTP/1.1
Host: www.必要ならURLのドメイン部分.com

Host: の行は省略して、1行だけにしても大丈夫です。Hostは、名前ベースのバーチャルホストが設定してあるときなどに効きます。

POSTメソッドでリクエストする例

POST /URLのパス部分.html HTTP/1.1
Host: www.必要ならURLのドメイン部分.com
Content-Length: 数値でパラメータの長さ

送りたいパラメータ

Content-Lengthを指定して、改行を2つ入れてHTTPヘッダが終わると、メッセージボディにパラメータを書き込める状態になります。送りたいパラメータをContent-Lengthの文字数入力すると、リクエストが送信されます。
POSTのパラメータはこの書き方以外の書き方もできるらしい。
ファイル転送なども、がんばって入力すれば、たぶんできます。

telnetで手でやれれば、fsockopen()でHTTPリクエストする処理も理解できます。

関連するメモ

コメント