Los protocolos de capa de transporte son una pieza central de las arquitecturas en capas, proporcionan la comunicación lógica entre los procesos de aplicación. Estos procesos utilizan la comunicación lógica para transferir datos de la capa de transporte a la capa de red y esta transferencia de datos debe ser confiable y segura. Los datos se transfieren en forma de paquetes, pero el problema ocurre en la transferencia confiable de datos.
El problema de transferir los datos ocurre no solo en la capa de transporte, sino también en la capa de aplicación y en la capa de enlace. Este problema ocurre cuando un servicio confiable se ejecuta en un servicio no confiable. Por ejemplo, TCP (Protocolo de control de transmisión) es un protocolo de transferencia de datos confiable que se implementa sobre una capa no confiable, es decir, el Protocolo de Internet (IP) es un protocolo de extremo a extremo. Protocolo de capa de red.
En este modelo, hemos diseñado los lados emisor y receptor de un protocolo sobre un canal confiable. En la transferencia confiable de datos, la capa recibe los datos de la capa anterior, divide el mensaje en forma de segmento y coloca el encabezado en cada segmento y la transferencia. La capa inferior recibe los segmentos y elimina el encabezado de cada segmento y lo convierte en un paquete agregándolo al encabezado.
Los datos que se transfieren desde arriba no tienen bits de datos transferidos corruptos o perdidos, y todos se entregan en la misma secuencia en la que se enviaron a la capa inferior. Este es un protocolo de transferencia de datos confiable. Este modelo de servicio lo ofrece TCP a las aplicaciones de Internet que invocan esta transferencia de datos.
De manera similar, en un canal no confiable, hemos diseñado el lado de envío y recepción. El lado de envío del protocolo se llama desde la capa anterior a rdt_send(), luego pasará los datos que se entregarán a la capa de aplicación en el lado de recepción (aquí, rdt-send() es una función para enviar datos donde rdt significa protocolo de transferencia de datos confiable y _send() se usa para el lado de envío).
En el lado receptor, rdt_rcv() (rdt_rcv() es una función para recibir datos donde -rcv() se usa para el lado receptor), se llamará cuando llegue un paquete desde el lado receptor del canal no confiable. Cuando el protocolo rdt quiere entregar datos a la capa de aplicación, lo hará llamando a deliver_data() (donde deliver_data() es una función para entregar datos a la capa superior).
En el protocolo de transferencia de datos confiable, solo consideramos el caso de la transferencia de datos unidireccional, es decir, la transferencia de datos desde el lado de envío al lado de recepción (es decir, solo en una dirección). En caso de bidireccional (dúplex completo o transferencia de datos en ambos lados), la transferencia de datos es conceptualmente más difícil. Aunque solo consideramos la transferencia de datos unidireccional, es importante tener en cuenta que los lados de envío y recepción de nuestro protocolo necesitarán transmitir paquetes en ambas direcciones, como se muestra en la figura anterior.
Para intercambiar paquetes que contengan los datos que se necesitan transferir, ambos lados (envío y recepción) de rdt también deben intercambiar paquetes de control en ambas direcciones (es decir, de ida y vuelta), ambos lados de rdt envían paquetes al otro lado mediante una llamada a udt_send() (udt_send() es una función utilizada para enviar datos al otro lado donde udt significa protocolo de transferencia de datos no confiable).
Publicación traducida automáticamente
Artículo escrito por shubhirockzz998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA