You are on page 1of 26

Comunicación de los sistemas distribuidos

1.-Protocolo con capas

-Capas de protocolo y el modelo de Interconexión de Sistemas Abiertos

La mayoría de los conjuntos de protocolos de red se estructuran como series de capas, que en ocasiones se
denominan pila de protocolos. Cada capa está diseñada para una finalidad específica. Cada capa existe tanto
en los sistemas de envío como en los de recepción. Una capa específica de un sistema envía o recibe
exactamente el mismo objeto que envía o recibe el proceso equivalente de otro sistema. Estas actividades
tienen lugar independientemente de las actividades de las capas por encima o por debajo de la capa que se
está considerando. Básicamente, cada capa de un sistema actúa independientemente de las demás capas del
mismo sistema. Cada capa actúa en paralelo con la misma capa en otros sistemas.

 Protocolos con las capas físicas

La capa Física de OSI proporciona los medios de transporte para los bits que conforman la trama de la capa
de Enlace de datos a través de los medios de red. Esta capa acepta una trama completa desde la capa de
Enlace de datos y la codifica como una secuencia de señales que se transmiten en los medios locales. Un
dispositivo final o un dispositivo intermediario reciben los bits codificados que componen una trama.

El envío de tramas a través de medios locales requiere los siguientes elementos de la capa física:

 Medios físicos y conectores asociados


 Una representación de los bits en los medios
 Codificación de los datos y de la información de control
 Sistema de circuitos del receptor y transmisor en los dispositivos de red

En este momento del proceso de comunicación, la capa de transporte ha segmentado los datos del usuario, la
capa de red los ha colocado en paquetes y luego la capa de enlace de datos los ha encapsulado como
tramas. El objetivo de la capa Física es crear la señal óptica, eléctrica o de microondas que representa a los
bits en cada trama. Luego, estas señales se envían por los medios una a la vez.

Otra función de la capa física es la de recuperar estas señales individuales desde los medios, restaurarlas
para sus representaciones de bit y enviar los bits hacia la capa de enlace de datos como una trama
completa.Los medios no transportan la trama como una única entidad. Los medios transportan señales, una
por vez, para representar los bits que conforman la trama.

Existen tres tipos básicos de medios de red en los cuales se representan los datos:

 Cable de cobre
 Fibra
 Inalámbrico

La presentación de los bits (es decir, el tipo de señal) depende del tipo de medio. Para los medios de cable de
cobre, las señales son patrones de pulsos eléctricos. Para los medios de fibra, las señales son patrones de
luz. Para los medios inalámbricos, las señales son patrones de transmisiones de radio.

Identificación de una Trama

Cuando la capa física codifica los bits en señales para un medio específico, también debe distinguir dónde
termina una trama y dónde se inicia la siguiente. De lo contrario, los dispositivos de los medios no
reconocerían cuándo se ha recibido exitosamente una trama. En tal caso, el dispositivo de destino sólo
recibiría una secuencia de señales y no sería capaz de reconstruir la trama correctamente. Como se describió
en el capítulo anterior, indicar el comienzo de la trama es a menudo una función de la capa de Enlace de
datos. Sin embargo, en muchas tecnologías, la capa Física puede agregar sus propias señales para indicar el
comienzo y el final de la trama.

Para habilitar un dispositivo receptor a fin de reconocer de manera clara el límite de una trama, el dispositivo
transmisor agrega señales para designar el comienzo y el final de una trama. Estas señales representan
patrones específicos de bits que sólo se utilizan para indicar el comienzo y el final de una trama.

En las siguientes secciones de este capítulo se analizarán detalladamente el proceso de codificación de una
trama de datos de bits lógicos a señales físicas en los medios y las características de los medios físicos
específicos.

Protocolo con la capa de enlace de los datos

 Acceso al Medio

La capa de enlace de datos proporciona un medio para intercambiar datos a través de medios locales
comunes.

La capa de enlace de datos realiza dos servicios básicos:

 Permite a las capas superiores acceder a los medios usando técnicas como tramas.
 Controla cómo se ubican los datos en los medios y cómo se reciben desde los medios usando técnicas
como el control de acceso a los medios y la detección de errores.

Al igual que con cada una de las capas OSI, existen términos específicos para esta capa:

 Trama: la PDU de la capa de enlace de datos


 Nodo: la notación de la Capa 2 para dispositivos de red conectados a un medio común
 Medios/medio (físico)*: los medios físicos para la transferencia de información entre dos nodos
 Red (física)**: dos o más nodos conectados a un medio común

La capa de enlace de datos es responsable del intercambio de tramas entre nodos a través de los medios de
una red física.

* Es importante comprender el significado de las palabras medio y medios dentro del contexto de este
capítulo. Aquí, estas palabras se refieren al material que realmente transporta las señales que representan los
datos transmitidos. Los medios son el cable de cobre, la fibra óptica físicos o el entorno a través de los cuales
la señal viaja. En este capítulo, medios no se refiere a programación de contenido tal como audio, animación,
televisión y video, como se utiliza al referirse a contenidos digitales y multimedia.

** Una red física es diferente de una red lógica. Las redes lógicas se definen en la capa de red mediante la
configuración del esquema de direccionamiento jerárquico. Las redes físicas representan la interconexión de
dispositivos de medios comunes. Algunas veces, una red física también se denomina segmento de red.

Acceso a los Medios de la Capa Superior

Como hemos mencionado, un modelo de red permite que cada capa funcione con un mínimo interés por los
papeles de las otras capas. La capa de enlace de datos releva a las capas superiores de la responsabilidad
de colocar datos en la red y de recibir datos de la red. Esta capa proporciona servicios para soportar los
procesos de comunicación para cada medio por el cual se transmitirán los datos.

En cualquier intercambio de paquetes de capas de red, puede haber muchas transiciones de medios y de
capa de enlace de datos. En cada salto a lo largo de la ruta, un dispositivo intermediario, generalmente un
router, acepta las tramas de un medio, desencapsula la trama y luego envía el paquete a una nueva trama
apropiada para los medios de tal segmento de la red física.

Imagine una conversación de datos entre dos hosts distantes, como una PC en París con un servidor de
Internet en Japón. Aunque los dos hosts puedan comunicarse con sus protocolos de capa de red par (por
ejemplo, IP) es probable que se estén utilizando numerosos protocolos de capa de enlace de datos para
transportar paquetes IP a través de varios tipos de LAN y WAN. Este intercambio de paquetes entre dos hosts
requiere una diversidad de protocolos que debe existir en la capa de enlace de datos. Cada transición a un
router puede requerir un protocolo de capa de enlace de datos diferente para el transporte a un medio nuevo.

