HTTPリクエストとHTTPレスポンス
HTTPリクエスト
HTTPリクエスト = リクエスト行 + メッセージヘッダー + メッセージボディ
リクエスト行の例(Webページの場合)
GET /index.html HTTP/1.1
→ HTTPメソッド パス名 バージョン
HTTPレスポンス
HTTPレスポンス = ステータス行 + メッセージヘッダー + メッセージボディ
ステータス行の例(Webページの場合)
HTTP/1.1 200 OK
→ バージョン ステータスコード テキストフレーズ
メッセージヘッダーにはWebブラウザの種類やWebサーバーなど細かな情報がたくさん載ってます。
メッセージボディはWebサーバーに情報を送信するためのもの。POSTメソッド使うときはここにデータを入れて送信する。
HTTP/1.1の特徴
1. HTTPキープアライブ
WebブラウザとWebサーバーは、TCP
というプロトコルによってコネクション
と呼ばれる通信経路を確立してからデータのやりとりをします。
HTTP1.0以前では、「コネクションを確立→HTTPリクエストを送る・HTTPレスポンスを受け取る→コネクションを閉じる」
という方式が用いられてきました。
しかし、Web ページ内に複数の画像などが含まれていた場合、各々の画像データを送受信するたびにコネクションを確立させていると多くの手間がかかってしまいます。
そこで表れたのがHTTPキープアライブ
。一度のHTTP通信でコネクションを閉じることなく、複数のHTTP通信ができるように持続的に同じTCPを接続します。
2. HTTPパイプライン
HTTPは一つのHTTPリクエストを送ったらそれに対応するHTTPレスポンスが帰ってくるまでは次のHTTPリクエストを送信することはできませんが、HTTPパイプラインはHTTPレスポンスが返ってくるのを待つことなく複数のHTTPリクエストを送ることができます。