ALPN
ALPN(Application-Layer Protocol Negotiation、RFC 7301)は TLS ハンドシェイク時にアプリケーションプロトコル(h2、http/1.1 等)をネゴシエートし、追加 RTT を回避する。
目的
TLS ハンドシェイク拡張で上位プロトコルをネゴシエートし、NPN の追加 RTT なしに 443 ポートを HTTP/2、HTTP/1.1 等に再利用可能にする。
メカニズム
ClientHello が ALPN 拡張でサポートプロトコルリスト(h2, http/1.1)を携帯し、ServerHello が一つを選択して返す。ネゴシエーションはハンドシェイク内で完了し、追加 RTT なし。
ユースケース
- TLS 上の HTTP/2
- QUIC 上の HTTP/3
- ポートの多重化