Observe en la figura que cada enlace entre dispositivos utiliza un medio diferente. Entre la PC y el router
puede haber un enlace Ethernet. Los routers están conectados a través de un enlace satelital y la
computadora portátil está conectada a través de un enlace inalámbrico al último router. En este ejemplo, como
un paquete IP viaja desde la PC hasta la computadora portátil, será encapsulado en la trama Ethernet,
desencapsulado, procesado y luego encapsulado en una nueva trama de enlace de datos para cruzar el
enlace satelital. Para el enlace final, el paquete utiliza una trama de enlace de datos inalámbrica desde el
router a la computadora portátil.
La capa de enlace de datos aísla de manera efectiva los procesos de comunicación en las capas superiores
desde las transiciones de medios que pueden producirse de extremo a extremo. Un paquete se recibe de un
protocolo de capa superior y se dirige a éste, en este caso IPv4 o IPv6, que no necesita saber qué medios de
comunicación utilizará.

Sin la capa de enlace de datos, un protocolo de capa de red, tal como IP, tendría que tomar medidas para
conectarse con todos los tipos de medios que pudieran existir a lo largo de la ruta de envío. Más aún, IP
debería adaptarse cada vez que se desarrolle una nueva tecnología de red o medio. Este proceso dificultaría
la innovación y desarrollo de protocolos y medios de red. Éste es un motivo clave para usar un método en
capas en interconexión de redes.

El rango de los servicios de la capa de enlace de datos tiene que incluir todos los tipos de medios actualmente
utilizados y los métodos para acceder a ellos. Debido a la cantidad de servicios de comunicación provistos por
la capa de enlace de datos, es difícil generalizar su papel y proporcionar ejemplos de un conjunto de servicios
genéricos. Por ese motivo, tenga en cuenta que cualquier protocolo dado puede o no admitir todos estos
servicios de la capa de enlace de datos.

 Técnicas de Control de Acceso al Medio

Control de Acceso al Medio para Medios Compartidos

Algunas topologías de la red comparten un medio común con varios nodos. En cualquier momento puede
haber una cantidad de dispositivos que intentan enviar y recibir datos utilizando los medios de red. Hay reglas
que rigen cómo esos dispositivos comparten los medios.

Hay dos métodos básicos de control de acceso para medios compartidos:

 Controlado: cada nodo tiene su propio tiempo para utilizar el medio


 Con base en la contención: todos los nodos compiten por el uso del medio
Control de Acceso al Medio para Medios No Compartidos

Los protocolos de control de acceso para medios no compartidos requieren poco o ningún control antes de
colocar tramas en los medios. Estos protocolos tienen reglas y procedimientos más simples para el control de
acceso al medio. Tal es el caso de las topologías punto a punto.

En las topologías punto a punto, los medios interconectan sólo dos nodos. En esta configuración, los nodos no
necesitan compartir los medios con otros hosts ni determinar si una trama está destinada para ese nodo. Por
lo tanto, los protocolos de capa de enlace de datos hacen poco para controlar el acceso a medios no
compartidos.

Full Duplex y Half Duplex

En conexiones punto a punto, la capa de enlace de datos tiene que considerar si la comunicación es half-
duplex o full-duplex.

Comunicación half-duplex quiere decir que los dispositivos pueden transmitir y recibir en los medios, pero no
pueden hacerlo simultáneamente. Ethernet ha establecido reglas de arbitraje para resolver conflictos que
surgen de instancias donde más de una estación intenta transmitir al mismo tiempo.

En la comunicación full-duplex, los dos dispositivos pueden transmitir y recibir en los medios al mismo tiempo.
La capa de enlace de datos supone que los medios están disponibles para transmitir para ambos nodos en
cualquier momento. Por lo tanto, no hay necesidad de arbitraje de medios en la capa de enlace de datos.

 Direccionamiento de Control de Acceso al Medio y Entramado de Datos


Tramado, Función del Encabezado

Como se muestra en la figura, el encabezado de trama contiene la información de control que especifica el
protocolo de capa de enlace de datos para la topología lógica específica y los medios en uso.

La información de control de trama es única para cada tipo de protocolo. Es utilizada por el protocolo de la
Capa 2 para proporcionar las características demandadas por el entorno de comunicación.

Los campos típicos del encabezado de trama incluyen:

 Campo Inicio de trama: indica el comienzo de la trama


 Campos Dirección de origen y de destino: indica los nodos de origen y destino en los medios
 Campo Prioridad/Calidad de servicio: indica un tipo particular de servicio de comunicación para el
procesamiento
 Campo Tipo: indica el servicio de la capa superior que se incluye en la trama
 Campo Control de conexión lógica: se utiliza para establecer la conexión lógica entre nodos
 Campo Control de enlace físico: se utiliza para establecer el enlace a los medios
 Campo Control de flujo: se utiliza para iniciar y detener el tráfico a través de los medios
 Campo Control de congestión: indica la congestión en los medios

Direccionamiento

La capa de enlace de datos proporciona direccionamiento que se utiliza para transportar la trama a través de
los medios locales compartidos. Las direcciones de dispositivo en esta capa se llaman direcciones físicas. El
direccionamiento de la capa de enlace de datos está contenido en el encabezado de la trama y especifica el
nodo de destino de la trama en la red local. El encabezado de la trama también puede contener la dirección
de origen de la trama.

A diferencia de las direcciones lógicas de la Capa 3 que son jerárquicas, las direcciones físicas no indican en
qué red está ubicado el dispositivo. Si el dispositivo se traslada a otra red o subred, sigue funcionando con la
misma dirección física de la Capa 2.

Debido a que la trama sólo se utiliza para transportar datos entre nodos a través del medio local, la dirección
de la capa de enlace de datos sólo se utiliza para entregas locales. Las direcciones en esta capa no tienen
significado más allá de la red local. Compare esto con la Capa 3, en donde las direcciones en el encabezado
del paquete pasan del host de origen al host de destino sin tener en cuenta la cantidad de saltos de redes a lo
largo de la ruta.

Si el paquete en la trama debe pasar a otro segmento de la red, el dispositivo intermediario (un router)
desencapsula la trama original, crea una nueva trama para el paquete y la envia al nuevo segmento. La nueva
trama usa el direccionamiento de origen y de destino según sea necesario para transportar el paquete a
través del nuevo medio.

Requisitos de Direccionamiento

La necesidad de direccionamiento de la capa de enlace de datos en esta capa depende de la topología lógica.

Las topologías punto a punto, con sólo dos nodos interconectados, no requieren direccionamiento. Una vez en
el medio, la trama sólo tiene un lugar al cual puede ir.

Debido a que las topologías de anillo y de acceso múltiple pueden conectar muchos nodos en un medio
común, se requiere direccionamiento para esas tipologías. Cuando una trama alcanza cada nodo en la
topología, el nodo examina la dirección de destino en el encabezado para determinar si es el destino de la
trama.
Protocolo con la capa de red de iso

 Protocolos de Capa de Red y Protocolo de Internet (IP)

Los protocolos implementados en la capa de red que llevan datos del usuario son:

 Protocolo de Internet versión 4 (IPv4)


 Protocolo de Internet versión 6 (IPv6)
 Intercambio Novell de paquetes de internetwork (IPX)
 AppleTalk
 Servicio de red sin conexión (CLNS/DECNet)

