9.8. Portovi

IP adresa govori za koje je glavno računalo paket namijenjen. Moderno glavno računalo pokreće mnogo programa istodobno – web preglednik, klijent za razgovor, video poziv, zadatak sigurnosnog kopiranja – i svaki od njih šalje i prima pakete usporedno. IP sloj nema načina razlikovati ih; jednostavno predaje svaki pristigli paket „glavnom računalu”. Nešto mora odlučiti koji paket pripada kojem programu.

Broj porta je odgovor. Svaki paket na transportnom sloju nosi dva dodatna polja izvan IP zaglavlja: izvorni port i odredišni port. Svaki je 16-bitni cijeli broj, pa postoji 65535 mogućih brojeva portova po glavnom računalu. U kombinaciji s IP adresom, port identificira jednu specifičnu krajnju točku unutar glavnog računala – jedan specifični razgovor specifičnog programa.

Jedan okvir glavnog računala na desnoj strani s IP adresom označenom na vrhu. Tri programa unutar glavnog računala označena su kao "HTTP server", "video poziv", "chat client", svaki povezan s drugim brojem porta označenim 80, 5004 i 4321 redom. Tri strelice stižu do glavnog računala iz mreže, svaka označena odredišnim portom; svaka strelica slijeće na odgovarajući program.

Mnogi programi dijele jednu IP adresu; odredišni port usmjerava svaki pristigli paket na pravi.

9.8.1. Dobro poznati portovi

Prvih 1024 brojeva portova rezervirano je konvencijom za standardne usluge. Nekoliko na koje će čitatelj naići:

  • 22 – SSH (protokol Secure Shell, koji se koristi za šifriranu udaljenu prijavu).

  • 53 – DNS, Domain Name System (opisan na Imena i DNS).

  • 80 – HTTP, Hypertext Transfer Protocol – nešifrirani protokol weba.

  • 123 – NTP, Network Time Protocol (kako uređaji postavljaju svoje satove s poslužitelja vremena).

  • 443 – HTTPS, HTTP prenošen preko TLS-a (Transport Layer Security, standardni omotač za šifriranje internetskih protokola) – protokol iza svake web stranice koja prikazuje ikonu lokota u pregledniku.

Konvencija je ono što omogućuje pregledniku da se spoji na http://example.com bez navođenja porta – pretpostavlja 80 jer je to dobro poznati port za HTTP. Kamera koja se spaja na web poslužitelj radi isto.

Iznad 1024, brojevi portova su neograničeni i bilo koji program može zauzeti jedan. Poslužitelji baza podataka (5432 za PostgreSQL, 3306 za MySQL), aplikacijski poslužitelji i prilagođeni protokoli svi žive negdje u višem rasponu.

9.8.2. Efemerni portovi

Poslužitelji osluškuju na poznatom portu. Klijenti koriste drugi port na svom kraju, odabran iznova za svaku odlaznu vezu.

Kada se kamera spoji na web poslužitelj na portu 443, razgovor je između

camera IP : <some-port>     <-->     server IP : 443

<some-port> je efemerni port – MicroPython bira nekorišteni broj iz visokog raspona, koristi ga za trajanje veze i nakon toga ga oslobađa. Skripta ne mora mariti koji je broj odabran; sloj utičnice to rješava.

9.8.3. Osluškivanje naspram razgovora

Posao koji port obavlja ovisi o tome na kojoj je strani razgovora. Dva različita slučaja:

  • Osluškivački port pripada programu koji želi primati neželjene veze. Program govori MicroPythonu „svi dolazni paketi adresirani na mene na portu 80 su moji” i čeka. Poslužitelji to rade.

  • Povezani port pripada programu koji želi pokrenuti razgovor. Program bira (ili traži od MicroPythona da odabere) efemerni port, šalje paket s njime kao izvornim portom i dobro poznatim portom poslužitelja kao odredištem te koristi isti par portova za ostatak razgovora.

Jedan program može raditi oboje istodobno, držeći različite portove za svaku ulogu. Kamera bi mogla osluškivati na portu 8000 za dolazne HTTP veze iz konfiguracijskog korisničkog sučelja i držati odlaznu HTTPS vezu prema udaljenom poslužitelju na portu 443. Dvije uloge ne smetaju jedna drugoj – svaki razgovor identificiran je punom četvorkom (src IP, src port, dst IP, dst port), i nikoja dva razgovora ne dijele istu četvorku.

9.8.4. Što portovi otključavaju

S portovima na mjestu, transportni sloj može konačno riješiti problem dostave od programa do programa. Paket sada nosi dovoljno informacija da bude usmjeren ne samo do pravog glavnog računala (IP adresa) nego i do prave utičnice unutar tog glavnog računala (broj porta).

Sljedeće dvije stranice pokrivaju dvije vrste koje transportni sloj nudi povrh tog adresiranja: UDP (User Datagram Protocol – svaki paket neovisan, bez jamstava) i TCP (Transmission Control Protocol – povezan, pouzdan, uređen tok).