10.2 Porty TCP a UDP
Sieťové porty
Každá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.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,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 jeIPv6. možnéTeoreticky ichmôže rozdeliť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);
- TCP/80
- DNS server:
- UDP/53 a TCP/53;
- kontrolné spojenie na TCP/21,
- dátové spojenie na dynamický port (môže byť rôzny, pre každého klienta samostatný);
- 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;mailu,
- TCP/110
-– zastaraný, nešifrovaný, nemal by sa používať, - TCP/995
-– šifrovaný cez TLS;
- 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é boliby mali byť registrované v organizácii IANA.IANA, napríklad v našich kurzoch (Aplikovaná informatika, Databázové systémy, Internet vecí) sme sa už stretli s týmito:
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é vov OS Windows i v Linux zobraziť príkazom netstat, prípadne aj s otvorenými „počúvajúcimi“ sieťovými portami netstat -a. vV Linuxe je však tento príkaz už zastaraný a nahrádza ho príkaz ss. Vo Windows môžeme využiť aj MonitorSledovanie 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