El Protocolo de Internet (IPv4 e IPv6) es el protocolo de transporte de datos de la Capa 3 más ampliamente
utilizado.

Rol del IPv4

Como se muestra en la figura, los servicios de capa de red implementados por la suite de protocolos TCP/IP
son el Protocolo de Internet (IP). La versión 4 de IP (IPv4) es la versión de IP más ampliamente utilizada. Es el
único protocolo de Capa 3 que se utiliza para llevar datos de usuario a través de Internet.

La versión 6 de IP (IPv6) está desarrollada y se implementa en algunas áreas. IPv6 operará junto con el IPv4
y puede reemplazarlo en el futuro. Los servicios provistos por IP, así como también la estructura y el
contenido del encabezado de los paquetes están especificados tanto por el protocolo IPv4 como por el IPv6.
Estos servicios y estructura de paquetes se usan para encapsular datagramas UDP o segmentos TCP para su
recorrido a través de una internetwork.

Las características de cada protocolo son diferentes. Comprender estas características le permitirá
comprender la operación de los servicios descritos por este protocolo.

El Protocolo de Internet fue diseñado como un protocolo de bajo costo. Provee sólo las funciones necesarias
para enviar un paquete desde un origen a un destino a través de un sistema interconectado de redes. El
protocolo no fue diseñado para rastrear ni administrar el flujo de paquetes. Estas funciones son realizadas por
otros protocolos en otras capas.

Características básicas de IPv4:

 Sin conexión: no establece conexión antes de enviar los paquetes de datos.


 Máximo esfuerzo (no confiable): no se usan encabezados para garantizar la entrega de paquetes.
 Independiente de los medios: funciona sin importar los medios que transportan los datos.
 Agrupamiento de Dispositivos en Redes y Direccionamiento Jerárquico

Una de las principales funciones de la capa de red es proporcionar un mecanismo para direccionar hosts. A
medida que crece la cantidad de hosts de la red, se requiere más planificación para administrar y direccionar
la red.

División de Redes

En lugar de tener todos los hosts conectados en cualquier parte a una vasta red global, es más práctico y
manejable agrupar los hosts en redes específicas. Históricamente, las redes basadas en IP tienen su raíz
como una red grande. Como esta red creció, también lo hicieron los temas relacionados con su crecimiento.
Para aliviar estos problemas, la red grande fue separada en redes más pequeñas que fueron interconectadas.
Estas redes más pequeñas generalmente se llaman subredes.

Red y subred son términos utilizados indistintamente para referirse a cualquier sistema de red hecho posible
por los protocolos de comunicación comunes compartidos del modelo TCP/IP.

De manera similar, a medida que nuestras redes crecen, pueden volverse demasiado grandes para
manejarlas como una única red. En ese punto, necesitamos dividir nuestra red. Cuando planeamos la división
de la red, necesitamos agrupar aquellos hosts con factores comunes en la misma red.

Como se muestra en la figura, las redes pueden agruparse según factores que incluyen:

 Ubicación geográfica
 Propósito
 Propiedad

Agrupación de Hosts de Manera Geográfica

Podemos agrupar hosts de redes geográficamente. El agrupamiento de hosts en la misma ubicación, como
cada construcción en un campo o cada piso de un edificio de niveles múltiples, en redes separadas puede
mejorar la administración y operación de la red.

Agrupación de Hosts para Propósitos Específicos

Los usuarios que tienen tareas similares usan generalmente software común, herramientas comunes y tienen
patrones de tráfico común. A menudo podemos reducir el tráfico requerido por el uso de software y
herramientas específicos, ubicando estos recursos de soporte en la red con los usuarios.

El volumen del tráfico de datos de la red generado por las diferentes aplicaciones puede variar
significativamente. Dividir redes basadas en el uso facilita la ubicación efectiva de los recursos de la red así
como también el acceso autorizado a esos recursos. Los profesionales en redes necesitan equilibrar el
número de hosts en una red con la cantidad de tráfico generado por los usuarios. Por ejemplo, considere una
empresa que emplea diseñadores gráficos que utilizan la red para compartir archivos multimedia muy
grandes. Estos archivos consumen la mayoría del ancho de banda disponible durante gran parte del día
laboral. La empresa también emplea vendedores que se conectan una vez al día para registrar sus
transacciones de ventas, lo que genera un tráfico mínimo de red. En esta situación, el mejor uso de los
recursos de la red sería crear varias redes pequeñas a las cuales unos pocos diseñadores tengan acceso y
una red más grande para que usen todos los vendedores.

Agrupación de Hosts para Propiedad

Utilizar una base organizacional (compañía, departamento) para crear redes ayuda a controlar el acceso a los
dispositivos y datos como también a la administración de las redes. En una red grande, es mucho más difícil
definir y limitar la responsabilidad para el personal de la red. Dividir hosts en redes separadas provee un límite
de cumplimiento y administración de seguridad de cada red.

Direccionamiento Jerárquico

Para poder dividir redes, necesitamos el direccionamiento jerárquico. Una dirección jerárquica identifica cada
host de manera exclusiva. También tiene niveles que ayudan a reenviar paquetes a través de internetworks, lo
que permite que una red se divida según esos niveles.
Para mantener las comunicaciones de datos entre redes por medio de internetworks, los esquemas de
direccionamiento de capa de red son jerárquicos.

 Aspectos Fundamentales de las Rutas, las Direcciones del Siguiente Salto y el Reenvío de
Paquetes

Un siguiente salto es la dirección del dispositivo que procesará luego el paquete. Para un host en una red, la
dirección de gateway predeterminado (interfaz del router) es el siguiente salto para todos los paquetes
destinados a otra red.

En la tabla de enrutamiento de un router, cada ruta enumera un siguiente salto para cada dirección de destino
que abarca la ruta. A medida que cada paquete llega al router, la dirección de la red de destino es analizada y
comparada con las rutas en la tabla de enrutamiento. Cuando se determina una ruta coincidente, la dirección
del siguiente salto para esa ruta se usa para enviar el paquete hacia ese destino. El router luego envía el
paquete hacia la interfaz a la cual está conectado el router del siguiente salto. El router del siguiente salto es
el gateway a las redes fuera del destino intermedio.

Las redes conectadas directamente a un router no tienen dirección del siguiente salto porque no existe un
dispositivo de Capa 3 entre el router y esa red. El router puede reenviar paquetes directamente hacia la
interfaz por esa red al host de destino.

Algunas rutas pueden tener múltiples siguientes saltos. Esto indica que existen múltiples pasos hacia la
misma red de destino. Éstas son rutas alternativas que el router puede utilizar para reenviar paquetes.

 PROTOCOLO CON LA CAPA DE TRANSPORTE

 Los Servicios y la Función 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:

 Rastreo de comunicación individual entre aplicaciones en los hosts de origen y destino


 Segmentación de datos y manejo de cada parte
 Reensamble de segmentos en streams de datos de aplicación
 Identificación de diferentes aplicaciones
