TCP vs UDP: desmitificando el debate de confiabilidad versus eficiencia

Hoy, vamos a comenzar enfocándonos en TCP. Anteriormente en el capítulo sobre capas, mencionamos un punto importante. En la capa de red y a continuación, se trata más de conexiones de host a host, lo que significa que su computadora necesita saber dónde está otra computadora para conectarse a ella. Sin embargo, la comunicación en una red a menudo es una comunicación entre procesos en lugar de la comunicación entre machas. Por lo tanto, el protocolo TCP introduce el concepto de puerto. Un puerto puede estar ocupado por un solo proceso, que proporciona una comunicación directa entre los procesos de aplicación que se ejecutan en diferentes hosts.

La tarea de la capa de transporte es cómo proporcionar servicios de comunicación directa entre los procesos de aplicación que se ejecutan en diferentes hosts, por lo que también se conoce como un protocolo de extremo a extremo. La capa de transporte oculta los detalles centrales de la red, lo que permite que el proceso de aplicación vea como si hubiera un canal de comunicación lógico de extremo a extremo entre las dos entidades de 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 al otro, los dos procesos tienen que hacer un apretón de manos. HandShake es un proceso lógicamente conectado que garantiza la transmisión confiable y la recepción ordenada de datos. Durante el apretón de manos, se establece una conexión entre los hosts de origen y destino al intercambiar una serie de paquetes de control y acordar algunos parámetros y reglas para garantizar una transmisión de datos exitosa.

