TCP vs. UDP: entender la diferencia
Si alguna vez te has adentrado en un mundo de lenguaje técnico al utilizar una VPN, puede que hayas visto términos como OpenVPN con TCP u OpenVPN con UDP. Quizá sepas que OpenVPN es el protocolo VPN más seguro, pero ¿qué hay de TCP y UDP? ¿Qué son estos términos y qué significan?
Vamos a entender qué son TCP (protocolo de control de transmisión) y UDP (protocolo de datagramas de usuario) y cuándo se pueden utilizar.
TCP y UDP: ¿qué tienen en común?
TCP y UDP son protocolos de red que se utilizan para enviar paquetes de datos. Estos paquetes de datos no son más que bits de datos que viajan por Internet. Cuando chateas con un amigo por Internet, envías un correo electrónico o envías una solicitud de página a través de tu navegador, envías datos online. Estos datos se transfieren en forma de pequeños paquetes.
Tanto TCP como UDP reenvían los paquetes de datos desde tu dispositivo mediante puertos a distintos rúteres hasta que llegan a su destino final. También se emplean para enviar los paquetes a la dirección IP del destinatario (una dirección IP es una dirección especial que se asigna a cada dispositivo conectado a Internet).
Tanto TCP como UDP funcionan sobre el IP (protocolo de Internet). Por eso puedes oír términos como TCP/IP o UDP/IP. Sin embargo, como TCP/IP y UDP/IP se utilizan muy a menudo, se denominan simplemente TCP y UDP.
Aunque TCP y UDP son los protocolos más utilizados, no son los únicos que se emplean para transferir paquetes de datos. Otro protocolo que puede utilizarse es el ICMP (protocolo de mensajes de control de Internet). Sin embargo, como la mayoría de las conexiones se basan en TCP o UDP, nos centraremos en estos dos.
Vamos a entender cada uno de estos protocolos por separado.
Todo sobre el TCP
TCP es un protocolo que se utiliza más que UDP.
Cuando abres una página web en tu navegador, tu dispositivo envía paquetes TCP a la dirección del servidor. Es una solicitud al servidor para que envíe los datos y la información de la web, a lo que el servidor web responde enviando una serie de paquetes TCP. El navegador une estos paquetes para mostrar una página web en tu pantalla.
Cuando seleccionas un enlace de una página o navegas a otra web, el navegador vuelve a enviar paquetes TCP al servidor; como respuesta, el servidor devuelve paquetes de datos TCP adicionales.
Básicamente, TCP no es una comunicación unidireccional. Estos paquetes son enviados una y otra vez por tu navegador al servidor y del servidor al navegador.
La diferencia es que el navegador envía paquetes de solicitud y el servidor responde enviando paquetes de datos que se unen de la forma correcta para conformar una web totalmente funcional.
TCP numera los paquetes para que el destinatario pueda recibirlos en orden. Cuando el destinatario recibe un paquete, envía un acuse de recibo al remitente. Si el remitente no recibe el acuse de recibo, asumirá que el paquete no se ha recibido, por lo que lo reenviará.
TCP es un sistema fiable. Se comprueba si hay errores en los paquetes para asegurarse de que la solicitud se cumple correctamente. Los paquetes TCP se rastrean para asegurarse de que no se pierden datos entre ellos. Asimismo, se comprueba que los paquetes no estén corruptos. Por eso, cuando descargas archivos utilizando TCP, se reciben perfectamente aunque haya problemas de red por medio.
Sin embargo, si la otra parte está totalmente desconectada, al final tu sistema desistirá en el intento y te aparecerá un mensaje de error indicando que no ha podido establecer el canal de comunicación con el host remoto.
Todo sobre UDP
Como ya hemos comentado, UDP funciona de forma similar a TCP en el sentido de que transmite paquetes de datos. Sin embargo, no realiza ningún tipo de comprobación de errores. Para hacerlo más ligero y sencillo, UDP prescinde del factor fiabilidad.
Poner paquetes en orden, enviar acuses de recibo y solicitar reenvíos lleva mucho tiempo y ralentiza las cosas. UDP acelera el proceso eliminando todos los pasos generales.
Con UDP, el remitente envía los paquetes al destinatario, y al remitente no le importa si el destinatario los ha recibido o no: seguirá enviando los paquetes de datos. Como receptor, si te has perdido un par de paquetes UDP por el camino, no puedes volver a solicitarlos.
¿Has recibido todos los paquetes? No hay forma de saberlo. Tampoco puedes recuperar los paquetes perdidos. Aunque esto suena fatal, hay algo positivo en esta comunicación, y es que es más rápida que TCP.
Como habrás adivinado, UDP no se utiliza en conexiones en las que la fiabilidad sea una gran preocupación. Solo se utiliza cuando la velocidad es más importante que unos pocos paquetes perdidos. Por ejemplo, si quieres tener una red para jugar online, hacer videoconferencias o retransmisiones, UDP será mejor que TCP.
UDP se utiliza para jugar
Si pierdes un par de datagramas UDP, podrías tener la sensación de que, en lugar de caminar, tu personaje se ha teletransportado de repente por el mapa. O, si estás jugando a un shooter en primera persona, habrás disparado dos balas a la vez en lugar de una sola.
Los paquetes que se han perdido entre medias ya son inútiles. No tiene sentido solicitarlos de nuevo, así que ignorarás este pequeño fallo y seguirás jugando como de costumbre. Es mejor que la alternativa TCP, en la que la partida se quedaría paralizada.
En los juegos online, lo que importa es lo que ocurre en tiempo real. De todas formas, los paquetes perdidos no te preocupan. Si utilizas TCP en lugar de UDP, no se producirán pequeños fallos, pero tu partida será lenta, lo que es una gran molestia.
TCP y UDP: ¿cuáles son las diferencias?
Este gráfico resume las diferencias, pero a continuación entramos en detalle en cada sección.
TCP | UDP | |
Conexión | Orientado a la conexión | Sin conexión |
Secuenciación | TCP numera cada paquete para que el destinatario pueda ordenarlos en una secuencia | UDP envía los paquetes sin numeración |
Velocidad | Más lento | Más rápido |
Fiabilidad | Alta | Baja |
Tamaño de la cabecera | Los paquetes son pesados debido a la sobrecarga de recursos | Paquetes ligeros con cabeceras mínimas |
Detección/corrección de errores | Comprobación de errores y recuperación de errores | Hay comprobación de errores pero no recuperación. Los paquetes dañados simplemente se descartan y no se vuelven a solicitar. |
Acuse de recibo | El destinatario envía un acuse de recibo | No se envía acuse de recibo |
Método de transferencia | Flujo | Paquetes individuales |
Control de la congestión | Sí | No |
Aplicaciones | Transferencia de archivos, correo electrónico, navegación | Videoconferencias, juegos, transmisiones |
Vamos a entrar en los detalles.
Como ya sabes, tanto TCP como UDP se utilizan en las comunicaciones online entre el cliente y el servidor. Aquí tienes algunas diferencias principales entre ellos.
1. Conexión
TCP funciona con conexión y UDP no establece una conexión. Esto significa que antes de enviar paquetes TCP, se establece una conexión entre el servidor y el cliente, y a este proceso de establecer una conexión se le denomina handshaking TCP. A continuación, el flujo de paquetes se envía a través de esta conexión.
En UDP, no existe tal conexión. Cada paquete se envía de forma individual y directamente del emisor al receptor, sin un canal de datos fiable.
2. Secuenciación
TCP es un protocolo fiable que añade un número de secuencia a los paquetes de datos a medida que envía un flujo. Esto ayuda al receptor a ordenar y recomponer el mensaje. UDP no añade un número a su cabecera, lo que significa que el destinatario no tiene manera de saber si ha recibido todos los paquetes y en el orden correcto.
3. Velocidad
Como UDP no tiene muchos requisitos, ofrece una conexión más rápida. En cambio, TCP es más lento pero mucho más fiable. Si necesitas más velocidad que fiabilidad, debes utilizar UDP en lugar de TCP.
4. Fiabilidad
TCP tiene provisiones para la secuenciación de paquetes de datos, acuses de recibo, detección y corrección de errores. Gracias a ello, es un protocolo fiable. En cambio, UDP no tiene secuenciación ni acuses de recibo. Aunque UDP tiene un mecanismo de detección de errores, no hace nada para corregirlos. Los paquetes erróneos simplemente se descartan.
5. Tamaño de la cabecera
Como TCP tiene más detalles (secuencia del paquete, detección de errores, campo de acuse de recibo, etc.), la cabecera de los paquetes TCP es mayor que la de los paquetes UDP. Esto hace que cada paquete sea pesado. Por eso, las conexiones TCP son más lentas que las UDP.
6. Detección/corrección de errores
TCP tiene métodos de detección y corrección de errores. Cuando se detecta que un paquete está dañado, TCP no envía un acuse de recibo por él. Esto induce al remitente a reenviar el paquete. De este modo, el mensaje completo se entrega sin errores.
En UDP, hay detección de errores mediante la suma de comprobación, pero no hay corrección de errores. Si se descubre que un determinado paquete es erróneo, simplemente se descarta.
7. Acuse de recibo
Cuando el destinatario recibe paquetes TCP, envía un acuse de recibo al remitente. Si el remitente no recibe el acuse de recibo, asumirá que los paquetes no se entregaron o se entregaron dañados. Entonces, procederá a reenviar los paquetes.
En cambio, UDP no envía acuses de recibo, por lo que el remitente no sabrá si los paquetes se han recibido o no.
8. Método de transferencia
TCP envía un flujo de paquetes de datos, mientras que los paquetes UDP se envían de forma individual. El flujo de datos no tiene límites definidos, pero los paquetes individuales tienen unos límites adecuados.
9. Control de la congestión
TCP tiene provisiones para el control de la congestión o del flujo. Como TCP está orientado a la conexión, se asegura de que no haya congestión en el canal de datos que se ha establecido. UDP es un protocolo sin conexión y no se preocupa mucho por la congestión. Cada paquete se envía por separado y, si un paquete se pierde debido a la congestión, el destinatario no puede hacer mucho al respecto.
10. Aplicaciones
TCP se utiliza en aplicaciones en las que la fiabilidad es más importante, como las transferencias de archivos, los correos electrónicos y la navegación por Internet. UDP se utiliza en casos en las que la velocidad es más importante, como hacer videoconferencias, ver streams en directo y jugar online.
Puertos TCP vs. puertos UDP
Cuando los datos viajan por Internet hasta tu ordenador, se aceptan en tu sistema a través de puertos TCP o UDP.
Tu dirección IP se utiliza para identificar a tu ordenador en Internet. Por tanto, tu dirección IP es como la dirección de una calle: todos los apartamentos de esa calle comparten la misma calle, pero cada vivienda tiene también su propio número. Este número de apartamento es el puerto.
Tu dirección IP tiene cierta cantidad de puertos: puede haber 65.535 puertos TCP y 65.535 puertos UDP. Cuando tu navegador envía o recibe datos en Internet, estos datos se envían desde los servidores online a tu dirección IP y a un puerto concreto.
Si los datos se envían utilizando el protocolo TCP, utilizarán uno de tus puertos TCP y, si se transfieren utilizando UDP, se conectarán utilizando uno de tus puertos UDP.
OpenVPN: ¿TCP o UDP?
Cuando utilices OpenVPN, ¿con qué protocolo debes utilizarlo? ¿TCP o UDP?
OpenVPN es uno de los muchos protocolos que puedes utilizar con una VPN. Este artículo te explica este protocolo y los demás más populares.
En lo que respecta a las conexiones OpenVPN, tanto TCP como UDP funcionan bien. Ambos ofrecen una privacidad y seguridad excelentes cuando utilizas la VPN. Para elegir el adecuado, debes tener en cuenta para qué finalidad quieres utilizar la VPN.
Si quieres tener una conexión rápida y no te importa perder algunos paquetes, debes seleccionar UDP. Y, si lo que te preocupa es la fiabilidad, elige TCP. Ten en cuenta que ambos ofrecen la misma seguridad contra los hackers y la vigilancia del gobierno.
Lo que determina la diferencia es el uso. Si quieres utilizar la VPN para jugar o ver vídeos en directo, puedes conectarte con OpenVPN con UDP. Y, si quieres descargar archivos, conectarte a una red P2P o navegar con normalidad, puedes conectarte con OpenVPN con TCP.
¿No sabes qué protocolo utilizar? Te hacemos un rápido resumen aquí.
Te agradecemos que dejes un comentario sobre cómo mejorar este artículo. Tu opinión es importante.