Rastreo de Conversaciones Individuales

Cualquier host puede tener múltiples aplicaciones que se comunican 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 streams de comunicación múltiple entre estas aplicaciones.

Segmentación de Datos

Así como cada aplicación crea datos de stream para enviarse a una aplicación remota, estos datos se pueden
preparar para enviarse a través de 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. Cada sección de datos de aplicación requiere que se agreguen
encabezados en la capa de transporte para indicar la comunicación a la cual está asociada.

Reensamble de Segmentos

En el host de recepción, cada sección de datos se puede direccionar 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 en la capa de transporte describen cómo se utiliza la
información del encabezado de la capa para reensamblar las partes de los datos en streams para pasarlos a
la capa de aplicación.

Identificación de Aplicaciones

Para pasar streams de datos a las aplicaciones adecuadas, la capa de transporte debe identificar la aplicación
meta. 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 qué aplicación se asocia a qué parte.

La capa de transporte es el enlace entre la capa de aplicación y la capa inferior que es responsable de la
transmisión de la red. Esta capa acepta los datos de diferentes conversaciones y las pasa a las capas
inferiores como partes manejables que se pueden multiplexar de forma eventual en la red.

Las aplicaciones no necesitan saber los detalles operativos 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. La capa de transporte clasifica
entonces estas piezas antes de enviarlas a la aplicación adecuada.
 Aplicación y Fundamentos de los Mecanismos del Protocolo TCP

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 completa de TCP necesita establecer una
sesión entre los hosts de ambas direcciones.

Después de establecer una sesión, el destino envía un acuse 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. Hay también sobrecarga en los hosts indivuduales creada por la necesidad de mantener un
registro de los segmentos que esperan un acuse de recibo y por el proceso de retransmisión.

Esta confiabilidad se logra al tener archivos en el segmento TCP, cada uno con su función específica, como
se muestra en la figura. Estos campos se explicarán más adelante en esta sección.

 Administración de Sesiones TCP

Resecuenciamiento de Segmentos para Transmitir en Orden

Cuando los servicios envían datos mediante el TCP, los segmentos pueden llegar a su destino en desorden.
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 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.

Manejo de Segmentos Perdidos

Por más ó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 estos está un
mecanismo para retransmitir segmentos con datos sin acuse de recibo.
Un servicio de host de destino que utiliza TCP generalmente sólo da acuse de recibo de datos para bytes de
secuencia continuos. Si uno o más segmentos se pierden, sólo se acusa recibo de los datos de los segmentos
que completan el stream.

Por ejemplo, si se recibieron los segmentos con números de secuencia de 1500 a 3000 y de 3400 a 3500, el
número de acuse de recibo sería 3001. Esto es porque hay segmentos con números de secuencia del 3001 al
3399 que no se han recibido.

Cuando el TCP en el host de origen no recibe un acuse de recibo luego de un determinado período de tiempo,
éste regresará al último número de acuse de recibo que recibió y volverá a transmitir los datos desde dicho
punto.

Para una implementación de TCP típica, un host puede transmitir un segmento, colocar una copia en una cola
de retransmisión e iniciar un temporizador. Cuando se recibe el acuse de recibo de los datos, se elimina el
segmento de la cola. Si no se recibe el acuse de recibo antes de que el temporizador venza, el segmento es
retransmitido.

 Protocolo UDP

UDP es un protocolo simple que provee las funciones básicas de la capa de transporte. Tiene una sobrecarga
mucho menor que el TCP, ya que no está orientado a la conexión y no proporciona mecanismos sofisticados
de retransmisión, secuenciamiento y flujo de control.

Esto no significa que las aplicaciones que utilizan UDP no son siempre poco confiables. Sólo quiere decir que
estas funciones no las contempla el protocolo de la capa de transporte y se deben implementar 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, los
protocolos clave de la capa de aplicación que utiliza UDP incluyen:

 Sistema de nombres de dominio (DNS)


 Protocolo simple de administración de red (SNMP, Simple Network Management Protocol)
 Protocolo de configuración dinámica de host (DHCP)
 Protocolo de información de enrutamiento (RIP)
 Protocolo de transferencia de archivos trivial (TFTP)
 Juegos en línea

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.

 Protocolos y Funcionalidad de la Capa de Aplicación


 Aplicaciones: La Interfaz Entre las Redes de Personas y las Redes de Datos

Las funciones asociadas con los protocolos de la capa de aplicación permiten a la red humana comunicarse
con la red de datos subyacente. Cuando abrimos un explorador Web o una ventana de mensajería
instantánea se inicia una aplicación, y el programa se coloca en la memoria del dispositivo donde se ejecuta.
Cada programa ejecutable cargado a un dispositivo se denomina proceso.

Dentro de la capa de aplicación, existen dos formas de procesos o programas de software que proporcionan
acceso a la red: aplicaciones y servicios.

Aplicaciones Reconocidas por la Red

Las aplicaciones son los programas de software que utiliza la gente para comunicarse a través de la red.
Algunas aplicaciones de usuario final son reconocidas por la red, lo cual significa que implementan los
protocolos de la capa de aplicación y pueden comunicarse directamente con las capas inferiores del stack de
protocolos. Los clientes de correo electrónico y los exploradores Web son ejemplos de este tipo de
aplicaciones.

Servicios de la Capa de Aplicación

Otros programas pueden necesitar la ayuda de los servicios de la capa de aplicación para utilizar los recursos
de la red, como transferencia de archivos o cola de impresión en la red. Aunque son transparentes para el
usuario, estos servicios son los programas que se comunican con la red y preparan los datos para la
transferencia. Diferentes tipos de datos, ya sea texto, gráfico o video, requieren de diversos servicios de red
para asegurarse de que estén bien preparados para procesar las funciones de las capas inferiores del modelo
OSI.

Cada servicio de red o aplicación utiliza protocolos que definen los estándares y formatos de datos a
utilizarse. Sin protocolos, la red de datos no tendría una manera común de formatear y direccionar los datos.
Es necesario familiarizarse con los protocolos subyacentes que rigen la operación de los diferentes servicios
de red para entender su función.

 La Función de los Protocolos en Relación con el Soporte de la Comunidad

Los protocolos de la capa de aplicación los utilizan tanto los dispositivos de origen como de destino durante
una sesión de comunicación. Los protocolos de la capa de aplicación que se implementaron en los hosts de
origen y destino deben coincidir para que las comunicaciones tengan éxito.

Los protocolos establecen reglas consistentes para el intercambio de datos entre aplicaciones y servicios
cargados en los dispositivos participantes. Los protocolos especifican cómo se estructuran los datos dentro de
los mensajes y los tipos de mensajes que se envían entre origen y destino. Estos mensajes pueden ser
solicitudes de servicios, acuses de recibo, mensajes de datos, mensajes de estado o mensajes de error. Los
protocolos también definen los diálogos de mensajes, asegurando que un mensaje enviado encuentre la
respuesta esperada y se invoquen los servicios correspondientes cuando se realiza la transferencia de datos.

