TCP y UDP son los dos protocolos de la capa de transporte: los encargados de llevar los datos de una aplicación a otra por internet. La diferencia es una elección entre fiabilidad y velocidad. TCP (Transmission Control Protocol) garantiza que todo llegue completo y en orden: establece una conexión con un «saludo» previo, numera los datos, confirma la recepción y reenvía lo que se pierde. A cambio, tiene más sobrecarga y algo más de retraso. UDP (User Datagram Protocol) es lo contrario: envía y no espera confirmación. No garantiza que llegue todo ni el orden, pero es rápido y ligero, sin la sobrecarga de establecer conexión. La regla para elegir es simple: usá TCP cuando no puede faltar ni un byte —webs, correo, transferencias, bases de datos— y UDP cuando importa más la inmediatez que la perfección —videollamadas, streaming en vivo, juegos en línea, DNS—. En una videollamada, es mejor perder un fotograma que congelar la imagen esperando a que se reenvíe; en una transferencia de archivo, en cambio, no puede faltar nada. Ambos usan puertos para dirigir cada comunicación a su aplicación.
Ver índice de contenidos
Qué son y qué resuelven
Cuando dos programas se comunican por la red, la capa de transporte es la que se encarga de llevar los datos de uno a otro. Tiene dos protocolos disponibles, TCP y UDP, y cada aplicación elige el que le conviene. Ambos añaden el concepto de puerto, que permite que en un mismo equipo el navegador, el correo y una videollamada usen la red a la vez sin mezclarse.
Una decisión de diseño: garantía o inmediatez
La diferencia esencial es qué priorizan. TCP antepone la garantía: hace lo que haga falta —confirmar, reordenar, reenviar— para que los datos lleguen exactos. UDP antepone la inmediatez: manda los datos cuanto antes y no se detiene a comprobar si llegaron. No es que uno sea «mejor»: son herramientas para necesidades distintas.
TCP: la fiabilidad
TCP está orientado a conexión: antes de enviar datos, cliente y servidor hacen un saludo de tres vías (three-way handshake) —el cliente pide conexión, el servidor acepta, el cliente confirma—. Establecida la conexión, TCP:
- Numera los datos, para reordenarlos si llegan desordenados.
- Confirma la recepción de cada parte.
- Reenvía lo que se pierde o llega dañado.
- Controla el flujo para no saturar al receptor ni a la red.
El resultado: los datos llegan completos y en orden, garantizado. El precio es la sobrecarga de todo ese control y el retraso del saludo inicial. Por eso lo usan la web, el correo, las transferencias de archivos y las bases de datos: contextos donde no puede faltar nada.
UDP: la velocidad
UDP es sin conexión: no hay saludo ni confirmaciones. El emisor manda los datos en paquetes independientes (datagramas) y no espera respuesta. Esto significa que:
- No garantiza que todo llegue ni que llegue en orden.
- No hay reenvíos: lo que se pierde, se pierde.
- A cambio, es rápido y ligero, sin la sobrecarga de TCP.
En una videollamada o un juego en línea, lo que importa es el ahora. Si un fragmento de audio se pierde, reenviarlo llegaría tarde —el momento ya pasó— y además congelaría todo lo demás mientras se espera. Es preferible seguir en tiempo real aunque se pierda algo. Ahí UDP es la elección correcta, y por eso lo usan el streaming en vivo, la voz sobre IP, los juegos y las consultas DNS (una pregunta y respuesta cortas, sin necesidad de conexión).
Errores frecuentes
- Creer que UDP es «peor» que TCP. No: son para necesidades distintas; UDP es idóneo para tiempo real.
- Usar TCP para tiempo real crítico. Sus reenvíos introducen retrasos que arruinan una videollamada.
- Usar UDP donde no puede faltar nada. Una transferencia de archivo por UDP puro llegaría incompleta.
- Ignorar el coste del saludo de TCP. Para muchísimas conexiones cortas, ese establecimiento pesa.
- Pensar que UDP «no sirve» para nada importante. DNS, streaming y voz dependen de él.
- Confundir puerto con protocolo. El puerto identifica la aplicación; TCP/UDP es cómo se transporta.
- Olvidar que hay protocolos modernos. Algunos construyen fiabilidad sobre UDP para ganar velocidad sin perder garantías.
Preguntas frecuentes
¿Cuál es la diferencia fundamental entre TCP y UDP?
La diferencia fundamental entre TCP y UDP es la elección entre fiabilidad y velocidad, dos prioridades que resultan en gran medida opuestas. TCP está orientado a conexión y prioriza la fiabilidad: antes de enviar datos establece una conexión mediante un intercambio previo, numera los datos que envía, espera confirmación de que han llegado, reenvía lo que se pierde o llega dañado, y controla el ritmo de envío para no saturar. El resultado es que garantiza que toda la información llegue completa y en el orden correcto, pero a cambio introduce una sobrecarga de control y un cierto retraso, especialmente por el establecimiento inicial de la conexión. UDP, en cambio, no tiene conexión y prioriza la velocidad: simplemente envía los datos en paquetes independientes sin establecer nada previamente y sin esperar ninguna confirmación de que hayan llegado, de modo que no garantiza ni la entrega completa ni el orden, pero es mucho más rápido y ligero porque se ahorra toda esa gestión. Ninguno de los dos es intrínsecamente mejor que el otro; son herramientas diseñadas para necesidades distintas. Cuando la integridad total de los datos es imprescindible, como al cargar una página, enviar un correo o transferir un archivo, TCP es la elección adecuada. Cuando importa más la inmediatez que recuperar cada dato perdido, como en videollamadas, streaming en vivo o juegos en línea, UDP es lo que corresponde. Entender esta diferencia es clave para comprender por qué distintas aplicaciones se comportan como lo hacen ante problemas de red.
¿Qué es el saludo de tres vías de TCP?
El saludo de tres vías, conocido en inglés como three-way handshake, es el procedimiento mediante el cual TCP establece una conexión entre dos equipos antes de empezar a transmitir datos, y consta de tres pasos que le dan su nombre. En el primer paso, el equipo que quiere iniciar la comunicación, típicamente el cliente, envía al servidor una solicitud de conexión, indicando su intención de comunicarse. En el segundo paso, el servidor responde a esa solicitud reconociéndola y, a su vez, indicando que él también está listo para establecer la conexión en el otro sentido. En el tercer paso, el cliente confirma la respuesta del servidor, y con esa confirmación la conexión queda establecida en ambos sentidos y lista para transmitir datos de forma fiable. Este intercambio previo cumple varias funciones importantes: asegura que ambos extremos existen, están accesibles y están dispuestos a comunicarse, y permite acordar los parámetros iniciales que TCP usará para numerar y controlar los datos. La contrapartida de este mecanismo es que introduce un retraso antes de poder enviar el primer dato útil, ya que hay que completar los tres pasos, lo que supone un coste especialmente notable cuando se abren muchas conexiones cortas. Esta necesidad de establecer conexión es precisamente una de las diferencias clave frente a UDP, que no realiza ningún saludo previo y empieza a enviar de inmediato, ganando velocidad a cambio de perder la garantía y el control que aporta la conexión de TCP.
¿Cuándo debo usar TCP y cuándo UDP?
La regla general para elegir entre TCP y UDP se basa en qué prioriza la aplicación: la integridad total de los datos o la baja latencia. Se debe usar TCP cuando es imprescindible que toda la información llegue completa, correcta y en orden, y donde perder o corromper datos resultaría inaceptable. Este es el caso de la navegación web, donde una página debe cargarse íntegra; del correo electrónico, donde un mensaje no puede llegar truncado; de la transferencia de archivos, donde falta un solo byte invalidaría el archivo; y del acceso a bases de datos, donde la exactitud es crítica. En todos estos escenarios, el retraso adicional que introduce TCP para garantizar la fiabilidad es un precio que merece la pena pagar. Se debe usar UDP, en cambio, cuando la inmediatez y la fluidez en tiempo real son más importantes que recuperar cada dato perdido, y donde un dato que llega tarde no sirve de nada. Este es el caso de las videollamadas y la voz sobre IP, del streaming o retransmisión en directo, de los juegos en línea que requieren respuesta instantánea, y de las consultas de resolución de nombres, que son intercambios muy breves de pregunta y respuesta. En estos escenarios, esperar a reenviar un dato perdido causaría cortes o congelaciones peores que la propia pérdida, por lo que es preferible seguir adelante en tiempo real asumiendo alguna pérdida ocasional. En resumen, la pregunta clave es: ¿prefiero que llegue todo aunque tarde un poco más, o prefiero que sea inmediato aunque se pierda algo?
¿Por qué las videollamadas usan UDP si puede perder datos?
Las videollamadas y otras aplicaciones de tiempo real usan UDP precisamente porque, en ese tipo de comunicación, la capacidad de recuperar cada dato perdido que ofrece TCP resultaría contraproducente. La clave está en entender qué ocurre cuando se pierde un fragmento de datos en cada caso. Con TCP, si un fragmento se pierde, el protocolo lo detecta y lo reenvía, y mientras tanto retiene los datos posteriores para entregarlos en orden; esto significa que todo el flujo se detiene o se retrasa a la espera de recuperar ese fragmento. En una comunicación en tiempo real, ese comportamiento es desastroso, porque produce congelaciones y desfases acumulativos: la imagen o el sonido se detendrían cada vez que se pierde algo, esperando datos que, cuando por fin llegan reenviados, ya no tienen sentido porque el momento al que correspondían ha pasado. Con UDP, en cambio, si un fragmento de audio o de vídeo se pierde, simplemente se omite y la comunicación continúa con el siguiente, lo que en la práctica se traduce en una pequeña imperfección momentánea, como un microcorte apenas perceptible, pero manteniendo la fluidez y la sincronía en tiempo real. Dicho de otro modo, en una videollamada es preferible perder un instante y seguir en directo que congelar toda la conversación para recuperar un dato ya caduco. Por eso las aplicaciones de tiempo real eligen UDP y gestionan las pérdidas de forma inteligente a un nivel superior, priorizando siempre la continuidad y la baja latencia sobre la recuperación perfecta de cada dato.
¿UDP no garantiza nada, entonces es inseguro?
Conviene no confundir dos conceptos distintos: la fiabilidad de la entrega y la seguridad. Cuando se dice que UDP no garantiza nada, se refiere a la fiabilidad de la entrega, es decir, a que no asegura que todos los paquetes lleguen ni que lo hagan en orden, pero esto no tiene relación directa con la seguridad en el sentido de protección frente a ataques o confidencialidad de los datos. Ni TCP ni UDP, por sí mismos, cifran la información ni la protegen; ambos se limitan a transportar los datos, con o sin garantías de entrega, y la seguridad se añade en capas superiores mediante protocolos de cifrado. De hecho, las comunicaciones seguras se construyen tanto sobre TCP como sobre UDP añadiendo esas capas de protección por encima. Por otro lado, la falta de garantías de entrega de UDP tampoco lo hace inadecuado o poco serio, sino simplemente distinto: para las aplicaciones que eligen UDP, esa ausencia de garantías es una característica deseada que les permite ganar velocidad, y esas aplicaciones gestionan por su cuenta, a un nivel superior, cómo tolerar o compensar las pérdidas según sus necesidades. Es más, existen protocolos modernos que construyen mecanismos de fiabilidad sofisticados sobre UDP, obteniendo así lo mejor de ambos mundos: el control fino y la velocidad de UDP como base, con garantías añadidas a medida por encima. En resumen, que UDP no garantice la entrega es una cuestión de diseño del transporte, no un defecto de seguridad, y la protección de los datos es un asunto aparte que se resuelve con cifrado independientemente del protocolo de transporte que se use.
¿Qué es un puerto y qué relación tiene con TCP y UDP?
Un puerto es un número que identifica a una aplicación o servicio concreto dentro de un equipo, y es un concepto que aportan precisamente los protocolos de la capa de transporte, es decir, TCP y UDP. La necesidad de los puertos surge de un hecho práctico: un mismo equipo, identificado por una única dirección de red, ejecuta simultáneamente muchas aplicaciones que usan la red, como un navegador, un cliente de correo y una videollamada, y todas comparten esa misma dirección. Si solo existiera la dirección del equipo, no habría forma de saber a cuál de todas esas aplicaciones corresponde cada comunicación que llega. El puerto resuelve este problema añadiendo un segundo nivel de direccionamiento: la dirección de red lleva los datos hasta el equipo correcto, y el número de puerto los dirige a la aplicación correcta dentro de ese equipo. Tanto TCP como UDP incorporan en su información de control los números de puerto de origen y destino, de modo que cada comunicación queda etiquetada con la aplicación a la que pertenece y no se mezcla con las demás. Además, ciertos servicios conocidos tienen puertos estándar asociados por convención, lo que permite que un cliente sepa a qué puerto dirigirse para hablar con un tipo concreto de servicio. Es importante entender que el puerto identifica la aplicación, mientras que la elección entre TCP y UDP determina cómo se transportan los datos hasta ella; son dos aspectos complementarios y distintos, y existe una guía específica dedicada a explicar en detalle qué es un puerto y cuáles son los más usados.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Sección Redes. Protocolos de transporte.
- Underc0de, blog. Blog de la comunidad. Artículos de redes.
Documentación oficial
- IETF. RFC 9293: TCP. La especificación actual de TCP.
- IETF. RFC 768: UDP. La especificación de UDP.
- Cloudflare. What is UDP?. Explicación de referencia.
- MDN. TCP (glosario). Definición práctica de TCP.