TCP vs. UDP: Desmitificando el debate entre fiabilidad y eficiencia.

Hoy comenzaremos centrándonos en TCP. Anteriormente, en el capítulo sobre capas, mencionamos un punto importante. En la capa de red y las capas inferiores, se priorizan las conexiones entre hosts, lo que significa que tu ordenador necesita saber dónde se encuentra otro ordenador para conectarse a él. Sin embargo, la comunicación en una red suele ser entre procesos, en lugar de entre máquinas. Por lo tanto, el protocolo TCP introduce el concepto de puerto. Un puerto solo puede ser ocupado por un proceso, lo que permite la comunicación directa entre procesos de aplicación que se ejecutan en diferentes hosts.

La función de la capa de transporte es proporcionar servicios de comunicación directa entre procesos de aplicación que se ejecutan en diferentes hosts, por lo que también se la conoce como protocolo de extremo a extremo. La capa de transporte oculta los detalles internos de la red, permitiendo que el proceso de aplicación perciba un canal de comunicación lógico de extremo a extremo entre las dos entidades de la capa de transporte.

TCP significa Protocolo de Control de Transmisión y se conoce como un protocolo orientado a la conexión. Esto significa que antes de que una aplicación pueda comenzar a enviar datos a otra, ambos procesos deben realizar un intercambio de claves (handshake). El intercambio de claves es un proceso lógicamente conectado que garantiza la transmisión confiable y la recepción ordenada de datos. Durante el intercambio de claves, se establece una conexión entre los hosts de origen y destino mediante el intercambio de una serie de paquetes de control y el acuerdo sobre ciertos parámetros y reglas para asegurar una transmisión de datos exitosa.

¿Qué es TCP? (MylinkingConexión de redyAgente de paquetes de redPuede procesar paquetes TCP o UDP.)
TCP (Protocolo de Control de Transmisión) es un protocolo de comunicación de capa de transporte basado en flujo de bytes, fiable y orientado a la conexión.

Orientado a la conexión: Orientado a la conexión significa que la comunicación TCP es uno a uno, es decir, comunicación de extremo a extremo punto a punto, a diferencia de UDP, que puede enviar mensajes a múltiples hosts al mismo tiempo, por lo que no se puede lograr la comunicación uno a muchos.
ConfiableLa fiabilidad de TCP garantiza que los paquetes se entreguen de forma fiable al receptor independientemente de los cambios en el enlace de red, lo que hace que el formato de paquete del protocolo TCP sea más complejo que el de UDP.
Basado en flujo de bytesLa naturaleza basada en flujo de bytes de TCP permite la transmisión de mensajes de cualquier tamaño y garantiza el orden de los mensajes: incluso si el mensaje anterior no se ha recibido por completo, e incluso si se han recibido los bytes subsiguientes, TCP no los entregará a la capa de aplicación para su procesamiento y descartará automáticamente los paquetes duplicados.
Una vez que el host A y el host B han establecido una conexión, la aplicación solo necesita usar la línea de comunicación virtual para enviar y recibir datos, garantizando así la transmisión. El protocolo TCP se encarga de controlar tareas como el establecimiento, la desconexión y el mantenimiento de la conexión. Cabe destacar que aquí decimos que la línea virtual solo se refiere al establecimiento de una conexión; la conexión según el protocolo TCP solo indica que ambos extremos pueden iniciar la transmisión de datos y garantiza la fiabilidad de los mismos. Los dispositivos de red gestionan los nodos de enrutamiento y transporte; el protocolo TCP no se ocupa de estos detalles.

Una conexión TCP es un servicio dúplex completo, lo que significa que el host A y el host B pueden transmitir datos en ambas direcciones. Es decir, los datos pueden transferirse entre el host A y el host B en un flujo bidireccional.

TCP almacena temporalmente los datos en el búfer de envío de la conexión. Este búfer de envío es una de las cachés que se configuran durante el protocolo de enlace de tres vías. Posteriormente, TCP enviará los datos de la caché de envío a la caché de recepción del host de destino en el momento adecuado. En la práctica, cada par tendrá una caché de envío y una caché de recepción, como se muestra aquí:

TCP-UDP

El búfer de envío es un área de memoria gestionada por la implementación TCP en el lado del remitente, que se utiliza para almacenar temporalmente los datos que se enviarán. Cuando se realiza el protocolo de enlace de tres vías para establecer una conexión, se configura la caché de envío y se utiliza para almacenar los datos. El búfer de envío se ajusta dinámicamente según la congestión de la red y la información del receptor.

