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

01

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.

02

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.

03

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.

04

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.
Související článek

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í

Netcat
nc -vz example.com 443

Běžný rychlý test, jestli TCP port přijímá spojení z vaší aktuální lokality.

Telnet
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
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.