HTTP の基本
informationnetworksundergraduatelecture
data/lecture/information/networks/dns-basics.lecture.n.md
1導入
この講義では、クライアントが資源に対する要求を送信し、サーバが処理結果を応答するためのHTTPの意味論を説明する。HTTP の要求と応答を、IP によるパケット転送やトランスポート層の機能と区別する。
2資源と表現
資源とは、HTTP による操作の対象であり、URIによって識別される。Web ページ、画像、API が管理するデータなどを資源として扱える。
表現とは、ある時点における資源の状態を表現するデータである。同一の資源が、HTML、JSON、画像形式などの異なる表現を提供することもある。この講義では、資源へのアクセスに用いるURIをURLと呼ぶ。
HTTP では、クライアントが要求を送信し、サーバがその要求を処理して応答を返送する。この役割は個々の交換に対して定まり、ブラウザに限定されない。
3要求と応答の意味論
HTTP 要求は、概念的に次の要素から構成される。
- メソッド: 資源に対して要求する意味を指定する。
- 要求対象: 操作の対象を指定する。
- フィールド: 表現形式、認証、キャッシュなどに関するメタデータを伝達する。
- 内容: 必要な場合に、処理対象となる表現を伝達する。
HTTP 応答は、要求の処理結果を分類する状態コード、フィールド、および必要に応じた内容から構成される。状態コードはサーバ自体の状態ではなく、その要求に対する処理結果を表す。
4HTTP/1.1 のメッセージ例
HTTP/1.1 は、開始行とフィールドをテキスト形式で表現する。たとえば、次の要求行は /index.html を要求対象とする GET 要求である。
GET /index.html HTTP/1.1
Host: example.com
Accept: text/html
応答の開始行には、HTTP のバージョン、状態コード、理由句が含まれる。
HTTP/1.1 200 OK
Content-Type: text/html
このテキスト形式は HTTP/1.1 の表現方法である。HTTP/2 と HTTP/3 は要求行を使用せず、HTTP の意味をバイナリフレームで符号化する。
5メソッドの性質
GETは、要求対象となる資源について、選択された現在の表現の転送を要求する。GET は安全なメソッドとして定義され、クライアントはサーバの状態変更を要求しない。また、同一の GET を複数回実行しても、意図されるサーバ上の効果は一回の実行と同じである。この性質を冪等という。ただし、アクセスログの記録などの付随的な変化は許容される。
POSTは、要求に含まれる表現を、要求対象となる資源に固有の意味で処理するよう要求する。フォームの送信、新たな資源の生成、処理の起動などに利用され得るため、POST を単なるファイル送信と定義することはできない。POST は一般に安全でも冪等でもない。
6状態コード
状態コードの先頭桁は、処理結果を次のように分類する。
1xx: 情報応答
2xx: 成功
3xx: リダイレクション
4xx: クライアントエラー
5xx: サーバエラー
200 OK は要求が成功したことを表す。404 Not Found は、サーバが要求対象の現在の表現を発見できない、またはその存在を開示しないことを表す。したがって、404 だけから資源が永久に存在しないとは断定できない。
7HTTPS と TLS
HTTPSは、TLSの機能によって保護されたHTTP通信を表す。HTTP/1.1とHTTP/2ではTLSをTCP上で使用し、HTTP/3ではTLSの暗号機能とハンドシェイクがQUICへ統合される。TLSは通信内容の機密性と完全性を保護し、証明書の検証を通じて通常はサーバを認証する。HTTPSはHTTPの要求・応答の意味を変更しない。また、TLSによる認証は、サーバが提供する情報内容の正確性まで保証するものではない。
8HTTP のバージョンと転送方式
| バージョン | 主な下位転送 | HTTP メッセージの表現 |
| HTTP/1.1 | TCP | テキスト形式の開始行とフィールド |
| HTTP/2 | TCP | バイナリフレーム、多重化 |
| HTTP/3 | UDP 上の QUIC | バイナリフレーム、QUIC ストリームによる多重化 |
資源、メソッド、状態コードなどの HTTP の意味論は、これらのバージョンで概ね共通する。一方、符号化と下位の転送方式は異なる。したがって、HTTP が常に TCP を利用するとは限らない。
9DNS および下位層との関係
URL にドメイン名が含まれる典型的な Web アクセスでは、クライアントは DNS による名前解決の後、選択した IP アドレスへ接続し、HTTP の要求を送信する。ただし、DNS は HTTP の意味論の一部ではなく、キャッシュされた結果や IP アドレスを直接使用する場合もある。
IP はパケットを宛先へ転送し、TCP または QUIC は HTTP メッセージを運搬するための機能を提供する。HTTP は、その上で資源に対する要求と応答の意味を規定する。
10要点
- HTTP は、URI で識別される資源に対する要求と応答の意味論を規定する。
- メソッドは要求の意味を、状態コードは処理結果の分類を表す。
- HTTPS は HTTP を TLS で保護する。HTTP/1.1 と HTTP/2 は通常 TCP を、HTTP/3 は QUIC を利用する。
11次に進む講義
data/lecture/information/database/database-portal.lecture.n.md