HTTPとは

えいちてぃーてぃーぴー

WebブラウザとWebサーバなどの間で、HTMLや画像、データをやり取りするためのアプリケーション層のプロトコル。クライアントがメソッド、URL、ヘッダ、本文からなるリクエストを送り、サーバがステータスコード、ヘッダ、本文からなる応答を返す。プロトコルとしてはステートレスで、ログインのような状態はCookieなどを使って保つ。HTTP/1.1はテキストの形式で持続的接続を使い、HTTP/2は1つのTCP接続の上で複数のストリームを多重化し、HTTP/3はUDPの上のQUICを使う。TLSで保護したものをHTTPSと呼ぶ。

「HTTP」は、3分野の17問の練習問題に出てきます(Web技術の基礎, ネットワークの基礎, クラウドとコンテナの基礎など)。

この用語の分野: Web技術の基礎

リクエストと応答の形

リクエストは「GET /index.html HTTP/1.1」のようなリクエスト行、Host や Accept などのヘッダ、空行、本文の順に並びます。応答は「HTTP/1.1 200 OK」のようなステータス行、Content-Type や Cache-Control などのヘッダ、本文からなります。ヘッダは「名前: 値」の形で、本文の種類、キャッシュの扱い、認証の情報、圧縮の方式などを伝えます。

版による違い

HTTP/1.1では、1つのTCP接続を使い回す持続的接続が標準ですが、1つの接続では応答を順に1つずつ受け取ります。HTTP/2はメッセージをバイナリのフレームに分け、1つの接続に複数のリクエストと応答を多重化し、ヘッダも圧縮します。HTTP/3はトランスポートにUDPの上のQUICを使い、パケットの損失が関係のないストリームまで止める問題を減らし、接続の確立に必要な往復も少なくしています。

ステートレスと状態の管理

HTTPは、各リクエストを独立に扱うステートレスなプロトコルです。サーバが前のリクエストを覚えていなくてよいので、多くのサーバで負荷を分けやすくなります。ログインのような状態は、サーバが発行したセッションIDをCookieで受け渡したり、署名付きの値を Authorization ヘッダで送ったりして、アプリケーションの側で保ちます。

HTTPの練習問題に挑戦

HTTPS(HTTPをTLSで保護した通信)で守られることとして正しいものはどれか。

  1. A接続先のWebサイトの運営者が、悪意のない信頼できる人や組織であること
  2. B通信していること自体や、接続先のサーバのIPアドレスが、途中の経路から見えないこと
  3. C通信の内容を途中で盗み見られたり書き換えられたりしないことと、接続先のサーバが証明書のドメイン名の正当な持ち主であること
答えと解説を見る

正解:C. 通信の内容を途中で盗み見られたり書き換えられたりしないことと、接続先のサーバが証明書のドメイン名の正当な持ち主であること

TLSは、通信の暗号化(機密性)、改ざんの検出(完全性)、サーバの認証の3つを提供します。サーバは証明書を提示し、ブラウザは信頼する認証局(CA)の署名をたどって証明書が正しいかを確かめ、URLのドメイン名と一致するかも確かめます。ただし、確かめられるのは「そのドメイン名の持ち主と通信している」ことまでで、サイトの運営者が善良かどうかは分かりません。詐欺のサイトでも、自分のドメイン名の証明書は取得できます。また、IPヘッダは暗号化されないので、どのIPアドレスと、いつ、どれくらいの量を通信しているかは、途中の経路から見えます。

HTTP/1.1のリクエストの最初の行(リクエスト行)に並ぶ要素の組み合わせとして、正しいものはどれか。

  1. Aメソッド、リクエストの対象(パスなど)、HTTPのバージョン
  2. BHTTPのバージョン、ステータスコード、理由を表す短い語句
  3. C送信元のIPアドレス、宛先のポート番号、メソッド
答えと解説を見る

正解:A. メソッド、リクエストの対象(パスなど)、HTTPのバージョン

HTTPのリクエストは、リクエスト行、ヘッダ(1行に1つの「名前: 値」)、空行、本文の順に並びます。例えば「GET /docs/index.html HTTP/1.1」は、GETメソッドで /docs/index.html を要求する行です。HTTP/1.1ではHostヘッダも必ず送り、同じIPアドレスで複数のサイトを運用していても、どのサイトへの要求かをサーバが判断できるようにします。応答の最初の行はステータス行で、「HTTP/1.1 200 OK」のように、バージョン、ステータスコード、理由句が並びます。

