A diferencia de la mayoría de los números de puerto, el puerto 0 es un puerto reservado en redes TCP / IP, lo que significa que no debe usarse en mensajes TCP o UDP.
El puerto 0 tiene un significado especial en la programación de red, particularmente en el sistema operativo Unix cuando se trata de la programación de socket donde el puerto se utiliza para solicitar puertos dinámicos asignados por el sistema. El puerto 0 es como un puerto comodín que le indica al sistema que busque un número de puerto adecuado.
Los puertos de red en TCP y UDP varían desde el número cero hasta 65535. Los números de puerto en el rango entre cero y 1023 se definen como puertos del sistema o puertos conocidos. La Autoridad de Números Asignados de Internet (IANA) mantiene una lista oficial del uso previsto de estos números de puerto en Internet, y el puerto del sistema 0 no se debe usar.
Cómo funciona el puerto 0 en la programación de red
La configuración de una nueva conexión de socket de red requiere que se asigne un número de puerto tanto en el lado de origen como en el de destino. Los mensajes TCP o UDP enviados por el originador (origen) contienen ambos números de puerto para que el destinatario del mensaje (destino) pueda enviar mensajes de respuesta al punto final del protocolo correcto.
IANA ha preasignado puertos de sistema designados para aplicaciones básicas de Internet como servidores web (puerto 80), pero muchas aplicaciones de red TCP y UDP no tienen su propio puerto de sistema y deben obtener uno del sistema operativo de su dispositivo cada vez que comienzan a ejecutarse.
Para asignar su número de puerto de origen, las aplicaciones invocan funciones de red TCP / IP como bind () para solicitar una. La aplicación puede proporcionar un número fijo (codificado) a bind () si prefieren solicitar un número específico, pero dicha solicitud puede fallar porque alguna otra aplicación que se ejecuta en el sistema puede estar usándola actualmente.
Alternativamente, en su lugar, puede proporcionar el puerto 0 a bind () como su parámetro de conexión. Eso activa el sistema operativo para buscar y devolver automáticamente un puerto disponible adecuado en el rango del número de puerto dinámico de TCP / IP.
Tenga en cuenta que a la aplicación no se le otorgará el puerto 0, sino otro puerto dinámico. La ventaja de esta convención de programación es la eficiencia. En lugar de que cada aplicación tenga que implementar y ejecutar código para probar varios puertos hasta que obtengan uno válido, las aplicaciones pueden confiar en el sistema operativo para hacerlo.
Unix, Windows y otros sistemas operativos varían ligeramente en su manejo del puerto 0, pero se aplica la misma convención general.
Puerto 0 y seguridad de red
El tráfico de red que se envía a través de Internet a los hosts que escuchan en el puerto 0 puede generarse desde atacantes de la red o accidentalmente por aplicaciones programadas incorrectamente. Los mensajes de respuesta que generan los hosts en respuesta al tráfico del puerto 0 pueden ayudar a los atacantes a aprender más sobre el comportamiento y las posibles vulnerabilidades de red de esos dispositivos.
Muchos proveedores de servicios de Internet (ISP) bloquean el tráfico en el puerto 0, tanto los mensajes entrantes como los salientes, para ayudar a protegerse contra estos ataques.