14. Concepto de puerto, socket y servicio

Los puertos lógicos, los sockets y los servicios conforman la capa de abstracción que permite que múltiples aplicaciones compartan una misma red, diferenciando flujos de datos y ofreciendo interfaces consistentes entre cliente y servidor. Comprenderlos es clave al diseñar políticas de seguridad, configurar cortafuegos o diagnosticar aplicaciones distribuidas.

Este tema desglosa la numeración de puertos, el rol de los sockets en la capa de transporte y la manera en que un servicio de red organiza la comunicación entre procesos distribuidos.

14.1 Qué es un puerto lógico y cómo se asigna

Un puerto lógico es un identificador numérico de 16 bits que la capa de transporte utiliza para distinguir conversaciones simultáneas. Está normalizado por la IANA, que divide el espacio en tres rangos:

  • Puertos bien conocidos (0-1023): reservados para servicios estándar como HTTP, HTTPS o DNS. Requieren privilegios de administrador en la mayoría de los sistemas operativos.
  • Puertos registrados (1024-49151): asignados a aplicaciones específicas (por ejemplo, PostgreSQL 5432, Memcached 11211) pero sin carácter exclusivo.
  • Puertos dinámicos o privados (49152-65535): usados temporalmente por clientes para iniciar conexiones; el sistema operativo los elige en forma automática.

Al combinar una dirección IP con un puerto se obtiene un endpoint único dentro de un dispositivo. Gracias a ello, el mismo host puede alojar múltiples servicios y cada cliente puede abrir varias conexiones simultáneas hacia destinos distintos.

14.2 Números de puerto comunes

Conocer los puertos estándar ayuda a interpretar logs, configuraciones de firewall o resultados de herramientas como netstat y nmap. Algunos de los más utilizados son:

Servicio Protocolo Puerto
HTTP TCP 80
HTTPS TCP 443
DNS UDP / TCP 53
SMTP TCP 25 (envío), 587 (submission)
SSH TCP 22
FTP TCP 21 (control), 20 (datos activo)

Estos valores no son inmutables: muchos administradores cambian los puertos para reducir superficie de ataque o adaptarse a políticas corporativas. Sin embargo, las aplicaciones cliente suelen asumir los números estándar, por lo que cualquier modificación debe documentarse y comunicarse con claridad.

14.3 Qué es un socket y cómo conecta aplicaciones

Un socket es la combinación de una dirección IP, un puerto y un protocolo de transporte (TCP, UDP, QUIC, etc.). Actúa como interfaz de programación (API) que permite a los procesos enviar y recibir datos sin conocer los detalles físicos de la red.

  • Socket del lado cliente: se crea con una IP y un puerto local (generalmente dinámico) y se conecta a la IP/puerto del servidor.
  • Socket del lado servidor: permanece a la escucha (listen) en un puerto definido y acepta nuevas conexiones, generando sockets derivados para cada sesión.
  • Socket UDP: no establece conexión; simplemente envía datagramas a un destino y recibe respuestas sin mantener estado.

Las bibliotecas de sockets proporcionan funciones como bind, listen, accept, connect y send/recv. Con ellas se construyen servicios web, APIs REST, juegos en línea, sistemas de mensajería y prácticamente cualquier aplicación distribuida.

14.4 Concepto de servicio en red (cliente-servidor)

Un servicio de red es la funcionalidad expuesta por un servidor y consumida por un cliente mediante protocolos bien definidos. En este modelo:

  1. El servidor abre un socket en un puerto conocido, publica su disponibilidad mediante registros DNS o catálogos internos y espera solicitudes.
  2. El cliente resuelve la dirección del servidor, establece una conexión (si corresponde) y envía peticiones siguiendo el protocolo acordado.
  3. Ambas partes intercambian mensajes estructurados donde los códigos de estado, las cabeceras y los cuerpos indican el resultado de cada operación.
  4. El servicio puede incluir autenticación, autorización, cifrado y registro de auditoría para garantizar confidencialidad e integridad.

La arquitectura cliente-servidor se amplía con patrones modernos como microservicios o funciones serverless, pero los conceptos fundamentales —puerto, socket y protocolo— siguen siendo idénticos. Incluso en escenarios peer-to-peer, cada nodo actúa temporalmente como servidor al escuchar en un puerto determinado.

Dominar estos conceptos permite planificar segmentaciones de red, aplicar reglas de firewall efectivas, interpretar capturas de tráfico y colaborar entre equipos de desarrollo y operaciones. En el siguiente tema se retomarán estas ideas para cerrar el tutorial con conclusiones y próximos pasos.