# Paragone con HTTP/2

HTTP/3 è stato disegnato per QUIC, che è un protocollo di trasporto autonomo nel gestire i proprii flussi.

HTTP/2 è stato concepito su TCP, quindi gestisce i sotto-flussi all'interno dello strato HTTP.

## Somiglianze

I due protocolli hanno virtualmente un insieme di caratteristiche identico.

* Entrambi offrono streams (flussi)
* Entrambi supportano la modalità "server push"
* Entrambi utilizzano la compressione degli header, QPACK e HPACK risultano molto simili nel design funzionale
* Entrambi sfruttano il multiplexing via flussi, su una singola connessione
* Entrambi i protocolli contengono la nozione di priorità di flusso

## Differenze

Le differenze riguardano i dettagli, soprattutto in relazione al fatto che HTTP/3 usi QUIC:

* HTTP/3 funziona meglio con i "dati anticipati" grazie al supporto per la negoziazione a 0-RTT, mentre sappiamo che il TCP Fast Open accoppiato a TLS spesso incontra problemi, inviando comunque minor quantità di dati
* Le negoziazioni (handshakes) sono molto più rapide in HTTP/3 grazie a QUIC
* Non esistono versioni non crittate o non sicure di HTTP/3. HTTP/2 può ancora essere implementato ed utilizzato senza HTTPS - benché molto raro su Internet
* HTTP/2 può essere negoziato direttamente all'interno di una negoziazione TLS grazie all'estensione ALPN. Diversamente, in HTTP/3 (essendo su QUIC) si dovrà a priori informare il client con una risposta contenente l'intestazione `Alt-Svc:` prima che il client stesso possa avere conoscenza di tale risorsa.
