Poort 0 heeft een speciale betekenis bij netwerkprogrammering, met name in het Unix-besturingssysteem als het gaat om socketprogrammering waarbij de poort wordt gebruikt om door het systeem toegewezen, dynamische poorten aan te vragen. Poort 0 is een wildcard-poort die het systeem vertelt een geschikt poortnummer te vinden. In tegenstelling tot de meeste poortnummers is poort 0 een gereserveerde poort in TCP/IP-netwerken, wat betekent dat deze niet mag worden gebruikt in TCP- of UDP-berichten. Netwerkpoorten in TCP en UDP variëren van nul tot 65535. Poortnummers in het bereik van nul tot 1023 worden gedefinieerd als niet-tijdelijke poorten, systeempoorten of bekende poorten. De Internet Assigned Numbers Authority (IANA) houdt een officiële lijst bij van het beoogde gebruik van deze poortnummers op internet en systeempoort 0 mag niet worden gebruikt.
Hoe TCP/UDP-poort 0 werkt bij netwerkprogrammering
Voor het configureren van een nieuwe netwerkaansluiting moet één poortnummer worden toegewezen aan zowel de bron- als de bestemmingszijde. TCP- of UDP-berichten die door de afzender (bron) worden verzonden, bevatten beide poortnummers, zodat de ontvanger van het bericht (bestemming) antwoordberichten naar het juiste protocoleindpunt kan sturen. IANA heeft vooraf aangewezen systeempoorten toegewezen voor standaard internettoepassingen zoals webservers (poort 80), maar veel TCP- en UDP-netwerktoepassingen hebben geen eigen systeempoort en moeten er elke keer dat ze worden uitgevoerd een verkrijgen van het besturingssysteem van hun apparaat. Om het bronpoortnummer toe te wijzen, roepen toepassingen TCP/IP-netwerkfuncties zoals bind() aan om er een aan te vragen. De applicatie kan een vast (hardgecodeerd) nummer aan bind() leveren als ze liever een specifiek nummer willen aanvragen, maar een dergelijk verzoek kan mislukken omdat een andere applicatie die op het systeem draait het momenteel misschien gebruikt. Als alternatief kan het poort 0 leveren aan bind() als verbindingsparameter. Dat activeert het besturingssysteem om automatisch een geschikte beschikbare poort in het dynamische TCP/IP-poortnummerbereik te zoeken en terug te sturen. De toepassing krijgt geen poort 0 maar eerder een andere dynamische poort. Het voordeel van deze programmeerconventie is efficiëntie. In plaats van dat elke applicatie code implementeert en uitvoert om meerdere poorten te proberen totdat ze een geldige hebben, vertrouwen apps op het besturingssysteem. Unix, Windows en andere besturingssystemen verschillen in de verwerking van poort 0, maar dezelfde algemene conventie is van toepassing.
Poort 0 en netwerkbeveiliging
Netwerkverkeer dat via internet wordt verzonden naar hosts die op poort 0 luisteren, kan worden gegenereerd door netwerkaanvallers of per ongeluk door applicaties die verkeerd zijn geprogrammeerd. De responsberichten die hosts genereren als reactie op poort 0-verkeer helpen aanvallers om het gedrag en de mogelijke netwerkkwetsbaarheden van die apparaten te leren kennen. Veel internetserviceproviders (ISP’s) blokkeren verkeer op poort 0 – zowel inkomende als uitgaande berichten – om zich tegen deze exploits te beschermen.