Port 0 ima poseban značaj u mrežnom programiranju, posebno u Unix OS-u kada je u pitanju programiranje socketa gdje se port koristi za traženje sistemski dodijeljenih, dinamičkih portova. Port 0 je zamjenski port koji govori sistemu da pronađe odgovarajući broj porta.
Za razliku od većine brojeva portova, port 0 je rezervisani port u TCP/IP umrežavanju, što znači da se ne bi trebao koristiti u TCP ili UDP porukama. Mrežni portovi u TCP i UDP se kreću od broja nula do 65535. Brojevi portova u rasponu između nule i 1023 definirani su kao neefemerni portovi, sistemski portovi ili dobro poznati portovi. Internet Assigned Numbers Authority (IANA) održava zvaničnu listu predviđene upotrebe ovih brojeva portova na internetu, a sistemski port 0 se ne smije koristiti.
Kako TCP/UDP port 0 radi u mrežnom programiranju
Konfiguracija nove mrežne utičnice zahtijeva da jedan broj porta bude dodijeljen i na izvornoj i na odredišnoj strani. TCP ili UDP poruke koje šalje pošiljalac (izvor) sadrže oba broja porta tako da primalac poruke (odredište) može izdati odgovor na ispravnu krajnju tačku protokola.
IANA ima unaprijed dodijeljene sistemske portove za osnovne internet aplikacije kao što su web serveri (port 80), ali mnoge TCP i UDP mrežne aplikacije nemaju vlastiti sistemski port i moraju ga dobiti od operativnog sistema svog uređaja svaki put kada se pokrenu.
Da dodijele svoj izvorni broj porta, aplikacije pozivaju TCP/IP mrežne funkcije kao što je bind() kako bi ga zatražile. Aplikacija može dostaviti fiksni (tvrdo kodirani) broj za bind() ako žele da traže određeni broj, ali takav zahtjev može propasti jer ga druga aplikacija koja radi na sistemu trenutno koristi.
Alternativno, može dati port 0 za bind() kao svoj parametar veze. To pokreće operativni sistem da automatski traži i vraća odgovarajući dostupni port u rasponu brojeva dinamičkog TCP/IP porta.
Aplikaciji nije odobren port 0, već neki drugi dinamički port. Prednost ove konvencije o programiranju je efikasnost. Umjesto da svaka aplikacija implementira i pokreće kod kako bi isprobala više portova dok ne dobiju važeći, aplikacije se oslanjaju na operativni sistem.
Unix, Windows i drugi operativni sistemi razlikuju se u rukovanju portom 0, ali važi ista opšta konvencija.
Port 0 i mrežna sigurnost
Mrežni saobraćaj koji se šalje preko interneta do hostova koji slušaju na portu 0 može biti generisan od mrežnih napadača ili slučajno od strane aplikacija koje su pogrešno programirane. Poruke odgovora koje hostovi generiraju kao odgovor na promet na portu 0 pomažu napadačima da nauče ponašanje i potencijalne mrežne ranjivosti tih uređaja.
Mnogi provajderi internet usluga (ISP) blokiraju saobraćaj na portu 0, kako dolazne tako i odlazne poruke, kako bi se zaštitili od ovih eksploatacija.
FAQ
Šta su brojevi portova?
Brojevi portova koji se koriste za TCP/IP mrežne veze djeluju kao informacije o adresi, identifikujući pošiljaoce i primaoce poruke. Brojevi portova omogućavaju različitim aplikacijama na istoj mreži da dijele resurse u isto vrijeme.
Kako da pronađem brojeve portova?
Da biste pronašli broj porta određene IP adrese, idite na komandnu liniju, otkucajte netstat -a, zatim pritisnite Enter. Vidjet ćete listu aktivnih TCP veza zajedno sa IP adresama i brojevima portova odvojenih dvotočkom.
Mogu li se spojiti na port 0?
No. Zvanično, port 0 ne postoji i ne možete se povezati na njega, jer je to nevažeći broj porta. Međutim, možete poslati internet paket na i sa porta 0 na isti način kao i sa drugim brojem porta.