読み方 : エーエルピーエヌ

ALPN【Application-Layer Protocol Negotiation】

概要

ALPNとは、TLSの拡張仕様の一つで、暗号化通信を始める際に、その接続上でどのアプリケーション層プロトコルを使うかを事前に調整する仕組み。Webコンテンツの伝送におけるHTTP 1.1HTTP/2HTTP/3の選択などに用いられ、追加の往復通信なしで適切な方式を決められる。IETFによってRFC 7301として標準化されている。
ALPNのイメージ画像

TLSTransport Layer Security)はトランスポート層レベルでデータ暗号化するプロトコルで、様々なアプリケーション層プロトコルと組み合わせて使用される。従来のTLS通信では、暗号化セッションを確立した後に、実際に使用するアプリケーションプロトコルを別途通知(ネゴシエーション)する必要があった。例えば、TLS上でHTTP通信を行うHTTPSでは、TLS接続が完了してから初めてHTTPバージョンなどを調整していた。通信開始時に余分な通信の往復(ラウンドトリップ)が発生し、接続確立までの時間が長くなるという課題があった。

ALPNでは、TLSによる接続を確立する手続きの最中に、アプリケーションプロトコルの通知を済ませてしまう。具体的には、クライアントTLSハンドシェイクの「ClientHello」メッセージの中に、対応しているプロトコルの一覧を添付して送信する。サーバはその一覧を参照し、自身が対応しているプロトコルの中から最適なものを選択して「ServerHello」メッセージで返答する。これにより、TLSセッションの確立と同時にプロトコルの合意が完了し、余分なラウンドトリップを省くことができる。

ALPNが特に重要な役割を果たしているのが、HTTP/2およびHTTP/3の選択である。古い仕様であるHTTP 1.1と、近年更新されたHTTP/2およびHTTP/3では通信方式が大きく変わっており、通信開始時にWebブラウザWebサーバがどのバージョンHTTPで通信するか交渉しなければならない。ALPNでは、HTTP/1.1が「http/1.1」、HTTP/2が「h2」、HTTP/3が「h3」というプロトコル識別子で識別され、同一のポート番号(標準では443番)でも双方の対応状況に応じて適切なバージョンを速やかに自動選択できる。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。