RFC 9000 - QUIC: A UDP-Based Multiplexed and Secure Transport
Autori: J. Iyengar (Google), M. Thomson (Mozilla)
Data di pubblicazione: Maggio 2021
Stato: Standards Track (Traccia degli standard)
Aggiorna: RFC 8999
Obsoleto: -
Sommario (Abstract)
Questo documento definisce il nucleo del protocollo di trasporto QUIC. QUIC fornisce alle applicazioni su UDP un'astrazione di flusso (Stream Abstraction), simile a quella di TCP, insieme a una sicurezza integrata equivalente a TLS e TCP. QUIC offre multiplexing di flussi, controllo di flusso per flusso e stabilimento di connessione a bassa latenza.
Indice (Table of Contents)
Capitoli principali
- 1. Panoramica (Overview)
- 2. Flussi (Streams)
- 3. Stati dei flussi (Stream States)
- 4. Controllo di flusso (Flow Control)
- 5. Connessioni (Connections)
- 6. Negoziazione della versione (Version Negotiation)
- 7. Handshake crittografico e di trasporto (Cryptographic and Transport Handshake)
- 8. Validazione dell'indirizzo (Address Validation)
- 9. Migrazione della connessione (Connection Migration)
- 10. Terminazione della connessione (Connection Termination)
- 11. Gestione degli errori (Error Handling)
- 12. Pacchetti e frame (Packets and Frames)
- 13. Pacchettizzazione e affidabilità (Packetization and Reliability)
- 14. Dimensione del datagramma (Datagram Size)
- 15. Versioni (Versions)
- 16. Codifica di interi a lunghezza variabile (Variable-Length Integer Encoding)
- 17. Formati di pacchetto (Packet Formats)
- 18. Codifica dei parametri di trasporto (Transport Parameter Encoding)
- 19. Tipi e formati di frame (Frame Types and Formats)
- 20. Codici di errore (Error Codes)
- 21. Considerazioni sulla sicurezza (Security Considerations)
- 22. Considerazioni IANA (IANA Considerations)
- 23. Riferimenti (References)
Appendice
Funzionalità principali di QUIC
🚀 Vantaggi in termini di prestazioni
- Stabilimento di connessione 0-1 RTT: Prima connessione 1-RTT, riconnessione 0-RTT
- Nessun blocco head-of-line: Trasmissione indipendente a livello di flusso, la perdita di pacchetti di un singolo flusso non influisce sugli altri flussi
- Migrazione della connessione: La connessione non si interrompe con cambiamenti di IP/porta (passaggio trasparente da Wi-Fi a 4G)
- Controllo della congestione migliorato: Rilevamento e recupero più precisi della perdita di pacchetti
🔒 Funzionalità di sicurezza
- TLS 1.3 integrato: La crittografia e l'autenticazione sono obbligatorie
- Crittografia dei parametri di trasporto: Anche i metadati dell'handshake sono crittografati
- ID di connessione: Evita attacchi di associazione di indirizzi IP
📊 Confronto con TCP+TLS
| Funzionalità | QUIC | TCP+TLS |
|---|---|---|
| RTT handshake | 0-1 | 2-3 |
| Blocco head-of-line | No (livello flusso) | Sì (livello flusso di byte) |
| Migrazione connessione | ✅ Supporto native | ❌ Richiede gestione a livello applicativo |
| Multiplexing | ✅ Supporto native | Richiede HTTP/2 |
| Crittografia | Obbligatoria | Opzionale |
| Distribuzione | Veloce (UDP) | Lenta (aggiornamento OS) |
Descrizione dello stato (Status)
Questo documento è un documento Standards Track dell'IETF e rappresenta il consenso della comunità IETF.
Maggiori informazioni: https://www.rfc-editor.org/info/rfc9000