Vzhled
13 • Internet
- internetové zdroje, URL, mime type, relativní / absolutní cesta, převod IP a domény
Internet
Internet je celosvětová decentralizovaná síť propojených počítačových sítí, které spolu komunikují pomocí protokolové rodiny TCP/IP. Žádný centrální vlastník neexistuje, jednotlivé sítě patří různým provozovatelům (poskytovatelé, univerzity, firmy, státy), spojuje je dohoda na společných protokolech.
Historie ve třech mezníkách
| Rok | Událost |
|---|---|
| 1969 | ARPANET — první uzly mezi UCLA a Stanford. 29. října odeslána první zpráva ("LOGIN"), server spadl po druhém písmenu. |
| 1983 | Přechod ARPANETu na TCP/IP — datum považované za technické "narození" internetu. |
| 1989–1991 | Tim Berners-Lee v CERNu navrhuje a spouští WWW — HTTP protokol, HTML, první prohlížeč i server. |
Internet ≠ WWW (klasický chyták)
| Pojem | Co to je |
|---|---|
| Internet | Fyzická a logická infrastruktura - "síť sítí", protokoly TCP/IP. |
| WWW (Web) | Jedna ze služeb běžící na internetu - hypertextové dokumenty přenášené přes HTTP/HTTPS. |
| TCP | Transportní protokol - spolehlivý přenos, kontrola pořadí, opětovné odeslání ztracených paketů. |
| IP | Adresování a směrování paketů mezi zařízeními. Verze IPv4 a IPv6. |
Další služby běžící na internetu
E-mail (SMTP, IMAP, POP3), přenos souborů (FTP, SFTP), vzdálená správa (SSH), překlad jmen (DNS), čas (NTP), telefonie (VoIP/SIP), streamování, IoT (MQTT), real-time komunikace (WebSocket, WebRTC).
TCP/IP model: 4 vrstvy
| Vrstva | Co dělá | Příklady |
|---|---|---|
| Aplikační | Konkrétní služba | HTTP, SMTP, DNS, SSH, FTP |
| Transportní | Doručení mezi procesy | TCP (spolehlivý), UDP (rychlý, bez kontrol) |
| Internetová | Adresace, směrování mezi sítěmi | IP, ICMP (ping) |
| Vrstva síťového rozhraní | Fyzický přenos po lince | Ethernet, Wi-Fi |
Internetové zdroje
- cokoli, co lze v síti adresovat a získat: dokument, soubor, služba, datový tok
- Každý zdroj má:
- Jednoznačnou adresu (URI / URL)
- Typ obsahu (MIME type)
- Protokol, kterým se k němu přistupuje (HTTP, HTTPS, FTP, …)
Typy zdrojů
| Kategorie | Příklady |
|---|---|
| Statické dokumenty | HTML, CSS, JS, obrázky, PDF |
| Dynamické zdroje | API endpointy (REST, GraphQL), serverem generované stránky |
| Multimédia | Video (MP4, WebM), audio (MP3, OGG), HLS/DASH streamy |
| Služby | E-mail, cloud storage, databáze přes API |
URI vs. URL vs. URN
| Pojem | Význam | Příklad |
|---|---|---|
| URI (Uniform Resource Identifier) | Obecný identifikátor zdroje - nadřazený pojem. | Libovolné URL nebo URN. |
| URL (Uniform Resource Locator) | URI, které popisuje kde zdroj je. | https://example.com/index.html |
| URN (Uniform Resource Name) | URI, které popisuje jméno zdroje nezávisle na umístění. | spotify:artist:413GiX0PBqVdux5JihvMyA |
- každé URL je URI, ale ne každé URI je URL. V praxi se s URN setkáš zřídka, většinou jde o URL.
URL — anatomie podrobně
https://user:pass@www.example.com:443/sekce/stranka.html?dotaz=ahoj&id=5#kotva └─┬─┘ └───┬───┘ └──────┬──────┘ └┬┘ └────────┬────────┘ └──────┬──────┘ └─┬─┘ schéma userinfo host port cesta query fragment
| Část | Popis | Příklad |
|---|---|---|
| Schéma (protokol) | Způsob komunikace | http, https, ftp, mailto, file, ws, data |
| Userinfo (nepovinné) | Přihlašovací údaje (dnes se nepoužívá z bezpečnostních důvodů) | user:heslo@ |
| Host | Doménové jméno nebo IP adresa | www.example.com, 192.168.1.1, [::1] |
| Port (nepovinné) | Číslo portu na hostiteli | :80, :443, :8080 |
| Cesta (path) | Umístění zdroje na serveru | /sekce/stranka.html |
| Query string | Parametry oddělené &, začíná ? | ?id=5&lang=cz |
| Fragment (kotva) | Odkaz na část stránky, klientská část — server ji nevidí | #uvod |
URL encoding (percent-encoding)
Speciální znaky v URL se musí zakódovat — URL může obsahovat jen omezenou sadu ASCII znaků. Vše ostatní se převede na %XX, kde XX je hexadecimální hodnota bytu v UTF-8:
| Znak | Kódování |
|---|---|
| mezera | %20 (nebo + v query stringu) |
? | %3F |
& | %26 |
# | %23 |
ě | %C4%9B (2 byty v UTF-8) |
https://example.com/hled%C3%A1n%C3%AD?q=Karel%20%C4%8Capek
Časté URL schémata
| Schéma | Použití |
|---|---|
http://, https:// | Webové stránky |
ftp://, sftp:// | Přenos souborů |
mailto: | Otevře e-mailový klient — mailto:axo@ax4.cz?subject=Hi |
tel: | Vytočí číslo — tel:+420123456789 |
file:// | Lokální soubor |
data: | Inline data - data:image/png;base64,iVBORw0... |
ws://, wss:// | WebSocket |
Absolutní vs. relativní adresa
| Typ | Popis | Příklad |
|---|---|---|
| Absolutní | Plná cesta včetně schématu a domény | https://example.com/img/logo.png |
| Kořenově relativní | Začíná /, vztažená ke kořeni domény | /img/logo.png |
| Dokumentově relativní | Vztažená k aktuálnímu dokumentu | img/logo.png, ../styl.css |
Speciální zápisy v relativních cestách
./— aktuální složka (často volitelné)../— nadřazená složka../../— o dvě úrovně výš
Kdy použít co
- Absolutní — odkazy na cizí weby, jednoznačnost (e-maily, RSS, sdílení).
- Dokumentově relativní — vlastní obsah uvnitř složky.
- Kořenově relativní — vlastní obsah napříč stránkami; bezpečné při přesunu mezi localhost / staging / produkcí, protože doména se mění, ale struktura projektu ne.
MIME typy (Media Types)
MIME (Multipurpose Internet Mail Extensions) - standard původně z roku 1991 pro přílohy v e-mailu, dnes používaný všude, kde se přenáší obsah po síti. Říká jaký typ dat je v souboru, aby je klient správně zpracoval.
Server posílá MIME typ v HTTP hlavičce Content-Type, prohlížeč podle něj rozhodne, jak data zobrazit, stáhnout, nebo spustit.
Formát: typ/podtyp (např. text/html, image/png).
Hlavní kategorie
| Kategorie | Popis | Příklady |
|---|---|---|
text/* | Textové formáty | text/html, text/css, text/plain, text/javascript |
image/* | Obrázky | image/png, image/jpeg, image/svg+xml, image/webp |
audio/* | Audio | audio/mpeg, audio/ogg, audio/wav |
video/* | Video | video/mp4, video/webm |
application/* | Binární / strukturovaná data | application/json, application/pdf, application/zip, application/wasm |
multipart/* | Více částí v jedné zprávě | multipart/form-data (upload souborů) |
Nejčastější MIME typy
| Přípona | MIME typ |
|---|---|
.html | text/html |
.css | text/css |
.js | text/javascript (application/javascript je dnes obsolete) |
.json | application/json |
.xml | application/xml |
.jpg, .jpeg | image/jpeg |
.png | image/png |
.svg | image/svg+xml |
.pdf | application/pdf |
.zip | application/zip |
.mp4 | video/mp4 |
.wasm | application/wasm |
Příklad HTTP odpovědi
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
<!DOCTYPE html>
<html>...Proč na MIME typu záleží
Pokud server odešle špatný MIME typ:
- prohlížeč může zobrazit zdrojový kód místo stránky,
- odmítnout spustit JavaScript (moderní prohlížeče vyžadují
text/javascriptu modulů), - nesprávně otevřít soubor (např. PDF jako text).
Bezpečnost: prohlížeč dělá tzv. MIME sniffing — pokusí se uhodnout typ podle obsahu, pokud server neposlal Content-Type. To je historicky zdrojem útoků (uploaduješ .jpg, který je ve skutečnosti HTML s JS). Proto se posílá hlavička X-Content-Type-Options: nosniff, která tomu zabrání.
IP adresy
IP adresa je číselný identifikátor každého zařízení v síti. Dvě verze:
| Verze | Délka | Formát | Příklad | Adresní prostor |
|---|---|---|---|---|
| IPv4 | 32 bitů | čtyři čísla 0–255 oddělená tečkou | 192.168.1.1 | ~4,3 miliardy |
| IPv6 | 128 bitů | osm hexadecimálních skupin oddělených : | 2001:0db8:85a3::8a2e:0370:7334 | ~3,4 × 10³⁸ |
IPv4 - vyčerpání
IANA (centrální registr) přidělila poslední volné bloky v únoru 2011, regionální registry pak postupně (RIPE pro Evropu v listopadu 2019). Adresy se dnes recyklují, obchodují a maskují přes NAT a CGNAT (Carrier-Grade NAT — NAT na úrovni poskytovatele, takže za jednou veřejnou IP může být tisíce zákazníků).
IPv6 - pomalý přechod
Standardizována 1998 (RFC 2460), dnes nese cca 40–45 % globálního provozu. Zkrácený zápis: nuly lze vynechat (2001:db8::1), nejdelší řadu nul nahradit :: (jen jednou v adrese).
Veřejné vs. privátní adresy
| Typ | Význam | Rozsahy (IPv4, RFC 1918) |
|---|---|---|
| Veřejné | Unikátní v celém internetu, směrovatelné | vše ostatní |
| Privátní | Pouze v lokální síti (LAN), neroutují se na internet | 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
| Loopback | Vlastní zařízení | 127.0.0.1 (IPv4), ::1 (IPv6) |
Překlad mezi privátními a veřejnými adresami zajišťuje NAT (Network Address Translation) na routeru - zařízení v domácí síti sdílejí jednu veřejnou IP poskytovatele.
CIDR notace (zápis sítí)
CIDR (Classless Inter-Domain Routing) zápis říká, kolik bitů z adresy tvoří síťovou část. Lomítko za adresou určuje délku prefixu:
| Zápis | Maska | Počet adres | Použití |
|---|---|---|---|
/8 | 255.0.0.0 | ~16 milionů | velká korporátní síť |
/16 | 255.255.0.0 | 65 536 | menší organizace |
/24 | 255.255.255.0 | 256 (254 použitelných) | typická domácí/malá síť |
/32 | 255.255.255.255 | 1 | jedna konkrétní adresa |
Příklad: 192.168.1.0/24 = síť, ve které prvních 24 bitů (192.168.1.) je síťová část a posledních 8 bitů adresuje 256 hostitelů (z toho 2 rezervované — network 192.168.1.0 a broadcast 192.168.1.255).
Porty
Port je číselný identifikátor služby (procesu) na zařízení. IP adresa identifikuje stroj, port konkrétní aplikaci běžící na něm.
Analogie: IP = budova, port = byt.
Tři rozsahy portů (IANA)
| Rozsah | Název | Použití |
|---|---|---|
| 0–1023 | Well-known | Systémové služby, vyžadují admin práva |
| 1024–49151 | Registered | Aplikace registrované u IANA |
| 49152–65535 | Dynamic / Ephemeral | Klient si bere náhodně pro odchozí spojení |
Důležité porty k zapamatování
| Port | Služba |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 22 | SSH |
| 21 / 20 | FTP (control / data) |
| 25 | SMTP (odesílání pošty) |
| 143 | IMAP |
| 110 | POP3 |
| 53 | DNS (UDP, fallback TCP) |
| 67 / 68 | DHCP (server / klient) |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 8080 | HTTP alternativní (proxy, dev servery) |
DNS: překlad doménových jmen na IP
Lidé si pamatují jména (google.com), počítače pracují s čísly (142.250.187.132).
DNS (Domain Name System) je distribuovaná hierarchická databáze, která mapuje doménová jména na IP adresy.
Postup DNS dotazu krok za krokem
- Uživatel zadá
www.seznam.czdo prohlížeče. - OS zkontroluje lokální cache a soubor
hosts(/etc/hostsna Linuxu/Macu,C:\Windows\System32\drivers\etc\hostsna Windows). - Pokud nenajde, dotáže se DNS resolveru (typicky u poskytovatele, nebo veřejný —
8.8.8.8Google,1.1.1.1Cloudflare). - Resolver má vlastní cache. Pokud v ní není, postupně dotáže hierarchii:
- Root server (
.) — kdo spravuje.cz? - TLD server (
.cz) — kdo spravujeseznam.cz? - Autoritativní server (pro
seznam.cz) — jaká je IPwww.seznam.cz?
- Root server (
- Resolver vrátí IP klientovi a uloží do cache (podle TTL záznamu).
- Prohlížeč naváže TCP spojení s touto IP a stáhne stránku.
Klient → DNS resolver → Root (.) → TLD (.cz) → Autoritativní ([seznam.cz](http://seznam.cz/)) → IP
Typy DNS dotazů
- Rekurzivní — klient se ptá resolveru, resolver má za úkol vrátit hotovou odpověď (i kdyby musel běhat napříč celou hierarchií).
- Iterativní — server odpovídá "neznám, ale zeptej se támhle" — typicky mezi resolverem a autoritativními servery.
Typy DNS záznamů
| Záznam | Význam |
|---|---|
| A | IPv4 adresa pro doménu |
| AAAA | IPv6 adresa pro doménu |
| CNAME | Alias na jinou doménu (www.example.com → example.com) |
| MX | Mailový server pro doménu, s prioritou |
| NS | Autoritativní jmenné servery domény |
| TXT | Libovolný text (ověřování vlastnictví, SPF, DKIM) |
| PTR | Reverzní záznam (IP → doména) |
| SOA | "Start of Authority" — metadata zóny |
Moderní rozšíření
- DoH (DNS over HTTPS) — DNS dotazy uvnitř šifrovaného HTTPS, znesnadňuje odposlech a manipulaci poskytovatelem.
- DoT (DNS over TLS) — totéž přes čistý TLS, port 853.
- DNSSEC — kryptografický podpis záznamů proti podvržení
Domény a jejich struktura
Doména je textová adresa zdroje na internetu. Má stromovou hierarchii — čte se zprava doleva.
www . google . com . │ │ │ │ │ │ │ └── kořenová doména (root, ".") — obvykle se nepíše │ │ └──────── TLD (Top-Level Domain) │ └────────────────── SLD (Second-Level Domain) └────────────────────────── subdoména (3. úroveň)
| Úroveň | Příklad | Popis |
|---|---|---|
| Root | . | Vrchol hierarchie, spravuje 13 root serverů (logicky — ve skutečnosti stovky přes anycast) |
| TLD | .cz, .com, .org | Domény nejvyšší úrovně |
| SLD | google, seznam | Druhá úroveň - registruje si firma/osoba |
| Subdoména | www, mail, api |
Typy TLD
| Typ | Zkratka | Příklady | Popis |
|---|---|---|---|
| Národní | ccTLD | .cz, .sk, .de, .uk | Country Code TLD — určuje stát |
| Generické | gTLD | .com, .org, .net, .edu, .gov | Obecné, podle účelu |
| Nové gTLD | — | .shop, .tech, .app, .ai | Od roku 2014, tematické |
| Sponzorované | sTLD | .museum, .aero, .jobs | Pro specifické komunity |
| Infrastrukturní | — | .arpa | Technické účely (reverzní DNS) |
FQDN
FQDN (Fully Qualified Domain Name) — plně kvalifikované doménové jméno včetně tečky na konci, která reprezentuje root:
www.example.com.
V praxi tečku skoro nikdy nepíšeme, ale technicky je tam.
Správa domén
- Globálně: ICANN (Internet Corporation for Assigned Names and Numbers) — koordinuje TLD a kořenovou zónu.
- Pro .cz: CZ.NIC — sdružení, které spravuje národní doménu, provozuje DNS infrastrukturu a vyvíjí Knot DNS.
- Konkrétní doménu si registruješ u registrátora (Wedos, Forpsi, Namecheap…), který je akreditovaný u ICANN/CZ.NIC.
IDN - diakritika v doménách
IDN (Internationalized Domain Names) umožňují použít Unicode znaky v doménách, např. háčky.cz. Interně se ale kódují do ASCII pomocí Punycode:
ř.vercel.app → xn--hga.vercel.app
Prefix xn-- značí, že jde o Punycode-zakódovanou doménu.
HTTP a HTTPS
HTTP verze
| Verze | Rok | Klíčové vlastnosti |
|---|---|---|
| HTTP/1.1 | 1997 | Textový protokol, persistent connections (keep-alive), pipelining (málo používaný) |
| HTTP/2 | 2015 | Binární, multiplexing (víc requestů přes jedno spojení), komprese hlaviček (HPACK), server push |
| HTTP/3 | 2022 | Postavený na QUIC místo TCP (běží na UDP), rychlejší handshake, odolný proti packet loss na mobilní síti |
HTTP metody
| Metoda | Význam | Bezpečná? | Idempotentní? |
|---|---|---|---|
| GET | Stáhne zdroj | ✓ | ✓ |
| POST | Vytvoří / odešle data | ✗ | ✗ |
| PUT | Nahradí zdroj | ✗ | ✓ |
| PATCH | Částečná úprava | ✗ | ✗ (často) |
| DELETE | Smaže zdroj | ✗ | ✓ |
| HEAD | Jako GET, ale jen hlavičky | ✓ | ✓ |
| OPTIONS | Vrátí dostupné metody | ✓ | ✓ |
HTTP status kódy
| Kategorie | Význam | Příklady |
|---|---|---|
| 1xx | Informační | 100 Continue |
| 2xx | Úspěch | 200 OK, 201 Created, 204 No Content |
| 3xx | Přesměrování | 301 Moved Permanently, 302 Found, 304 Not Modified |
| 4xx | Chyba klienta | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests |
| 5xx | Chyba serveru | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout |
HTTPS = HTTP + TLS
- HTTPS šifruje obsah pomocí TLS (Transport Layer Security).
- SSL (Secure Sockets Layer) — historický předchůdce, od roku 2015 deprecated (RFC 7568) kvůli zranitelnostem (POODLE, BEAST). Dnes se používá výhradně TLS — aktuálně TLS 1.3 (2018) a TLS 1.2.
- Server prokazuje identitu certifikátem vydaným certifikační autoritou (Let's Encrypt, DigiCert, …).
- Port 443.
Cesta od kliknutí ke stránce — vše propojené
Zadám do prohlížeče https://www.seznam.cz. Co se stane?
- Parsování URL — prohlížeč rozdělí URL na schéma (
https), host (www.seznam.cz), port (443default), cestu (/). - DNS resolution — OS zkontroluje cache a
hosts. Pokud nenajde, pošle dotaz resolveru. Ten projde hierarchií Root →.cz→seznam.cza vrátí IP adresu. Cache si IP uloží podle TTL. - TCP handshake — prohlížeč naváže spojení na získanou IP, port 443. Tříkrokový handshake (SYN → SYN-ACK → ACK).
- TLS handshake — klient a server se domluví na šifrovacích algoritmech, server pošle certifikát, klient ho ověří proti CA. Vytvoří se sdílený klíč pro symetrické šifrování.
- HTTP request — prohlížeč pošle:
GET / HTTP/2
Host: www.seznam.cz
User-Agent: Mozilla/5.0 ...
Accept: text/html,...6. HTTP response — server vrátí:
HTTP/2 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 45231
<!DOCTYPE html>...7. Parsování HTML — prohlížeč buduje DOM strom a zároveň objevuje další zdroje k načtení.
- Načítání podzdrojů — pro každý
<link>,<script>,<img>se spustí další request (paralelně, multiplexovaně přes HTTP/2). Server u každého pošle příslušný MIME type vContent-Type, prohlížeč podle toho rozhodne, co s daty udělat. - Vykreslení — prohlížeč zkombinuje DOM + CSSOM, spočítá layout, vykreslí pixely, spustí JavaScript.