Cuando escribes tus primeras aplicaciones de tipo cliente-servidor, es muy común perder dedicarle mucho tiempo a pensar que puerto utilizar para que tu servidor acepte conexiones.

En éste artículo te voy a explicar brevemente los diferentes puertos que existen en tu computadora, y cual es el rango de puertos que tu aplicación debe utilizar para maximizar la compatibilidad y seguir las buenas prácticas y estándares en programación de redes.

Para empezar, existen 2 tipos de puertos:

  • Puertos físicos
  • Estos son puertos que dispositivos físicos utilizan para concetarse a tu computadora. Por ejemplo: el puerto serial, USB, RGA, HDMI, entre otros.
  • Puertos lógicos
  • Estos son los puertos que otros programas utilizan para conectarse a tu computadora. Los puertos lógicos en el protocolo TCP/IPv4 son números enteros de 16 bits cuyo rango inicia en el puerto 0 y termina en el 65535.

El objetivo de éste artículo es indagar acerca de los puertos lógicos. Los puertos lógicos se dividen en 3 categorías:

  • Puertos bien conocidos

    Éstos son puertos cuyo rango comprende desde el 0 al 1023, éstos puertos se encuentran "reservados" para programas y protocolos ya establecidos y universalmente conocidos como: FTP, HTTP, HTTPS, SSH, entre otros.
    Solamente un super usuario (root por ejemplo) tiene los privilegios necesarios para abrir éstos puertos.

  • Puertos registrados

    Un puerto registrado, es un puerto asignado por la entidad conocida como ICANN (Internet Corporation for Assigned Names and Number) para un uso determinado. Cada puerto registrado se encuentra en el rango de 1024 - 49151.

    Éstos son los puertos que tus aplicaciones de tipo servidor tienen que utilizar para aceptar conexiones.

  • Puertos efímeros

    Los puertos efímeros son puertos en el rango de 49152 - 65535. Éstos puertos también se conocen como puertos dinámicos y/o puertos privados.

    Éstos puertos se encuentran generalmente designados para conexiones cortas, donde el alojamiento del puerto es temporal y solamente existe durante la existencia de un canal de comunicación entre dos computadoras.

    Los puertos en éste rango son los que programas que siguen el protocolo TCP, UDP,o SCTP utilizan para establecer una conexión del lado del cliente hacia un servidor.