TCP a UDP: porty, služby a TCP handshake
TCP a UDP jsou dva nejběžnější transportní protokoly na internetu a port numbers slouží k tomu, aby se na jednom hostu odlišily jednotlivé služby. Pokud chcete rozumět tomu, jak funguje web server, SSH, SMTP nebo vlastní aplikace, potřebujete základní přehled o TCP, UDP, portech a TCP three-way handshaku.
Co jsou TCP a UDP
TCP, tedy Transmission Control Protocol, je navržený pro spolehlivou komunikaci. Naváže spojení, drží správné pořadí paketů, znovu posílá ztracená data a hlídá, že obě strany mají stejný stav spojení. Proto se TCP běžně používá pro weby, API, SSH, databáze nebo přenos e-mailů.
UDP, tedy User Datagram Protocol, je výrazně lehčí. Posílá datagramy bez předchozího navázání spojení a bez vestavěné záruky doručení, pořadí nebo retransmise. Díky tomu se hodí pro DNS dotazy, streaming, VoIP, online hry a další situace, kde je důležitější nízká latence než stoprocentní doručení každého paketu.
Kdy je rozdíl mezi TCP a UDP důležitý
Řešíte dostupnost služby
TCP služba může selhávat proto, že je port zavřený, filtrovaný nebo na něm aplikace neposlouchá. UDP služba se chová jinak, protože nemá formální navázání spojení, které by připravenost potvrdilo stejným způsobem.
Volíte protokol pro vlastní aplikaci
TCP bývá výchozí volba tam, kde záleží na správném pořadí a spolehlivém doručení. UDP se volí tam, kde je důležitější rychlost, nízká režie nebo realtime chování.
Potřebujete rozumět firewallům a portům
Stejné číslo portu může existovat zvlášť pro TCP i UDP. Firewall tedy může povolit třeba TCP 443 a současně blokovat UDP 443, což výrazně mění chování provozu.
Chcete monitorovat dostupnost služby
U řady infrastrukturních a aplikačních checků je test, zda TCP port přijímá spojení, jedním z nejpřímějších signálů, že je endpoint dosažitelný a služba na něm opravdu poslouchá.
Jak funguje TCP three-way handshake
Klient pošle SYN
TCP spojení začíná tím, že klient pošle na cílový port paket SYN. Tím říká, že chce otevřít spojení a zahájit komunikaci.
Server vrátí SYN-ACK
Pokud je port otevřený a služba na něm poslouchá, server odpoví paketem SYN-ACK. Tím potvrzuje požadavek a dává najevo, že je připraven pokračovat.
Klient potvrdí ACK
Klient vrátí ACK a v tu chvíli je TCP spojení navázané. Až potom může začít téct aplikační provoz.
Když handshake selže, služba může být zavřená nebo filtrovaná
Odmítnuté spojení, timeout nebo chybějící odpověď často znamenají, že je port zavřený, blokovaný firewallem nebo že služba na daném endpointu není dostupná.
Jak přemýšlet o portech a běžných službách
Port number určuje, která služba na hostu má přijmout příchozí provoz. Několik typických příkladů:
22 SSH Vzdálená shell session a bezpečná správa 25 SMTP Přenos e-mailů mezi servery 53 DNS Překlad doménových jmen 80 HTTP Nešifrovaný webový provoz 443 HTTPS Šifrovaný webový provoz přes TLS 587 SMTP Odesílání pošty z klientů
Port 22
SSH používá TCP 22 pro bezpečnou vzdálenou správu, příkazovou řádku i automatizaci.
Port 25 a 587
SMTP běžně používá TCP 25 pro přenos pošty mezi servery a TCP 587 pro autentizované odesílání pošty z klientských aplikací.
Port 80 a 443
HTTP typicky běží na TCP 80, zatímco HTTPS na TCP 443. Jde o nejznámější porty pro webové služby.
TCP a UDP na stejném čísle
Samotné číslo portu nestačí. TCP 53 a UDP 53 souvisejí s DNS, ale pořád jde o dva odlišné transportní kanály s jiným chováním.
Proč se porty nechovají vždy stejně
Otevřený TCP port obvykle znamená, že služba aktivně poslouchá a je ochotná dokončit handshake. Zavřený port může spojení rovnou odmítnout, zatímco filtrovaný port často jen vytimeoutuje.
UDP se ověřuje hůř, protože nemá přímý ekvivalent TCP handshaku. UDP služba může fungovat i tehdy, když na jednoduchou sondu nedostanete přímou odpověď, podle konkrétního protokolu a chování aplikace.
TCP vs UDP
| Téma | TCP | UDP |
|---|---|---|
| Model spojení | Connection-oriented, s handshakem před přenosem dat. | Connectionless, bez handshaku před odesláním dat. |
| Spolehlivost | Řeší retransmise, pořadí paketů a sledování doručení. | Negarantuje doručení, pořadí ani retransmisi. |
| Nejlepší použití | Weby, API, SSH, databáze, e-mail a stabilní aplikační sessions. | DNS, streaming, gaming, VoIP a provoz citlivý na latenci. |
Potřebujete i rychlý test latence a dosažitelnosti?
Ping pomůže ověřit základní odezvu hosta a packet loss, zatímco TCP port check řeší, zda konkrétní služba skutečně přijímá spojení.
Přečíst článek o pingu →Jak interpretovat typické situace
Host odpovídá na ping, ale TCP 443 selhává
Server může být dostupný na síťové vrstvě, ale HTTPS služba přesto může být down, blokovaná, špatně nastavená nebo na daném portu vůbec neposlouchá.
TCP 22 je otevřený, ale přihlášení nefunguje
SSH daemon je pravděpodobně dosažitelný, ale autentizace, autorizace nebo přístup do shellu mohou selhávat i po úspěšném port-level checku.
Port timeoutuje místo okamžitého odmítnutí
To často ukazuje spíš na filtrování nebo firewall policy než na čistou odpověď zavřeného portu.
UDP služba při testu mlčí
To automaticky neznamená, že je down. Mnoho UDP protokolů odpoví až tehdy, když je sonda validní i z pohledu samotné aplikace.
Důležitá omezení
- ● Úspěšný TCP port check dokazuje dosažitelnost portu, ne zdraví celé aplikace.
- ● I za otevřeným portem může běžet rozbitá služba, která selže až po navázání spojení.
- ● UDP služby se ověřují obecně hůře, protože často neposkytují zřejmé potvrzení podobné TCP handshaku.
- ● Firewall, NAT nebo rate limiting mohou způsobit, že port vypadá jinak z různých zdrojových lokalit.
Jak lidé porty ručně testují
nc -vz example.com 443 Běžný rychlý test, jestli TCP port přijímá spojení z vaší aktuální lokality.
telnet example.com 25 Pořád užitečný pro jednoduché ruční SMTP nebo TCP banner testy, i když telnet už nebývá na všech systémech předinstalovaný.
nmap -p 22,25,80,443 example.com Nmap umí otestovat více portů najednou a dát širší přehled o vystavených službách, podle typu skenu a dostupných oprávnění.
Časté dotazy
Ruční kontrola portu pomůže jednou. Monitoring TCP portů pomáhá pořád.
nsmon vám pomůže průběžně kontrolovat TCP porty z různých probe lokalit, takže poznáte, kdy služba přestane přijímat spojení ještě dřív, než to nahlásí uživatelé. Vytvořte si účet zdarma a začněte monitorovat kritické TCP endpointy jako SSH, SMTP, HTTP, HTTPS nebo vlastní aplikační porty.