Las redes de datos e Internet brindan soporte a la red humana
al proporcionar la comunicación continua y confiable entre las personas, tanto
de manera local como alrededor del mundo. En un único dispositivo, las personas
pueden utilizar varios servicios como e-mails, la Web y la mensajería
instantánea para enviar mensajes o recuperar información.
Los datos de cada una de estas aplicaciones se empaquetan,
transportan y entregan al daemon de servidor o aplicación adecuados en el
dispositivo de destino. Los procesos descritos en la capa de Transporte del
modelo OSI aceptan los datos de la capa de Aplicación y los preparan para el
direccionamiento en la capa de Red. La capa de Transporte es responsable de la
transferencia de extremo a extremo general de los datos de aplicación.
La capa de Transporte cuando se encapsulan los datos de
aplicación para usarse en la capa de Red. La capa de Transporte incluye también
las siguientes funciones:
·
permitir
múltiples aplicaciones para comunicarse a través de la red al mismo tiempo en
un solo dispositivo,
·
asegurar
que, si se requiere, todos los datos sean recibidos de manera confiable y en
orden por la aplicación correcta, y
·
emplear
mecanismos de manejo de error.
Objetivos de aprendizaje
-
Podrá
realizar tareas relacionadas con:
-
Explicar
la necesidad de la capa de Transporte.
-
Identificar
la función de la capa de Transporte a medida que provee la transferencia de
datos de extremo a extremo entre las aplicaciones.
-
Describir
las funciones de dos protocolos TCP/IP de la capa de transporte: TCP y UDP.
-
Explicar
las funciones clave de la capa de Transporte incluyendo confiabilidad,
direccionamiento de puerto y segmentación.
-
Explicar
cómo cada TCP y UDP maneja las funciones clave.
-
Identificar
cuándo es apropiado usar TCP o UDP y proveer ejemplos de aplicaciones que usan
cada protocolo.
4.1. 1 Propósito de la
capa de transporte
La capa de Transporte 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.
Seguimiento de
Conversaciones individuales
Cualquier host puede tener múltiples aplicaciones que se
están comunicando a través de la red. Cada una de estas aplicaciones se
comunicará con una o más aplicaciones en hosts remotos. Es responsabilidad de
la capa de Transporte mantener los diversos streams de comunicación entre estas
aplicaciones.
Segmentación de datos
Debido a que cada aplicación genera un stream de datos para
enviar a una aplicación remota, estos datos deben prepararse para ser enviados
por los medios en partes manejables. Los protocolos de la capa de Transporte
describen los servicios que segmentan estos datos de la capa de Aplicación.
Esto incluye la encapsulación necesaria en cada sección de datos.
Reensamble de segmentos
En el host de recepción, cada sección de datos puede ser
direccionada a la aplicación adecuada. Además, estas secciones de datos
individuales también deben reconstruirse para generar un stream completo de
datos que sea útil para la capa de Aplicación. Los protocolos de la capa de
Transporte describen cómo se utiliza la información de encabezado de dicha capa
para reensamblar las secciones de datos en streams y enviarlas a la capa de
Aplicación.
Identificación de las
aplicaciones
Para poder transferir los streams de datos a las aplicaciones
adecuadas, la capa de Transporte debe identificar la aplicación de destino.
Para lograr esto, la capa de Transporte asigna un identificador a la
aplicación. Los protocolos TCP/IP denominan a este identificador número de puerto.
A todos los procesos de software que requieran acceder a la red se les asigna
un número de puerto exclusivo en ese host. Este número de puerto se utiliza en
el encabezado de la capa de Transporte para indicar con qué aplicación está
asociada esa sección de datos.
En las redes convergentes actuales, las aplicaciones con
distintas necesidades de transporte pueden comunicarse en la misma red. Los
distintos protocolos de la capa de Transporte poseen distintas reglas que
permiten que los dispositivos gestionen los diversos requerimientos de datos.
Algunos protocolos proporcionan sólo las funciones básicas
para la entrega eficiente de las secciones de datos entre las aplicaciones
adecuadas. Estos tipos de protocolos son útiles para aquellas aplicaciones cuyos
datos son sensibles a las demoras.
Otros protocolos de la capa de Transporte describen procesos
que brindan funciones adicionales, como asegurar la entrega confiable entre las
aplicaciones
Separación de
comunicaciones múltiples
Considere una computadora conectada a una red que recibe y
envía e-mails y mensajes instantáneos, explora sitios Web y realiza una llamada
telefónica de VoIP de manera simultánea. Cada una de estas aplicaciones envía y
recibe datos en la red al mismo tiempo.
Además, los usuarios precisan que un e-mail o una página Web
sean recibidos y presentados de manera completa para que la información sea
considerada útil.
Por el contrario, la pérdida ocasional de pequeñas partes de
una conversación telefónica puede considerarse aceptable. Se puede inferir la
parte de audio perdida del contexto de la conversación o se puede solicitar a
la otra persona que repita lo que dijo.
La segmentación de los
datos, que cumple con los protocolos de la capa de Transporte, proporciona los
medios para enviar y recibir datos cuando se ejecutan varias aplicaciones de
manera concurrente en una computadora. Sin segmentación, sólo una aplicación,
la corriente de vídeo por ejemplo, podría recibir datos.
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.
Para identificar todos los segmentos de datos, la capa de
Transporte agrega un encabezado a la sección que contiene datos binarios. Este
encabezado contiene campos de bits. Son los valores de estos campos los que
permiten que los distintos protocolos de la capa de Transporte lleven a cabo
las diversas funciones.
4.1.2 Control de las
conversaciones
Las funciones principales especificadas por todos los
protocolos de la capa de Transporte incluyen:
Segmentación y
reensamblaje: La
mayoría de las redes poseen una limitación en cuanto a la cantidad de datos que
pueden incluirse en una única PDU (Unidad de datos del protocolo). La capa de
Transporte divide los datos de aplicación en bloques de datos de un tamaño
adecuado. Multiplexación de
conversaciones: Pueden existir varias aplicaciones o servicios ejecutándose
en cada host de la red.
Establecimiento de una
sesión
La capa de Transporte puede brindar esta orientación a la
conexión creando una sesión entre las aplicaciones. Estas conexiones preparan
las aplicaciones para que se comuniquen entre sí antes de que se transmitan los
datos. Dentro de estas sesiones, se pueden gestionar de cerca los datos para la
comunicación entre dos aplicaciones.
Entrega confiable
Por varias razones, es posible que una sección de datos se
corrompa o se pierda por completo a medida que se transmite a través de la red.
La capa de Transporte puede asegurar que todas las secciones lleguen a destino
al contar con el dispositivo de origen para volver a transmitir los datos que
se hayan perdido.
Entrega en el mismo
orden
Ya que las redes proveen rutas múltiples que pueden poseer
distintos tiempos de transmisión, los datos pueden llegar en el orden
incorrecto.
Control del flujo
Los hosts de la red cuentan con recursos limitados, como
memoria o ancho de banda. Cuando la capa de Transporte advierte que estos
recursos están sobrecargados, algunos protocolos pueden solicitar que la
aplicación que envía reduzca la velocidad del flujo de datos
4.1.3 Soporte de la
comunicación confiable
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.
Esto requiere que los procesos de la capa de Transporte de
origen mantengan el seguimiento de todas las porciones de datos de cada
conversación y retransmitan cualquiera de los datos que no dieron acuse de
recibo por el destino.
Estos procesos de confiabilidad generan un uso adicional de
los recursos de la red debido al reconocimiento, rastreo y retransmisión.
Esto genera un equilibrio ("trade-off") entre el
valor de confiabilidad y la carga que representa para la red. Los
desarrolladores de aplicaciones deben elegir qué tipo de protocolo de
transporte es adecuado en base a los requerimientos de sus aplicaciones
Determinación de la
necesidad de confiabilidad
Las aplicaciones, como bases de datos, las páginas Web y los
e-mails, requieren que todos los datos enviados lleguen al destino en su
condición original, de manera que los mismos sean útiles. Todos los datos
perdidos pueden corromper una comunicación y dejarla incompleta o ilegible. El
uso de recursos de red adicionales se considera necesario para estas
aplicaciones.
Otras aplicaciones son más tolerantes en lo que se refiere a
la pérdida de pequeñas cantidades de datos.
Imponer el uso de recursos adicionales para asegurar la
confiabilidad para esta aplicación puede reducir la utilidad de la misma. La
imagen en un streaming vídeo se degradaría en gran medida si el dispositivo de
destino tuvo que dar cuenta de los datos perdidos y demorar el stream mientras
espera que lleguen. Es conveniente proporcionar la mejor imagen posible al
momento en que llegan los segmentos y renunciar a la confiabilidad.
4.1.4 TCP Y UDP
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.
Protocolo de datagramas
de usuario (UDP)
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".
Entre las aplicaciones que utilizan UDP se incluyen:
-
sistema
de nombres de dominios (DNS),
-
streaming
de vídeo, y
-
Voz
sobre IP (VoIP).
-
Protocolo
de control de transmisión (TCP)
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.
Las aplicaciones que utilizan TCP son:
·
exploradores
Web,
·
e-mail,
y
·
transferencia
de archivos
4.1.5 Direccionamiento
del puerto
Identificación de las conversaciones
Considere el ejemplo anterior de una computadora que recibe y
envía e-mails, mensajes instantáneos, páginas Web y llamadas telefónicas VoIP
de manera simultánea.
Los servicios basados en TCP y UDP mantienen un seguimiento
de las varias aplicaciones que se comunican. Para diferenciar los segmentos y
datagramas para cada aplicación, tanto TCP como UDP cuentan con campos de
encabezado que pueden identificar de manera exclusiva estas aplicaciones. Estos
identificadores únicos son los números de los puertos.
En el encabezado de cada segmento o datagrama hay un puerto
de origen y destino. Cuando una aplicación de cliente envía una solicitud a una
aplicación de servidor, el puerto de destino contenido en el encabezado es el
número de puerto que se asigna al daemon de servicio que se ejecuta en el host
remoto. El software del cliente debe conocer el número de puerto asociado con
el proceso del servidor en el host remoto. Este número de puerto de destino se
puede configurar, ya sea de forma predeterminada o manual.
El puerto de origen del encabezado de un segmento o datagrama
de un cliente se genera de manera aleatoria. La combinación del número de
puerto de la capa de Transporte y de la dirección IP de la capa de Red asignada
al host identifica de manera exclusiva un proceso en particular que se ejecuta
en un dispositivo host específico. Esta combinación se denomina socket.
Eventualmente, los términos número de puerto y socket se utilizan en forma
indistinta. Por ejemplo, una solicitud de página Web HTTP que se envía a un
servidor Web (puerto 80) y que se ejecuta en un host con una dirección IPv4 de
Capa 3 192.168.1.20 será destinada al socket 192.168.1.20:80.
Si el explorador Web que solicita la página Web se ejecuta en
el host 192.168.100.48 y el número de puerto dinámico asignado al explorador
Web es 49.152, el socket para la página Web será 192.168.100.48:49152.
La Autoridad de números asignados de Internet (IANA) asigna
números de puerto. IANA es un organismo de estándares responsable de la
asignación de varias normas de direccionamiento.
Existen distintos tipos
de números de puerto:
Puertos bien conocidos (Números del 0 al 1 023): estos
números se reservan para servicios y aplicaciones. Por lo general, se utilizan
para aplicaciones como HTTP (servidor Web), POP3/SMTP (servidor de e-mail) y
Telnet. Al definir estos puertos conocidos para las aplicaciones del servidor,
las aplicaciones del cliente pueden ser programadas para solicitar una conexión
a un puerto específico y su servicio asociado.
Puertos Registrados (Números 1024 al 49151): estos números de
puertos están asignados a procesos o aplicaciones del usuario.
Puertos dinámicos o privados (Números del 49 152 al
65 535): también conocidos como puertos efímeros, suelen asignarse de
manera dinámica a aplicaciones de cliente cuando se inicia una conexión. No es
muy común que un cliente se conecte a un servicio utilizando un puerto dinámico
o privado (aunque algunos programas que comparten archivos punto a punto lo
hacen).
Utilización de los dos
protocolos TCP y UDP
Algunas aplicaciones pueden utilizar los dos protocolos: TCP
y UDP. Por ejemplo, el bajo gasto de UDP permite que DNS atienda rápidamente
varias solicitudes de clientes. Sin embargo, a veces el envío de la información
solicitada puede requerir la confiabilidad de TCP. A veces es necesario conocer
las conexiones TCP activas que están abiertas y en ejecución en el host de red.
Netstat es una utilidad de red importante que puede usarse para verificar esas
conexiones. Netstat indica el protocolo en uso, la dirección y el número de puertos
locales, la dirección y el número de puertos ajenos y el estado de la conexión.
Las conexiones TCP no descritas pueden representar una
importante amenaza a la seguridad. Esto se debe a que pueden indicar que algo o
alguien está conectado al host local. Además, las conexiones TCP innecesarias
pueden consumir recursos valiosos del sistema y por lo tanto disminuir el
rendimiento del host. Netstat debe utilizarse para determinar las conexiones
abiertas de un host cuando el rendimiento parece estar comprometido.
Existen muchas opciones útiles para el comando netstat.
4.1.6 Segmentación y
reensamblaje
En el host de destino, este proceso se invierte hasta que los
datos puedan enviarse a la aplicación.
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. 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.
La información puede llegar en un orden distinto al que fue
transmitida, ya que los paquetes pueden tomar diversas rutas a través de la
red. Una aplicación que utiliza UDP debe tolerar el hecho de que los datos no
lleguen en el orden en el que fueron enviados.
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, y
·
control
del flujo.
No hay comentarios:
Publicar un comentario