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リクエストする処理も理解できます。
コメント