====== HTTP (Hypertext Transfer Protocol) ====== **HTTP** je aplikační protokol založený na architektuře **klient-server**. Funguje na principu "požadavek–odpověď" (request–response). Klient (typicky [[browser|prohlížeč]]) odešle požadavek na server, a ten mu vrátí odpověď obsahující data (např. soubor [[html|HTML]], obrázek nebo video). HTTP je tzv. **bezstavový protokol** (stateless), což znamená, že každá operace je nezávislá a server si standardně nepamatuje, co klient dělal v předchozím kroku. K udržení "stavu" (např. přihlášení uživatele) se proto používají doplňkové technologie jako [[cookie|cookies]]. ---- ====== Jak probíhá komunikace ====== Proces získání webové stránky probíhá v následujících krocích: 1. **Navázání spojení:** Klient naváže spojení se serverem (obvykle přes port 80). 2. **HTTP Request (Požadavek):** Klient pošle zprávu typu: "Dej mi soubor /index.html". 3. **Zpracování na serveru:** Server vyhledá soubor nebo vygeneruje data. 4. **HTTP Response (Odpověď):** Server pošle data spolu s informací o výsledku (stavový kód). 5. **Ukončení/Udržení:** Spojení se ukončí nebo zůstane otevřené pro další prvky (obrázky apod.). ---- ====== Metody požadavku (Verbs) ====== HTTP definuje různé metody pro interakci se zdroji na serveru: ^ Metoda ^ Účel ^ | **GET** | Získání dat ze serveru (např. načtení stránky). | | **POST** | Odeslání dat na server (např. odeslání registračního formuláře). | | **PUT** | Nahrazení existujícího zdroje novými daty. | | **DELETE** | Smazání konkrétního zdroje na serveru. | ---- ====== Stavové kódy (Status Codes) ====== Server v odpovědi vždy posílá trojmístné číslo, které indikuje výsledek: * **1xx (Informativní):** Požadavek byl přijat, zpracování pokračuje. * **2xx (Úspěch):** Vše proběhlo v pořádku (nejznámější je **200 OK**). * **3xx (Přesměrování):** Zdroj se nachází jinde (např. **301 Moved Permanently**). * **4xx (Chyba klienta):** Špatný požadavek (legendární **404 Not Found**). * **5xx (Chyba serveru):** Server selhal (např. **500 Internal Server Error**). ---- ====== Evoluce verzí ====== * **HTTP/1.1 (1997):** Standard, který zavedl trvalá spojení (není nutné pro každý obrázek otevírat nové spojení). Dodnes velmi rozšířený. * **HTTP/2 (2015):** Přinesl binární přenos a **multiplexování** (stahování mnoha souborů naráz přes jedno spojení), což výrazně zrychlilo načítání stránek. * **HTTP/3 (2022):** Využívá protokol QUIC (postavený na UDP). Je navržen pro moderní mobilní sítě, aby se lépe vyrovnal se ztrátami paketů a změnami připojení. [Image comparing HTTP/1.1 and HTTP/2 multiplexing performance] ---- ====== Bezpečnost: HTTPS ====== Samotné HTTP je nezabezpečené – data putují sítí v čitelné podobě, což umožňuje jejich odposlech. Proto vzniklo **HTTPS** (Hypertext Transfer Protocol Secure). * Využívá šifrování **TLS** (Transport Layer Security). * Zajišťuje **Důvěrnost** (nikdo data nepřečte), **Integritu** (data nikdo cestou nezmění) a **Autentizaci** (máte jistotu, že komunikujete se skutečným serverem). ---- //Související pojmy: HTTPS, URL, Browser, Cookie, HTML, IP adresa, DNS, TLS.//