10.2 Porty TCP a UDP
Sieťové porty
Je celkom pochopiteľné, že každá bežiaca služba na serveri, ktorá chce poskytovať službu po sieti, musí umožniť klientom pripojenie. To dosiahne tým, že „počúva“ na konkrétnom sieťovom porte – napríklad služba webového servera na TCP/80. Aby sa mohla nadviazať konverzácia / vytvoriť spojenie, klient sa pripája na tento konkrétny port, pričom i na jeho strane sa v klientskej aplikácii otvorí port, na ktorý potom budú chodiť odpovede. Na rovnakom serveri (na tej istej IP adrese) môže súčasne bežať iná služba, no tá počúva na inom porte – napríklad poštová služba na TCP/25.
Porty teda rozlišujú na jednej strane jednotlivé služby servera a na strane druhej zase klientske aplikácie. Nemusí to byť server v zmysle vyhradeného počítača poskytujúceho služby – serverom môže byť aj akýkoľvek počítač poskytujúci ľubovoľnú službu v režime peer-to-peer (napríklad zdieľanie tlačiarne či súborov), ale aj ľubovoľná aplikácia, ktorá umožňuje pripojenie klientov.
Kategórie portov
Čísla portov sú v TCP nezávislé od UDP (teda oba protokoly majú svojich 65536 portov). Navyše, sieťové porty sú samostatne pre IPv4 a IPv6. Teoreticky môže na nejakom porte pod IPv4 adresou počúvať iný server ako na rovnakom porte pod IPv6 adresou toho istého fyzického servera. V praxi však servery otvárajú rovnaký port pre obe adresy.
Porty sa rozdeľujú do troch rozsahov:
1. Dobre známe porty 0 až 1023: sú v ňom definované štandardné čísla portov (spravuje organizácia IANA) pre historicky najvýznamnejšie internetové služby, ako napríklad:
- webový server HTTP(S):
- TCP/80 – nešifrovaný,
- TCP/443 – šifrovaný cez TLS,
- UDP/443 – šifrovaný protokol QUIC (HTTP/3);
- DNS server:
- UDP/53 a TCP/53;
- terminálová konzola cez telnet:
- TCP/23 – zastaraný, nešifrovaný, nemal by sa používať;
- terminálová konzola cez SSH a súborový server SFTP (SSH FTP):
- TCP/22, no často sa skrýva za iné číslo, napr. TCP/2222 alebo ľubovoľné iné;
- monitoring a manažment zariadenia cez SNMP:
- UDP/161;
- súborový server FTP(S) – zastaraný (nešifrovaný FTP i šifrovaný variant FTPS):
- kontrolné spojenie na TCP/21,
- dátové spojenie na dynamický port (môže byť rôzny, pre každého klienta samostatný);
- súborový server SMB (NAS, Windows zdieľanie, Linux Samba):
- TCP/445;
- poštový server SMTP(S):
- TCP/25 – nešifrovaný, používajú ho už len SMTP servery medzi sebou,
- TCP/465 – šifrovaný cez implicitné TLS, používajú klientske aplikácie na odoslanie e-mailu,
- TCP/587 – šifrovaný cez explicitné TLS (STARTTLS), modernejšia forma pre odosielanie z aplikácie;
- poštový server POP3(S):
- TCP/110 – zastaraný, nešifrovaný, nemal by sa používať,
- TCP/995 – šifrovaný cez TLS;
- poštový server IMAP4(S):
- TCP/143 – zastaraný, nešifrovaný, nemal by sa používať,
- TCP/993 – šifrovaný cez TLS.
2. Registrované porty 1024 až 49151: ďalšie čísla portov, ktoré by mali byť registrované v organizácii IANA, napríklad v našich kurzoch (Aplikovaná informatika, Databázové systémy, Internet vecí) sme sa už stretli s týmito:
- komunikačný server MQTT:
- TCP/1883 – nešifrovaný, nemal by sa používať,
- TCP/8883 – šifrovaný cez TLS;
- databázový server MySQL / MariaDB:
- TCP/3306;
- databázový server PostgreSQL:
- TCP/5432;
- MikroTik WinBox:
- TCP/8291 – nie je však (zatiaľ) oficiálne registrovaný;
- Microsoft Remote Desktop Protocol (RDP) – teda „vzdialená pracovná plocha“ Windows:
- TCP/3389.
3. Dynamické porty 49152 až 65535: využívajú sa na strane klienta ako odosielajúci port pre identifikáciu konverzácie so serverom, a to za účelom prijatia odpovede – postupne sa recyklujú. Nemali by sa používať na prijímanie nových spojení, teda by ich nemali používať servery.
Príklad: Ak sa chce webový prehliadač z počítača 192.168.1.10 pripojiť na webovú službu servera 192.168.1.1, vytvorí sa spojenie napríklad zo 192.168.1.10:49152 (zdrojový soket) na 192.168.1.1:80 (cieľový soket) – túto dvojicu sieťových soketov nazývame soketový pár a identifikuje jednu konverzáciu.
Čísla portov sú dôležité napríklad pri konfigurácii firewallu alebo NAT prekladu.
Nadviazané spojenia v realite
Prehľad aktuálne nadviazaných spojení je možné v OS Windows i Linux zobraziť príkazom netstat, prípadne aj s otvorenými „počúvajúcimi“ sieťovými portami netstat -a. V Linuxe je však tento príkaz už zastaraný a nahrádza ho príkaz ss. Vo Windows môžeme využiť aj Sledovanie prostriedkov (Resource Monitor).
V MikroTik RouterOS sú evidované len tie prechádzajúce spojenia, pre ktoré to vyžadujeme (touto problematikou sa budeme zaoberať neskôr). Zoznam evidovaných spojení vo WinBoxe nájdeme cez ponuku IP/IPv6 → Firewall → Connections.
Dynamické porty vo Windows
Niektoré verzie Windows nerešpektovali rozsah dynamických portov a používali aj porty nižšie (bolo to v dobách do Windows XP). Toto je možné preveriť príkazmi:
# IPv4
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
# IPv6
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
A prípadne zmeniť nastavenie:
# IPv4
netsh int ipv4 set dynamicport tcp start=49152 num=16384
netsh int ipv4 set dynamicport udp start=49152 num=16384
# IPv6
netsh int ipv6 set dynamicport tcp start=49152 num=16384
netsh int ipv6 set dynamicport udp start=49152 num=16384