よくある質問

HTTPとHTTPSは何が違いますか?

HTTPSは、HTTPのやり取りをTLSで暗号化し、改ざんの検出とサーバの認証を加えたものです。リクエストや応答の形はHTTPと同じで、既定のポート番号は、HTTPが80、HTTPSが443です。パスワードやCookieを守るため、Webサイトでは一般にHTTPSを使います。

GETとPOSTはどう使い分けますか?

GETは資源を取得するためのメソッドで、サーバの状態を変えない「安全」なものとして扱われ、ブラウザやキャッシュが繰り返し送ったり保存したりすることがあります。POSTは、注文や投稿のように、サーバに処理をさせたりデータを登録したりするときに使います。GETのクエリはURLに入り、アクセスの記録や閲覧の履歴に残るので、パスワードのような秘密の情報は入れません。

解説の中の「HTTP」

「HTTP」が出てくる問題(17問)

  1. HTTPS(HTTPをTLSで保護した通信)で守られることとして正しいものはどれか。
  2. HTTP/1.1のリクエストの最初の行(リクエスト行)に並ぶ要素の組み合わせとして、正しいものはどれか。
  3. HTTPのステータスコードと、その意味の組み合わせとして正しいものはどれか。
  4. HTTP/2とHTTP/3の説明として正しいものはどれか。
  5. HTTPはステートレスなプロトコルである。このことと、Webサイトでログインした状態を保つ一般的な方法の説明として、正しいものはどれか。
  6. オンライン決済のサービスで支払いが完了したことを、加盟店のサーバがすぐに知りたい。決済サービスが、あらかじめ登録された加盟店のURLへHTTPのPOSTで通知を送る方式(Webhook)の説明として、正しいものはどれか。
  7. 1.5 MBのテキストのデータを、gzipで3分の1の大きさに圧縮して送る。帯域が10 Mbps、RTTが100 msで、データを送り始める前に、TCPの接続、TLSのハンドシェイク、HTTPのリクエストで合わせて3往復かかるとする。1 MB = 10^6 バイトとし、圧縮と展開の時間、ヘッダ、TCPの輻輳制御による待ちは無視する。データを受け取り終えるまでの時間に最も近いものはどれか。
  8. クラウドのストレージを、①仮想マシンにディスクとして接続してファイルシステムを作り、データベースのデータファイルを置く、②複数のサーバから同時にマウントして共有のディレクトリとして使う、③HTTPのAPIでキー(名前)を指定して大量の画像を読み書きし、容量を前もって決めずに増やす、という3つの用途で使う。①〜③に適したストレージの種類の組み合わせとして、適切なものはどれか。
  9. TCP/IPの4階層のモデルで、TCPとUDPが属する層はどれか。
  10. UDPの特徴として正しいものはどれか。
  11. RTT(往復の時間)が100 msのWebサーバに、HTTPS(TCPの上のTLS 1.3)で新しく接続し、最初のリクエストを送って応答を受け取り始めるまでにかかる時間に最も近いものはどれか。DNSの名前解決は済んでおり、サーバの処理時間とデータの転送時間は無視する。
  12. プロトコルと、そのサーバが標準で使うポート番号の組み合わせとして正しいものはどれか。
  13. RTTが40 msのWebサーバから、HTMLを1つと、そこから参照される画像を4つ、1つずつ順番に取得する。TCPの接続の確立に1往復、各リクエストと応答に1往復かかるとし、データの転送時間、サーバの処理時間、TLS、接続の切断は考えない。オブジェクトごとに新しいTCP接続を張る場合と、1つのTCP接続を使い回す持続的接続の場合とで、かかる時間の差はどれか。
  14. チャットのアプリで、新しいメッセージをサーバからブラウザへすぐに届けたい。WebSocketの説明として正しいものはどれか。
  15. Webシステムを、Webサーバ、アプリケーションサーバ、データベースサーバの3層で構成する。アプリケーションサーバが主に受け持つ処理として、適切なものはどれか。

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

TLS DNS ポート番号 HTTPステータスコード Pod Cookie オブジェクトストレージ OSI参照モデル 3ウェイハンドシェイク SSH

用語集の一覧へ