¿Qué son TCP y UDP? Una explicación sencilla

Internet depende de dos protocolos para el intercambio de información entre computadoras. Estos protocolos de comunicación definen las reglas que determinan cómo ocurre la transferencia de datos entre las dos entidades involucradas, ya sea de uno a uno o de uno a muchos. El Protocolo de Control de Transmisión (TCP) y el Protocolo de Datagramas de Usuario (UDP) son dos protocolos que puedes usar para mover datos a través de redes. Ambos trabajan en la capa de transporte del modelo OSI.

Aunque son similares, estos dos protocolos realizan su trabajo de manera eficiente. Mientras que uno es orientado a la conexión y requiere establecer una conexión antes de que pueda comenzar la transferencia de datos, el otro no necesita conexión y envía datos sin informar primero al dispositivo de destino. Estos protocolos hacen mucho más de lo que parece, como descubrirás a continuación. Este artículo se centra en TCP y UDP: cómo funcionan, sus ventajas, desventajas y diferencias.

¿Qué es TCP?

El Protocolo de Control de Transmisión es un protocolo de comunicación que se ocupa principalmente de la transferencia de paquetes de datos en Internet. Opera en la capa de transporte (capa 4) del modelo de Interconexión de Sistemas Abiertos (OSI). Este protocolo ayuda a transferir paquetes de datos entre un dispositivo/aplicación cliente y un servidor (junto con UDP).

TCP es orientado a la conexión, lo que significa que el cliente y el servidor deben establecer una conexión antes de enviar datos en cualquier dirección. Además, es un protocolo confiable ya que comprueba si hay errores y asegura que los paquetes de datos lleguen a su destino en el orden que el dispositivo o aplicación de envío pretendía.

¿Cómo funciona TCP?

Al utilizar TCP, un cliente y un servidor establecen una conexión utilizando lo que se conoce como el apretón de manos de tres vías antes de que comience la transferencia bidireccional de paquetes de datos. Antes que comience este apretón de manos, el servidor debe estar escuchando en un puerto para aceptar la conexión. Este proceso comienza con el intercambio de tres mensajes (o señales) conocidos como SYN, SYN/ACK y ACK entre el cliente y el servidor.

Veamos a continuación el proceso de intercambio paso a paso.

1. El cliente envía un paquete de datos SYN al servidor. El paquete SYN contiene un número de secuencia aleatorio (X) asignado por el cliente. El propósito de este paquete es ver si el servidor está disponible para una nueva conexión.

2. El servidor recibe el paquete SYN y lo reconoce enviando un paquete SYN/ACK. El servidor establece el número de reconocimiento como uno más que el número de secuencia (1+X) que el cliente asignó al paquete SYN inicial y establece otro número de secuencia aleatorio (Y). Así, el servidor envía dos números de secuencia junto con su paquete SYN/ACK al cliente.

3. El cliente recibe el paquete SYN/ACK del servidor y lo reconoce enviando un paquete ACK. El cliente coloca el número de reconocimiento como uno más que el número de secuencia (1+Y) que recibió del servidor.

Una vez que se completa el proceso del apretón de manos de tres vías, el cliente y el servidor pueden enviar y recibir datos entre sí.

Ventajas y Desventajas de TCP

Como la mayoría de los protocolos, TCP no es perfecto; tiene sus ventajas y desventajas. Veamos los pros y los contras de usar TCP a continuación. 

Ventajas

1. Confiabilidad

TCP es confiable porque garantiza que los paquetes de datos lleguen a su destino en el orden correcto. Cuando TCP transmite un segmento de datos, ejecuta un temporizador y espera un reconocimiento del destino. Reenviará el segmento si no recibe ningún reconocimiento. Además, utiliza la secuenciación para saber cuándo los paquetes de datos llegan desordenados.

2. Detección y Recuperación de Errores

TCP utiliza un checksum de extremo a extremo para verificar cualquier cambio en los paquetes a medida que llegan a su destino. Descarta los paquetes con errores y espera a que el emisor los reenvíe. Además, también descarta los datos duplicados. 

3. Control de Congestión

TCP utiliza buffering y ventana para manejar la congestión. La congestión puede ocurrir cuando el extremo receptor de la conexión TCP recibe más paquetes de datos de los que puede manejar a la vez. TCP utiliza buffers para tratar la congestión, pero cuando los buffers se llenan, utiliza la ventana para reducir la cantidad de datos que el emisor puede enviar a la vez. 

Desventajas

1. Velocidad lenta

En comparación con UDP, TCP es lento. En primer lugar, el necesario handshake de tres vías lleva tiempo. Luego, está la reducción de velocidad que la control de flujo, control de congestión y la comprobación de errores causan durante la transferencia de datos. En estos casos, TCP sacrifica velocidad por fiabilidad. 

2. Vulnerable a ataques DoS

