9) Socket y programación de red

Una guía técnica a la programación de red, el ciclo de vida de los sockets y la comunicación cliente-servidor

Introducción a la programación de red

Escribir código capaz de comunicarse a través de una red de procesadores requiere el uso de interfaces estándar definidas como Socket.

¿Qué es un Socket

Un socket representa un punto final de comunicación lógica bidireccional, identificado de manera única por la unión de una dirección IP y un puerto TCP/UDP.

Existen dos macro-familias de sockets basadas en los protocolos del nivel de transporte subyacente.

Los Sockets Stream se apoyan en el protocolo TCP para asegurar una transmisión confiable, ordenada y libre de errores.

Los Sockets Datagram utilizan UDP para transmitir bloques de datos individuales a la máxima velocidad posible, sin garantías de entrega.

Ciclo de vida de un servidor TCP

Para establecer una comunicación correcta, el servidor debe seguir una secuencia precisa de llamadas al sistema (system call).

La llamada socket() inicializa la interfaz y establece la familia de direcciones y el tipo de protocolo.

La llamada bind() asocia el socket creado con una dirección IP local y un número de puerto específico de la máquina.

La llamada listen() pone al servidor en modo de escucha pasiva, listo para recibir intentos de conexión por parte de los clientes.

La llamada accept() es bloqueante: extrae la primera solicitud de conexión en cola y crea un nuevo socket dedicado al canal.

A través de read() y write() (o recv() y send()), el servidor intercambia mensajes con el cliente antes de cerrar la conexión con close().

El ciclo de vida del cliente TCP

El cliente sigue un camino mucho más simple, evitando las fases de bind y listen.

Después de llamar a socket(), invoca connect() para solicitar activamente la apertura del Three-Way Handshake TCP con el servidor.

Una vez que se acepta la conexión, puede comenzar a transmitir y procesar datos hasta liberar los recursos.

Conclusión

Dominar la programación de sockets es indispensable para comprender cómo se implementan los servidores web y los microservicios modernos.

🔗 Recursos y Referencias

Wikipedia - Socket di rete Python - Socket Programming Tutorial GeeksforGeeks - Socket Programming in C/C++ Oracle - What is a Socket?