Muchos tipos de aplicaciones diferentes se comunican a través de las redes de datos. Por lo tanto, los
servicios de la capa de aplicación deben implementar protocolos múltiples para proporcionar la variedad
deseada de experiencias de comunicación. Cada protocolo tiene un fin específico y contiene las
características requeridas para cumplir con dicho propósito. Deben seguirse los detalles del protocolo
correspondiente a cada capa, así las funciones en una capa se comunican correctamente con los servicios en
la capa inferior.

Las aplicaciones y los servicios también pueden utilizar protocolos múltiples durante el curso de una
comunicación simple. Un protocolo puede especificar cómo se establece la conexión de redes y otro describir
el proceso para la transferencia de datos cuando el mensaje se pasa a la siguiente capa inferior.

 Funciones, Funcionamiento y Utilización de los Servicios de la Capa de Aplicación TCP/IP

Aunque el grupo de protocolos TCP/IP se desarrolló antes de la definición del modelo OSI, la funcionalidad de
los protocolos de la capa de aplicación de TCP/IP se adaptan aproximadamente a la estructura de las tres
capas superiores del modelo OSI. Capas de aplicación, presentación y sesión.
La mayoría de los protocolos de la capa de aplicación de TCP/IP se desarrollaron antes de la aparición de
computadoras personales, interfaces del usuario gráficas y objetos multimedia. Como resultado, estos
protocolos implementan muy poco de la funcionalidad que es especifica en las capas de presentación y sesión
del modelo OSI.

La capa de Presentación

La capa de presentación tiene tres funciones principales:

 Codificación y conversión de datos de la capa de aplicación para garantizar que los datos del dispositivo
de origen se puedan interpretar por la aplicación adecuada en el dispositivo de destino.
 Compresión de los datos de forma que los pueda descomprimir el dispositivo de destino.
 Encriptación de los datos para la transmisión y la encriptación de los mismos cuando lleguen a su
destino.

Generalmente, las implementaciones de la capa de presentación no están relacionadas con un stack de


protocolos en particular. Los estándares para videos y gráficos son algunos ejemplos. Dentro de los
estándares más conocidos para video encontramos QuickTime y el Grupo de expertos en películas (MPEG).
QuickTime es una especificación de Apple Computer para audio y video, y MPEG es un estándar para la
codificación y compresión de videos.

Dentro de los formatos de imagen gráfica más conocidos encontramos el Formato de intercambio gráfico
(GIF), Grupo de expertos en fotografía (JPEG) y Formato de archivo de imagen etiquetada (TIFF). GIF y
JPEG son estándares de compresión y codificación para imágenes gráficas, y TIFF es un formato de
codificación estándar para imágenes gráficas.

La Capa de Sesión

Como lo indica el nombre de la capa de sesión, las funciones en esta capa crean y mantienen diálogos entre
las aplicaciones de origen y destino. La capa de sesión maneja el intercambio de información para iniciar los
diálogos y mantenerlos activos, y para reiniciar sesiones que se interrumpieron o desactivaron durante un
periodo de tiempo prolongado.

La mayoría de las aplicaciones, como los exploradores Web o los clientes de correo electrónico, incorporan la
funcionalidad de las Capas 5, 6 y 7 del modelo OSI.

Los Protocolos de Capa de Aplicación de TCP/IP

Los protocolos de capa de aplicación de TCP/IP más conocidos son aquéllos que proporcionan intercambio de
la información del usuario. Estos protocolos especifican la información de control y formato necesaria para
muchas de las funciones de comunicación de Internet más comunes. Algunos de los protocolos TCP/IP son:

 El Protocolo servicio de nombres de dominio (DNS, Domain Name Service) se utiliza para resolver
nombres de Internet para direcciones IP.
 El Protocolo de transferencia de hipertexto (HTTP, Hypertext Transfer Protocol) se utiliza para transferir
archivos que forman las páginas Web de la World Wide Web.
 El Protocolo simple de transferencia de correo (SMTP) se utiliza para la transferencia de mensajes de
correo y adjuntos.
 Telnet, un protocolo de emulación de terminal, se utiliza para proporcionar acceso remoto a servidores y
a dispositivos de red.
 El Protocolo de transferencia de archivos (FTP) se utiliza para la transferencia de archivos interactiva
entre sistemas.
 Capa de sesión

El nivel de sesión o capa de sesión es el quinto nivel del modelo OSI,1 que proporciona los mecanismos
para controlar el diálogo entre las aplicaciones de los sistemas finales. En muchos casos, los servicios de la
capa de sesión son parcialmente, o incluso, totalmente prescindibles. No obstante en algunas aplicaciones su
utilización es ineludible.
La capa de sesión proporciona los siguientes servicios:

 Control del Diálogo: Éste puede ser simultáneo en los dos sentidos (full-duplex) o alternado en ambos
sentidos (half-duplex).
 Agrupamiento: El flujo de datos se puede marcar para definir grupos de datos.
 Recuperación: La capa de sesión puede proporcionar un procedimiento de puntos de comprobación, de
forma que si ocurre algún tipo de fallo entre puntos de comprobación, la entidad de sesión puede
retransmitir todos los datos desde el último punto de comprobación y no desde el principio.
Todas estas capacidades se podrían incorporar en las aplicaciones de la capa 7. Sin embargo ya que todas
estas herramientas para el control del diálogo son ampliamente aplicables, parece lógico organizarlas en una
capa separada, denominada capa de sesión.2
La capa de sesión surge como una forma de organizar y sincronizar el diálogo y controlar el intercambio de
datos.
La capa de sesión permite a los usuarios de máquinas diferentes establecer sesiones entre ellos. Una sesión
permite el transporte ordinario de datos, como lo hace la capa de transporte, pero también proporciona
servicios mejorados que son útiles en algunas aplicaciones. 3 Se podría usar una sesión para que el usuario se
conecte a un sistema remoto de tiempo compartido o para transferir un archivo entre dos máquinas.
Protocolos de la capa de sesión

 Protocolo RPC (llamada a procedimiento remoto): es un protocolo que permite a un programa de


ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones
entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. Las RPC son
muy utilizadas dentro del paradigma cliente-servidor. Siendo el cliente el que inicia el proceso solicitando
al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha
operación al cliente. Hoy en día se está utilizando el XML como lenguaje para definir el IDLy
el HTTP como protocolo de red, dando lugar a lo que se conoce como servicios web.

 SCP (Secure Copy): El protocolo SCP es básicamente idéntico al protocolo RCP diferencia de este, los
datos son cifrados durante su transferencia, para evitar que potenciales packet sniffers extraigan
información útil de los paquetes de datos. Sin embargo, el protocolo mismo no provee autenticación y
seguridad; sino que espera que el protocolo subyacente, SSH, lo asegure.

 ASP (Protocolo de sesión APPLE TALK): Fue desarrollado por Apple Computers, ofrece
