Port 0 har speciell betydelse i nätverksprogrammering, särskilt i Unix OS när det kommer till socket-programmering där porten används för att begära systemallokerade, dynamiska portar. Port 0 är en jokerteckenport som talar om för systemet att hitta ett lämpligt portnummer.
Till skillnad från de flesta portnummer är port 0 en reserverad port i TCP/IP-nätverk, vilket innebär att den inte ska användas i TCP- eller UDP-meddelanden. Nätverksportar i TCP och UDP sträcker sig från nummer noll upp till 65535. Portnummer i området mellan noll och 1023 definieras som icke-efemära portar, systemportar eller välkända portar. Internet Assigned Numbers Authority (IANA) har en officiell lista över den avsedda användningen av dessa portnummer på internet, och systemport 0 ska inte användas.
Hur TCP/UDP-port 0 fungerar i nätverksprogrammering
Konfigurering av en ny nätverksuttag kräver att ett portnummer tilldelas på både käll- och destinationssidan. TCP- eller UDP-meddelanden som skickas av avsändaren (källan) innehåller båda portnumren så att meddelandemottagaren (destinationen) kan skicka svarsmeddelanden till rätt protokollslutpunkt.
IANA har förallokerat utsedda systemportar för grundläggande internetapplikationer som webbservrar (port 80), men många TCP- och UDP-nätverksapplikationer har inte en egen systemport och måste hämta en från enhetens operativsystem varje gång de körs.
För att tilldela dess källportnummer anropar applikationer TCP/IP-nätverksfunktioner som bind() för att begära en. Applikationen kan tillhandahålla ett fast (hårdkodat) nummer till bind() om de föredrar att begära ett specifikt nummer, men en sådan begäran kan misslyckas eftersom en annan applikation som körs på systemet för närvarande använder den.
Alternativt kan den tillhandahålla port 0 till bind() som dess anslutningsparameter. Det utlöser operativsystemet att automatiskt söka efter och returnera en lämplig tillgänglig port i TCP/IP dynamiska portnummerintervall.
Applikationen är inte beviljad port 0 utan snarare någon annan dynamisk port. Fördelen med denna programmeringskonvention är effektivitet. Istället för att varje applikation implementerar och kör kod för att prova flera portar tills de får en giltig, förlitar sig appar på operativsystemet.
Unix, Windows och andra operativsystem varierar i hanteringen av port 0, men samma allmänna konvention gäller.
Port 0 och nätverkssäkerhet
Nätverkstrafik som skickas över internet till värdar som lyssnar på port 0 kan genereras från nätverksangripare eller av misstag av program som programmerats felaktigt. De svarsmeddelanden som värdar genererar som svar på port 0-trafik hjälper angripare att lära sig beteendet och potentiella nätverkssårbarheter hos dessa enheter.
Många internetleverantörer (ISP) blockerar trafik på port 0, både inkommande och utgående meddelanden, för att skydda sig mot dessa missbruk.
FAQ
Vad är portnummer?
Portnummer som används för TCP/IP-nätverksanslutningar fungerar som adressinformation och identifierar ett meddelandes avsändare och mottagare. Portnummer låter olika applikationer på samma nätverk dela resurser samtidigt.
Hur hittar jag portnummer?
För att hitta portnumret för en specifik IP-adress, gå till kommandotolken, skriv netstat -a och tryck sedan Enter. Du kommer att se en lista över aktiva TCP-anslutningar tillsammans med IP-adresser och portnummer separerade med ett kolon.
Kan jag ansluta till port 0?
Nej. Officiellt finns inte port 0 och du kan inte ansluta till den, eftersom det är ett ogiltigt portnummer. Du kan dock skicka ett internetpaket till och från port 0 på samma sätt som med ett annat portnummer.