Este capítulo trata sobre la capa de
Transporte del modelo OSI, esta capa permite la segmentación de datos y brinda
el control necesario para reensamblar las partes dentro de los distintos
streams de comunicación. Las responsabilidades principales que debe cumplir
son:
·
Seguimiento de la comunicación individual entre aplicaciones en
los hosts origen y destino,
·
Segmentación de datos y gestión de cada porción,
·
Reensamble de segmentos en flujos de datos de aplicación, e
·
Identificación de las diferentes aplicaciones.
En la capa de transporte existen varios
protocolos debido a que las distintas aplicaciones poseen distintos
requerimientos. Para algunas aplicaciones, los segmentos deben llegar en una
secuencia específica de manera que puedan ser procesados en forma exitosa. En
algunos casos, todos los datos deben recibirse para ser utilizados por
cualquiera de las mismas. En otros casos, una aplicación puede tolerar cierta
pérdida de datos durante la transmisión a través de la red.
La capa de Transporte segmenta los datos y
administra la separación de datos para diferentes aplicaciones. Las
aplicaciones múltiples que se ejecutan en un dispositivo reciben los datos
correctos.
En la capa de Transporte, cada conjunto de
secciones en particular que fluyen desde una aplicación de origen a una de
destino se conoce como conversación.
Las funciones principales especificadas por
todos los protocolos de la capa de Transporte incluyen:
·
Segmentación y reensamblaje
·
Multiplexación de conversaciones
Además de utilizar la información contenida
en los encabezados para las funciones básicas de segmentación y reensamblaje de
datos, algunos protocolos de la capa de Transporte proveen:
·
Conversaciones orientadas a la conexión.
·
Entrega confiable.
·
Reconstrucción ordenada de datos.
·
Control del flujo.
Cabe recordar que la función principal de la
capa de Transporte es administrar los datos de aplicación para las
conversaciones entre hosts. Sin embargo, las diferentes aplicaciones tienen
diferentes requerimientos para sus datos y, por lo tanto, se han desarrollado
diferentes protocolos de Transporte para satisfacer estos requerimientos.
Un protocolo de la capa de Transporte puede
implementar un método para asegurar la entrega confiable de los datos. En
términos de redes, confiabilidad significa asegurar que cada sección de datos
que envía el origen llegue al destino. En la capa de Transporte, las tres
operaciones básicas de confiabilidad son:
·
Seguimiento de datos transmitidos,
·
Acuse de recibo de los datos recibidos, y
·
Retransmisión de cualquier dato sin acuse de recibo.
Los dos protocolos más comunes de la capa de
Transporte del conjunto de protocolos TCP/IP son el Protocolo de control de
transmisión (TCP) y el Protocolos de datagramas de usuario (UDP). Ambos
protocolos gestionan la comunicación de múltiples aplicaciones. Las diferencias
entre ellos son las funciones específicas que cada uno implementa.
UDP es un protocolo simple, sin conexión, descrito
en la RFC 768. Cuenta con la ventaja de proveer la entrega de datos sin
utilizar muchos recursos. Las porciones de comunicación en UDP se llaman
datagramas. Este protocolo de la capa de Transporte envía estos datagramas como
"mejor intento".
TCP es un protocolo orientado a la conexión,
descrito en la RFC 793. TCP incurre en el uso adicional de recursos para
agregar funciones. Las funciones adicionales especificadas por TCP están en el
mismo orden de entrega, son de entrega confiable y de control de flujo. Cada
segmento de TCP posee 20 bytes de carga en el encabezado, que encapsulan los
datos de la capa de Aplicación, mientras que cada segmento UDP sólo posee 8
bytes de carga. Ver la figura para obtener una comparación.
Los datos de las distintas aplicaciones se dirigen
a la aplicación correcta, ya que cada aplicación tiene un número de puerto
único.
Algunas aplicaciones transmiten grandes
cantidades de datos; en algunos casos, varios gigabytes. Resultaría poco
práctico enviar todos estos datos en una sola gran sección. No puede
transmitirse ningún otro tráfico de red mientras se envían estos datos. Una
gran sección de datos puede tardar minutos y hasta horas en enviarse. Además,
si hubiera algún error, el archivo de datos completo se perdería o tendría que
ser reenviado. Los dispositivos de red no cuentan con buffers de memoria lo
suficientemente grandes como para almacenar esa cantidad de datos durante la
transmisión o recepción. El límite varía en función de la tecnología de la red
y del medio físico específico que se utiliza.
Dividir los datos de aplicación en secciones
garantiza que los datos se transmitan dentro de los límites del medio y que los
datos de distintas aplicaciones puedan ser multiplexados en el medio.
TCP y UDP gestionan la segmentación de forma
distinta.
Con TCP, cada encabezado de segmento contiene
un número de secuencia. Este número de secuencia permite que las funciones de
la capa de Transporte del host de destino reensamblen los segmentos en el mismo
orden en el que fueron transmitidos. Esto asegura que la aplicación de destino
cuente con los datos en la forma exacta en la que se enviaron.
A pesar de que los servicios que utilizan UDP
también rastrean las conversaciones entre aplicaciones, no tienen en cuenta el
orden en el que se transmitió la información ni el mantenimiento de la
conexión. No existe número de secuencia en el encabezado UDP. UDP es un diseño
simple y genera menos carga que TCP, lo que produce una transferencia de datos
más rápida.
Los campos del encabezado de TCP habilitan
TCP para suministrar comunicaciones de datos confiables orientados a la
comunicación.
La diferencia clave entre TCP y UDP es la
confiabilidad
La confiabilidad de la comunicación TCP se
lleva a cabo utilizando sesiones orientadas a la conexión. Antes de que un host
que utiliza TCP envíe datos a otro host, la capa de Transporte inicia un
proceso para crear una conexión con el destino. Esta conexión permite el
rastreo de una sesión o stream de comunicación entre los hosts. Este proceso
asegura que cada host tenga conocimiento de la comunicación y se prepare. Una
conversación TCP completa requiere el establecimiento de una sesión entre los
hosts en ambas direcciones.
Esta confiabilidad se logra contando con
campos en el segmento TCP, cada uno con una función específica, como se muestra
en la figura. Estos campos se explicarán más adelante en esta sección.
Los procesos de aplicación se ejecutan en
servidores. Estos procesos esperan hasta que un cliente inicie comunicación con
una solicitud de información o de otros servicios.
Cada proceso de aplicación que se ejecuta en
el servidor es configurado por el administrador del sistema para utilizar un
número de puerto, de forma predeterminada o manual. Un servidor individual no
puede tener dos servicios asignados al mismo número de puerto dentro de los
mismos servicios de la capa de Transporte. Un host que ejecuta una aplicación
de servidor Web y una de transferencia de archivos no puede configurar ambas
para utilizar el mismo puerto (por ejemplo, el puerto TCP 8.080). Cuando una
aplicación de servidor activa se asigna a un puerto específico, este puerto se
considera "abierto" para el servidor. Esto significa que la capa de
Transporte acepta y procesa segmentos direccionados a ese puerto. Toda
solicitud entrante de un cliente direccionada al socket correcto es aceptada y
los datos se envían a la aplicación del servidor. Pueden existir varios puertos
simultáneos abiertos en un servidor, uno para cada aplicación de servidor
activa. Es común que un servidor provea más de un servicio, como un servidor
Web y un servidor FTP, al mismo tiempo.
Cuando dos hosts se comunican utilizando TCP,
se establece una conexión antes de que puedan intercambiarse los datos. Luego
de que se completa la comunicación, se cierran las sesiones y la conexión
finaliza. Los mecanismos de conexión y de sesión habilitan la función de
confiabilidad de TCP.
En conexiones TCP, el host que brinde el
servicio como cliente inicia la sesión al servidor. Los tres pasos para el
establecimiento de una conexión TCP son:
1. El cliente que inicia la conexión envía un
segmento que contiene un valor de secuencia inicial, que actúa como solicitud
para el servidor para comenzar una sesión de comunicación.
2. El servidor responde con un segmento que
contiene un valor de reconocimiento igual al valor de secuencia recibido más 1,
además de su propio valor de secuencia de sincronización. El valor es uno mayor
que el número de secuencia porque el ACK es siempre el próximo Byte u Octeto esperado.
Este valor de reconocimiento permite al cliente unir la respuesta al segmento
original que fue enviado al servidor.
3. El cliente que inicia la conexión responde
con un valor de reconocimiento igual al valor de secuencia que recibió más uno.
Esto completa el proceso de establecimiento de la conexión.
Para cerrar la conexión se debe establecer el
señalizador de control FIN (Finalizar) en el encabezado del segmento. Para
finalizar todas las sesiones TCP de una vía, se utiliza un enlace de dos vías, que
consta de un segmento FIN y un segmento ACK. Por lo tanto, para terminar una
conversación simple admitida por TCP, se requieren cuatro intercambios para
finalizar ambas sesiones.
En esta explicación se usan los términos
cliente y servidor como referencia por simplicidad pero la finalización del
proceso puede ser iniciada por cualquiera de los dos hosts que completen la
sesión:
1. Cuando el cliente no tiene más datos para
enviar al stream, envía un segmento con el señalizador FIN establecido.
2.El servidor envía un ACK para acusar recibo
de Fin y terminar la sesión del cliente al servidor.
3. El servidor envía un FIN al cliente para
finalizar la sesión del servidor al cliente.
4. El cliente responde con un ACK para dar
acuse de recibo de FIN desde el servidor.
Resecuenciamiento de segmentos al orden
transmitido
Cuando los servicios envían datos utilizando
TCP, los segmentos pueden llegar a destinos desordenados. Para que el receptor
comprenda el mensaje original, los datos en estos segmentos se reensamblan en
el orden original. Para lograr esto, se asignan números de secuencia en el
encabezado de cada paquete.
Durante la configuración de la sesión, se
establece un número de secuencia inicial (ISN). Este número de secuencia
inicial representa el valor de inicio para los bytes de esta sesión que se
transmitirán a la aplicación receptora. A medida que se transmiten los datos
durante la sesión, el número de secuencia se incrementa en el número de bytes
que se han transmitido. Este rastreo de bytes de datos permite que cada
segmento se identifique y se envíe acuse de recibo de manera exclusiva. Se
pueden identificar segmentos perdidos.
Una de las funciones de TCP es asegurar que cada
segmento llegue a su destino. Los servicios TCP en el host de destino envían a
la aplicación de origen un acuse de recibo de los datos recibidos.
El número de secuencia y el número de acuse
de recibo del encabezado del segmento se utilizan para confirmar la recepción
de los bytes de datos contenidos en los segmentos. El número de secuencia es el
número relativo de bytes que ha sido transmitido en esta sesión más 1 (que es
el número del primer byte de datos en el segmento actual). TCP utiliza el número
de reconocimiento en segmentos que se vuelven a enviar al origen para indicar
el próximo byte de esta sesión que espera el receptor. Esto se llama acuse de
recibo de expectativa.
Se le informa al origen que el destino ha
recibido todos los bytes de este stream de datos, pero sin incluir, el byte
especificado por el número de acuse de recibo. Se espera que el host emisor
envíe un segmento que utiliza un número de secuencia igual al número de acuse
de recibo.
Manejo de la pérdida de segmentos
Por óptimo que sea el diseño de una red,
siempre se producirán pérdidas ocasionales de datos. Por lo tanto, TCP cuenta
con métodos para gestionar dichas pérdidas de segmentos. Entre los mismos
existe un mecanismo para retransmitir segmentos con datos no reconocidos.
Un servicio de host de destino que utiliza
TCP, por lo general sólo reconoce datos para secuencias de bytes contiguas. Si
uno o más segmentos se pierden, sólo se acusa recibo de los datos de los
segmentos que completan el stream.
Control del flujo
TCP también provee mecanismos para el control
del flujo. El control del flujo contribuye con la confiabilidad de la
transmisión TCP ajustando la tasa efectiva de flujo de datos entre los dos
servicios de la sesión. Cuando el origen advierte que se recibió la cantidad de
datos especificados en los segmentos, puede continuar enviando más datos para
esta sesión.
El campo Tamaño de la ventana en el
encabezado TCP especifica la cantidad de datos que puede transmitirse antes de
que se reciba el acuse de recibo. El tamaño de la ventana inicial se determina
durante el comienzo de la sesión a través del enlace de tres vías.
El mecanismo de retroalimentación de TCP
ajusta la tasa de transmisión de datos efectiva al flujo máximo que la red y el
dispositivo de destino pueden soportar sin sufrir pérdidas. TCP intenta
gestionar la tasa de transmisión de manera que todos los datos se reciban y se
reduzcan las retransmisiones.
Reducción del tamaño de la ventana
Otra forma de controlar el flujo de datos es
utilizar tamaños dinámicos de ventana. Cuando los recursos de la red son
limitados, TCP puede reducir el tamaño de la ventana para lograr que los
segmentos recibidos sean reconocidos con mayor frecuencia. Esto disminuye de
manera efectiva la tasa de transmisión, ya que el origen espera que los datos
sean recibidos con más frecuencia.
El host receptor TCP envía el valor del
tamaño de la ventana al TCP emisor para indicar el número de bytes que está
preparado para recibir como parte de la sesión. Si el destino necesita
disminuir la tasa de comunicación debido a limitaciones de memoria del búfer,
puede enviar un valor de tamaño de la ventana menor al origen como parte de un
acuse de recibo.
UDP es un protocolo simple que provee las
funciones básicas de la capa de Transporte. Genera mucho menos sobrecarga que
TCP, ya que no es orientado a la conexión y no cuenta con los sofisticados
mecanismos de retransmisión, secuenciación y control del flujo.
Esto no significa que las aplicaciones que
utilizan UDP no sean confiables. Sólo quiere decir que estas funciones no son
contempladas por el protocolo de la capa de Transporte y deben implementarse
aparte, si fuera necesario.
Pese a que es relativamente baja la cantidad
total de tráfico UDP que puede encontrarse en una red típica, entre los
protocolos principales de la capa de Aplicación que utilizan UDP se incluyen:
·
Sistema de denominación de dominio (DNS),
·
Protocolo simple de administración de red (SNMP),
·
Protocolo de configuración dinámica de host (DHCP),
·
Protocolo de información de enrutamiento (RIP),
·
Protocolo trivial de transferencia de archivos (TFTP), y
·
Juegos en línea.
No hay comentarios:
Publicar un comentario