HTTP
リクエスト(Request)
HTTP プロトコルではクライアントは GET メッセージでネットワーク先のリソースを取得する。
SYNTAX
GET / HTTP/1.0
option
...
パスとバージョンの後に、0個以上の任意のオプション行をいれる。
空行でリクエストの終了を意味する。
---------------------------
GET リソースパス バージョン
オプション1
オプション2
...
---------------------------
一番シンプルなメッセージは以下になる
GET / HTTP/1.0\r\n\r\n
オプションは 属性名: 値 で指定する。
Host を指定する
GET / HTTP/1.0
Host: ooo.iiyudana.net
プログラムでは以下の文字列を send する。
const char *msg = "GET / HTTP/1.0\r\nHost: ooo.iiyudana.net\r\n\r\n";
send( sock, msg, strlen(msg), 0 );
リクエストオプション
Host
仮想ホストによってひとつの IP に複数のホスト名を対応づける場合に
クライアント側がどの URL のページを要求しているか指定をする。
xxx.xxx.xxx.xxx <-> host1.com
host2.com
host3.com
クライアントが GET / HTTP/1.0 を要求しても
サーバは host1.com/ host2.com/ host3.com/ のどれを返せばいいかわからない。
そこでクライアントは host1.com/ に対応づいたページが必要は場合は
Host: host1.com とする。
レスポンス
POINT
HTTP ではリクエストの結果が成功なのか失敗なのかは
最初の一行に書いてある
// 200 : StatusCode ( Success )
// OK : 適当な Message ( OKDayo ! )でもいい
HTTP/1.0 200 OK
// 404 : そんな file ありません
HTTP/1.0 404 NOT FOUND
Webブラウザーなどで HP を見るときに使用するプロトコル
----------------------------------------------------------------
// 結果
HTTP/1.1 200 OK
// 更新日
Last-Modified: Sun, 19 Mar 2000 07:16:23 GMT
// ヘッダ
Content-Length: 1484
Content-Type: text/html
( 空行 )
----------------------------------------------------------------
// 空行をはさんでデータ本体がきます
<HTML>
〜
</HTML>
----------------------------------------------------------------