Documentos de Académico
Documentos de Profesional
Documentos de Cultura
lanzado en 1984 fue el modelo de red descriptivo creado por ISO; esto es, un marco de referencia
para la definición de arquitecturas de interconexión de sistemas de comunicaciones.
El modelo en sí mismo no puede ser considerado una arquitectura, ya que no especifica el
protocolo que debe ser usado en cada capa, sino que suele hablarse de modelo de referencia. Este
modelo está dividido en siete capas:
Hay otros protocolos de nivel de aplicación que facilitan el uso y administración de la red:
1. SNMP (Simple Network Management Protocol)
2. DNS (Domain Name System)
1. SERVICIOS
Es la primera capa que lleva a cabo la comunicación extremo a extremo, y esta condición ya se
mantendrá en las capas superiores.
figura 6-1 se ilustra la relación (lógica) entre las capas de red, transporte y aplicación
Los usuarios no tienen un control real sobre la capa de red, por lo que no pueden resolver los
problemas de un mal servicio usando mejores enrutadores o incrementando el manejo de errores
en la capa de enlace de datos, puesto que no son dueños de los enrutadores. La única posibilidad
es poner encima de la capa de red otra capa que mejore la calidad del servicio. Si en una red sin
conexión se pierden paquetes o se rompen, la entidad de transporte puede detectar el problema y
compensarlo mediante el uso de retransmisiones. Si, en una red orientada a conexión, se informa a
la entidad de transporte a la mitad de una transmisión extensa que su conexión de red ha sido
terminada de manera abrupta, sin indicación de lo que ha sucedido a los datos actualmente en
tránsito, la entidad puede establecer una nueva conexión de red con la entidad de transporte
remota. A través de esta nueva conexión de red, la entidad puede enviar una solicitud a su igual
para preguntarle cuáles datos llegaron y cuáles no, y como sabe en dónde se encontraba, puede
reiniciar a partir de donde se originó la interrupción.
En esencia, la existencia de la capa de transporte hace posible que el servicio de transporte sea
más confiable que la red subyacente. Además, las primitivas de transporte se pueden implementar
como llamadas a procedimientos de biblioteca para que sean independientes de las primitivas de
red. Gracias a la capa de transporte, los programadores de aplicaciones pueden escribir código de
acuerdo con un conjunto estándar de primitivas; estos programas pueden funcionar en una amplia
variedad de redes sin necesidad de preocuparse por lidiar con diferentes interfaces de red y
distintos niveles de confiabilidad.
1.2. Primitivas del servicio de transporte
Para permitir que los usuarios accedan al servicio de transporte, la capa de transporte debe
proporcionar algunas operaciones a los programas de aplicación, es decir, una interfaz del servicio
de transporte. Cada servicio de transporte tiene su propia interfaz.
El servicio de transporte es parecido al servicio en red, pero hay algunas diferencias importantes. La
principal, es que, el propósito del servicio de red es modelar el servicio ofrecido por las redes reales,
con todos sus problemas. Las redes reales pueden perder paquetes, por lo que generalmente el
servicio no es confiable.
En cambio, el servicio de transporte (orientado a la conexión) si es confiable. Claro que las redes
reales no están libres de errores, pero ése es precisamente el propósito de la capa de transporte:
ofrecer un servicio confiable en una red no confiable.
Otra diferencia entre la capa transporte y la de red es a quien van dirigidos sus servicios. El servicio
de red lo usan únicamente las entidades de transporte. Pocos usuarios escriben sus entidades de
transporte y pocos usuarios o programas llegan a ver los aspectos internos del servicio de red. En
cambio, muchos programas ven primitivas de transporte. En consecuencia el servicio de transporte
debe ser adecuado y fácil de usar.
Con estas primitivas se puede hacer un esquema sencillo de manejo de conexiones. Las
transiciones escritas en cursiva son causadas por llegadas de paquetes. Las líneas continuas
muestran la secuencia de estados del cliente y las líneas punteadas muestran la secuencia del
servidor.
2. ELEMENTOS DE LOS PROTOCOLOS DE TRANSPORTE
El servicio de transporte se implementa mediante un protocolo de transporte entre dos entidades de
transporte. En ciertos aspectos, los protocolos de transporte se parecen a los protocolos de red.
Ambos se encargan del control de errores, la secuenciación y el control del flujo. Pero también
existen diferencias importantes entre ambas, como los entornos en que operan, la capa transporte
necesita el direccionamiento explícito de los destinos, mientras que la capa de red no, otra
diferencia es la cantidad de datos, mucho mayor en la capa de transporte.
2.1. Direccionamiento
Cuando un proceso desea establecer una conexión con un proceso de aplicación remoto, debe
especificar a cuál se conectará. (¿A quién mando el mensaje?) El método que normalmente se
emplea es definir direcciones de transporte en las que los procesos pueden estar a la escucha de
solicitudes de conexión.
En Internet, estos puntos terminales se denominan puertos. Usaremos el término genérico TSAP
(Punto de Acceso al Servicio de Transporte, del inglés Transport Service Access Point) para
indicar un punto terminal específico en la capa de transporte. Así, no es sorpresa que los puntos
terminales análogos en la capa de red (es decir, direcciones de capa de red) se llamen NSAP
(Punto de Acceso al Servicio de Red, del inglés Network Service Access Points). Las direcciones
IP son ejemplos de NSAP.
Los puntos TSAP y NSAP, junto con las conexiones de transporte
Una es utilizar direcciones de transporte desechables. En este enfoque cada vez que necesitemos
una dirección la creamos. Al liberarse la conexión descartamos la dirección y no se vuelve a utilizar.
O también asignar una secuencia dentro de los datos transmitidos, pero estos plantean los
problemas de que si se pierde la conexión perdemos el orden del identificador y ya no funciona.
Pero la solución seria más fácil si los paquetes viejos se eliminaran de la subred cada cierto tiempo
de vida. Para ello podemos utilizar las siguientes técnicas: Un diseño de subred Restringido.
Colocar un contador de saltos en cada paquete. Marcar el tiempo de cada paquete. Pero en la
práctica no vale solo con hacer esto sino que tenemos que garantizar que todas las confirmaciones
de los paquetes también se eliminan.
Necesitamos un enfoque diferente para simplificar el problema. En lugar de permitir que los
paquetes vivan eternamente dentro de la red, debemos idear un mecanismo para eliminar a los
paquetes viejos que aún andan vagando por ahí. Con esta restricción, el problema se vuelve algo
más manejable.
El tiempo de vida de un paquete puede restringirse a un máximo conocido mediante el uso de una
(o más) de las siguientes técnicas:
1. Un diseño de red restringido.
2. Colocar un contador de saltos en cada paquete.
3. Marcar el tiempo en cada paquete.
2.3. Liberación de una conexión
La liberación de una conexión es más fácil que su establecimiento. No obstante, hay más escollos
de los que uno podría imaginar. Hay dos estilos de terminación de una conexión: liberación
asimétrica y liberación simétrica. La liberación asimétrica es la manera en que funciona el
mecanismo telefónico: cuando una parte cuelga, se interrumpe la conexión. La liberación simétrica
trata la conexión como dos conexiones unidireccionales distintas, y requiere que cada una se libere
por separado.
La liberación asimétrica es abrupta y puede resultar en la perdida de datos. Por lo que es obvio que
se requiere un protocolo de liberación más refinado para evitar la perdida de datos. Una posibilidad
es usar la liberación simétrica, en la que cada dirección se libera independientemente de la otra.
Aquí, un host puede continuar recibiendo datos aun tras haber enviado una TPDU de desconexión.
La liberación simétrica es ideal cuando cada proceso tiene una cantidad fija de datos por enviar y
sabe con certeza cuándo los ha enviado. En otras situaciones, el proceso de determinar si se ha
efectuado o no todo el trabajo y si debe terminar o no la conexión no es tan obvio. Podríamos
pensar en un protocolo en el que el host 1 diga: “Ya terminé. ¿Terminaste también?” Si el host 2
responde: “Ya terminé también. Adiós”, la conexión se puede liberar sin problemas.
Pero no es tan fiable por el problema de que siempre tendremos que esperar la confirmación de los
mensajes recibidos y si esta confirmación no llega no libera la conexión y después puede que
necesite la confirmación de que llego la confirmación y entraríamos en un bucle del que no
podemos salir.
Podemos hacer que al host 1 si no le llega la confirmación después de N intentos (es que quiere la
desconexión), se libere. Esto produce una conexión semiabierta en la que el host 1 está
desconectado pero el host 2 no como no le llega la confirmación no se desconecta nunca. Para
solucionar esto creamos una regla por la cual si al host 2 no le llega ninguna TPDU durante cierta
cantidad de segundos, se libera automáticamente.
Cuatro escenarios de un protocolo para liberar una conexión. (a) Caso normal del acuerdo de tres vías.
(b) Pérdida del último ACK. (c) Respuesta perdida. (d) Respuesta perdida y pérdida de los segmentos DR subsecuentes.
La diferencia principal es que un enrutador por lo regular tiene relativamente pocas líneas, y un host
puede tener numerosas conexiones. Esta diferencia hace poco practico emplear la implementación
que se hace en la capa de enlace.
En esta capa lo que se hace es, si el servicio de red no es confiable, el emisor debe almacenar en
un buffer todas las TPDUs enviadas, igual que en la capa enlace de datos. Sin embargo, con un
servicio de red confiable son posibles otros arreglos. En particular, si el emisor sabe que el receptor
siempre tiene espacio de buffer, no necesita tener copias de las TPDUs que envía.
Sin embargo, si el receptor no garantiza que se aceptará cada TPDU que llegue, el emisor tendrá
que usar buffers de todas maneras. En el último caso, el emisor no puede confiar en la confirmación
de recepción de la capa red porque esto sólo significa que ha llegado la TPDU, no que ha sido
aceptada.
Los Buffers pueden ser de tres tipos, y usaremos cada uno de ellos cuando más nos convenga. El
equilibrio óptimo entre el almacenamiento del buffer en el origen y en el destino depende del tipo de
trafico transportado por la conexión.
2.5. Multiplexión
La multiplexión de varias conversaciones en conexiones, circuitos virtuales o enlaces físicos
desempeña un papel importante en diferentes capas de la arquitectura de red. En la capa de
transporte puede surgir la necesidad de multiplexión por varias razones. Por ejemplo, si en un host
sólo se dispone de una dirección de red, todas la conexiones de transporte de esa maquina tendrán
que utilizarla. Cuando llega un segmento (una TPDU), se necesita algún mecanismo para saber a
cuál proceso asignarla. Esta situación se conoce como multiplexión hacia arriba.
La multiplexión también puede ser útil en la capa transporte para la utilización de circuitos virtuales,
que dan más ancho de banda cuando se reasigna a cada circuito una tasa máxima de datos. La
solución es abrir múltiples conexiones de red y distribuir el tráfico entre ellas. Esto se denomina
multiplexión hacia abajo.
Si los hosts y los enrutadores están sujetos a caídas, la recuperación es fundamental. Si la entidad
de transporte está por entero dentro de los hosts, la recuperación de caídas de red y de enrutadores
es sencilla. Si la capa de red proporciona servicio de datagramas, las entidades de transporte
esperan pérdida de algunas TPDUs todo el tiempo, y saben cómo manejarla mediante el uso de
retransmisiones.
Un problema más complicado es la manera de recuperarse de caídas del host. Al reactivarse, sus
tablas están en el estado inicial y no sabe con precisión donde estaba. En un intento por recuperar
su estado previo, el servidor podría enviar una TPDU de difusión a todos los demás host,
anunciando que se acaba de caer y solicitando a todos sus clientes que le informen el estado de
todas las conexiones abiertas.
Distintas combinaciones de estrategias de cliente y servidor
El encabezado UDP
El campo Longitud UDP incluye el encabezado de 8 bytes y los datos. La longitud mínima es de 8
bytes, para cubrir el encabezado. La longitud máxima es de 65 515 bytes, lo cual es menor al
número que cabe en 16 bits debido al límite de tamaño en los paquetes IP.
Pese a que es relativamente baja la cantidad total de tráfico UDP que puede encontrarse en una red
típica, los protocolos clave de la capa de aplicación que utiliza UDP incluyen:
Algunas aplicaciones, tales como los juegos en línea o VoIP, pueden tolerar la pérdida de algunos
datos. Si estas aplicaciones utilizaran TCP, experimentarían largas demoras, ya que TCP detecta la
pérdida de datos y los retransmite. Estas demoras serían más perjudiciales para la aplicación que
las pequeñas pérdidas de datos. Algunas aplicaciones, como DNS, simplemente vuelven a intentar
la solicitud si no reciben una respuesta y, por lo tanto, no necesitan el TCP para garantizar la
entrega del mensaje.
El proceso de recepción del TCP 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 se reensamblan. Todos los segmentos que llegan con números de secuencia no
contiguos se mantienen para su procesamiento posterior. Luego, cuando llegan con los segmentos
con bytes perdidos, se procesan.
Confirmación de Recepción de Segmentos
Una de las funciones del 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 acuse de recibo
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 que se especifica 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 que es igual al número de acuse de recibo.
Recuerde que cada conexión son realmente dos sesiones de una vía. Los números de secuencia y
los números de acuse de recibo se intercambian en ambas direcciones.
En el ejemplo de la figura, el host de la izquierda envía datos al host de la derecha. Envía un
segmento que contiene 10 bytes de datos para esta sesión y un número de secuencia igual a 1 en
el encabezado.
El host receptor de la derecha recibe el segmento en la Capa 4 y determina que el número de
secuencia es 1 y que posee 10 bytes de datos. Luego el host envía un segmento de vuelta al host
de la izquierda para acusar recibo de estos datos. En este segmento, el host establece el número
de acuse de recibo en 11 para indicar que el próximo byte de datos que espera recibir en esta
sesión es el byte número 11. Nota, el valor de Ack. en el host de origen permanece en 1 para
indicar que el segmento es parte de una conversación continua y que el número en el campo de
número de acuse de recibo es válido.
Cuando el host emisor de la izquierda recibe este acuse de recibo, puede enviar el próximo
segmento que contiene datos para esta sesión a partir del byte 11.