4. Puertos y Sockets

4.1. Puertos

Cada proceso que quiere comunicarse con otro proceso se identifica con el conjunto de protocolos TCP/IP por uno o más puertos.
Un puerto es un número de 16 bits utilizado por el protocolo de host a host para identificar a qué protocolo o aplicación de nivel superior programa (proceso) debe entregar los mensajes entrantes.

Hay dos tipos de puertos:

Conocido
Los puertos conocidos pertenecen a servidores estándar, por ejemplo, Telnet utiliza el puerto 23.
Los números de puerto conocidos oscilan entre 1 y 1023 (antes de 1992, el rango entre 256 y 1023 se usaba para UNIX específico servidores).
Los números de puertos conocidos suelen ser impares, porque los primeros sistemas el uso del concepto de puerto requería un par de puertos impar/par para dúplex operaciones. La mayoría de los servidores requieren un solo puerto. Las excepciones son las servidor BOOTP, que utiliza dos: 67 y 68  y el servidor FTP, que utiliza dos: 20 y 21.
Los puertos conocidos son controlados y asignados por Internet Asignado Número de autoridad (IANA) y en la mayoría de los sistemas solo puede ser utilizado por el sistema  procesos o por programas ejecutados por usuarios privilegiados. Puertos conocidos permitir a los clientes encontrar servidores sin información de configuración. La conocida los números de puerto se definen en STD 2 - Números de Internet asignados.

Efímero
Algunos clientes no necesitan números de puerto conocidos porque iniciar la comunicación con los servidores, y el número de puerto que están utilizando es contenidos en los datagramas UDP/TCP enviados al servidor. Cada proceso de clientese le asigna un número de puerto, durante el tiempo que sea necesario, por el host en el que está correriendo. Los números de puerto efímeros tienen valores superiores a 1023, normalmente en el rango de 1024 a 65535.
Los puertos efímeros no están controlados por IANA y pueden ser utilizados por usuarios ordinarios.
programas desarrollados por el usuario en la mayoría de los sistemas.

Debido a que dos aplicaciones diferentes pueden intentan usar los mismos números de puerto
en un host, se evita escribiendo esas aplicaciones para solicitar un puerto disponible de TCP/IP. Debido a que este número de puerto se asigna dinámicamente, puede diferir de una invocación de una aplicación a la siguiente.
UDP, TCP e ISO TP-4 utilizan el mismo principio de puerto, aún mas, los mismos números de puerto se utilizan para los mismos servicios.