Las aplicaciones como
clientes de correo electrónico, exploradores Web y clientes de mensajería
instantánea permiten que las personas utilicen las computadoras y las redes
para enviar mensajes y buscar 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.
En este video, se examina el
rol de 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.
·
-Emplear mecanismos de manejo de error.
La capa de Transporte es el
enlace entre la capa de Aplicación y las capas inferiores, que son responsables
de la transmisión en la red. Esta capa acepta datos de distintas conversaciones
y los transfiere a las capas inferiores como secciones manejables que puedan
ser eventualmente multiplexadas a través del medio.
Las aplicaciones no
necesitan conocer los detalles de operación de la red en uso. Las aplicaciones
generan datos que se envían desde una aplicación a otra sin tener en cuenta el
tipo de host destino, el tipo de medios sobre los que los datos deben viajar,
el paso tomado por los datos, la congestión en un enlace o el tamaño de la red.
Además, las capas inferiores
no tienen conocimiento de que existen varias aplicaciones que envían datos en
la red. Su responsabilidad es entregar los datos al dispositivo adecuado. Luego
la capa de Transporte ordena estas secciones antes de entregarlas a la
aplicación adecuada.
SEGMENTACION Y SEGUIMIENTO
DE CONVERSACIONES
La división de los datos en
partes pequeñas y el envío de estas partes desde el origen hacia el destino
permiten que se puedan entrelazar (multiplexar) distintas comunicaciones en la
misma 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.
SERVICIOS DE LA CAPA DE
TRANSPORTE
La segmentación permite la
multiplexacion de sesiones; las diferentes aplicaciones pueden utilizar la red
al mismo tiempo.
La segmentación de datos
facilita el transporte de datos por parte de las capas de red inferiores. Puede
realizarse la verificación de errores en los datos del segmento para verificar
si el segmento se cambió durante la transmisión.
Establecer una sesión
asegura que la aplicación esté lista para recibir los datos. La entrega en el
mismo orden asegura la entrega secuencial de datos en la forma en que se
enviaron.
La entrega confiable implica
el reenvío de segmentos perdidos para
que se reciban los datos en forma completa. El control del flujo administra la
entrega de datos si se observa saturación en el host.
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.
UDP (Protocolo de Datagramas
de Usuario) 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).
TCP (Protocolo de Control de
Transmisión) 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, email, y transferencia de archivos.
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.
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.
PUERTOS EN EL ENCABEZADO
En el encabezado de cada
segmento o datagrama hay un puerto de origen y destino. El número de puerto de
origen es el número para esta comunicación asociado con la aplicación que
origina la comunicación en el host local. El número de puerto de destino es el
número para esta comunicación asociado con la aplicación de destino en el host
remoto.
Los números de puerto se
asignan de varias maneras, en función de si el mensaje es una solicitud o una
respuesta. Mientras que los procesos en el servidor poseen números de puertos
estáticos asignados a ellos, los clientes eligen un número de puerto de forma
dinámica para cada conversación.
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. Por ejemplo, cuando una aplicación de explorador Web
realiza una solicitud a un servidor Web, el explorador utiliza TCP y el número
de puerto 80 a menos que se especifique otro valor. Esto sucede porque el
puerto TCP 80 es el puerto predeterminado asignado a aplicaciones de servidores
Web. Muchas aplicaciones comunes tienen asignados puertos predeterminados.
El puerto de origen del
encabezado de un segmento o datagrama de un cliente se genera de manera
aleatoria. Siempre y cuando no entre en conflicto con otros puertos en uso en
el sistema, el cliente puede elegir cualquier número de puerto. El número de
puerto actúa como dirección de retorno para la aplicación que realiza la
solicitud. La capa de Transporte mantiene un seguimiento de este puerto y de la
aplicación que generó la solicitud, de manera que cuando se devuelva una
respuesta, pueda ser enviada a la aplicación correcta. El número de puerto de
la aplicación que realiza la solicitud se utiliza como número de puerto de
destino en la respuesta que vuelve del servidor.
Existen distintos tipos de
puertos:
·
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
email) 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.
Estos procesos son principalmente aplicaciones individuales que el usuario
elige instalar en lugar de aplicaciones comunes que recibiría un puerto bien
conocido. Cuando no se utilizan para un recurso del servidor, estos puertos
también pueden utilizarse si un usuario los selecciona de manera dinámica como
puerto de origen.
· 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).
NETSTAT
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.
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 streaming 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.
Luego de establecida la
sesión, el destino envía acuses de recibo al origen por los segmentos que
recibe. Estos acuses de recibo forman la base de la confiabilidad dentro de la
sesión TCP. Cuando el origen recibe un acuse de recibo, reconoce que los datos
se han entregado con éxito y puede dejar de rastrearlos. Si el origen no recibe
el acuse de recibo dentro de un tiempo predeterminado, retransmite esos datos
al destino.
Parte de la carga adicional
que genera el uso de TCP es el tráfico de red generado por los acuses de recibo
y las retransmisiones. El establecimiento de las sesiones genera cargas en
forma de segmentos adicionales intercambiados. También existen cargas
adicionales en los hosts individuales, generadas por la necesidad de mantener
un seguimiento de los segmentos que esperan acuse de recibo y por el proceso de
retransmisión.
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.
ESTABLECIMIENTO Y
FINALIZACION DE LA CONEXIÓN TCP
Cuando dos hosts se
comunican utilizando TCP, se establece una conexión antes de que puedan
intercambiarse los datos.
El host rastrea cada
segmento de datos dentro de una sesión e intercambia información sobre los
datos recibidos por cada host a través de la información del encabezado TCP.
Cada conexión representa dos
streams de comunicación de una vía o sesiones. Para establecer la conexión los
hosts realizan un intercambio de señales de tres vías. Los bits de control en
el encabezado TCP indican el progreso y estado de la conexión. Enlace de tres
vías:
·
-Establece que el dispositivo de destino esté
presente en la red.
· -Verifica que el dispositivo de destino tenga
un servicio activo y esté aceptando las peticiones en el número de puerto de
destino que el cliente que lo inicia intente usar para la sesión.
· -Informa al dispositivo de destino que el
cliente de origen intenta establecer una sesión de comunicación en ese número
de puerto.
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 entender el proceso de
enlace de tres vías, es importante observar los distintos valores que
intercambian los dos hosts. Dentro del encabezado del segmento TCP, existen
seis campos de 1 bit que contienen información de control utilizada para
gestionar los procesos de TCP. Estos campos son los siguientes:
·
URG: Urgente campo de señalizador
significativo,
·
ACK: Campo significativo de acuse de recibo,
·
PSH: Función de empuje,
·
RST: Reconfiguración de la conexión,
·
SYN: Sincronizar números de secuencia,
·
FIN: No hay más datos desde el emisor.
A estos campos se los
denomina señaladores porque el valor de uno de estos campos es sólo de 1 bit,
entonces tiene sólo dos valores: 1 o 0. Si el valor del bit se establece en 1,
indica la información de control que contiene el segmento.
Si se utiliza un proceso de
cuatro pasos, los señalizadores se intercambian para finalizar la conexión TCP.
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:
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.
Cuando la finalización de
sesión del cliente no tiene más datos para transferir, establece el señalizador
FIN en el encabezado de un segmento. Luego, el servidor finaliza la conexión y
envía un segmento normal que contiene datos con el señalizador ACK establecido
utilizando el número de acuse de recibo, confirmando así que se han recibido
todos los bytes de datos. Cuando se produce el acuse de recibo de todos los
segmentos, se cierra la sesión.
La sesión en la otra
dirección se cierra mediante el mismo proceso. El receptor indica que no existen
más datos para enviar estableciendo el señalizador FIN en el encabezado del
segmento enviado al origen. Un acuse de recibo de retorno confirma que todos
los bytes de datos han sido recibidos y, por lo tanto, se ha cerrado la sesión.
Debemos advertir que la finalización del proceso puede ser
iniciada por cualquiera de los dos hosts (servidor o cliente) que completen la
sesión.
REENSAMBLAJE DE SEGMENTOS
TCP
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.
Los números de secuencia de
segmento permiten la confiabilidad indicando cómo reensamblar y reordenar los
segmentos recibidos, como se muestra en la figura.
El proceso TCP receptor
coloca los datos del segmento en un búfer de recepción. Los segmentos se
colocan en el orden de número de secuencia adecuado y se pasa a la capa de
Aplicación cuando son reensamblados. Todos los segmentos que llegan con números
de secuencia no contiguos se mantienen para su procesamiento posterior. Luego,
se procesan los segmentos cuando llegan con los bytes perdidos.
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.
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.
Ya que UDP opera sin
conexión, las sesiones no se establecen antes de que se lleve a cabo la
comunicación, como sucede con TCP. Se dice que UDP es basado en transacciones.
En otras palabras, cuando una aplicación posee datos para enviar, simplemente
los envía.
Cuando se envían múltiples
datagramas a un destino, los mismos pueden tomar rutas distintas y llegar en el
orden incorrecto. UDP no mantiene un seguimiento de los números de secuencia de
la manera en que lo hace TCP. UDP no puede reordenar los datagramas en el orden
de la transmisión. Ver la figura.
Por lo tanto, UDP
simplemente reensambla los datos en el orden en que se recibieron y los envía a
la aplicación. Si la secuencia de los datos es importante para la aplicación,
la misma deberá identificar la secuencia adecuada de datos y determinar cómo
procesarlos.
No hay comentarios:
Publicar un comentario