Wat is een netwerkpoort?

Het is duidelijk dat het meest voorkomende gebruik van het woord haven verwijst naar verzending. Computing gebruikt echter ook de term poort. In feite heeft het twee toepassingen. De eerste verwijst naar het stopcontact waarin een kabel kan worden gestoken. Typische voorbeelden zijn een USB- of ethernetpoort. Technisch gezien kan een ethernet-socket worden gezien als een netwerkpoort. Dat is niet de geaccepteerde betekenis van het woord poort in netwerken. Een netwerkpoort is een logisch nummer dat aangeeft voor welk proces of netwerkdienst netwerkverkeer bedoeld is of wordt verzonden.

Waarom zijn poortnummers nodig?

Wanneer uw computer communiceert met een webserver op internet, plaatst deze zijn IP-adres in het afzenderveld. Hierdoor weet de server naar welk IP-adres hij het antwoord moet sturen. Wanneer dat antwoord terugkeert naar uw computer, interpreteert uw browser het antwoord en geeft de webpagina weer.

Dit werkt prima in een geïdealiseerd systeem waarbij één stuk software netwerkverkeer maakt en ontvangt. De echte wereld is echter niet zo. Op elke computer is er een reeks software die netwerkverkeer maakt. Om ervoor te zorgen dat netwerkverkeer correct aan het juiste programma wordt doorgegeven, in sommige gevallen het juiste proces in een programma. Een laatste adresseringslaag is het poortnummer.

Stel je voor dat je een webbrowser hebt met twee geopende tabbladen en tegelijkertijd een online videogame. Elk browsertabblad moet netwerkverkeer kunnen verzenden en ontvangen, mogelijk gelijktijdig. De online game moet ook zowel netwerkverkeer verzenden als ontvangen. Je wilt niet dat je game willekeurige webreacties moet filteren, en je wilt ook niet dat je browser je gameverkeer moet filteren. Beide tabbladen en het spel krijgen elk ten minste één netwerkpoort toegewezen, zodat het beoogde ontvangerproces gemakkelijk kan worden bepaald.

Hetzelfde werkt ook voor servers. Stel dat u een server heeft waarop zowel een webserver als een e-mailserver draait. In dat geval zorgt het poortnummer ervoor dat het besturingssysteem gemakkelijk kan onderscheiden welke netwerkpakketten voor welke dienst bedoeld zijn.

Wat zijn poortnummers?

Poortnummers hebben de vorm van een 16-bits geheel getal zonder teken. Dit betekent dat er zestien binaire bits zijn om de getallen te vormen, geen negatieve getallen, en alle getallen zijn geheel. Hierdoor zijn 65536 mogelijke poortnummers mogelijk van 0 tot 65535. Er is geen fysiek poortsysteem.

Het hele adresseringsschema is, net als bij IP-adressen en MAC-adressen, volkomen logisch. Je zou de IP- en MAC-adressen kunnen zien als het adres op een brief om het bij je huis/computer te krijgen. In deze analogie zou het poortnummer hetzelfde zijn als de naam op de envelop, zodat het bij de juiste persoon/het juiste proces in uw huis/computer terechtkomt.

Binnen de poortnummerruimte is er een andere structuur. Poortnummer 0 is gereserveerd. In TCP-verkeer is 0 volledig ongebruikt. In UDP-verkeer is het poortnummer optioneel, waarbij poort 0 "geen poort" betekent. Dit werkt voor UDP omdat het een staatloos protocol is dat niet per se een reactie verwacht. TCP- en UDP-poorten zijn gescheiden. Eén service kan binden aan een of meer poorten op een of beide protocollen. Services die beide gebruiken, worden doorgaans gekoppeld aan dezelfde poortnummers in TCP en UDP.

Poorten 1-1023 staan ​​bekend als "bekende" poorten en vereisen over het algemeen beheerdersrechten om aan te binden. Enkele bekende poorten zijn 80 voor HTTP, 443 voor HTTPS en 53 voor DNS. Vervolgens heb je het bereik 1024 – 49151. Deze staan ​​bekend als de "geregistreerde" poorten. Dit zijn poorten die regelmatig door bepaalde services worden gebruikt, maar dat is niet gebruikelijk genoeg of was niet vroeg genoeg om een ​​nummer onder 1023 te krijgen. Poorten tussen 49152 en 65535 staan ​​bekend als kortstondige poorten.

Het gebruik van poortnummers

IANA, de Internet Assigned Numbers Authority, houdt de bekende en geregistreerde poortlijsten bij. Aan bekende poorten is slechts één service gekoppeld. Geregistreerde poorten kunnen echter een reeks bekende services hebben die de poort standaard gebruiken.

Over het algemeen houdt niets een programma tegen om zich aan een poortnummer te binden. Zoals hierboven vermeld, hebben poortnummers onder 1024 de neiging om beheerders- of rootmachtigingen te vereisen om aan te binden. Toch kunt u elke service dwingen om bijvoorbeeld aan poort 80 te binden, zelfs als het geen webserver is. Poortnummers in de bekende en geregistreerde reeksen worden meestal alleen gebruikt door netwerkluisteraars, waarbij kortstondige poorten over het algemeen worden gebruikt om verbindingen te initiëren.

Een listener is een poort die wordt geopend en opengelaten. Het luistert naar berichten, zodat het deze kan verwerken en een antwoord kan sturen. Dit is bijna uitsluitend het gedrag van services van het servertype, zoals een webserver. De webserver zou worden gehost op poort 80 en 443, terwijl een browser die verbinding maakt met die poorten lokaal een kortstondige poort zou gebruiken.

Standaard poortnummers voor toepassingsluisteraars betekenen dat het gemakkelijk is om te weten hoe u daadwerkelijk verbinding kunt maken met een service. Als u bijvoorbeeld HTTPS vooraan een URL plaatst, gaat uw browser er standaard vanuit dat deze verbinding moet maken met poort 443. In sommige gevallen worden listeners op alternatieve poorten ingesteld. Dit kan zijn omdat een andere service of versie van de service al gebruikmaakt van de standaardpoort. Het kan ook een poging tot beveiliging door onduidelijkheid zijn.

Conclusie

Een netwerkpoort is een logisch adres. De software kan aan een poort binden, zodat het besturingssysteem weet dat al het verkeer dat naar die poort wordt gestuurd, voor dat proces is bedoeld. Poortnummers variëren van 0 tot 65535. Veel services zijn gekoppeld aan een standaard poortnummer. De servers gebruiken deze poorten, terwijl apparaten die ermee verbinding maken willekeurige poorten met een hoog aantal gebruiken. Dit maakt een eenvoudige standaardverbinding met services mogelijk en zorgt ervoor dat verbinding met een dergelijke service u er niet van weerhoudt om zelf een andere service te hosten.