establecimiento de la sesión, mantenimiento y desmontaje, así como la secuencia petición. ASP es un
protocolo intermedio que se basa en la parte superior de AppleTalk Protocolo de transacciones (ATP),
que es el original fiable de nivel de sesión protocolo de AppleTalk. Proporciona servicios básicos para
solicitar respuestas a las arbitrarias órdenes y llevar a cabo fuera de la banda de consultas de estado.
También permite al servidor enviar mensajes asíncronos de atención al cliente.
2.- el modelo cliente – servidor

El “modelo de la OSI” es una solución elegante y realmente aplicable en muchos casos, pero tiene un
problema.

 La existencia de los encabezados genera un “costo” adicional de transmisión.


 Cada envío de un mensaje genera:
o Proceso en media docena de capas.
o Preparación y agregado de encabezados en el camino hacia “abajo”.
o Eliminación y examen de encabezados en el camino hacia “arriba”.

Con enlaces del orden de decenas (o centenas) de miles de bits / segundo y cpu poderosas:

 La carga de procesamiento de los protocolos no es significativa.


 El factor limitante es la capacidad de las líneas.
 Ej.: redes de área extendida (WAN).

Con enlaces del orden de millones de bits / segundo y computadoras personales:

 La carga de procesamiento de los protocolos sí es frecuentemente significativa.


 El factor limitante no es la capacidad de las líneas.
 Ej.: redes de área local (LAN).

La mayoría de los sistemas distribuidos basados en LAN no utilizan los protocolos de capas completos, sí
utilizan un subconjunto de toda una pila de protocolos.

El “modelo OSI” no dice nada acerca de la forma de estructurar al sistema distribuido.

El “modelo cliente - servidor” tiene como idea fundamental la estructuración del S. O. como:

 Un grupo de procesos en cooperación, llamados servidores, que ofrecen servicios a los usuarios.
 Un grupo de procesos usuarios llamados clientes.

El “modelo cliente - servidor” se basa en un “protocolo solicitud / respuesta”:

 Es sencillo y sin conexión.


 No es complejo y orientado a la conexión como OSI o TCP / IP.
 El cliente envía un mensaje de solicitud al servidor pidiendo cierto servicio.
 El servidor:
o Ejecuta el requerimiento.
o Regresa los datos solicitados o un código de error si no pudo ejecutarlo correctamente.
 No se tiene que establecer una conexión sino hasta que ésta se utilice.
 La pila del protocolo es más corta y por lo tanto más eficiente.
 Si todas las máquinas fuesen idénticas solo se necesitarían tres niveles de protocolos

Direccionamiento en C - S

Para que un cliente pueda enviar un mensaje a un servidor, debe conocer la dirección de éste.

Un esquema de direccionamiento se basa en la dirección de la máquina destinataria del mensaje:

 Es limitativo si en la máquina destinataria se ejecutan varios procesos, pues no se sabría para cuál
de ellos es el mensaje.
Otro esquema de direccionamiento se basa en identificar los procesos destinatarios en vez de a las máquinas:

 Elimina la ambigüedad acerca de quién es el receptor.


 Presenta el problema de cómo identificar los procesos:
o Una solución es una nomenclatura que incluya la identificación de la máquina y del proceso:
 No se necesitan coordenadas globales.
 Pueden repetirse los nombres de los procesos en distintas máquinas.

Una variante utiliza machine.local-id en vez de machine.process:

 local-id generalmente es un entero aleatorio de 16 o 32 bits.


 Un proceso servidor se inicia mediante una llamada al sistema para indicarle al núcleo que desea
escuchar a local-id.
 Cuando se envía un mensaje dirigido a machine.local-id el núcleo sabe a cuál proceso debe dar el
mensaje.

El direccionamiento machine.process presenta el serio inconveniente de que no es transparente:

 La transparencia es uno de los principales objetivos de la construcción de sistemas distribuidos.


 El usuario debe conocer la posición del servidor.
 Un cambio de servidor obliga a cambiar los programas.

Otro método de direccionamiento consiste en asignarle a cada proceso una única dirección que no contenga
un número de máquina:

 Una forma es mediante un asignador centralizado de direcciones a los procesos que mantenga un
contador:
o Al recibir una solicitud de dirección regresa el valor actual del contador y lo incrementa en
uno.
 La desventaja es el elemento centralizado.

También existe el método de dejar que cada proceso elija su propio identificador:

 En un espacio de direcciones grande y disperso, por ej.: enteros binarios de 64 bits.


 La probabilidad de que dos procesos elijan el mismo número es muy pequeña.
 Existe el problema, para el núcleo emisor, de saber a qué máquina enviar el mensaje:
o En una LAN, el emisor puede transmitir un paquete especial de localización con la dirección
del proceso destino.
o Este paquete de transmisión será recibido por todas las máquinas de la red.
o Todos los núcleos verifican si la dirección es la suya; si lo es, regresa un mensaje aquí
estoy con su dirección en la red (número de máquina).
o El núcleo emisor utiliza esa dirección y la captura para evitar a posteriori una nueva
búsqueda del servidor.
 Es un esquema transparente, pero la transmisión provoca una carga adicional en el sistema:
o Se puede evitar con una máquina adicional para la asociación de:
 Los nombres de servicios.
 Las direcciones de las máquinas.

Al utilizar este sistema:

 Se hace referencia a los procesos de los servidores mediante cadenas en ASCII que son las que
aparecen en los programas.
 No se referencian números binarios de máquinas o procesos.
 Al ejecutar un cliente que intente utilizar un servidor:
o En su primer intento envía una solicitud a un servidor especial de asociaciones (servidor de
nombres):
 Le solicita el número de la máquina donde en ese momento se localiza el servidor.
o Conociendo la dirección del servidor, se le envía la solicitud del servicio requerido.

Otro método utiliza hardware especial:

 Los procesos eligen su dirección en forma aleatoria.


 Los chips de interfaz de la red se diseñan de modo que permitan a los procesos almacenar
direcciones de procesos en ellos.
 Los paquetes transmitidos utilizan direcciones de procesos en vez de direcciones de máquinas.
 Al recibir cada paquete el chip de interfaz de la red debe examinarlo para determinar si el proceso
destino se encuentra en esa máquina:
o Lo acepta en caso afirmativo.
o No lo acepta en caso negativo

Primitivas de Bloqueo Vs. No Bloqueo en C - S

Las primitivas de transferencia de mensajes consideradas anteriormente se denominan primitivas de


bloqueo o primitivas síncronas.

 El proceso emisor se suspende (se bloquea) mientras se envía el mensaje.


 El proceso receptor se suspende mientras se recibe el mensaje.

Una alternativa son las primitivas sin bloqueo o primitivas asíncronas:

 El proceso emisor:
