UDP
最小限の機能だけを提供するトランスポートプロトコル。
| 提供する | 提供しない |
|---|---|
| ポート番号(どのプロセスへ) | 到達確認 |
| チェックサム | 順序保証 |
| — | 再送 |
| — | 輻輳制御 |
ヘッダは 8 バイト(TCP は最低 20 バイト)。
なぜ使うのか#
**「遅れて届くくらいなら、届かない方がよい」**場面がある。
| 用途 | 理由 |
|---|---|
| 音声・映像通話 | 再送された古い音声は無意味 |
| オンラインゲーム | 古い位置情報より新しいものが欲しい |
| DNS | 1 往復で済む。失敗したら再問い合わせ |
| ストリーミング | 少しの欠落は補間できる |
TCP の順序保証は、 リアルタイム性を犠牲にする。
QUIC#
Google が開発し、RFC 9000 として標準化された。 UDP の上に、TCP 相当の信頼性を再構築する。
| 特徴 | 内容 |
|---|---|
| ストリームの独立 | head-of-line blocking が無い |
| TLS 統合 | 接続確立が 1 往復(再訪なら 0 往復) |
| 接続 ID | IP が変わっても接続が続く(Wi-Fi ↔ 4G) |
| ユーザ空間で実装 | 改良を OS 更新なしに配れる |
最後の点が大きい。 TCP はカーネルにあるため改良の普及に何年もかかるが、 QUIC はアプリケーションと一緒に更新できる。
HTTP/3 は QUIC の上で動く。
参考文献#
- James F. Kurose, Keith W. Ross. Computer Networking: A Top-Down Approach, 8th ed. Pearson, 2021.
- User Datagram Protocol. RFC 768, 1980. https://doi.org/10.17487/RFC768
- QUIC: A UDP-Based Multiplexed and Secure Transport. RFC 9000, 2021. https://doi.org/10.17487/RFC9000