El apretón de manos en tres pasos de TCP lo hace vulnerable a los ataques DoS o DDoS. Un tipo de ataque es el SYN flood, donde una entidad maliciosa inutiliza un servidor inundándolo con paquetes SYN. El objetivo de este ataque es saturar el servidor, impidiendo que responda a solicitudes legítimas. 

¿Qué es UDP?

El Protocolo de Datagramas de Usuario (UDP) es un protocolo de comunicación como el TCP que opera en la capa de transporte del modelo OSI. A diferencia del TCP, es un protocolo sin conexión, lo que significa que un cliente no necesita establecer una conexión con el servidor antes de transmitir paquetes de datos. Como resultado, no hay un apretón de manos en tres pasos, control de flujo ni secuenciación. 

A UDP no le importa si los datagramas enviados llegan a su destino o si llegan en el orden en que el cliente los envió. Esto lo hace menos confiable que el TCP pero más rápido ya que no tiene que esperar acuses de recibo ni retransmitir datos. Sin embargo, a UDP le importa la integridad de los datos, y utiliza una suma de comprobación para confirmar que una tercera parte no ha manipulado los datagramas. 

¿Cómo funciona UDP?

Con UDP, el movimiento de datagramas desde su origen hasta su destino es un proceso sencillo. Después de añadir su encabezado a los paquetes IP que recibe de la capa de red, envía datagramas directamente al servidor de destino sin necesidad de establecer ninguna conexión previa. Es la simpleza de este proceso lo que hace que UDP sea un protocolo sin conexión.

Además, UDP es ideal para las comunicaciones sensibles al tiempo donde la pérdida de datos en tránsito es aceptable. Por ejemplo, las comunicaciones de voz y video utilizan UDP.

Ventajas y Desventajas de UDP

La falta de control de flujo y retransmisión de datos en UDP es tanto una ventaja como una desventaja. A continuación, examinamos los pros y contras de usar UDP.

Ventajas

1. Transmisión Rápida de Datos

Como UDP no necesita reconocer los datagramas antes de que el ordenador de destino pueda recibir más y no retransmite datos, es más rápido que TCP. Además, la ausencia de un handshake de tres vías resulta en menos sobrecarga y transmisiones de datos más rápidas.

2. Detección de errores

Al igual que TCP, UDP utiliza un checksum de extremo a extremo para detectar si los datagramas tienen errores. De esta manera, mantiene la integridad de los datos y descarta datagramas con errores. Dado que no hay un mecanismo de retransmisión, UDP no recupera ni reenvía datagramas que descarta. 

Desventajas

1. Inseguro

Las características que hacen fiable una conexión están ausentes en las conexiones UDP. A diferencia de TCP, UDP no garantiza que los datagramas enviados llegarán a su destino. Como resultado, los datagramas no tienen un temporizador y no necesitan ser reconocidos por el dispositivo receptor. Además, no hay garantía de que los datagramas lleguen a su destino en el orden correcto. 

2. Sin control de congestión

UDP no tiene ningún mecanismo para controlar la congestión. Dado que no reconoce los datagramas ni utiliza la ventana para controlar la transmisión de datos, no hay forma de prevenir la congestión. Como resultado, las grandes ráfagas de datos pueden provocar congestiones. 

Diferencias entre TCP y UDP

A continuación, analizaremos las diferencias entre el TCP orientado a la conexión y el UDP sin conexión.

1. Fiabilidad

TCP es un protocolo más fiable comparado con UDP. TCP confirma que un segmento de datos llega a su destino antes de enviar otro. Además, garantiza que los segmentos lleguen en la misma secuencia en que fueron enviados y retransmite los datos que no llegan al destino. Adicionalmente, TCP utiliza el control de flujo para asegurarse de que el cliente no envíe paquetes más rápido de lo que el servidor puede procesarlos. Por el contrario, UDP no hace nada de lo anterior y se preocupa más por transferir datos tan rápido como sea posible.  

2. Velocidad

Las características de TCP que lo hacen fiable también lo hacen más lento que UDP. El saludo de tres vías, el control de flujo, el control de congestión y el mecanismo de retransmisión no son parte de UDP. En consecuencia, con menos sobrecarga, UDP es más rápido que TCP. 

3. Uso

La transferencia de datos orientada a la conexión de TCP la hace adecuada para aplicaciones que requieren fiabilidad y no pueden aceptar la pérdida de datos. Por ejemplo, admite protocolos como HTTP, SSH, FTP, SMTP e IMAP. Por otro lado, la velocidad de UDP la hace adecuada para aplicaciones o protocolos sensibles al tiempo que pueden aceptar la pérdida de datos, como chats de video o audio en vivo, voz sobre IP, solicitudes DNS y juegos en línea. 

Conclusión

TCP y UDP son la base de la comunicación en Internet. Sin estos dos protocolos, sería difícil que los dispositivos conectados a Internet se comunicaran entre sí. TCP es el protocolo preferido si necesitas fiabilidad y precisión. Por otro lado, UDP es el protocolo que necesitas si estás menos preocupado por la pérdida de paquetes de datos y más preocupado por que lleguen rápidamente a su destino.