Un búfer de recepción es un área de memoria mantenida por la implementación TCP en el lado receptor que se utiliza para almacenar temporalmente los datos recibidos. TCP almacena los datos recibidos en la caché de recepción y espera a que la aplicación superior los lea.

Tenga en cuenta que el tamaño de la caché de envío y de la caché de recepción es limitado; cuando la caché está llena, TCP puede adoptar algunas estrategias, como el control de congestión, el control de flujo, etc., para garantizar una transmisión de datos fiable y la estabilidad de la red.

En las redes informáticas, la transmisión de datos entre hosts se realiza mediante segmentos. ¿Qué es, entonces, un segmento de paquete?

TCP crea un segmento TCP, o segmento de paquete, dividiendo el flujo entrante en fragmentos y añadiendo encabezados TCP a cada uno. Cada segmento solo puede transmitirse durante un tiempo limitado y no puede exceder el tamaño máximo de segmento (MSS). En su recorrido, un segmento de paquete pasa por la capa de enlace. La capa de enlace tiene una unidad de transmisión máxima (MTU), que es el tamaño máximo de paquete que puede atravesar la capa de enlace de datos. La unidad de transmisión máxima suele estar relacionada con la interfaz de comunicación.

¿Cuál es la diferencia entre MSS y MTU?

En las redes informáticas, la arquitectura jerárquica es fundamental, ya que considera las diferencias entre los distintos niveles. Cada capa tiene un nombre diferente: en la capa de transporte, los datos se denominan segmentos, y en la capa de red, paquetes IP. Por lo tanto, la Unidad Máxima de Transmisión (MTU) puede entenderse como el tamaño máximo de paquete IP que puede transmitir la capa de red, mientras que el Tamaño Máximo de Segmento (MSS) es un concepto de la capa de transporte que se refiere a la cantidad máxima de datos que puede transmitir un paquete TCP a la vez.

Tenga en cuenta que cuando el tamaño máximo de segmento (MSS) sea mayor que la unidad de transmisión máxima (MTU), la fragmentación IP se realizará en la capa de red y TCP no dividirá los datos de mayor tamaño en segmentos adecuados para el tamaño de la MTU. Habrá una sección sobre la capa de red dedicada a la capa IP.

Estructura del segmento de paquete TCP
Exploremos el formato y el contenido de las cabeceras TCP.

Segmento TCP

Número de secuenciaEl número de secuencia es un número aleatorio generado por el ordenador al establecer la conexión TCP. Este número se envía al receptor mediante el paquete SYN. ​​Durante la transmisión de datos, el remitente incrementa el número de secuencia según la cantidad de datos enviados. El receptor determina el orden de los datos basándose en el número de secuencia recibido. Si los datos se encuentran desordenados, el receptor los reordenará para garantizar su correcto orden.

Número de acuse de reciboEste es un número de secuencia utilizado en TCP para confirmar la recepción de datos. Indica el número de secuencia del siguiente dato que el remitente espera recibir. En una conexión TCP, el receptor determina qué datos se han recibido correctamente basándose en el número de secuencia del segmento del paquete de datos recibido. Cuando el receptor recibe los datos correctamente, envía un paquete ACK al remitente, que contiene el número de acuse de recibo. Tras recibir el paquete ACK, el remitente puede confirmar que los datos, antes de confirmar el número de respuesta, se han recibido correctamente.

Los bits de control de un segmento TCP incluyen lo siguiente:

bit ACKCuando este bit es 1, significa que el campo de respuesta de acuse de recibo es válido. TCP especifica que este bit debe estar configurado en 1, excepto para los paquetes SYN cuando se establece la conexión inicialmente.
Bit RST: Cuando este bit es 1, indica que hay una excepción en la conexión TCP y que se debe forzar la desconexión de la conexión.
bit SYN: Cuando este bit se establece en 1, significa que se va a establecer la conexión y se establece el valor inicial del número de secuencia en el campo del número de secuencia.
broca FIN: Cuando este bit es 1, significa que no se enviarán más datos en el futuro y que se desea finalizar la conexión.
Las diversas funciones y características de TCP están plasmadas en la estructura de los segmentos de paquetes TCP.

