HTTP/2, HTTP/3概論
HTTP/1しか知らない、いやHTTP/1すらよくわからない僕ですが、勉強して自分が気になった点についてまとめてみます
HTTP/1
まずはHTTP/1から
基本的な技術
- HTTPS
- TLSを利用したSecureなHTTP通信
- Transport Layer Security
- TLSを利用したSecureなHTTP通信
- TCP
- 3 way ハンドシェイクによる確実な通信
- TLS
- TLS1.2以下では、フルハンドシェイクによる通信があり、最低四回のやりとりが必要
つまり、TCP + TLSでの通信においてのシーケンス図は下のようになる
問題点
改善策
HTTP/2
- HTTP/1のデメリットを補うために開発された(by Google)
特徴
- バイナリ形式のプロトコル
- フレーム化によりメッセージを分割できる
- 多重化
- 優先度制御とフロー制御
- TCP接続を持続させることにより、自ら制御する必要が出てきた
- ヘッダー圧縮
- サーバープッシュ
- サーバーからレスポンスを送信できる
HTTP/3
おまけ
検証ツールを開き、NetworkタブのNameの欄を右クリックし、Protocolを選択(下はspotifyでの例)
するとProtocolの欄が追加される
h2はHTTP/2による通信、h3-*はHTTP/3による通信が行われていることを示す。
- 本文中のシーケンス図は以下のように
mermaid
を用いて作成した
sequenceDiagram participant 1 as client participant 2 as server Note over 1, 2: TCP Connection 1->>+2: SYN(シン) 2->>1: SYN + ACK(アック) 1->>+2: ACK Note over 1, 2: TLS Connection 1->>+2: ClientHellow 2->>1: ServerHellow, ServerHelloDone 1->>+2: KeyExchange, Finished 2->>1: Finished Note over 1, 2: ハンドシェイク終了 1->>+2: HTTP リクエス