Doporučený dopis a pohled

O čem to je

Když posíláš důležitou smlouvu, pošleš ji doporučeně: pošta potvrdí doručení, a když se ztratí, řeší se to. Pohlednici z dovolené hodíš do schránky a doufáš. Je to rychlé a levné, ale bez záruky.

V síti existují přesně tyhle dva způsoby: TCP (doporučeně) a UDP (pohled). A protože v jednom počítači běží najednou prohlížeč, e-mail i hra, data se musí dostat ke správnému programu. K tomu slouží porty.

Nové pojmy

Transportní vrstva4. vrstva modelu OSI. Doručuje data mezi programy na dvou počítačích (IP adresa doručí jen k počítači).
PortČíslo 0–65535, které v počítači určuje konkrétní program nebo službu. Jako číslo bytu v domě: IP adresa je dům, port je byt.Webový server poslouchá na portu 443.
TCPProtokol se spojením a se zárukou doručení. Data čísluje, příjemce potvrzuje, ztracené kusy se pošlou znovu a doručí se ve správném pořadí.web, e-mail, stahování souborů, SSH
UDPProtokol bez spojení a bez záruky. Pošle data a dál se nestará. Je rychlejší a má menší režii.DNS dotaz, online hra, internetové volání

Jak TCP naváže spojení

Třícestný handshakeÚvodní pozdrav TCP o třech zprávách, po kterém obě strany ví, že spojení funguje.
Klient pošle SYN: „Chci se spojit.“
Server odpoví SYN-ACK: „Beru na vědomí, taky se chci spojit.“
Klient pošle ACK: „Potvrzuji.“ Spojení je otevřené a mohou téct data.

Na konci se spojení slušně ukončí zprávami FIN a ACK.

Kdy co použít

TCP se hodí, kde nesmí chybět ani bajt (soubor, web, e-mail). UDP se hodí, kde je rychlost důležitější než každý kousek: při hovoru je lepší malé zakřupání než zpoždění o vteřinu.

Známé porty

PortSlužbaProtokol
20, 21FTP (přenos souborů)TCP
22SSH (bezpečný vzdálený přístup)TCP
25SMTP (odesílání pošty mezi servery)TCP
53DNS (překlad jmen)UDP i TCP
67, 68DHCP (server, klient)UDP
80HTTP (web)TCP
443HTTPS (šifrovaný web)TCP (HTTP/3 přes UDP)
3389RDP (vzdálená plocha Windows)TCP
Otevřeš https://www.example.com. Na jaký port a jakým protokolem se prohlížeč připojí?
HTTPS → port 443, transportní protokol TCP (u nového HTTP/3 UDP). Klientský port si prohlížeč vybere náhodně z vysokých čísel, třeba 52 311.
Proč pro telefonní hovor přes internet nepoužít TCP?
Když se ztratí kousek zvuku, TCP by ho poslal znovu a čekal na něj. Hovor by se zasekával. Ztracený zlomek vteřiny už nemá cenu, proto se volá přes UDP.
✗UDP je špatný protokol, protože ztrácí data.
✓UDP je jednodušší, ne horší. Pro hovory, hry, DNS je vhodnější než TCP.

Spolehlivost stojí čas. Kde stačí rychlá odpověď nebo kde opakování nemá smysl, je UDP lepší volba.

TCP = spojení (SYN, SYN-ACK, ACK), potvrzování, opakování a pořadí. UDP = bez spojení, rychlé, bez záruky. Port (0–65535) určuje program: 22 SSH, 53 DNS, 80 HTTP, 443 HTTPS.

Socket a tabulky

O čem to je

Správce serveru potřebuje vědět, které služby na serveru „poslouchají“ a jsou dostupné zvenku. Firewall se nastavuje právě podle portů a protokolů. Bez znalosti TCP, UDP a portů nevíš, co povolit a co zakázat.

Nové pojmy

PortŠestnáctibitové číslo (0–65535) v hlavičce TCP i UDP. Určuje aplikaci na počítači.
SocketDvojice IP adresa + port. Spojení TCP je jednoznačně dané dvěma sockety: klienta a serveru.192.168.1.20:52311 ↔ 93.184.215.14:443
Segment a datagramJednotka dat na transportní vrstvě: u TCP segment, u UDP datagram.
FirewallProgram nebo zařízení, které podle pravidel propouští nebo blokuje provoz, např. podle portu.Povolit TCP 443, zakázat TCP 23.

Rozsahy portů

RozsahNázevKdo je používá
0–1023dobře známé (well-known)standardní služby: 22, 80, 443…
1024–49151registrovanékonkrétní aplikace, např. 3389 RDP
49152–65535dynamickéklienti si z nich berou dočasné porty

TCP vs. UDP podrobně

VlastnostTCPUDP
spojeníano (handshake)ne
potvrzování a opakováníanone
pořadí datzaručenénezaručené
řízení tokuano (okno)ne
hlavičkanejméně 20 B8 B
rychlost a režiepomalejší, víc režierychlejší, málo režie
Řízení tokuTCP hlídá, aby odesílatel nezahltil příjemce: příjemce oznamuje, kolik dat ještě zvládne přijmout (velikost okna).

Navázání a ukončení spojení

SYN (klient → server)
SYN-ACK (server → klient)
ACK (klient → server), spojení otevřené
přenos dat s potvrzováním ACK
ukončení: FIN a ACK od obou stran
Výpis ss -tln na Linuxu ukazuje naslouchání na 0.0.0.0:22 a 0.0.0.0:443. Co na serveru běží?
Port 22 = SSH (vzdálená správa), port 443 = HTTPS (web). -t = TCP, -l = naslouchající, -n = čísla místo jmen. Ve Windows podobně netstat -an.
Na server mají mít přístup jen webové prohlížeče a správce přes SSH. Která pravidla firewallu nastavíš?
Povolit příchozí TCP 80 a TCP 443 (web) a TCP 22 jen z adresy správce. Vše ostatní příchozí zakázat. Telnet (23) nepovolovat, posílá hesla nešifrovaně.

Otoč kartičky a ověř si porty.

  • 22 – SSH
  • 25 – SMTP
  • 53 – DNS
  • 80 – HTTP
  • 443 – HTTPS
  • 3389 – RDP
  • 67/68 – DHCP
  • 21 – FTP (řízení)
✗Port 443 je v počítači fyzická zásuvka pro síťový kabel.
✓Port v TCP/UDP je číslo v hlavičce, které určuje program. Zásuvka pro kabel je port přepínače nebo síťové karty.

Slovo „port“ má v sítích dva významy. Na transportní vrstvě je to vždy logické číslo.

Socket = IP + port. Porty 0–1023 jsou dobře známé, 49152–65535 dynamické. TCP: spojení, potvrzování, pořadí, řízení toku, hlavička od 20 B. UDP: 8 B hlavička, bez záruky. Firewall pracuje s porty a protokoly.