Uppenbarligen hänvisar den vanligaste användningen av ordet hamn till sjöfart. Computing använder dock också termen port. Faktum är att den har två användningsområden. Den första hänvisar till det uttag som en kabel kan anslutas till. Typiska exempel är en USB- eller Ethernet-port. Tekniskt sett kan ett Ethernet-uttag ses som en nätverksport. Det är inte den accepterade betydelsen av ordet port i nätverk. En nätverksport är ett logiskt nummer som identifierar vilken process eller nätverkstjänst nätverkstrafik är avsedd för eller skickas av.
Varför behövs portnummer?
När din dator kommunicerar med en webbserver på internet lägger den in sin IP-adress i avsändarfältet. Detta låter servern veta vilken IP-adress den behöver för att skicka svaret. När svaret kommer tillbaka till din dator tolkar din webbläsare svaret och renderar webbsidan.
Detta fungerar bra i ett idealiserat system med en mjukvara som skapar och tar emot nätverkstrafik. Den verkliga världen är dock inte så. I vilken dator som helst finns det en rad programvaror som skapar nätverkstrafik. För att säkerställa att nätverkstrafiken skickas korrekt till rätt program, i vissa fall, rätt process i ett program. Ett sista adresseringslager används portnumret.
Föreställ dig att ha en webbläsare med två flikar öppna och ett online-videospel samtidigt. Varje webbläsarflik måste kunna skicka och ta emot nätverkstrafik, eventuellt samtidigt. Onlinespelet behöver också både skicka och ta emot nätverkstrafik. Du vill inte att ditt spel ska behöva filtrera bort slumpmässiga webbsvar, och du vill inte att din webbläsare ska behöva filtrera din speltrafik heller. Båda flikarna och spelet kommer att tilldelas minst en nätverksport vardera så att den avsedda mottagarprocessen lätt kan bestämmas.
Detsamma fungerar även för servrar. Anta att du har en server som kör både en webbserver och en e-postserver. I så fall låter portnumret operativsystemet enkelt särskilja vilka nätverkspaket som är avsedda för vilken tjänst.
Vad är portnummer?
Portnummer har formen av ett 16-bitars heltal utan tecken. Det betyder att det finns sexton binära bitar som utgör talen, inga negativa tal, och alla tal är hela. Detta tillåter 65536 möjliga portnummer från 0 till 65535. Det finns inget fysiskt hamnsystem.
Hela adresseringsschemat, som med IP-adresser och MAC-adresser, är helt logiskt. Du kan tänka på IP- och MAC-adresserna som adressen på ett brev för att få det till ditt hus/dator. I denna analogi skulle portnumret vara som namnet på kuvertet, och se till att det kommer till rätt person/process i ditt hus/dator.
Inom portnummerutrymmet finns det någon annan struktur. Portnummer 0 är reserverad. I TCP-trafik är 0 helt oanvänd. I UDP-trafik är portnumret valfritt, med en port på 0 som betyder "ingen port." Detta fungerar för UDP eftersom det är ett tillståndslöst protokoll som inte nödvändigtvis förväntar sig ett svar. TCP- och UDP-portar är separata. En tjänst kan binda till en eller flera portar på ett eller båda protokollen. Tjänster som använder båda kopplar vanligtvis till samma portnummer i TCP och UDP.
Portar 1-1023 är kända som "välkända" portar och kräver i allmänhet administrativa behörigheter för att binda till. Några välkända portar är 80 för HTTP, 443 för HTTPS och 53 för DNS. Därefter har du intervallet 1024 – 49151. Dessa är kända som "registrerade" portar. Dessa är portar som regelbundet används av vissa tjänster, men det är inte vanligt nog eller var inte tillräckligt tidigt för att få ett nummer under 1023. Portar mellan 49152 och 65535 är kända som tillfälliga portar.
Användningen av portnummer
IANA, Internet Assigned Numbers Authority, upprätthåller de välkända och registrerade portlistorna. Välkända portar har bara en tjänst kopplad till sig. Registrerade portar kan dock ha en rad kända tjänster som använder porten som standard.
I allmänhet hindrar ingenting faktiskt något program från att binda till ett portnummer. Som nämnts ovan tenderar portnummer under 1024 att kräva administrativa eller rotbehörigheter att binda till. Ändå kan du tvinga vilken tjänst som helst att binda till port 80, till exempel, även om det inte är en webbserver. Portnummer i de välkända och registrerade intervallen tenderar att endast användas av nätverkslyssnare, med tillfälliga portar som vanligtvis används för att initiera anslutningar.
En lyssnare är en port som öppnas och lämnas öppen. Den lyssnar efter meddelanden så att den kan bearbeta dem och skicka ett svar. Detta är nästan uteslutande beteendet hos tjänster av servertyp som en webbserver. Webbservern skulle finnas på portarna 80 och 443, medan en webbläsare som ansluter till dessa portar lokalt skulle använda en tillfällig port.
Standardportnummer för programavlyssnare gör att det är lätt att veta hur man faktiskt ansluter till en tjänst. Till exempel, när du sätter HTTPS på framsidan av en URL, antar din webbläsare som standard att den behöver ansluta till port 443. I vissa fall kommer avlyssnare att ställas in på alternativa portar. Detta kan bero på att en annan tjänst eller version av tjänsten redan använder standardporten. Det kan också vara ett försök till säkerhet genom dunkel.
Slutsats
En nätverksport är en logisk adress. Programvaran kan binda till en port, så operativsystemet vet att all trafik som skickas till den porten är avsedd för den processen. Portnummer sträcker sig från 0 till 65535. Många tjänster är kopplade till ett standardportnummer. Servrarna använder dessa portar, medan enheter som ansluter till dem använder slumpmässiga portar med högt antal. Detta möjliggör enkel standardanslutning till tjänster och säkerställer att anslutning till en sådan tjänst inte hindrar dig från att vara värd för en annan tjänst själv.