¿Cómo podría un puerto reservado de la IANA (tcp / 0) manejar el tráfico?
Si bien la respuesta aceptada explica cómo el puerto 0 sigue siendo un puerto real, puede ser útil comprender cómo funcionan los puertos en TCP. A continuación se muestra un diagrama de 32 bits del paquete TCP, para escalar. UDP es similar, aunque mucho más simple (después de los puertos, tiene solo un campo de longitud y un campo de suma de comprobación antes de los datos).
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------+-------------------------------+
| Source Port | Destination Port |
+-------------------------------+-------------------------------+
| Sequence Number |
+---------------------------------------------------------------+
| Acknowledgment Number |
+-------+-----------+-+-+-+-+-+-+-------------------------------+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-------+-----------+-+-+-+-+-+-+-------------------------------+
| Checksum | Urgent Pointer |
+-------------------------------+-------------------------------+
| Options | Padding |
+-----------------------------------------------+---------------+
| |
/ ... Data (optional) ... /
| |
+---------------------------------------------------------------+
Como puede ver, los campos del puerto de origen y del puerto de destino tienen un ancho de 16 bits. Esto significa que puede representar 65536 diferentes estados posibles, de 0 a 65535. Esto es, por cierto, por qué no hay puertos negativos, ya que el valor se trata como sin signo. Lo único que impide que cualquiera de los puertos sean todos bytes nulos (que representan el puerto 0) es un estándar de la IANA que dice que no debe hacer eso. Es perfectamente posible que un paquete se envíe con cualquiera de los puertos establecidos a 0. El propósito de mantener el puerto 0 reservado es permitir que "solo me proporcione cualquier puerto" para que se represente mediante un entero de 16 bits. Cuando se intenta enlazar con TCP / 0, en lugar de escuchar paquetes con el puerto de destino configurado en todos los ceros, se supone que el sistema se enlaza con cualquier puerto disponible.