====== QUIC (Quick UDP Internet Connections) ====== **QUIC** je moderní síťový transportní protokol, který zásadně zrychluje a zabezpečuje internetovou komunikaci. Na rozdíl od tradičního webu, který stojí na protokolu [[TCP]], QUIC využívá jako svůj základ **UDP** (User Datagram Protocol). Původně byl vyvinut společností Google, dnes je standardizován jako **RFC 9000** a tvoří základ protokolu **HTTP/3**. ===== Proč vznikl QUIC? (Řešení problémů TCP) ===== QUIC řeší dva hlavní nedostatky kombinace TCP + TLS: - **Vysoká latence při navazování (Handshake):** U TCP + TLS se musí nejprve navázat TCP spojení a až poté TLS. To vyžaduje několik cest tam a zpět ([[1-RTT|RTT]]). - **Head-of-Line Blocking (HoL):** Pokud se u TCP ztratí jeden paket, celé spojení se zastaví a čeká na jeho znovudoručení, i když ostatní data (např. jiné obrázky na stránce) už dorazila. ===== Klíčové vlastnosti ===== ==== 1. Rychlé navázání spojení (0-RTT a 1-RTT) ==== QUIC spojuje navazování transportní vrstvy i zabezpečení (TLS 1.3) do jednoho kroku. * Při prvním připojení stačí **1 RTT**. * Při opakovaném připojení podporuje **0-RTT**, tedy odeslání dat okamžitě. ==== 2. Multiplexing bez blokování (No HoL Blocking) ==== V rámci jednoho QUIC spojení může běžet více datových proudů (streamů) nezávisle na sobě. Pokud se ztratí paket patřící jednomu obrázku, ostatní proudy dat (text, jiné obrázky) pokračují v načítání bez přerušení. ==== 3. Migrace připojení (Connection Migration) ==== V TCP je spojení definováno IP adresami a porty. Pokud přepnete z Wi-Fi na LTE, spojení se rozpadne. QUIC používá **Connection ID**. Spojení tak zůstane aktivní, i když se uživateli změní IP adresa (např. při chůzi z budovy na ulici). ==== 4. Vždy šifrovaný ==== Na rozdíl od TCP, kde je šifrování (TLS) volitelný doplněk, QUIC má **TLS 1.3 integrováno přímo v sobě**. Téměř celá hlavička protokolu je šifrovaná, což brání síťovým prvkům v neoprávněném zasahování do provozu. ===== Srovnání: TCP vs. QUIC ===== ^ Vlastnost ^ TCP + TLS 1.2/1.3 ^ QUIC (HTTP/3) ^ | **Základní protokol** | TCP | UDP | | **Navázání (Handshake)** | 2 až 3 RTT | 0 až 1 RTT | | **Odolnost proti ztrátě** | Celé spojení čeká (HoL) | Čeká jen poškozený stream | | **Změna IP adresy** | Spojení se rozpadne | Spojení plynule pokračuje | | **Zabezpečení** | Volitelné (TLS) | Povinné (integrované) | > **Zajímavost:** Ačkoliv QUIC běží nad "nespolehlivým" UDP, sám o sobě implementuje vlastní mechanismy pro potvrzování doručení a kontrolu zahlcení, takže je stejně spolehlivý jako TCP, ale mnohem pružnější. --- **Viz také:** [[https-tls|HTTPS/TLS]], [[1-rtt|1-RTT]], [[udp|UDP]], [[http3|HTTP/3]]