Port 0 har særlig betydning i netværksprogrammering, især i Unix OS, når det kommer til socket-programmering, hvor porten bruges til at anmode om systemallokerede, dynamiske porte. Port 0 er en jokertegnsport, der fortæller systemet at finde et passende portnummer.
I modsætning til de fleste portnumre er port 0 en reserveret port i TCP/IP-netværk, hvilket betyder, at den ikke skal bruges i TCP- eller UDP-meddelelser. Netværksporte i TCP og UDP spænder fra nummer nul op til 65535. Portnumre i området mellem nul og 1023 er defineret som ikke-efemere porte, systemporte eller velkendte porte. Internet Assigned Numbers Authority (IANA) opretholder en officiel liste over den påtænkte brug af disse portnumre på internettet, og systemport 0 må ikke bruges.
Hvordan TCP/UDP-port 0 fungerer i netværksprogrammering
Konfiguration af en ny netværksstikforbindelse kræver, at der tildeles ét portnummer på både kilde- og destinationssiden. TCP- eller UDP-meddelelser sendt af afsenderen (kilden) indeholder begge portnumre, så meddelelsesmodtageren (destinationen) kan sende svarmeddelelser til det korrekte protokolslutpunkt.
IANA har forudtildelt udpegede systemporte til grundlæggende internetapplikationer som webservere (port 80), men mange TCP- og UDP-netværksapplikationer har ikke deres egen systemport og skal hente en fra deres enheds operativsystem, hver gang de kører.
For at tildele dets kildeportnummer kalder applikationer TCP/IP-netværksfunktioner som bind() for at anmode om en. Applikationen kan levere et fast (hardkodet) nummer til bind(), hvis de foretrækker at anmode om et specifikt nummer, men en sådan anmodning kan mislykkes, fordi en anden applikation, der kører på systemet, muligvis bruger det.
Alternativt kan den levere port 0 til bind() som dens forbindelsesparameter. Det udløser operativsystemet til automatisk at søge efter og returnere en passende tilgængelig port i det dynamiske TCP/IP-portnummerområde.
Applikationen er ikke tildelt port 0, men snarere en anden dynamisk port. Fordelen ved denne programmeringskonvention er effektivitet. I stedet for at hver applikation implementerer og kører kode for at prøve flere porte, indtil de får en gyldig, er apps afhængige af operativsystemet.
Unix, Windows og andre operativsystemer varierer i håndteringen af port 0, men den samme generelle konvention gælder.
Port 0 og netværkssikkerhed
Netværkstrafik sendt over internettet til værter, der lytter på port 0, kan være genereret fra netværksangribere eller ved et uheld af programmer, der er programmeret forkert. De svarmeddelelser, som værter genererer som svar på port 0-trafik, hjælper angribere med at lære disse enheders adfærd og potentielle netværkssårbarheder.
Mange internetudbydere (ISP'er) blokerer trafik på port 0, både indgående og udgående beskeder, for at beskytte sig mod disse udnyttelser.
FAQ
Hvad er portnumre?
Portnumre, der bruges til TCP/IP-netværksforbindelser, fungerer som adresseoplysninger, der identificerer en beskeds afsendere og modtagere. Portnumre lader forskellige applikationer på det samme netværk dele ressourcer på samme tid.
Hvordan finder jeg portnumre?
For at finde portnummeret på en specifik IP-adresse skal du gå til kommandoprompten, skrive netstat -a og derefter trykke Enter. Du vil se en liste over aktive TCP-forbindelser sammen med IP-adresser og portnumre adskilt af et kolon.
Kan jeg oprette forbindelse til port 0?
Nej. Officielt findes port 0 ikke, og du kan ikke oprette forbindelse til den, da det er et ugyldigt portnummer. Du kan dog sende en internetpakke til og fra port 0 på samme måde, som du ville med et andet portnummer.