WEBブラウザでサイトにアクセスする場合、URL欄に
"http://fizz.buzz/"
と入力すると、サーバーとブラウザ間では、GETの通信が発生する。

下記のようなページ遷移もGET通信で行われる。
  • リンクのクリック
  • ブックマークから移動
HTTPプロトコルで、ブラウザからサーバーへの要求を「リクエスト」、
リクエストに対してサーバーからの返答を「レスポンス」と呼ぶ。

URLを指定した場合のリクエストは、

"GET / HTTP/1.0"
のようになる。

リクエストは3つに分けられる。最初の「GET」が命令、真ん中の「/」は
ドキュメントルートのことを指す。

もし"http://fizz.buzz/index.html"と入力すると、リクエストは

"GET /index.html HTTP/1.0"
となる。ドメイン部分を除いたURLがリクエストとしてサーバーに送られる。

最後の"HTTP/1.0"は、クライアント側が使用しているHTTPのバージョンを示す。
ブラウザではなくTelnet端末やSSH端末でWEBサーバーに接続して、
"GET / HTTP/1.0"と入力して送信するとドキュメントルートが存在すれば
"HTTP/1.0 200 OK"のようなレスポンスが返る。

"/"を指定するだけでindex.htmlが返るのは、WEBサーバー側の仕様。
WEBサーバーには、多くでApatchが使われている。

一般的にApatchの初期設定では、"/"がリクエストされた際、ブラウザが
最初にアクセスするルートディレクトリに"index.html"や"index.php"があれば、
それをクライアントに返す。

この設定は、サーバー管理者側で自由に変更できる。
例えば…
  • ファイル名まで指定されていない時にはエラーを返す
  • ディレクトリにあるファイルの一覧を返す
などの設定も可能。
つまり厳密にいうなら、HTTPではドメイン名だけでなく、
ファイル名まで明記することが望ましい。

GETは文字通り「取得のため」の命令。
WEBサーバーは、クライアントブラウザから要求されたファイルが存在する場合、
"HTTP/1.0 200 OK"のレスポンスと、リクエストされたタイムスタンプ、
サーバープログラム名、要求されたファイルのサイズ、クッキー(cookie)などを含む
HTTPヘッダーをレスポンスし、続いてHTMLの内容を送信。

HTTPヘッダーに含まれる情報は決まっておらず、サーバーごとに異なる。
HTMLヘッダーの扱いに似ていて、ブラウザ上には表示されない。

またHTML内で、<img>タグを使って画像などの別ファイルを呼び出している場合、
ブラウザはその部分のHTMLを読み込む度に
"GET /img/hoge.jpg HTTP/1.0"
のような形で必要な分だけGET命令を送信する。

単純にWEBサイトを閲覧する場合、ほぼ100%がGET命令のみで成り立っている。