¿Qué es UDP? (Mylinking'sConexión de redyAgente de paquetes de redpodía procesar paquetes TCP o UDP)
El Protocolo de Datagramas de Usuario (UDP) es un protocolo de comunicación sin conexión. A diferencia de TCP, UDP no ofrece mecanismos de control complejos. El protocolo UDP permite que las aplicaciones envíen paquetes IP encapsulados directamente sin establecer una conexión. Cuando el desarrollador elige usar UDP en lugar de TCP, la aplicación se comunica directamente con la IP.

El nombre completo del protocolo UDP es Protocolo de Datagramas de Usuario, y su encabezado consta de tan solo ocho bytes (64 bits), lo que resulta muy conciso. El formato del encabezado UDP es el siguiente:

segmento UDP

Puertos de destino y de origenSu propósito principal es indicar a qué proceso debe enviar paquetes UDP.
Tamaño del paquete: El campo tamaño del paquete contiene el tamaño del encabezado UDP más el tamaño de los datos.
Suma de verificaciónDiseñado para garantizar la entrega confiable de encabezados y datos UDP. La función de la suma de verificación es detectar si se ha producido un error o corrupción durante la transmisión de un paquete UDP para garantizar la integridad de los datos.

Diferencias entre TCP y UDP en MylinkingConexión de redyAgente de paquetes de redPuede procesar paquetes TCP o UDP.
TCP y UDP se diferencian en los siguientes aspectos:

TCP frente a UDP

ConexiónTCP es un protocolo de transporte orientado a la conexión que requiere que se establezca una conexión antes de que se puedan transferir datos. UDP, por otro lado, no requiere conexión y puede transferir datos inmediatamente.

Objeto de servicioTCP es un protocolo de comunicación bidireccional uno a uno; es decir, una conexión solo tiene dos extremos para comunicarse entre sí. En cambio, UDP admite comunicación interactiva uno a uno, uno a muchos y muchos a muchos, lo que permite comunicarse con varios hosts simultáneamente.

FiabilidadTCP proporciona un servicio de entrega de datos fiable, garantizando que los datos estén libres de errores, pérdidas y duplicados, y que lleguen a demanda. UDP, por otro lado, se esfuerza al máximo, pero no garantiza una entrega fiable. UDP puede sufrir pérdidas de datos y otras situaciones durante la transmisión.

Control de congestión, control de flujoTCP cuenta con mecanismos de control de congestión y de flujo que ajustan la velocidad de transmisión de datos según las condiciones de la red para garantizar la seguridad y la estabilidad de la transmisión. UDP, en cambio, carece de estos mecanismos, por lo que, incluso en redes muy congestionadas, no ajusta la velocidad de envío.

encabezado superiorTCP tiene una cabecera larga, normalmente de 20 bytes, que aumenta cuando se utilizan campos de opciones. UDP, en cambio, tiene una cabecera fija de solo 8 bytes, por lo que UDP tiene una menor sobrecarga de cabecera.

TCP frente a UDP

Escenarios de aplicación TCP y UDP:
TCP y UDP son dos protocolos de capa de transporte diferentes, y presentan algunas diferencias en los escenarios de aplicación.

Dado que TCP es un protocolo orientado a la conexión, se utiliza principalmente en escenarios donde se requiere una entrega de datos confiable. Algunos casos de uso comunes incluyen:

Transferencia de archivos FTPTCP puede garantizar que los archivos no se pierdan ni se corrompan durante la transferencia.
HTTP/HTTPSTCP garantiza la integridad y la corrección del contenido web.
Debido a que UDP es un protocolo sin conexión, no ofrece garantía de confiabilidad, pero posee las características de eficiencia y tiempo real. UDP es adecuado para los siguientes escenarios:

Tráfico de paquetes pequeños, como DNS (Sistema de nombres de dominio)Las consultas DNS suelen ser paquetes cortos, y UDP puede completarlas más rápidamente.
Comunicación multimedia como vídeo y audioPara la transmisión multimedia con altos requisitos de tiempo real, UDP puede proporcionar una latencia menor para garantizar que los datos se transmitan de manera oportuna.
comunicación de difusiónUDP admite la comunicación de uno a muchos y de muchos a muchos, y puede utilizarse para la transmisión de mensajes de difusión.

Resumen
Hoy aprendimos sobre TCP. TCP es un protocolo de comunicación de capa de transporte basado en flujo de bytes, confiable y orientado a la conexión. Garantiza la transmisión confiable y la recepción ordenada de datos mediante el establecimiento de la conexión, el intercambio de claves y la confirmación. El protocolo TCP utiliza puertos para la comunicación entre procesos y proporciona servicios de comunicación directa para aplicaciones que se ejecutan en diferentes hosts. Las conexiones TCP son dúplex completo, lo que permite transferencias de datos bidireccionales simultáneas. En contraste, UDP es un protocolo de comunicación sin conexión, que no ofrece garantías de confiabilidad y es adecuado para algunos escenarios con altos requisitos de tiempo real. TCP y UDP difieren en el modo de conexión, el objeto de servicio, la confiabilidad, el control de congestión, el control de flujo y otros aspectos, y sus escenarios de aplicación también son diferentes.


Fecha de publicación: 3 de diciembre de 2024