Los
servicios de transporte son aquellas funciones y datos que suministra el
protocolo a los usuarios ( ya sean aplicaciones u otras entidades ) de
la capa superior .
Hay
servicios orientados a conexión ( mediante datagramas generalmente
) y no orientados a conexión ( pueden ser circuitos virtuales )
. Generalmente , un servicio orientado a conexión es más
seguro y proporciona detección de errores y secuencialidad ( como
en capas más inferiores ) . Pero hay casos en que un servicio no
orientado a conexión es más apropiado , como por ejemplo
:
vRecolección
de datos de entrada :
no es necesaria la conexión constante y además , una pérdida
de datos no es muy significativa ya que más adelante llegarán
nuevos datos .
vDiseminar
datos de salida
: no es necesaria una conexión continua cuando sólo se le
avisa a usuarios u otras entidades de ciertos sucesos .
vPetición-respuesta
: cuando un servidos suministra datos pedidos por varios usuarios no es
necesaria la conexión continua .
vAplicaciones
en tiempo real
.
La
calidad del servicio es una función que el usuario de la capa de
transporte puede solicitar a esta . Por ejemplo , prioridades , retardos
mínimos , niveles bajos de error , etc... Estas funciones las puede
solicitar el usuario final y deben ser tratadas por la capa de transporte
y si no puede , se las debe solicitar a la siguiente capa ( la de internet
y así hacia abajo ) .
Por
ejemplo , el protocolo de transferencia de ficheros ( FTP ) requiere un
gran rendimiento , el protocolo de transacción necesita un retardo
bajo ( consultas en bases de datos ) , el protocolo para correo electrónico
requiere niveles de prioridad , etc...
TCP
implementa esta capacidad de optar por varias calidades de servicio , pero
OSI optó por suministrar protocolos diferentes para diferentes tipos
de tráfico .
TCP
debe suministrar modo duplex , aunque también se debe suministrar
simplex y semiduplex .
Aunque
no es conveniente la normalización del interfaz de usuario con el
TCP ( ya que es mejor adaptarla al entorno concreto del usuario ) , conviene
que la interfaz evite que el usuario sobrecargue o colapse al protocolo
de transporte con datos .
TCP
se encarga ( en servicios orientados a conexión ) del establecimiento
y corte de la conexión , pero sería conveniente que el usuario
pudiera en cierta medida tomar las riendas de inicio y corte de conexión
, siempre y cuando no se pierdan datos por interrupciones del usuario .
Este
es un servicio que permite enviar datos urgentemente , de forma que adelante
en su llegada a otros menos urgentes . TCP debería implementar este
servicio además del típico de prioridades .
TCP
debe suministrar al usuario información sobre prestaciones de conexión
, direcciones de red , tipo de protocolo en uso , estado de la máquina
, etc...
TCP
puede suministrar control sobre accesos , verificaciones de conexión
, encriptado y desencriptado de datos , etc...
Supongamos
que un servicio de red acepta bloques de datos de tamaño arbitrario
y los envía con seguridad del 100% . Si esto es así , TCP
es muy sencillo :
1.Direccionamiento
:
sea un usuario que desee mandar datos a otro pero sin establecer conexión
. Para ello , el usuario especifica la dirección de destino , el
identificador de usuario , puerto del usuario final ,etc... TCP toma los
datos necesarios del bloque pasado por el usuario y luego , tras procesar
su parte de trabajo , pasa el control y los datos a la siguiente capa .
Una
pregunta que debe responderse es ¿ cómo sabe el usuario la
dirección del usuario de destino ? . Bien el usuario sabe la dirección
, bien la dirección está establecida de antemano y es conocida
, bien utilizando un servidor de nombres o bien el destino es un servicio
general que se conoce y cuando es requerido , da la dirección del
destino solicitado .
2.Multiplexación
:
TCP puede permitir que varios usuarios la utilicen mediante varios puertos
identificados . La multiplexación puede hacerse también hacia
abajo , estableciendo varios puntos de contacto con la capa de red para
permitir el envío de datos por varios circuitos virtuales , aumentando
el rendimiento .
3.Control
de flujo :
el control de flujo en TCP es muy complejo ya que intervienen usuarios
( sin pronosticar su velocidad de emisión de datos ) . Para controlar
el flujo , TCP del destinatario puede hacer 4 cosas : no hacer nada
, en cuyo caso todos los datos que lleguen después de que se sature
TCP serán descartados ( no confirmados ) y el emisor los retransmitirá
( situación muy ineficaz y poco segura ) , rechazar los segmentos
del servicio de red , con lo que esta capa controlará el flujo
( ya que tiene mecanismos para ello ) haciéndole saber a la capa
de red del emisor que no se aceptarán más datos ( este mecanismo
es tosco) , usar protocolo de
ventana deslizante , pero en algunos tipos de redes no seguras , la
capa TCP del emisor no sabe si la falta de confirmaciones es porque se
han perdido o por el control de flujo y
un esquema de créditos
es parecido a la ventana deslizante pero las confirmaciones no implican
una aceptación de nuevos segmentos .
4.Establecimiento
y cierre de la conexión
:
un usuario informa a su TCP de que quiere establecer una conexión
con otro usuario , entonces TCP manda una señal de sincronización
a la capa TCP del receptor y si el receptor la admite , el TCP del receptor
informa a su usuario de que hay conexión , luego manda una señal
de sincronización al TCP del emisor y se pone en modo conexión
. Un vez que TCP del emisor recibe la señal de TCP del receptor
, se pone también en conexión establecida . Cualquiera de
los dos TCP puede cortar la conexión . Este tipo de conexión
es muy robusta y permite mucha libertad a ambos lados de la conexión
.Para que no se pierdan datos , para poner fin a una conexión ,
el que solicita el fin informa al otro de que solicita final de conexión
y espera que se le confirme esta solicitud , de esta forma no se perderán
datos que estén en camino .
La
seguridad implica que los segmentos no se pierdan y que lleguen en la secuencia
correcta . En esta capa es complicado asegurar la llegada y la secuencialidad
de los segmentos . Para comprender esto , veamos siete aspectos relacionados
:
1.Transporte
en orden :
TCP numera los segmentos con el número de orden de los datos que
contiene , es decir , si el primer segmento se numera con un 0 y contiene
1200 bytes , el siguiente segmento se numera como 1200 .
2.Estrategia
de retransmisión
:
se usa una estrategia de confirmaciones positivas para que el receptor
informe al emisor de la llegada correcta de un segmento ( confirmar el
4 , confirma todos los anteriores ) . Cuando no se confirma un segmento
antes de que expire un temporizador , se debe retransmitir . Para fijar
el temporizador se puede hacer fijo siempre con un valor , pero esto no
soluciona el problema cuando hay condiciones cambiantes de tráfico
en la red ; la utilización de un temporizador que se adapte a las
condiciones de la red también tiene sus inconvenientes .
3.Detección
de duplicados
:
cuando un segmento se pierde , el emisor , al no recibir confirmación
envía un duplicado , pero supongamos que lo que ocurrió no
fué que se perdió sino que expiró el temporizador
o se perdió la confirmación , entonces al receptor le llegan
dos duplicados , por lo que debe de ser capaz de conservar uno y desechar
el otro . Un problema a tener en cuenta es que la numeración de
los segmentos se debe hacer módulo un número muy grande para
que no se numeren dos segmentos con el mismo número y que ambos
estén en la red al mismo tiempo.Un
problema adicional es que haya segmentos circulando aún cuando la
conexión se haya cerrado , si un instante después se abre
otra vez , el receptor podría recibir estos segmentos que ya no
son válidos y confundirlos con los nuevos de la nueva transmisión
, y para solucionar esto , el receptor debe recordar los últimos
segmentos que recibió en la última conexión .
4.Control
de flujo :
el tipo de control d flujo más robusto es el de créditos
. Este sistema consiste en que cuando el receptor recibe un segmento ,
en la confirmación se incluye este segmento y todos los anteriores
y además se le indica al emisor que hay disponibilidad para aceptar
un número determinado de nuevos segmentos ( crédito ) . Este
sistema hace que si se pierde una confirmación , la siguiente confirma
a la anteriormente perdida y además , cuando un temporizador del
emisor expira , éste volverá a enviar el segmento .
5.Establecimiento
de la conexión
:
se requiere un diálogo entre los dos sistemas para establecer la
comunicación y para eso se utiliza una señal de sincronización
. Hay un mecanismo para repetir señales de sincronización
en caso de que estas no lleguen . Para evitar confusión en la repetición
de señales de sincronismo, estas son numeradas, y además
tienen un campo de confirmación de haber sido recibidas.
6.Cierre
de la conexión :
puede darse la situación en que una señal de fin de conexión
se anticipe a uno o varios segmentos de datos, entonces , se perderán
estos segmentos; para evitar esta situación se añade un campo
de último segmento a transmitir en el segmento de señalización
de final de transmisión , de este modo el receptor esperará
los segmentos restantes.
7.Recuperación
de caídas
:
Puede ocurrir que uno de los sistemas falle, caso en el cual se desconectará,
perdiéndose todos los datos que se contenían en su configuración.
Pero el otro sistema conectado ignora que exista este problema, así
que continuará enviando datos hasta que sus temporizadores terminen.
Entonces se dará por concluida la desconexión.
En
la capa de transporte se especifican dos protocolos que son el TCP ( protocolo
de control de transmisión ) y UDP ( protocolo datagrama de usuario
) . El TCP es un protocolo orientado a transmisión y el UDP es no
orientado a transmisión .Veamos
el TCP :
TCP
proporciona una comunicación segura a través de diversos
tipos de redes y conjuntos de redes interconectadas . TCP garantiza seguridad
( todos los datos llegarán a su destino ) y precedencia ( se garantiza
que el orden de envío se establecerá correctamente en el
destino ) .
Hay
dos funciones que proporciona TCP :
vCargar
flujo de datos
: aunque TCP va agrupando datos en segmentos , el usuario puede requerir
a TCP que agrupe una serie de datos en el mismo segmento y no añada
más .
vIndicación
de datos urgentes :
TCP proporciona la posibilidad de avisar al destino de que los datos que
han llegado son de carácter más urgente que otros . Es el
usuario final el que decide qué hacer en este caso .
TCP
suministra más primitivas y parámetros que IP .
La
cabecera de segmento de TCP es única y de un gran tamaño
. Entre sus campos , destacan : puerto de origen , puerto de destino ,
número de secuencia , número de confirmación , longitud
de cabecera , indicadores , ventana , suma de verificación , puntero
urgente , etc...
Los
puertos son aquellos usuarios que comparten la misma capa de transporte
, a cada uno de ellos se le asigna un número único de puerto
.
El
sistema de confirmación sigue el principio llamar a cada segmento
según el número de orden de bytes que tenga , es decir que
si un segmento mide 1000 bytes , al primero se le llama segmento 0 y al
siguiente segmento 1000 , etc...
Como
TCP trabaja con IP , algunos campos son pasados a IP y formarán
parte de la cabecera de IP y no en la de TCP .
1.Establecimiento
de la conexión
:
la conexión en TCP se realiza a tres bandas , el emisor manda un
mensaje de establecimiento de conexión , el receptor devuelve un
mensaje de aceptación y el emisor comienza el envío . Cada
pareja de puertos sólo pueden mantener una conexión al mismo
tiempo , aunque un puerto puede estar conectado a la vez con varios puertos
.
2.Transferencia
de datos :
el sistema es el de asignación de créditos . La numeración
de los segmentos es según el número de secuencia de byte
que contiene . TCP guarda en su memoria temporal los datos hasta completar
un segmento . La confección del segmento la determina TCP . TCP
puede forzar el envío de los datos pendientes aun sin estar completado
el segmento . TCP puede cursar segmentos urgentes .
3.Cierre
de conexión
:
el cierre ordenado se produce cuando ambos TCP ( emisor y receptor ) han
enviado una señal de cierre ; cuando todos los datos pendientes
han llegado , se produce la desconexión . Un TCP puede forzar un
cierre , de forma que todos los datos pendientes se perderán .
TCP
deja cierta libertad para utilizar una serie de implementaciones diferentes
:
1.Criterio
de envío
:
si no hay indicaciones forzosas de algún criterio de envío
por parte del usuario ( por ejemplo urgencia u otras ) , TCP puede confeccionar
los segmentos como mejor le parezca . Todo depende de consideraciones de
rendimiento .
2.Criterio
de entrega
:
el TCP del receptor pude hacer lo mismo que el emisor , entregar a su usuario
los segmentos según le convenga al propio TCP y siguiendo criterios
de rendimiento ( en caso de que el usuario no fuerce la entrega ) .
3.Criterio
de aceptación
:
TCP puede tomar dos caminos en caso de que lleguen segmentos desordenados
: o bien deshecha los que lleguen en desorden o bien deshecha los que lleguen
en desorden fuera de una ventana señalada . La primera opción
es la más sencilla pero obliga a la capa de red a mucho trabajo
de retransmisión ; la otra opción es más compleja
de utilizar pero descarga a la capa de red de mucho trabajo .
4. Criterio
de retransmisión
:
TCP puede seguir varios caminos para la retransmisión en caso de
expiración del temporizador y no aceptación de los segmentos
. Bien puede retransmitir toda la lista pendiente en caso de expirar el
temporizador del primer segmento o bien puede usar un temporizador para
cada segmento individual y sólo enviará el segmento cuyo
temporizador caiga sin haber recibido confirmación . Todo depende
del criterio de aceptación del receptor para ver qué método
es mejor .
5.Criterio
de confirmación
:
el receptor puede o bien confirmar segmento por segmento o bien aguardar
un poco para confirmar un grupo de segmentos , pero para este segundo método
debe de enviar la confirmación antes de que el temporizador del
segmento más antiguo del grupo haya expirado . El primer método
es más sencillo pero sobrecarga la red con tantas confirmaciones
. El segundo método es más complejo ( al tener que calcular
el tiempo de espera antes de confirmar un grupo y otros cálculos
añadidos )pero descongestiona
la red .