QUIC
# QUIC

In telecomunicazioni e informatica, QUIC (pronunciato "quick") è un protocollo applicativo di livello di trasporto per uso generico inizialmente progettato da Jim Roskind di Google. Implementato e distribuito nel 2012, è stato annunciato pubblicamente nel 2013 con l'ampliamento della sperimentazione e descritto all'IETF. Pur essendo ancora un Internet Draft, QUIC è utilizzato da più della metà di tutte le connessioni dal browser web Chrome ai server di Google. Microsoft Edge, Firefox e Safari Technology Preview lo supportano, anche se non è abilitato.

## Caratteristiche

QUIC ha lo scopo di essere quasi equivalente a una connessione TCP ma con una latenza notevolmente ridotta; lo fa principalmente attraverso due cambiamenti che si basano sulla comprensione del comportamento del traffico HTTP.

La prima modifica consiste nel ridurre notevolmente l'overhead durante l'impostazione della connessione. Poiché la maggior parte delle connessioni HTTP richiederanno TLS, QUIC rende lo scambio delle chiavi di configurazione e dei protocolli supportati parte del processo di handshake iniziale. Quando un client apre una connessione, il pacchetto di risposta include anche i dati necessari per i pacchetti futuri necessari all'uso della crittografia. Questo passaggio elimina la necessità di impostare la connessione TCP e quindi di negoziare il protocollo di sicurezza tramite altri pacchetti.

QUIC utilizza UDP come base, che non include però il recupero delle perdite. Puntando ad essere equivalente a TCP, che non ha perdita dati a differenza di UDP, QUIC controlla separatamente ogni flusso e i dati persi vengono ritrasmessi. Ciò significa che se si verifica un errore in un flusso, lo stack di protocollo può continuare a servire altri flussi in modo indipendente. Questa funzionalità può essere molto utile per migliorare le prestazioni sui collegamenti soggetti a errori, dal momento che nella maggior parte dei casi possono essere ricevuti considerevoli dati aggiuntivi prima che il TCP noti la mancanza o la perdita di un pacchetto. In QUIC, questi dati sono liberi di essere elaborati mentre il flusso viene riparato.

Un altro obiettivo del QUIC è quello di migliorare le prestazioni durante gli eventi di cambio rete, come ad esempio quando l'utente di un dispositivo mobile si sposta da una rete Wi-Fi a una rete mobile. Quando questo avviene su TCP, inizia un lungo processo in cui ogni connessione esistente si interrompe una alla volta e viene poi ristabilita su richiesta. Per risolvere questo problema, QUIC include un identificatore di connessione al server indipendentemente dalla fonte. Questa funzionalità permette di ristabilire la connessione semplicemente reinviando un pacchetto, contenente sempre questo ID, poiché quello originale sarà ancora valido anche se l'indirizzo IP dell'utente cambia.

