QUIC
Quick UDP Internet Connections
Googleによって考案されたUDP上で動作するプロトコル.TCPのような信頼性とTLSのような安全性を持ちながらHTTPで通信できる.
TLS_1.3が採用されている.
UDPを採用していながら,TCPと同様に信頼性がある.
TCPと同様にACKを行う.
DNSやSSH,RTPでも利用が検討されている.
2021年にRFCになっている.
RFC_9000
RFC_9001
RFC_9002
TCPに比べて以下の長所がある.
5タプルではなくコネクションIDを用いてコネクションを識別するため,5タプルが変わってもTCPコネクションを継続できる.
コネクションマイグレーションの機能を持つ.
パケットに番号を付しているため,パケットロスの際に再送する必要があるもののみを選択して再送できる.
パケット番号を確認することでパケットロスを判断する.
ACKを送る確認応答で受信できていないパケット番号を通知する.
TCPを内部で利用するため,制御メッセージも暗号化される.
TCPは下位でTLSを採用しているため,TCPの制御メッセージ自体は暗号化されず,観測されてしまう.
QUICでは暗号化しない通信は行えない.
TCPがOSで処理されるのに対して,QUICはブラウザなどアプリケーションで処理されるため,新機能の提供スパンが短い.
通信の仕組み
QUICコネクションとして管理される.
コネクションIDを用いる.
QUICコネクション内に仮想的な通信単位としてストリームを持つ.
UDPパケットの中に1つ以上のQUICパケットが格納される.
QUICパケットは1つ以上のフレームを持つ.
アンプ攻撃に対する対策
受け取るパケットに対するレスポンスの増幅率を下げることが効果的.
QUICコネクション確立時に送るパケットが1200バイト以上であることが規定されている.
QUICv1で採用されなかった機能
FEC
MP-QUIC
Google QUICを発端とするが,QUICとは大きく異なる.
#ネットワーク