o No se suspende mientras se envía el mensaje.
o Sí puede continuar su cómputo paralelamente con la transmisión del mensaje.
o No puede modificar el buffer de mensajes hasta que se envíe el mensaje.
o No tiene control sobre la terminación de la transmisión y por lo tanto no sabe cuándo será
seguro reutilizar el buffer.

Una solución es:

 Que el núcleo copie el mensaje a un buffer interno del núcleo.


 Que entonces el núcleo permita al proceso continuar y reutilizar el buffer.

La desventaja de la solución es que cada mensaje de salida debe ser copiado desde el espacio del usuario al
espacio del núcleo.

Otra solución es:

 Interrumpir al emisor cuando se envíe el mensaje.


 Informarle que el bu¤er nuevamente está disponible.

La desventaja radica en la dificultad de la programación basada en interrupciones a nivel usuario.

Generalmente se considera que las desventajas de las primitivas asíncronas no compensan las ventajas del
máximo paralelismo que permiten lograr.

El criterio utilizado ha sido el siguiente:


 La diferencia esencial entre una primitiva síncrona y una asíncrona es si el emisor puede volver
a utilizar el buffer de mensajes en forma inmediata y segura después de recuperar el control.
 El momento en que el mensaje llega al receptor es irrelevante.

Otro criterio establece lo siguiente:

 Una primitiva síncrona es aquella en que el emisor se bloquea hasta que el receptor ha aceptado el
mensaje y la confirmación regresa al emisor.
 Todo lo demás es asíncrono con este criterio.

Desde el punto de vista del S. O. generalmente se considera el primer criterio; el interés está centrado en el
manejo de los buffers y en la transmisión de los mensajes.

Desde el punto de vista de los lenguajes de programación se tiende a considerar el segundo criterio; el interés
está centrado en el lenguaje de programación y sus facilidades de uso.

Generalmente a las primitivas de envío se las conoce como send y a las de recepción como receive y ambas
pueden ser con bloqueo o sin bloqueo.

Una recepción sin bloqueo le indica al núcleo la localización del buffer y regresa el control:

 El problema es saber quién hizo la llamada cuando se llevó a cabo la operación.


 Las soluciones pueden ser:
o Proporcionar una primitiva explícita wait que permita al receptor bloquearse cuando lo
desee.
o Proporcionar una primitiva test que permita verificar el estado del núcleo.

Primitivas Almacenadas en Buffer Vs. No Almacenadas en C - S

Las primitivas consideradas hasta ahora son esencialmente primitivas no almacenadas

 Significa que una dirección se refiere a un proceso específico.


 Una llamada receive (addr, &m) le indica al núcleo de la máquina en donde se ejecuta:
o Que el proceso que hace la llamada escucha a la dirección addr.
o Que está preparada para recibir el mensaje enviado a esa dirección.
o Que se dispone de un único buffer de mensajes al que apunta m para capturar el mensaje
que llegará.
o Que cuando el mensaje llegue será copiado (por el núcleo receptor) al buffer:
 Se elimina entonces el bloqueo del proceso receptor.

Este esquema funciona bien cuando el servidor llama a receive antes de que el cliente llame a send.

El problema se presenta cuando el send se lleva a cabo antes que el receive:

 El núcleo del servidor:


o No sabe cuál de sus procesos utiliza la dirección en el mensaje recién llegado.
o No sabe dónde copiar el mensaje recibido.

Una solución consiste en:

 Descartar el mensaje.
 Dejar que el cliente espere.
 Confiar en que el servidor llame a receive antes de que el cliente vuelva a transmitir; por ello el
cliente podría tener que intentar varias veces.
Si dos o más clientes utilizan un servidor con transferencia de mensajes sin almacenamiento en buffers:

 Luego de que el servidor aceptó un mensaje de uno de ellos:


o Deja de escuchar a su dirección hasta que termina su trabajo.
o Regresa al principio del ciclo para volver a llamar a receive.
 Si realizar el trabajo insume cierto tiempo, los demás clientes podrían hacer varios intentos de envíos
sin éxito.

Otra solución consiste en hacer que el núcleo receptor mantenga pendientes los mensajes por un instante:

 Para prevenir que un receive adecuado se realice en un tiempo corto.


 Cuando llega un mensaje “no deseado”, se inicializa el cronómetro:
o Si el tiempo expira antes de que ocurra un receive apropiado, el mensaje se descarta.
 Se reduce la probabilidad de que un mensaje se pierda.
 Se debe almacenar y manejar los mensajes que llegan en forma prematura.
 Se necesitan los buffers y la administración de los mismos.
 Se puede hacer mediante una nueva estructura de datos llamada buzón:
o Un proceso interesado en recibir mensajes:
 Le indica al núcleo que cree un buzón para él.
 Especifica una dirección en la cual buscar los paquetes de la red.
o Todos los mensajes que lleguen en esa dirección se colocan en el buzón.

La llamada a receive elimina un mensaje del buzón o se bloquea (si se utilizan primitivas con bloqueo) si no
hay un mensaje presente.

Esta técnica se denomina primitiva con almacenamiento en buffers.

Los buzones tienen el problema de que son finitos y pueden ocuparse en su totalidad:

 Cuando llega un mensaje a un buzón lleno, el núcleo debe elegir entre:


o Mantener el mensaje pendiente por un momento esperando que algún mensaje sea retirado
del buzón a tiempo.
o Descartar el mensaje.
 Esta es la misma situación que se tiene cuando se trabaja sin almacenamiento en buffers:
o Con buffers se reduce la probabilidad de problemas, pero los problemas no se eliminan ni
cambia su naturaleza.

Otra solución utilizada es no dejar que un proceso envíe un mensaje si no existe espacio para su
almacenamiento en el destino:

 El emisor debe bloquearse hasta que obtenga de regreso un reconocimiento:


o Debe indicar que el mensaje ha sido recibido.
 Si el buzón está lleno, el emisor puede hacer un respaldo y suspenderse de manera retroactiva:
o La suspensión debe operar como si fuera justo antes de que intentara enviar el mensaje.
o Cuando haya espacio libre en el buzón, se hará que el emisor intente nuevamente.

Primitivas Confiables Vs. No Confiables en C - S

Hasta acá se ha supuesto que los mensajes enviados siempre serán recibidos, pero en la realidad, los
mensajes se pueden perder por diversas causas.

Cuando un cliente envía un mensaje se le puede suspender hasta que el mensaje ha sido enviado:

 Cuando continúa, no hay garantía de que el mensaje ha sido entregado, pues el mensaje podría
haberse perdido.
Un enfoque de este problema consiste en volver a definir la semántica de send para hacerlo no confiable

 El sistema no garantiza la entrega de los mensajes.


 La implantación de una comunicación confiable se deja en manos de los usuarios.

