TCP (Transmission Control Protocol) y UDP (User Datagram Protocol) son los dos protocolos principales de la capa de transporte. Ambos llevan datos entre aplicaciones usando puertos, pero con filosofías opuestas: TCP prioriza la fiabilidad, UDP la velocidad.
TCP es orientado a conexión: establece un canal, garantiza la entrega ordenada y completa, y controla errores y congestión. UDP es sin conexión: envía los datagramas sin confirmar nada, lo que lo hace más rápido y ligero pero sin garantías.
Comparación directa:
| Característica | TCP | UDP |
|---|---|---|
| Conexión | Sí (handshake previo) | No |
| Fiabilidad | Garantiza entrega y orden | No garantiza nada |
| Velocidad | Más lento (overhead) | Más rápido |
| Control de errores | Sí (reenvío) | Mínimo |
| Usos típicos | Web, correo, archivos | Streaming, VoIP, juegos, DNS |
El handshake de 3 vías (three-way handshake): así abre TCP una conexión.
Cliente --- SYN ---> Servidor (¿iniciamos?)
Cliente <-- SYN-ACK -- Servidor (sí, y confirmo)
Cliente --- ACK ---> Servidor (confirmado, conexión abierta)
- SYN (synchronize) → solicitud de inicio.
- SYN-ACK → el servidor acepta y confirma.
- ACK (acknowledge) → el cliente confirma; la conexión queda establecida.
El cierre usa un proceso similar con banderas FIN y ACK.
Por qué importa en seguridad: el handshake es la base de muchas técnicas:
- SYN scan (Nmap): envía SYN y analiza la respuesta sin completar el handshake (escaneo "sigiloso").
- SYN flood: ataque DoS que inunda de SYN sin completar la conexión, agotando recursos del servidor.
- Conexiones UDP: al no haber handshake, son más difíciles de rastrear pero también de filtrar.
Entender TCP, UDP y el handshake es prerrequisito directo para escaneo de puertos, firewalls y captura de paquetes con Wireshark.