TCP vs UDP: fiabilidad contra velocidad

Ya tienes una dirección y una ruta. Falta lo más interesante: cómo se mueven de verdad los datos. Ahí es donde TCP y UDP toman caminos opuestos —y donde eliges entre garantía y velocidad.

Cuando un dato sale de tu computadora rumbo a otra, ya tiene resueltos dos problemas: una dirección —la IP que dice a qué máquina— y una ruta por la que viajará. Pero eso no basta. Falta la parte más interesante: decidir cómo se mueven esos datos. ¿Hay que confirmar que llegaron? ¿Importa el orden? ¿Qué pasa si se pierde un pedazo? De esas preguntas se encargan TCP y UDP, y las responden de maneras opuestas.

El nivel de transporte

Ya con una IP para saber a dónde ir y una ruta para llegar, aún queda por decidir cómo se transportan los datos de punta a punta. Ese trabajo vive en el nivel de transporte, y lo hacen dos protocolos con filosofías distintas.

Concepto clave

Ya con una IP (dirección) y una ruta, falta decidir cómo se mueven los datos. De eso se encargan TCP y UDP, los dos protocolos de transporte.

Ambos usan puertos para entregar los datos al programa correcto dentro de la máquina. La diferencia está en qué garantizan por el camino.

TCP: entrega garantizada

TCP (Transmission Control Protocol) es orientado a conexión: antes de mandar nada útil, cliente y servidor establecen un acuerdo. Luego TCP numera los datos, confirma su recepción, retransmite lo que se pierde y reordena lo que llega desordenado. El resultado es una entrega fiable, completa y en orden —a cambio de más overhead y algo más de latencia—.

Todo empieza con el handshake de tres vías, el saludo que abre la conexión antes de transmitir un solo byte de datos:

  1. El cliente envía un SYN al servidor: "quiero abrir una conexión".
  2. El servidor responde con un SYN-ACK: "recibido, y yo también quiero".
  3. El cliente responde con un ACK y la conexión queda establecida. A partir de aquí fluyen los datos.

Esa danza de tres pasos cuesta un ida y vuelta antes de enviar nada, pero a cambio ambos extremos quedan sincronizados y listos para una transferencia confiable. Cada bloque que se envíe después se numera y se confirma; si una confirmación no llega, TCP reenvía. Nada se da por entregado hasta que el otro lado lo confirma.

UDP: velocidad sin garantías

UDP (User Datagram Protocol) es la filosofía opuesta: sin conexión. No hay handshake, no confirma la recepción, no retransmite lo perdido y no reordena nada. Simplemente envía los paquetes y ya.

Esa simplicidad es su fuerza: es rápido y ligero, sin el ida y vuelta del handshake ni el peso de las confirmaciones. Pero también es su límite: los paquetes pueden perderse o llegar desordenados, y UDP no hace nada al respecto. La decisión de si eso importa —y qué hacer si pasa— queda del lado de la aplicación.

Error común

"UDP no sirve porque pierde paquetes." No es que falle: es que no promete no perderlos. Para muchos usos —una videollamada, un juego en línea— un paquete perdido es preferible a uno que llega tarde. UDP entrega ese contrato a propósito, y la aplicación construye encima lo que necesite.

Puertos y sockets

Tanto TCP como UDP necesitan un mecanismo para entregar los datos no solo a la máquina correcta, sino al programa correcto dentro de ella. Ahí entran los puertos.

Un puerto es un número que identifica el servicio dentro de la máquina: el 80 para web (HTTP), el 443 para HTTPS, el 22 para SSH, y así. Cuando combinas una IP con un puerto obtienes un socket: la combinación exacta que identifica un extremo de la conversación.

Gracias a esto, una sola máquina con una sola IP puede atender miles de conexiones a la vez: cada conversación se distingue por su socket. El navegador que mira este artículo y el cliente de correo abierto en la misma máquina usan puertos distintos, y por eso los datos de cada uno llegan a quien corresponde.

TCP y UDP, lado a lado

Comparación entre TCP y UDP
Característica TCP UDP
Conexión Sí, con handshake No
Entrega garantizada No
Orden garantizado No
Velocidad Menor Mayor
Overhead Mayor Menor
Usos típicos Web, correo, transferencias de archivos Streaming, videollamadas, DNS, juegos

Errores comunes

Error común

"UDP es peor que TCP." No. No es peor: es para otra cosa. DNS y las videollamadas usan UDP a propósito —mejor un frame perdido que uno que llega tarde—. Una transferencia bancaria, en cambio, exige TCP: no puedes perder un solo byte. El mejor protocolo depende de qué toleras perder.

El ángulo banca

En banca, las transacciones van por TCP. La razón es directa: entrega y orden garantizados, porque no se puede perder ni duplicar un pago. Un byte que falta o un mensaje que llega dos veces no es un glitch tolerable: es dinero mal contado, una conciliación que no cuadra, una auditoría que se cae.

Elegir el transporte es, en el fondo, elegir entre garantía y velocidad. Para un stream de video la velocidad manda y un frame perdido se olvida en un instante. En banca es al revés: la garantía manda, y la latencia extra del handshake y las confirmaciones es un precio que se paga con gusto. Es el mismo criterio que lleva a preferir SFTP sobre FTP: cuando lo que viaja no admite errores, la garantía no se negocia.

TCP y UDP no compiten: resuelven necesidades opuestas. Uno garantiza la entrega, el otro apuesta a la velocidad, y ninguno es "mejor" en abstracto. Saber cuál usar —y por qué— es parte del diseño, no un detalle de implementación.

Jorel del Portal

Jorel del Portal

Ingeniero de sistemas especializado en arquitectura de software empresarial y plataformas de alta disponibilidad en banca y finanzas.