Otro método exige que el núcleo de la máquina receptora envíe un reconocimiento al núcleo de la máquina
emisora:

 Solo cuando reciba el reconocimiento, el núcleo emisor liberará al proceso usuario (cliente).
 La solicitud de un cliente a un servidor es reconocida por el núcleo del servidor.
 La respuesta del servidor de regreso al cliente es reconocida por el núcleo del cliente.
 Una solicitud de respuesta consta de cuatro mensajes.

Otra solución aprovecha el hecho de que la comunicación cliente - servidor se estructura:

 Como una solicitud del cliente al servidor.


 Seguida de una respuesta del servidor al cliente.
 El cliente se bloquea después de enviar un mensaje.
 El núcleo del servidor no envía de regreso un reconocimiento sino que la misma respuesta funciona
como tal.
 El emisor permanece bloqueado hasta que regresa la respuesta.
 Si la respuesta no llega en cierto tiempo, el núcleo emisor puede volver a enviar la solicitud; así se
protege contra la posibilidad de una pérdida del mensaje.

En el esquema anterior la respuesta funciona como un reconocimiento a la solicitud:

 No existe un reconocimiento por la respuesta:


o La seriedad de esta omisión depende de la naturaleza de la solicitud.
 En algunos casos se utiliza un reconocimiento del núcleo del cliente al núcleo del servidor:
o Hasta no recibir este paquete, el send del servidor no termina y el servidor permanece
bloqueado (si se utilizan primitivas con bloqueo).

Otra posibilidad es la siguiente:

 Al llegar una solicitud al núcleo del servidor, se inicia un cronómetro.


 Si el servidor envía la respuesta antes de que termine el cronómetro, ésta funciona como el
reconocimiento.
 Si expira el tiempo del cronómetro, se envía un reconocimiento separado.

Comunicación en Grupo

Una hipótesis subyacente e intrínseca de RPC es que la comunicación solo es entre dos partes: el cliente y el
servidor.

A veces existen circunstancias en las que la comunicación es entre varios procesos y no solo dos:

 Ej.: un grupo de servidores de archivo que cooperan para ofrecer un único servicio de archivos
tolerante a fallos:
o Sería recomendable que un cliente envíe el mensaje a todos los servidores para garantizar
la ejecución de la solicitud aunque alguno falle.
 RPC no puede controlar la comunicación de un servidor con muchos receptores, a menos que
realice RPC con cada uno en forma individual.

Un grupo es una colección de procesos que actúan juntos en cierto sistema o alguna forma determinada por
el usuario.

La propiedad fundamental de todos los grupos es que cuando un mensaje se envía al propio grupo, todos los
miembros del grupo lo reciben.

Se trata de una comunicación uno - muchos (un emisor, muchos receptores), que se distingue de
la comunicación puntual o punto a punto (un emisor, un receptor).

Los grupos son dinámicos:

 Se pueden crear y destruir.


 Un proceso se puede unir a un grupo o dejar a otro.
 Un proceso puede ser miembro de varios grupos a la vez.

La implantación de la comunicación en grupo depende en gran medida del hardware:

 En ciertas redes es posible crear una dirección especial de red a la que pueden escuchar varias
máquinas:
o Cuando se envía un mensaje a una de esas direcciones se lo entrega automáticamente a
todas las máquinas que escuchan a esa dirección.
o Esta técnica se denomina multitransmisión.
o Cada grupo debe tener una dirección de multitransmisión distinta.

Las redes que no soportan multitransmisión operan con transmisión simple:


 Significa que los paquetes que tienen cierta dirección se entregan a todas las máquinas.
 Se puede utilizar para implantar los grupos, pero es menos eficiente que la multitransmisión.
 Cada máquina debe verificar, mediante su software, si el paquete va dirigido a ella:
o En caso negativo se descarta, pero para analizarlo se generó una interrupción y se dedicó
ciclos de cpu.

Otra solución es implantar la comunicación en grupo mediante la transmisión por parte del emisor de paquetes
individuales a cada uno de los miembros del grupo:

 En vez de un paquete se precisan “n” paquetes.


 Es menos eficiente que las soluciones anteriores.
 Es una solución valida particularmente con grupos pequeños.
 El envío de un mensaje de un emisor a un único receptor se llama unitransmisión.

Aspectos del Diseño de la Comunicación en Grupo

En la comunicación en grupo también se presentan posibilidades tales como:

 Almacenamiento en buffers vs. el no almacenamiento.


 Bloqueo vs. no bloqueo.

Además existen otras posibilidades que no se dan en la comunicación entre un emisor y un solo receptor.

Grupos Cerrados Vs. Grupos Abiertos

En los grupos cerrados:

 Solo los miembros del grupo pueden enviar hacia el grupo.


 Los extraños no pueden enviar mensajes al grupo como un todo, peor pueden enviar mensajes a
miembros del grupo en lo individual.

En los grupos abiertos:

 Cualquier proceso del sistema puede enviar a cualquier grupo.

Los grupos cerrados se utilizan generalmente para el procesamiento paralelo:

 Ej.: un conjunto de procesos que trabajan de manera conjunta, tienen su propio objetivo y no
interactúan con el mundo exterior.

Cuando la idea de grupo pretende soportar servidores duplicados:

 Es importante que los procesos que no sean miembros (clientes) puedan enviar hacia el grupo.
 Podría ser necesario que los miembros del grupo utilizaran la comunicación en grupo.

Grupos de Compañeros Vs. Grupos Jerárquicos

En algunos grupos todos los procesos son iguales:

 No existe distinción de jerarquías.


 Son los grupos de compañeros.

En otros grupos existe cierto tipo de jerarquía:


 Son los grupos jerárquicos.
 Ej.: un proceso es el coordinador y todos los demás son los trabajadores.
 Una solicitud de un trabajo que se genere en un cliente externo o en uno de los procesos
trabajadores:
o Se envía al coordinador.
o El coordinador decide cuál de los trabajadores es el más adecuado para llevarla a cabo y se
la envía.

Cada tipo de grupo tiene sus ventajas y desventajas:

 Respecto del grupo de compañeros:


o Es simétrico y no tiene un punto de fallo.
o Si uno de los procesos falla, el grupo se reduce pero puede continuar.
o Para tomar decisiones grupales se producen retrasos debidos a la comunicación entre los
miembros del grupo.
 Respecto del grupo jerárquico:
o La pérdida del coordinador lleva al grupo a un alto total, lo que es una desventaja.
o En condiciones normales, el coordinador funciona correctamente y toma decisiones sin
molestar a los demás procesos.

Un ej. de grupo jerárquico podría ser un programa de ajedrez en paralelo:

 El coordinador:
o Toma el tablero actual.
o Genera todos los movimientos válidos a partir de él.
o Los envía a los trabajadores para su evaluación.
o Controla la estrategia de búsqueda.
o Desarrolla el árbol del juego.
 Los trabajadores:
o Al procesar las evaluaciones generan nuevos tableros.
o Los tableros se envían al coordinador.
o Al quedar inactivos, solicitan al coordinador un nuevo tablero en el cual trabajar.

You might also like