Capa de Transporte: TCP 3-Way Handshake, Puertos y Sockets
La Capa de Transporte (Capa 4 OSI) es la responsable de la comunicación extremo a extremo (end-to-end) entre aplicaciones que se ejecutan en diferentes hosts. Mientras que la Capa de Red entrega paquetes entre máquinas, la Capa de Transporte los entrega al proceso o servicio específico correcto dentro de cada máquina.
1. Puertos de Red (Addressing en Capa 4) #
Un puerto es un identificador numérico de 16 bits (valores de 0 a 65535) que permite multiplexar múltiples servicios en una misma dirección IP.
La IANA (Internet Assigned Numbers Authority) clasifica los puertos en tres rangos:
-
Puertos Bien Conocidos (Well-Known Ports, 0 – 1023):
- Reservados para servicios estándar del sistema y privilegios de administrador.
- Ejemplos:
20/21(FTP),22(SSH),25(SMTP),53(DNS),80(HTTP),443(HTTPS).
-
Puertos Registrados (Registered Ports, 1024 – 49151):
- Asignados a aplicaciones específicas de terceros o bases de datos.
- Ejemplos:
1433(SQL Server),3306(MySQL),5432(PostgreSQL),6379(Redis),8080(HTTP alternativo).
-
Puertos Dinámicos o Efímeros (Dynamic / Private Ports, 49152 – 65535):
- Asignados automáticamente por el sistema operativo al cliente cuando inicia una conexión saliente y liberados al terminar.
2. Concepto y Anatomía de un Socket #
Un Socket de red es el punto final (endpoint) de una comunicación bidireccional. A nivel de red se define mediante la combinación de una dirección IP y un número de puerto:
Una conexión de red activa queda unívocamente definida por la tupla de 5 elementos (5-tuple):
- Protocolo de transporte (TCP o UDP).
- IP de Origen.
- Puerto de Origen.
- IP de Destino.
- Puerto de Destino.
3. TCP a Fondo: El 3-Way Handshake (Apretón de Manos) #
TCP (Transmission Control Protocol) es un protocolo orientado a conexión y fiable. Antes de transmitir un solo byte de datos, cliente y servidor deben sincronizarse mediante el protocolo de saludo en tres fases:
Cliente Servidor
│ │
│ ── 1. [SYN] (Seq = x) ────────────────► │ (Cliente solicita conexión)
│ │
│ ◄─ 2. [SYN-ACK] (Seq = y, Ack = x+1) ── │ (Servidor acepta y sincroniza)
│ │
│ ── 3. [ACK] (Seq = x+1, Ack = y+1) ───► │ (Cliente confirma conexión)
│ │
▼ ====== CONEXIÓN ESTABLECIDA ====== ▼
│ ── [DATOS HTTP/TLS...] ───────────────► │
Explicación de los Flags: #
- Paso 1 (SYN): El cliente envía un paquete con el flag
SYNactivo y un número de secuencia inicial aleatorio (Seq = x). - Paso 2 (SYN-ACK): El servidor responde con
SYNyACK, confirmando el número del cliente (Ack = x + 1) y enviando su propio número de secuencia inicial (Seq = y). - Paso 3 (ACK): El cliente confirma la recepción (
Ack = y + 1). La conexión pasa al estadoESTABLISHED.
4. Finalización de Conexión y Control de Flujo #
Cierre de Conexión (4-Way Teardown): #
Para cerrar una conexión de forma ordenada se utiliza el flag FIN (Finish):
Cliente[FIN]ServidorServidor[ACK]ClienteServidor[FIN]ClienteCliente[ACK]Servidor(Si ocurre un error grave o corte forzado, se envía un flag RST - Reset).
Control de Flujo y Congestión: #
- Ventana Deslizante (Sliding Window): El receptor indica cuántos bytes está dispuesto a recibir antes de que el emisor deba esperar un acuse (ACK).
- Retransmisión (ARQ): Si un segmento se pierde o llega corrupto, se vuelve a transmitir automáticamente tras agotar el temporizador (timeout).
5. Comparativa Rápida: TCP vs UDP #
| Característica | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
|---|---|---|
| Orientación | Orientado a conexión (requiere handshake previo) | No orientado a conexión (connectionless) |
| Fiabilidad | Garantizada (retransmite paquetes perdidos) | No garantizada (mejor esfuerzo / best-effort) |
| Orden | Garantizado (reordena los segmentos) | No garantizado (pueden llegar desordenados) |
| Sobrecarga (Cabecera) | 20 a 60 bytes (múltiples flags y campos de control) | 8 bytes (mínima sobrecarga) |
| Casos de uso | Web (HTTP/HTTPS), SSH, APIs REST, Correo, BBDD | Streaming, VoIP, DNS, Juegos multijugador, DHCP |
Resumen del tema
Conceptos clave #
- Puertos e IANA: 16 bits (0–65535) para multiplexar servicios; divididos en bien conocidos (0–1023), registrados (1024–49151) y efímeros (49152–65535).
- Socket y Tupla: abstracción de software compuesta por
IP:Puerto. La tupla de 5 elementos identifica de forma unívoca cualquier flujo de red en Internet. - TCP 3-Way Handshake: proceso de sincronización obligatorio (
SYNSYN-ACKACK) previo al intercambio de datos útiles. - Mecanismos de Fiabilidad: números de secuencia, acuses de recibo (ACK), ventana deslizante para control de flujo y retransmisión de segmentos.
Qué debes recordar #
La Capa de Transporte conecta aplicaciones mediante sockets (IP:Puerto). TCP asegura fiabilidad y orden mediante el 3-way handshake y control de flujo, mientras que UDP prioriza la velocidad con mínima latencia.