Shammer's Philosophy

My private adversaria

一番簡単なHTTPリクエスト

現在使われているHTTPのバージョンは、1.0と1.1。1.0も使われているっていっても、大半は1.1だろう。それぞれのバージョンで、リクエストやレスポンスのヘッダーや、実装すべき機能の差分がある。当然だけれども、後に決められた1.1の方が複雑で、HTTP 1.0 の方がシンプルだ。
その HTTP 1.0 でも、最も単純なのが GET メソッド。これは、実際の命令とHOSTヘッダさえあればOK。具体的には以下のようになる。

GET / HTTP/1.0\r\n
HOST: 127.0.0.1\r\n
\r\n

表記をより厳密にするため、\r\n と書いたが実際にはこれは制御文字なので見えない。要は、

  • 各ヘッダごとに改行が必要
  • リクエストの最後は空行が必要

とだけ覚えておけばいい感じ。
なお、HOST の後のIPアドレスは、アクセス先ホストになっている。

そして、実行例だけれども、

$ telnet XXX 80

とやった後に、上記のようなテキストをコピペするとHTMLが表示される。
何らかの言語でHTTPクライアントを書くときも一緒で、上記のようなテキストを定数的に用意しておき、それを write することになる。
C言語の場合は、

#define  HTTPREQ  "GET /index.html HTTP/1.0\r\nHOST: localhost\r\n\r\n"
...
write(fd, HTTPREQ, strlen(HTTPREQ));
...

というようにしてやればいい。具体例は後日・・・