¿Qué es TCP? (Mylinking'sTap de la redyCorredor de paquetes de redpodría procesar paquetes TCP o UDP)
TCP (Protocolo de control de transmisión) es un protocolo de comunicación de la capa de transporte basado en el marco de bytes orientado a la conexión.

Orientado a la conexión: Orientada a la conexión significa que la comunicación TCP es uno a uno, es decir, la comunicación de extremo a extremo punto a extremo, a diferencia de UDP, que puede enviar mensajes a múltiples hosts al mismo tiempo, por lo que no se puede lograr una comunicación de uno a muchos.
Confiable: La confiabilidad de TCP asegura que los paquetes se entreguen de manera confiable al receptor independientemente de los cambios en el enlace de la red, lo que hace que el formato de paquetes de protocolo de TCP sea más complejo que el de UDP.
Byte-Stream basado en: La naturaleza de TCP basada en byte-stream permite la transmisión de mensajes de cualquier tamaño y garantía de orden de mensaje: incluso si el mensaje anterior no se ha recibido completamente, e incluso si se han recibido los bytes posteriores, TCP no los entregará a la capa de aplicación para su procesamiento y lanzará automáticamente los paquetes de duplicar.
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, asegurando así la transmisión de datos. El protocolo TCP es responsable de controlar tareas como el establecimiento de la conexión, la desconexión y la tenencia. Cabe señalar que aquí decimos que la línea virtual solo significa establecer una conexión, la conexión del protocolo TCP solo indica que las dos partes pueden iniciar la transmisión de datos y garantizar la confiabilidad de los datos. Los nodos de enrutamiento y transporte son manejados por los dispositivos de red; El protocolo TCP en sí no se ocupa de estos detalles.

Una conexión TCP es un servicio Full-Duplex, lo que significa que el host A y el host B pueden transmitir datos en ambas direcciones en una conexión TCP. Es decir, los datos se pueden transferir entre el host A y el host B en un flujo bidireccional.

TCP almacena temporalmente datos en el búfer de envío de la conexión. Este búfer de envío es uno de los cachés configurados durante el apretón de manos de tres vías. Posteriormente, TCP enviará los datos en el caché de envío al caché de recepción del host de destino en el momento apropiado. En la práctica, cada par tendrá un caché de envío y un caché de recepción, como se muestra aquí:

TCP-UDP

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

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

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

En las redes informáticas, la transmisión de datos entre hosts se lleva a cabo mediante segmentos. Entonces, ¿qué es un segmento de paquetes?

TCP crea un segmento TCP, o segmento de paquetes, dividiendo la corriente entrante en trozos y agregando encabezados TCP a cada fragmento. Cada segmento solo se puede transmitir por una cantidad limitada de tiempo y no puede exceder el tamaño máximo del segmento (MSS). En su camino hacia abajo, un segmento de paquetes pasa a través de la capa de enlace. La capa de enlace tiene una unidad de transmisión máxima (MTU), que es el tamaño máximo del paquete que puede pasar a través de la capa de enlace de datos. La unidad de transmisión máxima generalmente está relacionada con la interfaz de comunicación.

Entonces, ¿cuál es la diferencia entre MSS y MTU?

En las redes informáticas, la arquitectura jerárquica es muy importante porque tiene en cuenta las diferencias entre los diferentes niveles. Cada capa tiene un nombre diferente; En la capa de transporte, los datos se denominan segmento, y en la capa de red, los datos se denominan paquete IP. Por lo tanto, la unidad de transmisión máxima (MTU) puede considerarse como el tamaño máximo del paquete IP que puede ser transmitido por la capa de red, mientras que el tamaño máximo del segmento (MSS) es un concepto de 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 del segmento (MSS) es mayor que la unidad de transmisión máxima (MTU), la fragmentación de IP se realizará en la capa de red, y TCP no dividirá los datos más grandes en segmentos adecuados para el tamaño de MTU. Habrá una sección en la capa de red dedicada a la capa IP.

Estructura de segmento de paquetes TCP
Exploremos el formato y el contenido de los encabezados TCP.

Segmento TCP

Número de secuencia: Un número aleatorio generado por la computadora cuando la conexión se establece como su valor inicial cuando se establece la conexión TCP, y el número de secuencia se envía al receptor a través del paquete SYN. Durante la transmisión de datos, el remitente incrementa el número de secuencia de acuerdo con la cantidad de datos enviados. El receptor juzga la orden de los datos de acuerdo con el número de secuencia recibida. Si los datos se encuentran fuera de orden, el receptor reordenará los datos para garantizar el orden de los datos.

Número de reconocimiento: Este es un número de secuencia utilizado en TCP para reconocer la recepción de datos. Indica el número de secuencia de los siguientes datos que el remitente espera recibir. En una conexión TCP, el receptor determina qué datos se han recibido con éxito en función del número de secuencia del segmento de paquetes de datos recibidos. Cuando el receptor recibe con éxito los datos, envía un paquete ACK al remitente, que contiene el número de reconocimiento de reconocimiento. Después de recibir el paquete ACK, el remitente puede confirmar que los datos antes de reconocer el número de respuesta se han recibido con éxito.

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

Bit ack: Cuando este bit es 1, significa que el campo de respuesta de reconocimiento es válido. TCP especifica que este bit debe establecerse en 1 excepto para los paquetes SYN cuando la conexión se establece inicialmente.
Primero: Cuando este bit es 1, indica que hay una excepción en la conexión TCP y la conexión debe ser obligada a desconectarse.
Syn bit: Cuando este bit se establece en 1, significa que la conexión se establece y el valor inicial del número de secuencia se establece en el campo Número de secuencia.
Bit de aleta: Cuando este bit es 1, significa que no se enviarán más datos en el futuro y se desea la conexión.
Las diversas funciones y características de TCP están incorporadas por la estructura de los segmentos de paquetes TCP.

¿Qué es UDP? (Mylinking'sTap de la redyCorredor de paquetes de redpodría procesar paquetes TCP o UDP)
El protocolo de datagrama del usuario (UDP) es un protocolo de comunicación sin conexión. En comparación con TCP, UDP no proporciona mecanismos de control complejos. El protocolo UDP permite que las aplicaciones envíen directamente paquetes IP encapsulados 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 el protocolo de datagrama de usuarios, y su encabezado es solo ocho bytes (64 bits), lo cual es muy conciso. El formato del encabezado UDP es el siguiente:

Segmento UDP

Puertos de destino y fuente: Su objetivo principal es indicar qué proceso UDP debe enviar paquetes.
Tamaño de paquete: El campo de tamaño del paquete contiene el tamaño del encabezado UDP más el tamaño de los datos
Suma de verificación: Diseñado para garantizar la entrega confiable de los encabezados y datos UDP El papel 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 MyLinking'sTap de la redyCorredor de paquetes de redpodría procesar paquetes TCP o UDP
TCP y UDP son diferentes en los siguientes aspectos:

TCP vs UDP

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

Objeto de servicio: TCP es un servicio de dos puntos uno a uno, es decir, una conexión tiene solo dos puntos finales para comunicarse entre sí. Sin embargo, UDP admite una comunicación interactiva de uno a uno, de uno a muchos y de muchos a muchos, lo que puede comunicarse con múltiples hosts al mismo tiempo.

Fiabilidad: TCP proporciona el servicio de entrega de datos de manera confiable, asegurando que los datos estén libres de errores, sin pérdidas, no duplicados y lleguen a pedido. UDP, por otro lado, hace su mejor esfuerzo y no garantiza una entrega confiable. UDP puede sufrir pérdida de datos y otras situaciones durante la transmisión.

Control de congestión, control de flujo: TCP tiene mecanismos de control de congestión y control de flujo, que pueden ajustar la velocidad de transmisión de datos de acuerdo con las condiciones de la red para garantizar la seguridad y la estabilidad de la transmisión de datos. UDP no tiene mecanismos de control y control de flujo de congestión, incluso si la red está muy congestionada, no hará ajustes a la tasa de envío de UDP.

Encabezado por encima: TCP tiene una longitud de encabezado larga, típicamente 20 bytes, que aumenta cuando se utilizan campos de opción. UDP, por otro lado, tiene un encabezado fijo de solo 8 bytes, por lo que UDP tiene un encabezado más bajo.

TCP vs UDP

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

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

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

Tráfico de baja paquetes, como DNS (sistema de nombres de dominio): Las consultas DNS suelen ser paquetes cortos, y UDP puede completarlas más rápido.
Comunicación multimedia como video y audio: Para la transmisión multimedia con altos requisitos en tiempo real, UDP puede proporcionar una menor latencia para garantizar que los datos puedan transmitirse de manera oportuna.
Comunicación de transmisión: UDP admite una comunicación de uno a muchos y muchos a muchos y puede usarse para la transmisión de mensajes de transmisión.

Resumen
Hoy aprendimos sobre TCP. TCP es un protocolo de comunicación de la capa de transporte basado en la corriente de byte orientado a la conexión. Asegura la transmisión confiable y la recepción ordenada de datos al establecer la conexión, el apretón de manos y el reconocimiento. El protocolo TCP utiliza puertos para realizar la comunicación entre los procesos, y proporciona servicios de comunicación directa para los procesos de aplicación que se ejecutan en diferentes hosts. Las conexiones TCP son Full-Duplex, lo que permite transferencias de datos bidireccionales simultáneas. Por el contrario, UDP es un protocolo de comunicación orientado sin conexión, que no proporciona garantías de confiabilidad y es adecuada para algunos escenarios con altos requisitos en tiempo real. TCP y UDP son diferentes en modo de conexión, objeto de servicio, confiabilidad, control de congestión, control de flujo y otros aspectos, y sus escenarios de aplicación también son diferentes.


Tiempo de publicación: Dic-03-2024