Comunicación de datos y redes de ordenadores

Anuncio
Comunicación de Datos
y
Redes de Computadores
Índice
I. Introducción ______________________________________________________ 1
I.1. Historia de las Redes de Computadores __________________________________ 1
I.2. Objetivos de Las Redes ________________________________________________ 1
I.3. Tipos de Redes _______________________________________________________ 2
I.4. Clasificación de las Redes de Computadores ______________________________ 2
I.5. Estructura de Red ____________________________________________________ 2
I.5.1. Red Física ______________________________________________________________ 2
I.5.2. Hosts o Sistemas Finales ___________________________________________________ 3
I.5.3. Subred _________________________________________________________________ 4
I.6. Arquitectura de Red __________________________________________________ 4
I.6.1. Capas __________________________________________________________________ 4
I.6.2. Servicio ________________________________________________________________ 5
I.6.3. Protocolo _______________________________________________________________ 5
I.6.4. Problemas de Diseño ______________________________________________________ 6
II. Ingeniería de Protocolos de Red ______________________________________ 7
II.1. Especificación Formal de Protocolos ____________________________________ 7
II.2. Validación y Verificación _____________________________________________ 8
II.3. Análisis de Prestaciones ______________________________________________ 8
II.4. Implementación _____________________________________________________ 8
II.5. Prueba_____________________________________________________________ 8
III. Modelo OSI de ISO _______________________________________________ 9
III.1. Las Capas de OSI ___________________________________________________ 9
III.2. Transmisión de Datos en OSI ________________________________________ 10
IV. Capa Física_____________________________________________________ 13
IV.1. Bases Teóricas para la Comunicación de Datos _________________________ 13
IV.1.1. Conceptos Básicos _____________________________________________________
IV.1.2. Medios de Transmisión _________________________________________________
IV.1.3. Comparación de Medios _________________________________________________
IV.1.4. Señales Ondulatorias ___________________________________________________
IV.1.5. Análisis de Fourier _____________________________________________________
IV.1.6. Espectro y Filtros ______________________________________________________
IV.1.7. Distorsión, Interferencia, Atenuación y Ruido ________________________________
IV.1.8. Velocidad de Transmisión _______________________________________________
13
14
16
17
17
18
19
19
IV.2. Transmisión Analógica _____________________________________________ 21
IV.2.1. Sistema Telefónico _____________________________________________________ 21
IV.3. Transmisión Digital ________________________________________________ 22
IV.3.1. Modulación de Señales __________________________________________________ 22
IV.3.2. Teorema del Muestreo __________________________________________________ 23
IV.3.3. Modulación por Impulsos Codificados (MIC) ________________________________ 24
V. Capa de Enlace __________________________________________________ 25
V.1. Problemas de Diseño Capa de Enlace __________________________________ 25
V.1.1. Tipo de Servicio Suministrado _____________________________________________
V.1.2. Entramado ____________________________________________________________
V.1.3. Control de Error ________________________________________________________
V.1.4. Gestión de Enlace ______________________________________________________
V.1.5. Control de Flujo ________________________________________________________
25
26
26
27
27
V.2. Detección y Corrección de Errores ____________________________________ 28
V.2.1. Códigos Detectores de Hamming __________________________________________ 28
V.2.2. Códigos Detectores Cíclicos ______________________________________________ 28
V.3. Gestión de Enlace___________________________________________________ 29
V.3.1. Estrategias de Gestión de Enlace ___________________________________________
V.3.2. Estándares de Gestión de Enlace (IEEE 802) _________________________________
V.3.3. Protocolos Aloha _______________________________________________________
V.3.4. Protocolos CSMA (802.3) ________________________________________________
V.3.5. Rendimiento: Aloha y CSMA _____________________________________________
V.3.6. Protocolo TokenBus (Paso de Testigo en Bus) (802.4) _________________________
V.3.7. Protocolo TokenRing (Paso de Testigo en Anillo) (802.5) ______________________
V.3.8. Distributed Queue Dual Bus (DQDB, 802.6)__________________________________
V.3.9. Fiber Distributed Data Interface (FDDI, 802.8) _______________________________
V.3.10. ISDN, BISDN (ATM) __________________________________________________
30
31
32
33
35
35
36
38
38
39
V.4. Control de Flujo ____________________________________________________ 40
V.4.1. Definiciones ___________________________________________________________
V.4.2. Protocolos sin Memoria __________________________________________________
V.4.3. Protocolos de Ventana Deslizante __________________________________________
V.4.4. Rendimiento del Canal de Enlace __________________________________________
40
42
44
47
VI. Capa de Red ____________________________________________________ 49
VI.1. Problemas de Diseño de la Capa de Red _______________________________ 49
VI.1.1. Tipo de Servicios Suministrados __________________________________________
VI.1.2. Encaminamiento _______________________________________________________
VI.1.3. Interconexión de Redes _________________________________________________
VI.1.4. Control de Congestión __________________________________________________
49
49
49
49
VI.2. Servicios Proporcionados por la Capa de Red __________________________ 50
VI.2.1. Servicio con Conexión __________________________________________________ 50
VI.2.2. Servicio Sin Conexión __________________________________________________ 50
VI.2.3. Diferencias entre los Servicios Suministrados ________________________________ 50
VI.3. Primitivas OSI para la Capa de Red __________________________________ 50
VI.4. Organización Interna de la Capa de Red _______________________________ 51
VI.4.1. Circuitos Virtuales _____________________________________________________ 51
VI.4.2. Datagramas ___________________________________________________________ 53
VI.4.3. Comparación: Circuitos Virtuales vs. Datagramas _____________________________ 53
VI.5. Algoritmos de Encaminamiento ______________________________________ 54
VI.5.1. Encaminamiento Estático ________________________________________________ 54
VI.5.2. Encaminamiento Adaptativo _____________________________________________ 55
VI.6. Control de Congestión ______________________________________________ 56
VI.6.1. Preasignación de Memorias ______________________________________________
VI.6.2. Descarte de Paquetes ___________________________________________________
VI.6.3. Control Isarítmico de Congestión __________________________________________
VI.6.4. Control de Congestión por Control de Flujo _________________________________
VI.6.5. Paquetes Reguladores ___________________________________________________
VI.6.6. Resolución de Bloqueos _________________________________________________
56
56
57
57
57
58
VI.7. Ejemplos de Capa de Red ___________________________________________ 58
VI.7.1. Protocolo de Red IP (Internet Protocol) _____________________________________ 58
VI.7.2. Protocolo ARP (Address Resolution Protocol) _______________________________ 59
VII. Interconexionado de Redes _______________________________________ 60
VII.1. Conexión de Redes ________________________________________________ 60
VII.1.1. Capa Física: Repetidores (Hub) __________________________________________
VII.1.2. Subcapa de Acceso al Medio: Puentes (Bridges) _____________________________
VII.1.3. Capa de Enlace: Switch _________________________________________________
VII.1.4. Capa de Red: Encaminador (Router) _______________________________________
VII.1.5. Resumen de Características ______________________________________________
60
60
60
61
61
VII.2. Diseño de Topologías de Redes ______________________________________ 62
VIII. Capa de Aplicación _____________________________________________ 63
VIII.1. Conceptos Básicos ________________________________________________ 63
VIII.2. Aplicaciones Estándar más Comunes ________________________________ 63
VIII.2.1. Transferencia y Acceso Remoto de Archivos _______________________________ 63
VIII.2.2. Correo Electrónico ____________________________________________________ 64
VIII.2.3. Terminales Virtuales __________________________________________________ 65
IX. Capa de Presentación ____________________________________________ 66
IX.1. Teoría de la Información y Codificación de Fuentes _____________________ 66
IX.1.1. Teoría de la información_________________________________________________
IX.1.2. Entropía: Información Media _____________________________________________
IX.1.3. Codificación de la Fuente ________________________________________________
IX.1.4. Códigos ______________________________________________________________
IX.1.5. Análisis de Códigos Unívocos ____________________________________________
IX.1.6. Codificación de Huffmann (Instantáneo y Óptimo) ____________________________
IX.1.7. Otros Métodos ________________________________________________________
67
68
69
69
70
71
73
IX.2. Criptografía, Seguridad y Protección de los Datos _______________________ 73
IX.2.1. Criptología ___________________________________________________________
IX.2.2. Criptografía __________________________________________________________
IX.2.3. Criptoanálisis _________________________________________________________
IX.2.4. Problemas Típicos de Seguridad __________________________________________
73
74
74
75
IX.3. Representación en Formatos de Red __________________________________ 77
X. Capa de Sesión ___________________________________________________ 78
X.1. Servicios del Nivel de Sesión __________________________________________ 78
X.2. Interconexión de Procesos ____________________________________________ 78
X.3. Sincronización de Procesos ___________________________________________ 78
X.4. Administración de Actividades ________________________________________ 78
X.5. Notificación de Excepciones __________________________________________ 78
X.6. Llamada a Procedimiento Remoto (RPC) _______________________________ 79
XI. Capa de Transporte ______________________________________________ 80
XI.1. Calidad del Servicio ________________________________________________ 80
XI.2. Servicios de la Capa de Transporte ___________________________________ 81
XI.3. Primitivas de Transporte ____________________________________________ 81
XI.4. Administración de Conexión _________________________________________ 83
XI.4.1. Direccionamiento ______________________________________________________
XI.4.2. Pérdida de Mensajes ____________________________________________________
XI.4.3. Establecimiento de la Conexión ___________________________________________
XI.4.4. Liberación de la Conexión _______________________________________________
84
84
85
86
XI.5. Control de Flujo ___________________________________________________ 88
XI.6. Multiplexación ____________________________________________________ 88
XI.7. Recuperación de Caídas ____________________________________________ 88
XI.8. Los Paquetes TCP _________________________________________________ 89
XII. Anexos ________________________________________________________ 90
XII.1. Protocolos de Ventana Deslizante ____________________________________ 90
XII.1.1. Repetición No Selectiva ________________________________________________ 90
XII.1.2. Repetición Selectiva ___________________________________________________ 92
XIII. Bibliografía ___________________________________________________ 95
I. Introducción
I.1.
Historia de las Redes de Computadores
Antes de existir las redes de Computadores, los usuario de debían viajar hacia los
computadores, que eran muy grandes (físicamente) y caros, para utilizarlos. Más adelante
se crearon sistemas con terminales, los que permitían, a cierta distancia, utilizar de forma
remota un computardor, evitando la conglomeración de personas alrededor de él.
Luego apareció como una forma de utilizar terminales más alejadas de los
computadores, el uso de las conexiones telefónicas existentes para ello. Cuando se hacía
necesario que la velocidad y/o fiabilidad del canal de datos fuera mejor, se podían contratar
caros enlaces dedicados, los cuales eran implementados por empresas privadas. Las
terminales ya no sólo eran consolas tontas de despliega e ingreso de información, sino que
se hacían cada vez más inteligentes, aportando su grano de arena al problema de
computación.
Esto último derivó en el modelo actual de redes de computadores, en el cual las
“terminales” no son más que otros computadores conectados a la red. Así, cada uno de ellos
puede hacer de cliente y de servidor simultáneamente, proveyendo una gran capacidad de
resolución de problemas de computación y de comunicaciones. En algunas partes aún
subsisten las antiguas terminales, las que se utilizan conectadas a uno de estos
computadores conectados a la red (hosts).
Al masificarse esta manera de utilizar los computadores, aparecieron empresas
dedicadas a satisfacer la necesidad de canales portadores más rápidos y baratos, con lo cual
los costos bajaron rápidamente. Estas empresas son las que hoy en día se conocen como
portadores públicos, y son responsables de la explosión de las comunicaciones en los
últimos años.
I.2.
Objetivos de Las Redes
Compartir Recursos:
El objetivo fundamental de las redes es el compartir
información, dispositivos físicos (procesadores, memorias,
impresoras) y/o la carga de trabajo (programas distribuidos)
Aumentar Confiabilidad: Al compartirse los recursos, éstos se hacen más
confiables, ya que es inherente a la compartición de recursos el
duplicarlos (programas y datos). En el caso de recursos físicos,
éstos deben estar duplicados para soportar la compartición anterior.
Facilidad de Comunicación:
Proveen un medio de comunicación entre
personas muy efectivo a través de correo, paneles de discusión, etc.
Disminuir Costos: Las redes de computadores tienen mejor relación mejor
relación costo/rendimiento que los grandes computadores antiguos.
I.3.
Tipos de Redes
Existen a grandes rasgos dos tipos de redes de computadores, los cuales son:
Redes de Computadores:
Se componen de una serie de computadores
interconectados que proveen un medio de compartir recursos de
manera explícita, esto es, los usuarios
deben especificar
explícitamente dónde desea realizar una cierta tarea, con qué
máquina se comunica, dónde guarda sus archivos, etc.
Sistemas Distribuidos: Son sistemas en los cuales la red es transparente al
usuario, el cual la ve como un sólo gran computador virtual, y tiene
acceso a todos los recursos como si fueran locales a su computador.
La decisión de dónde realizar las tareas es realizada
automáticamente por el sistema.
I.4.
Clasificación de las Redes de Computadores
Las redes se clasifican de manera general en tres tipos según las distancias entre los
computadores que interconectan:
Redes Locales (LAN, Local Area Network) (hasta 1km):
Son redes que
permiten la interconexión de computadores dentro de un cuarto,
edificio o terreno.
Redes Metropolitanas (MAN, Metropolitan Area Network) (hasta 100km): Son
redes que permiten la interconexión de computadores de toda una
ciudad o región.
Redes Mundiales (WAN, Wide Area Network) (hasta 10.000km):
Son redes
que permiten la interconexión de computadores de todas partes del
mundo.
I.5.
Estructura de Red
Una red de computadores está organizada en una serie de redes físicas, las cuales
permiten la comunicación entre ellos. Veamos:
I.5.1. Red Física
Es un conjunto de nodos de la red, interconectados mediante un solo medio
físico o canal de comunicación, sin traductores intermedios.
Un canal de comunicación es un ambiente donde es posible establecer una
comunicación. Los medios físicos más comunes para establecer canales de comunicación
son: el sonido en el aire, la luz viajando a través de algún medio (aire, fibras ópticas), la
electricidad por cables (par trenzado, paralelo, líneas telefónicas), ondas de radio (radio,
televisión), etc.
Los nodos son elementos que son capaces de transmitir y/o recibir información a
través de uno o más canales de comunicación iguales o diferentes entre sí.
Existen dos tipos de redes físicas, las con canales punto-a-punto y las con canales de
difusión:
Canal Punto a Punto:
Tiene sólo dos nodos conectados a él, y cuando uno
transmite sólo el otro puede recibir la información transmitida (ej.:
llamadas por teléfono).
Canal de Difusión:
Poseen muchos nodos conectados al mismo canal, y
cuando uno de ellos transmite todos pueden recibir. El mensaje
enviado incluye un identificador que el receptor analiza para saber
si fue enviado a él o no.
a)
b)
c)
d)
e)
Topologías de Red Física Punto-a-Punto:
a) Estrella; b) Anillo; c) Completa; d) Irregular; e) Arbol;
a)
b)
c)
Topologías de Red Física de Difusión:
a) Bus de Datos; b) Radiodifusión; c) Anillo;
I.5.2. Hosts o Sistemas Finales
Son los computadores conectado a la red, que proveen y/o utilizan servicios
a/de ella. Los usuarios deben utilizar hosts para tener acceso a la red.
En general, los hosts son computadores mono o multiusuario que ofrecen servicios de
transferencia de archivos, conexión remota, servidores de base de datos, servidores WWW,
etc. Los usuarios que hacen uso de los hosts pueden a su vez pedir los mismos servicios a
otras máquinas conectadas a la red.
I.5.3. Subred
Es una red que sólo contiene enlaces, no contiene hosts, y que posibilita las
comunicaciones entre hosts distancia.
SUBRED
Relación entre hosts y la subred
Los hosts conectados a una subred deben hacerlo a través de uno o más nodos de ella,
de manera que todo el tráfico que va y viene desde la subred al host debe pasar por estos
nodos.
I.6.
Arquitectura de Red
Conjunto de capas y protocolos que definen el comportamiento de una red.
I.6.1. Capas
Las redes se construyen en base a una serie de capas o niveles, de manera de reducir
su complejidad. El número de capas, sus nombres y sus funciones varían de gran manera de
una red a otra, por lo que la estandarización se hace necesaria. Sin embargo, en toda red, el
propósito de una capa es proveer una servicios a la capa siguiente, encapsulando los
detalles de cómo se llevan a cabo las tareas. Tenemos entonces que:




Arquitectura basada en capas;
Cada capa utiliza servicios de la capa inferior;
Cada capa provee servicio a la capa superior, encapsulando los detalles;
La capa n de una máquina A se comunica de forma transparente con la capa n
de una máquina B (protocolo);
 La transparencia en capas n se implementa mediante servicios en las capas
n  1 de cada máquina (interfase);
 La implementación de un nivel en un sistema particular se llama entidad;
Capa n
Protocolo de Capa n
Capa n
Interfase Capas n/ n  1
Capa n  1
Protocolo de Capa n  1
Capa n  1
Interfase Capas n/ n  2
Capa n  2
Protocolo de Capa n  2
Capa n  2
…
…
…
Capa 2
Protocolo de Capa 2
…
Capa 2
Capa 1
Protocolo de Capa 1
Capa 1
Interfase Capas 2/1
Uso directo del Canal
Medio Físico o Canal de Comunicación
I.6.2. Servicio
Capacidad suministrada por un nivel n y los anteriores al nivel siguiente n+1,
a través de las entidades del nivel n. El conjunto de servicios suministrados por la
capa n constituye la interfaz n / n+1.
 La interfaz entre dos capas, vista de arriba hacia abajo, constituye una interfaz
cliente / servidor.
I.6.3. Protocolo
Conjunto de Algoritmos y Formatos que gobiernan la comunicación entre
entidades de un mismo nivel, utilizando los servicios del nivel anterior.
 Un protocolo es un mecanismo de control de la relación entre entidades pares
(misma capa) ubicadas en puntos físicos distintos de la red.
I.6.4. Problemas de Diseño
Los problemas de diseño de redes aparecen por lo general también al diseñar cada
capa, y son en general:
Establecer Conexión:
Debe existir un mecanismo para establecer una
conexión, y específicamente, debe poderse especificar con qué
proceso de que host se desea establecer la conexión.
Terminar Conexión:
Debe existir un mecanismo para terminar una
conexión, lo que parece ser trivial pero no lo es en absoluto.
Reglas de Transferencia: La comunicación puede ser unilateral (simplex),
bilateral alternada (semiduplex) o bilateral simultánea (duplex).
Control de Errores:
Debe existir un mecanismo de control y recuperación
de errores, además de una manera de asegurar el ordenamiento de
la información (no todos los canales mantienen el orden de la
información).
Velocidad: Se debe controlar tanto la velocidad de transferencia de datos en el
canal como la velocidad a la cual un emisor o receptor es capas de
procesarlos.
Largo de los Mensajes: Deben haber mecanismos de segmentación de
mensajes largos y de reunión de mensajes muy cortos.
Uso Concurrente de Canales: Una capa puede utilizar la misma conexión
para realizar conversaciones múltiples sin que éstas tengan relación
alguna.
Encaminamiento:
Se debe poder establecer un camino entre dos
máquinas. La decisión de cuál camino seguir se puede hacer de
manera automática o explícita en una o más capas de la red.
II. Ingeniería de Protocolos de Red
El diseño de protocolos ha ido evolucionando gradualmente desde las originales
aplicaciones de comunicaciones independientes, totalmente incompatibles unas de otras
(años 60 y 70). La necesidad de la unificación de las redes implicó el implantar protocolos
iguales en máquinas diferentes, lo que con el tiempo llevó a protocolos complejos (años 70
y 80).
Surge así la necesidad de utilizar lenguajes formales de descripción de protocolos no
ambiguos y precisos, que permitan establecer normas sin dobles interpretaciones y la
verificación de sus propiedades.
Aparecen así diversas normas, como la ISO, la SNA de IBM, SDL de CCITT, etc.,
las cuales utilizan diversas técnicas de representación formal. Tradicionalmente existen
cuatro maneras de representar formalmente los protocolos:




Autómatas;
Grafos;
Redes de Petri;
Diagramas de Tiempo.
Los pasos a seguir para especificar un protocolo son los siguientes:





II.1.
Especificación formal;
Validación y Verificación;
Análisis de Prestaciones;
Implementación;
Prueba;
Especificación Formal de Protocolos
La descripción formal consiste en una descripción abstracta del comportamiento de
un sistema, sin especificar ningún detalle de su implementación (recordar interfaz de los
tipos abstractos de datos, TAD). La especificación puede ser de dos tipos:
Constructiva:
Se describe el comportamiento del sistema usando un
lenguaje de muy alto nivel (LOTOS por ej.). Es un enfoque
operacional, orientado a las operaciones que el sistema realiza.
Descriptiva:
Se describen las propiedades que debe cumplir el sistema, las
cuales lo definen. Es un enfoque axiomático que utiliza lógica
matemática para describirlo.
II.2.
Validación y Verificación
Validación: Consiste en la comprobación de las propiedades del protocolo.
Dentro de ellas encontramos:
 Ausencia de Bloqueos;
 Ausencia de Lazos Improductivos (trabajo inútil);
 Capacidad de Recuperación y Sincronización;
Verificación: Consiste en la demostración de que el protocolo provee los
servicios que de él se esperan. Esto implica:
 Explorar el árbol de estados (autómatas);
 Equivalencias algebraicas (descripciones observacionales);
 Verificación lógica (descripciones axiomáticas);
II.3.
Análisis de Prestaciones
Consiste en modelar estadísticamente un protocolo, con la finalidad de determinar su
eficacia. Un protocolo no debe ser sólo lógicamente correcto, sino que además debe realizar
sus funciones eficientemente.
Se debe estimar el caudal eficaz, el uso de recursos y los tiempos de respuesta, bajo
los supuestos de tráficos característicos del nivel.
La complejidad de los protocolos actuales no permite hacer modelos analíticos, por lo
que se recurre a la simulación.
II.4.
Implementación
Se trata de la implementación final del protocolo especificado en una máquina en
particular, de manera de realizar algún nivel de la arquitectura de la red.
Para ello se debe traducir la especificación a algún lenguaje de programación, lo que
debe ser automatizado dentro de lo posible para evitar errores.
II.5.
Prueba
Se debe finalmente comprobar que la realización del nivel se ajusta a la norma
(prueba de conformidad), para lo cual existen centros certificadores y homologadores. Se
debe recurrir a asesoramiento por problemas legales y/o incompatibilidades.
La prueba generalmente se automatiza total o parcialmente, para hacer más fácil un
trabajo tedioso que por lo general se puede hacer sólo parcialmente debido a la complejidad
de los protocolos y a la gran cantidad de posibilidades que permiten.
III. Modelo OSI de ISO
La ISO (International Standard Organization) ha creado un estándar de referencia
para la arquitectura de redes. Este estándar se conoce como OSI (Open Systems
Interconnection), y pretende establecer un estándar para comunicaciones entre sistemas
diferentes entre sí.
III.1.
Las Capas de OSI
 Capas se crean donde se necesite un nivel diferente de abstracción;
 Cada capa debe efectuar una función bien definida;
 Función de cada capa elegida orientada al establecimiento de protocolos
internacionales;
 Límites entre capas se establecen de acuerdo a la minimización del flujo de
información entre ellas (por interfaces);
 Número de capas debe ser suficientemente grande para que funciones
diferentes no se deban poner en la misma capa, y lo suficientemente pequeño
para que la arquitectura no se torne difícil de manejar.
Unidad de
Información.
7.
Aplicación
Protocolo de Aplicación
Aplicación
APDU
6.
Presentación
Protocolo de Presentación
Presentación
PPDU
5.
Sesión
Protocolo de Sesión
Sesión
SPDU
4.
Transporte
Protocolo de Transporte
Transporte
TPDU
3.
Red
Red
Red
Red
Paquete
2.
Enlace
Enlace
Enlace
Enlace
Trama
Física
Bit
Protocolos Internos de Subred
1.
Física
HOST A
Física
Física
Límite de Subred
Protocolo de Enlace del Host
Protocolo Físico del Host
Protocolo de Red del Host
HOST B
Las funciones básicas de cada capa son:
Capa
Función
Aplicación
Servicios de Apoyo a las Aplicaciones
Administración de Redes.
Conversión e Interpretación a Formatos
Estándares.
Interconexión y Sincronización de Procesos
Conexiones Lógicas Punto-a-Punto (abstraídas del
sistema técnico)
Encaminamiento y Control de Flujo
Conexiones Lógicas con Paquetes de Datos
Detección Elemental de Errores
Presentación
Sesión
Transporte
Red
Enlace
Física
Utilización Directa del Medio Físico
Ayuda Comunicacional a la Transmisión Física
Unidad Estándares
de Info.
APDU X.400,
FTAM
PPDU ASN.1
SPDU
TPDU
ISO 8326/27
ISO 8072/73
Paquete X.25 WAN
Trama X.25 WAN,
ISO 8802
LAN
Bit
X.25 WAN,
ISO 8802
LAN
La explicación detallada de las funciones se hace en el resto de este curso y el curso
de Comunicación de Datos.
Transmisión de Datos en OSI1
III.2.
La transmisión de datos se realiza, desde un proceso a otro a través de toda la torre de
entidades hacia abajo en el host que alberga el proceso emisor y hacia arriba en el que
alberga el receptor.
En el emisor, cada capa recibe de la capa superior la información a transferir (Datos)
junto con información de control de la interfase (ICI), conjunto que se denomina Unidad de
Datos (IDU). La capa inferior toma el ICI y decide qué hacer con los Datos, luego le agrega
un encabezado (xH) y/o terminador (xT) a ellos y los pasa como nuevos Datos a la capa
inferior junto con un nuevo ICI, constituyendo la IDU para la capa inferior.
En el receptor se produce el proceso inverso, y cada capa toma los datos recibidos
desde la capa inferior, reconociendo el encabezado y/o terminador creados por la entidad
par en el emisor, y pasando los datos restantes hacia la capa superior.
1
El análisis que sigue es válido para toda arquitectura de red que utilice capas, pero la
terminología utilizada es la OSI, por lo que este capítulo se verá con relación al estándar
OSI.
La siguiente figura muestra el proceso de emisión de datos dentro de una entidad de
una capa cualquiera:
mICI
Nivel m (n-1)
SAP (Service Access Point)
IDU (Interface Data Unit)
SDU (Service Data Unit)
PDU (Protocol Data Unit)
ICI (Interface Control
Information)
IDU
mSDU
SAP
mICI
Nivel n
nICI
nH
mSDU
SAP
nICI
Nivel n+1
nSDU
La siguiente figura muestra la composición de datos que se hace en cada nivel:
Proceso
Emisor
Aplicación
AH
Presentación
PH
Sesión
Enlace
Física
NH
DH
Aplicación
Presentación
Datos
TH
Red
Datos
Datos
SH
Transporte
Datos
Proceso
Receptor
Sesión
Datos
Transporte
Datos
Datos
Bits
Red
DT
Enlace
Física
La siguiente es una lista comparativa de los estándares de tres tipos de redes
comunes:
Capa
ISO / OSI
DoD (TCP / IP)
Novell
Aplicación
X.400, FTAM
SMTP
Compilador
Btrieve HMS
Presentación
ASN.1
FTP
Telnet
Kernel Netware
DNS / NSP
Sesión
ISO 8326/27
Transporte
ISO 8072/73
TCP
ICMP
Red
Enlace
Física
UDP
EGP
IPX
SPX
NetBios
X.25 WAN
X.25 WAN, ISO
8802 LAN
X.25 WAN, ISO
8802 LAN
IP, ARP. RARP
Arpanet
Ethernet
Token Ring
ArcNet
X.25 PDN
Cualquiera
de 80 LAN
IV. Capa Física
El propósito de la capa física es el de llevar un flujo de bits desde una máquina a otra,
utilizando para ello algún medio físico. Su estructura fundamental es la que sigue:
Mensaje
Entrada
Señal de
Entrada
Transductor
Entrada
Canal:
Señal
Enviada
Señal
Recibida
Tx
Canal
Interferencia
Ruido Atenuación
Señal de
Salida
Rx
Mensaje
Salida
Transductor
Salida
Distorsión
Medio físico de conexión entre el transmisor y el receptor;
Transmisor (Tx): Dispositivo que acopla el mensaje en el canal, en forma de la
señal transmitida;
Receptor (Rx):
Dispositivo que extrae la señal del canal, y entrega al
transductor de salida;
Transductor:
Dispositivo que convierte una magnitud física a otra de
naturaleza diferente;
IV.1. Bases Teóricas para la Comunicación de Datos
La comunicación de información a distancia se logra haciendo llegar al receptor
cambios perceptibles, generados por el emisor, a través de algún medio físico, como el aire
(sonido, luz), cables (electricidad), etc.
Para modelar mejor lo anterior se hace uso de modelos matemáticos, los cuales
permiten representar el fenómeno del transporte de información de manera determinista,
facilitando además del entendimiento del comportamiento físico de los medios.
IV.1.1. Conceptos Básicos
Medio Físico:
Es el material o conjunto de materiales que permiten la
comunicación debido su capacidad de modificarse alguna propiedad
física de él. También se le llama canal;
Estados del Medio:
Son los estados diferentes en que se puede encontrar el
medio físico. Deben existir a lo menos dos estados diferenciables.
Señal:
Secuencia de estados sucesivos del medio físico, que constituyen un
mensaje;
Intervalo de Señalización:
Tiempo que debe durar cada estado del medio
para que se constituya una unidad de información.
IV.1.2. Medios de Transmisión
Los medios físicos de transmisión son los materiales y ambientes utilizados para
acarrear información. Pueden ser tan simples como el aire o tan sofisticados como una fibra
óptica.
a) Medios Magnéticos
Son los discos magnéticos removibles, los cuales pueden ser transportados
físicamente desde una máquina hasta otra. Puede sorprender quizá que se incluya este
medio en esta descripción, pero considere una camioneta que demora 1 hora en ir de una
máquina a otra, transportando 200 cintas magnéticas de 180Mb c/u. La velocidad de
transmisión es entonces de 80Mbs!! Ninguna LAN actual posee esta capacidad de
transporte de datos. Además, es un medio que no se compara en costo con los demás.
b) Cable Par Trenzado
Es un cable de dos hilos gruesos, enroscados el uno sobre el otro para evitar
interferencias externas. Se usan para transmisión analógica (telefónica, por ej.) y digital en
distancias medias, y tienen un costo bastante bajo.
La codificación se hace utilizando la ausencia de voltaje como valor 0, y la presencia
(generalmente unos 5V) como valor 1.
c) Cable Coaxiales
Es un cable con un hilo grueso en el centro y una malla alrededor de él, aislados por
una capa de plástico intermedio. Existen de dos tipos: banda base (60 Ohm) y banda ancha
(75 Ohm). La diferencia entre ellos radica en su configuración, ya que el primero no
necesita de repetidores periódicos para distancias menores de 1km, proveyendo de
velocidades de hasta 10 Mbps. El segundo, en cambio, no puede pasar de los 100m si
repetidores, pero provee una velocidad de hasta 150 Mbps.
La codificación en el primer tipo es similar al par trenzado, pero para el segundo
similar a la utilizada por el sistema de televisión, de modo que es bastante más complejo el
proceso de codificación o decodificación.
d) Fibras Opticas
El medio de transmisión es una fibra muy delgada de vidrio o silicio fundido, y se
necesita de un LED o diodo láser para la transmisión, y de un detector de luz para la
recepción. Debido a que la frecuencia de la luz visible es del orden de 108 Mhz, se pueden
lograr velocidades de hasta 1000 Mbps en una distancia de 1km.
La codificación se asocia a la presencia o ausencia de luz, existiendo sistemas por
colores sólo en etapa experimental.
Existe un límite en la distancia que puede cubrir una fibra óptica, debido al ruido
inherente al canal. Este se produce por Dispersión Internodal (distinta distancia recorrida
por distintos rayos de luz dentro de la fibra). Así, a mayor distancia, menor velocidad se
puede lograr. Para solucionar este problema se han creado repetidores electrónicos (los
impulsos luminosos se transforman a eléctricos y luego nuevamente a luminosos), que
eliminan el ruido, y las llamadas Fibras de Bombeo, que son capaces de amplificar la señal
luminosa sin transformarla a electrónica.
Existen tres tipos de fibras ópticas: Multinodo, Multinodo Gradual y Mononodo. Las
primeras son más baratas pero con mayor ruido, y las últimas mas caras y casi sin ruido.
Las Mononodo requieren de diodos láser (note que las curvas de la fibra no inciden en el
ruido).
Multinodo
Multinodo Gradual
Mononodo
El uso de fibras ópticas es en general simplex (en una sola dirección), y se tienden de
a pares bidireccionales o en anillos cerrados para lograr comunicación mutua.
e) Trayectorias Opticas a través de la Atmósfera
Existe la posibilidad de utilizar la atmósfera como medio de transmisión, utilizándose
luz infrarroja, microondas, ondas de radio, etc. para la transmisión de información.
f) Uso de Satélites
Los satélites reciben señales de microondas desde la tierra y las repiten de vuelta
hacia ella, alcanzando lugares imposibles de alcanzar visualmente desde el emisor debido a
la curvatura de la tierra. Sin embargo, el uso de satélites implica un retardo de 250 a 300
ms, debido a la distancia que recorre la señal, y muchas veces una conexión por tierra es
más rápida.
Aún así, cuando existe la necesidad de difusión, como la televisión, por ejemplo, el
satélite es mucho más barato.
IV.1.3. Comparación de Medios
A continuación se muestra una comparación de los diferentes medios de transmisión
basados en ondas electromagnéticas (luz, electricidad, radio):
Tipo
Línea Telefónica
Par Trenzado
Coaxial BB
Coaxial BA
Fibras Opticas
Microondas
Simbología:
3KHz
30KHz
300KHz
3MHz
30MHz
300MHz
3GHz
30GHz
300GHz
>>
>
0
<
<<
Dist.
Máx.
Ancho
Banda
Nº
Canales
Atenuación
Ruido
Costo
Segurid
ad
Cant.
Nodos
3km
10m
10km
50km
10km
50km
< 60 KHz
1 Mbps
10 Mbps
< 50 MHz
< 400 MHz
> 500 MHz
> 100 MHz
1
1
Alta
Alta
>>
>>
<<
<
M
M
M
M
1
cientos
miles
cientos
6-60dB/km
6-60dB/km
1-8dB/km
????
>
>
0
>
>
>
>>
>
B
B
MB
B
B(100)
MB(1000)
M
B
:
:
:
:
:
muy alto
alto
cero
bajo
muy bajo
Miriamétricas 
Kilométricas Difusión
Radio Navegación
MF
Hectométricas Difusión AM
Cable Coaxial
HF
Decamétricas Radio Telefonía
Onda Corta
Difusión FM
VHF Métricas
Televisión
Radio Móvil
Televisión
UHF Decimétricas Troposfera
Microondas Radar
Satélite
SHF Centimétricas Microondas Radar
Telefonía Multicanal
EHF Milimétricas Guías de Onda
Corriente
Alterna
VLF
LF
Rayos
Infrarrojos
Rayos
Ultravioleta
Rayos
Gamma
101
102
103
104
105
106
107
108
109
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
Ondas
de
Radio
Luz Visible
Rayos X
IV.1.4. Señales Ondulatorias
Las señales ondulatorias utilizan materiales como medios físicos de propagación de
onda, como electricidad, microondas, luz, sonido, etc. Veamos algunas definiciones:
Frecuencia (f):
Cantidad de oscilaciones por unidad de tiempo (1/s = Hz);
Período (T): Duración de una oscilación;
Amplitud (A):
Ancho de la onda, su tamaño.
A
T
Se tiene:
f 
y
x t
1
T
es la señal en el tiempo.
IV.1.5. Análisis de Fourier
Supongamos que se representan los cambios perceptibles del medio mediante una
onda, que representa por ejemplo cambios en la intensidad o color de una luz, en el tono o
volumen de un sonido, o en el voltaje o corriente proveniente de una fuente eléctrica. Así,
podemos considerar esta onda como función del tiempo:
f  t .
Jean Fourier demostró que cualquier función matemática f  t  razonablemente
periódica, de período T, se puede representar como una serie de la forma
f t  
1
2

a0 
 2 n
 a n sen  T
n 1

t 


b
n 1
n
 2 n
cos 
 T

t

con
an 
bn 
2
T
2
T
T

0
T

0
 2 n 
f ( t ) sen 
t  dt
 T 
 2 n
f ( t ) cos
 T

t  dt

que se conoce como Serie de Fourier de f  t  . Cada par de coeficientes, para un n
dado, se llama componente armónica n.
Por ejemplo, supongamos que se desea transmitir el caracter ASCII “b”, cuyo patrón
de bits es 01100010, a través de un cable, utilizando la variación en el voltaje con corriente
continua para representar ceros y unos (0V a 3V es 0, 3V a 5V es 1), usando un intervalo de
señalización dado.
Los siguientes gráficos muestran cómo se vería V vs. t con diferente cantidad de
coeficientes considerados en la Serie de Fourier asociada:
Representación de Onda
Binaria Cuadrada
Representación de Fourier
1 Armónico
Representación de Fourier
2 Armónicos
Representación de Fourier
4 Armónicos
Representación de Fourier
8 Armónicos
IV.1.6. Espectro y Filtros
Una señal dada puede estar compuesta de múltiples armónicos, de diferentes
frecuencias. Se puede graficar A vs. f para una señal dada, obteniéndose el llamado espectro
de la señal, que muestra cuáles armónicos son los más relevantes.
En la naturaleza las señales (sonido, luz, olas en el agua, etc.) poseen infinitas
componentes, por lo cual se han construido filtros de banda de señales, que eliminan todos
los armónicos de la señal, salvo los de cierto rango o algunos específicos.
Espectro:
Gráfico A vs. f para una señal dada;
Ancho de Banda (B):
señal;
Es el ancho del rango de frecuencias que posee una
Filtro de Banda: componente que elimina armónicos de una señal, salvo los de
cierto rango.
IV.1.7. Distorsión, Interferencia, Atenuación y Ruido
Distorsión: Deformación de la señal debida a imperfecciones del sistema o del
canal mismo.
La distorsión se produce debido a las propiedades físicas del medio, como por
ejemplo, el largo de un cable eléctrico, o los cerros en el caso de la transmisión por radio.
Interferencia:
Deformación de la señal debida a otras señales.
Generalmente es posible evitar la interferencia mediante arreglos especiales,
dependiendo del medio físico utilizado. Por ejemplo, los cables tipo Par Trenzado evitan la
interferencia enroscando los hilos conductores unos sobre otros, anulándose así el efecto de
señales externas.
Atenuación: Debilitamiento progresivo de la señal debido a la distancia
recorrida;
La atenuación es una baja en la intensidad de la señal debido a la pérdida de energía a
través del medio físico que recorre. Por ejemplo, las olas en el mar disminuyen en tamaño a
medida que avanzan por su superficie.
Ruido:
Deformación de la señal debida a causas aleatorias, externas o
internas al medio;
El ruido se produce la mayoría de los casos debido a imperfecciones del medio. En el
caso de los cables conductores pueden ser pequeñas irregularidades del material, y en el
caso del aire basta con cambios de temperatura, presión o humedad a lo largo del recorrido
de la señal.
El siguiente análisis matemático permite modelar el comportamiento del ruido, en os
casos en que este es predecible. Considere la representación de Fourier para las señales.
Analíticamente, el canal es un filtro de armónicos, produciendo diferentes niveles de ruido
y atenuación de la señal para cada armónico.
Sea x  t  la señal transmitida, y  t  la señal recibida, y n  t  el ruido del canal. Se
tienen entonces la relación:
y  t   c t   x  t 
IV.1.8. Velocidad de Transmisión
La velocidad de transmisión depende del método de codificación (cantidad de
símbolos posibles, esto es, cantidad de estados diferentes del medio) y de la velocidad de la
señal (cantidad de estados por unidad de tiempo, o baudios).
La velocidad de transmisión se define como la cantidad de bits de datos que se
pueden transferir por unidad de tiempo (generalmente bytes por segundo, bps), y su
máximo depende de las posibilidades del medio y de las velocidades de emisión o
recepción en los extremos, cualquiera sea el más lento.
Por ejemplo, a través de una línea telefónica no se pueden transferir frecuencias de
sonido de más de 3000Hz, que es un límite artificial impuesto para asegurar la correcta
transmisión bajo él. Así, para las velocidades de datos de mayor uso por líneas telefónicas
se tiene las siguientes características:
Vel.
(bps)
periodo
T (ms)
1er Arm.
(Hz)
Cant.
Arm.
Vel.
(bps)
periodo
T (ms)
1er Arm.
(Hz)
Cant.
Arm.
300
600
1200
2400
26.6667
13.3333
6.6667
3.3333
37.5
75
150
300
80
40
20
10
4800
9600
19200
38400
1.6667
0.8333
0.4166
0.2083
600
1200
2400
4800
5
2
1
0
La velocidad máxima de transmisión está limitada además por el ancho de banda
máximo permitido por el canal, límite impuesto generalmente para asegurar la
compatibilidad de equipos. Se tienen entonces las siguientes propiedades de velocidad para
canales de datos:
a) Velocidad en Canal sin Ruido (Nyquist):
V m ax  2 B log 2 M
b p s 
donde:
 M es la cantidad de estados diferentes del medio; y
 B es el ancho de banda máximo posible.
b) Velocidad en Canal con Ruido (Shanon):
 S 
V m ax  B log 2  
 N
bps 
donde:
 S es la potencia de la señal;
 N es la potencia del ruido; y
 B es el ancho de banda máximo posible.
En la práctica, el valor S/N se le conoce como relación señal-ruido, y se mide
indirectamente a través de la expresión 1 0 lo g 1 0  S / N   d B  .
IV.2. Transmisión Analógica
Es la utilización de una magnitud física que varía de forma continua en el
tiempo, y que puede tomar infinitos valores dentro de un rango predeterminado,
para trasmitir una señal.
Durante 100 años fue la transmisión analógica la dominante en el mundo, empezando
por el teléfono y luego la televisión. La excepción es el telégrafo en clave morse, aunque
era muy rudimentario, ya que la codificación y decodificación no estaba automatizada.
IV.2.1. Sistema Telefónico
El sistema telefónico es una red de conmutadores análogos automáticos o manuales,
los cuales se encargan de unir las conexiones de manera apropiada para conectar dos
teléfonos entre sí. Los conmutadores locales (oficinas, edificios, barrios, etc.) con una línea
directa hacia cada teléfono. Los conmutadores locales están conectados entre sí y con
centrales interurbanas, que cubren pueblos pequeños o comunas enteras, con conexiones
capaces de llevar muchas líneas telefónicas. Estas a su vez se conectan con centrales
mayores, que cubren las necesidades de conexión entre ciudades enteras y/o países.
Así, si se llama al vecino, sólo se utilizara el conmutador local, pero si se llama a otro
país, se utilizarán varios conmutadores. Cabe destacar, que el sistema se puede saturar
cuando existen muchas llamadas con mismo origen y destino, pero esto rara vez ocurre.
Como las líneas telefónicas son baratas y cubren grandes distancias, son una
alternativa atractiva a la hora de conectar dos computadores entre sí. Para ello se debe
utilizar este medio analógico como base para uno digital, que es necesario para la conexión
de computadores. Para este fin se crearon los módems, que permiten lo anterior.
Debido a que las líneas telefónicas están limitadas a frecuencias entre 300Hz y 3KHz,
no se puede utilizar todo el potencial del medio físico. Además, cuando las distancias son
largas, existen dispositivos de supresión de ecos, los que evitan que ambos extremos
“hablen” a la vez. Ultimamente se han mejorado estos supresores, de modo que mientras
exista una frecuencia dada, se mantienen cerrados, de modo que pueda realizarse
comunicación bilateral simultánea.
IV.3. Transmisión Digital
Es la utilización de una magnitud física que varía de forma discreta en el
tiempo, y que puede tomar valores dentro de un rango finito predeterminado, para
trasmitir una señal.
La transmisión digital se basa en los principios de los sistemas digitales, y por esto
tiene las mismas ventajas que estos: la recuperación de la señal digital es exacta y se
pueden multiplexar varias señales (voz, vídeo, sonido, etc. por un mismo canal). Además se
puede sacar mayor provecho de las líneas de comunicación actuales.
IV.3.1. Modulación de Señales
Un modulador (módem) trabaja utilizando un sonido base estable y constante, que es
transmitido todo el tiempo por ambos extremos, manteniendo inactivos los supresores de
eco. Esta señal es modificada de alguna forma, de manera que son las modificaciones las
que indican los cambios de estado del medio. Al proceso de modificar la señal se le llama
modulación. Existen diferentes tipos de modulación:




Modulación de Amplitud:
Modulación de Frecuencia:
Modulación de Fase:
Modulaciones Combinadas:
Usa dos niveles de voltaje de la señal (AM);
Se utilizan dos o mas tonos (FM);
Se usan desplazamientos de fase (QM);
Alguna combinación de las anteriores.
Señal Base
Señal Moduladora
Digital
Modulación Digital
de Amplitud
Modulación Digital
de Frecuencia
La señal moduladora puede ser análoga, pero aquí estudiamos las digitales, que son
nuestro interés primordial para la comunicación de datos.
Modulaciones Combinadas:
Las modulaciones combinadas poseen varios estados, que se logran mediante pares
frecuencia/amplitud. Así, se puede enviar más de un bit de información por baudio. El
siguiente ejemplo corresponde a QAM (Quadrature Amplitude Modulation), donde se
representan (en coordenadas polares) la amplitud y el desfase de la señal (cercanía al origen
y ángulo, respectivamente):
8 combinaciones
3 bits/ baud
16 combinaciones
4 bits/ baud
Así, según la forma de modulación, podemos calcular la velocidad de transmisión en
señales moduladas (tasa binaria), de la siguiente manera:
V 
1
T
log 2 M
bps 
donde:
 M es la cantidad de estados diferentes del medio; y
 T es el intervalo de señalización.
Los módems son entonces dispositivos que permiten enviar señales digitales a través
de canales analógicos. Cabe destacar que casi todos los medios físicos se utilizan como
medios analógicos. Quizá la única excepción sean, por ahora, las fibras ópticas.
IV.3.2. Teorema del Muestreo
¿Cómo recuperar la señal digital a partir de la analógica recibida?
Sean:
x a  t  la señal analógica recibida, con ancho de banda B;
ws la frecuencia de muestreo;
x s  t  la señal de muestreo de x a  t  .
La señal de muestreo se obtiene tomando muestras de x a  t  con frecuencia ws, y
reconstruyendo la señal.
Si se analizan los espectros
x  t
de ambas señales se tiene que el
espectro de x s  t  es idéntico al de
-B
B
x a  t ,
salvo que se repite
periódicamente cada ws unidades
x t
de frecuencia.
a
s
ws
-B
B
ws
Se puede construir entonces un filtro que aísle el rango de frecuencias central,
recuperándose íntegramente la señal original, sólo si los espectros periódicos no se
entrecruzan.
Por lo anterior, debe elegirse una frecuencia de muestreo que cumpla con la siguiente
característica:
Teorema del Muestreo
Sea w es la frecuencia de muestreo para una señal de ancho de banda B,
entonces para poder recuperar íntegramente la señal original, se debe cumplir:
ws  2B
Corolario:
 A menor ancho de banda, se pueden tomar muestras más seguidas, lo que
implica la posibilidad de una mayor velocidad de transferencia;
IV.3.3. Modulación por Impulsos Codificados (MIC)
Los MIC son dispositivos que permiten la transmisión de impulsos mediante la
codificación digital de ellos. Funcionan en base al teorema del muestreo, de manera que las
muestras suficientes para poder reconstruir la señal original de manera aceptable. Qué es
aceptable depende de la aplicación particular (sonido de teléfono, sonido de CD, vídeo,
etc.).
La estructura de un MIC es la siguiente:
Muestreador
w2B
Señal Analógica
xa(t)
Cuantizador
de q niveles
Muestras Analógicas
de xa(t)
Codificador
de n bits
Muestras Digitales
de xa(t)
Palabras de n bits
por muestra
Muestreador:
toma muestras analógicas discretas de la señal, con
frecuencia suficiente para reconstruir la señal aceptablemente
(según teorema del muestreo);
Cuantizador:
Digitaliza las muestras, llevando cada muestra analógica al
valor digital (valor cuántico) más cercano. Se toma una cantidad q
de niveles. El error introducido en el cuantizador es constante y
conocido, y no depende del ruido de ningún medio utilizado. A
mayor q menor error;
Codificador: Codifica las muestras digitales en palabras de n bits. Se debe tener
n
q 2 .
V. Capa de Enlace
Hasta ahora hemos visto cómo enviar bits individuales a través de un medio físico,
pero ¿qué hay del envío de palabras de varios bits? El objetivo de la capa de enlace es el
correcto envío de palabras entre máquinas conectadas al mismo medio físico.
V.1.
Problemas de Diseño Capa de Enlace
V.1.1. Tipo de Servicio Suministrado
Se pueden proveer servicios sin conexión con y sin asentimiento, y servicios con
conexión, a la capa superior de la torre de protocolos (capa de red).
a) Servicio sin Conexión y sin Asentimiento
Consiste en enviar información de una máquina a otra, sin que el receptor envíe un
asentimiento de regreso para indicar que la información enviada llegó con éxito. Es útil
cuando la tasa de error es baja y se delega esta responsabilidad a la capa superior, o cuando
se tiene necesidad de transferencia en tiempo real y no importan algunos errores
(teléfonos);
b) Servicio sin Conexión y con Asentimiento
Consiste en enviar información de una máquina a otra, y el receptor debe enviar un
asentimiento de regreso para indicar que la información enviada llegó con éxito. Si una
información no llega bien, no se envía asentimiento, y luego de un tiempo razonable el
emisor puede retransmitir. Note que puede perderse un asentimiento, y las tramas enviadas
pueden ser recibidas varias veces;
c) Servicio Orientado a Conexión
Se establecen conexiones entre las máquinas, y se enumeran las unidades de
información individuales. Así, se puede asegurar que las unidades son recibidas, en el
mismo orden que se envían y sin repetir ninguna.
Para el servicio orientado a conexión el
estándar OSI define cuatro primitivas de
comunicación para el paso de mensajes con
asentimiento, las cuales se muestran en el dibujo
(Emisor a la izquierda, receptor a la derecha,
capa física en medio).
re q u e st
in d ica tio n
re sp o n se
co n firm
V.1.2. Entramado
TRAMA
Es una secuencia de bits que constituye la unidad de información utilizada en
la comunicación entre entidades de la capa de enlace.
La capa física sólo provee un flujo de bits inseguro (puede haber errores), y la capa de
enlace debe detectar y, si es necesario, corregir los errores. Para ello, se envían tramas de
bits, los cuales se verifican usando algún código de redundancia sencillo para poder
detectar (e incluso corregir) errores.
Es necesario entonces que las entidades de capa de enlace en dos máquinas distintas
se sincronicen, de manera que se identifiquen claramente los comienzos y finales de las
tramas. Los métodos más comunes son:
a) Cuenta de Caracteres
Cada trama contiene al inicio un campo con el largo de la trama. El problema es que
si se produce un error en este campo, es muy difícil volver a sincronizar las entidades. Por
ello casi nunca se utiliza;
b) Caracteres de Inicio y Fin, con Inserción de Caracter
Cada trama comienza con DLE STX y termina con DLE ETX 2. Cuando el receptor
detecta un error, sólo debe buscar la secuencia DLE ETX ó DLE STX para saber dónde
comienza la siguiente trama. Cuando el contenido de una trama contiene un DLE, se inserta
otro DLE adicional al transmitirla, para indicar que este DLE es un dato. Este método está
muy ligado al código ASCII;
c) Banderas de Inicio y Final, con Inserción de Bit
Cada trama comienza y termina con un patrón de bits especial, como 0111110 por
ejemplo. Cuando el transmisor detecta que la información enviada contiene el patrón,
inserta un bit 1 adicional, y transmite 01111110. El receptor detecta esta secuencia y
elimina el bit adicional. El receptor sólo debe buscar el patrón dado cuando pierde la
sincronización. Este método permite cualquier largo de bits para las tramas;
d) Violación de Código Físico
Si no se desea utilizar inserción alguna, se puede utilizar un valor de código no válido
en la capa física para marcar el comienzo y final de las tramas;
Como se ha visto, el problema de mantener sincronizados al transmisor y receptor se
maneja a través de alguno de estos algoritmos, los que permiten diferenciar claramente una
trama de otra.
V.1.3. Control de Error
En todos los métodos de entramado vistos, cuando se detecta un error, la trama
errónea se descarta. Se debe proveer entonces un mecanismo que permite al transmisor
saber que se ha perdido una trama dada para volver a transmitirla.
2
DLE, STX, ETX son caracteres ASCII (escape de enlace, inicio de trama, fin de trama)
En general, los protocolos de enlace identifican con un número de secuencia cada
trama enviada, y esperan que el receptor envíe de regreso un asentimiento de llegada para
cada trama enviada (salvo para los asentimientos mismos). Así, si se recibe un asentimiento
positivo, se tiene la certeza que la trama se recibió correctamente. Si se recibe un
asentimiento negativo, o no se recibe asentimiento alguno, se sabe que hubo algún
problema y que se debe retransmitir la trama.
Uno de los peligros de este protocolo es que, cuando se pierde el asentimiento, una
trama puede ser enviada y recibida varias veces. Por esto, el protocolo de enlace debe ser
capaz de descartar tramas que se reciben repetidas.
V.1.4. Gestión de Enlace
Cuando existen más de dos máquinas conectadas al mismo medio físico, debe
proveerse algún mecanismo para evitar que dos o más de ellas transmitan al mismo tiempo,
ya que esto llevaría a la pérdida de toda la información transmitida.
Cuando hay manejo de conexiones, se deben proveer mecanismos para establecer y
liberar conexiones, así como para enviar y recibir datos a través de una conexión.
V.1.5. Control de Flujo
Se trata de manejar la situación de un transmisor rápido y un receptor lento. Se debe
evitar sobrecargar al receptor, haciendo que el transmisor no envíe tramas a velocidad
mayor que la que puede manejar el receptor.
Normalmente el receptor es capaz de indicar al transmisor cuándo está listo a recibir
una trama y cuando no.
V.2.
Detección y Corrección de Errores
La detección de errores puede hacerse utilizando los siguientes mecanismos:
V.2.1. Códigos Detectores de Hamming
Son códigos que no utilizan todas las combinaciones posibles de caracteres, de
manera que si se recibe una combinación que está fuera del código, se detecta un error. Se
puede corregir el error suponiendo que ha habido un mínimo de errores, esto es, la palabra
que se quiso enviar es la más cercana a la recibida, en los términos que siguen.
Hamming determinó las capacidades de detección y corrección de códigos binarios,
de la siguiente forma:
Peso Hamming de un vector:
w r 
= cantidad de 1’s del vector
Distancia Hamming:
d  r , s   w  r XO R s  = cantidad de discrepancias
Indica la distancia binaria entre dos palabras. Esta función se utiliza para determinar
la palabra más cercana a una incorrecta recibida.
Distancia de Código:
d  C   d m in  r , s 
, r  s
Indica la distancia binaria mínima entre dos palabras del código C.
1
Cap. de Detección:
d  2 d C
Indica el valor máximo de errores simples (bits cambiados) que el código es capaz de
detectar, esto es, antes que la palabra se transforme en otra del código.
1
t   2  d  C   1 
Cap. de Corrección:
Indica el valor máximo de errores simples (bits cambiados) que el código es capaz de
corregir en caso de error, esto es, antes que la corrección se haga hacia una palabra
equivocada del código.
V.2.2. Códigos Detectores Cíclicos
Generalmente se utiliza además de lo anterior, un sistema de codificación llamado
Código de Redundancia Cíclica, el cual permite detectar muchos tipos de errores en
mensajes largos. Se basan en las matemáticas de polinomios, y aquí no se analizarán en
profundidad. Sus características más importantes son:
 Detecta los errores dobles (2 errores simples en el mensaje);
 Detecta los errores impares (cantidad impar de errores simples en el mensaje);
 La probabilidad de no detectar errores es ½(n-2) (mensajes de largo n) ó ½(n-1)
(mensajes de mayor largo), con n la cantidad de bits del código de redundancia.
A continuación se muestra el algoritmo para calcular el código de redundancia de un
mensaje de palabras de 8 bits (arreglo A), de largo n:
1.
2.
crc16 = 0xFFFF;
para j=1 hasta n
2.1.
2.2.
2.2.1.
2.2.2.
2.2.3.
2.2.4.
2.3.
3.
crc16 = crc16 XOR
para i=1 hasta 8
f = crc16 AND
crc16 = crc16
si f entonces
fin-para
fin-para
devuelve crc16
A[j]
0x0001
>> 1
crc16 = crc16 XOR 0xC001;
En la línea 2.2.3. se utiliza el valor 0xA001, que representa un polinomio elegido de
manera tal de maximizar la posibilidad de detección del código de redundancia. Los
algoritmos para palabrea con otras cantidades de bits son similares, sólo que el polinomio
elegido es diferente para cada caso, como muestra la siguiente tabla:
n
6
8
8
V.3.
Estándar
CRC-12
CRC-16
CRC-CCITT (16)
Polinomio
x12 + x11 + x3 + x2 + x + 1
x16 + x15 + x2 + 1
x16 + x15 + x5 + 1
Valor Usado
0xC07
0xC001
0xC010
Gestión de Enlace
Generalmente esta función de la capa de enlace se conoce como subcapa de control
de acceso al medio (MAC), ya que es independiente del control de flujo.
Cuando existen más de dos máquinas conectadas al mismo medio físico, debe
proveerse algún mecanismo para evitar que dos o más de ellas transmitan al mismo tiempo,
ya que esto llevaría a la pérdida de toda la información transmitida. Por lo anterior se hacen
necesarios mecanismos de gestión de enlace, que permiten controlar qué máquina puede
transmitir en un momento dado.
Colisión: Ocurre cuando dos máquinas transmiten al mismo tiempo. Existen
diferentes estrategias para lograr evitar las colisiones.
V.3.1. Estrategias de Gestión de Enlace
a) Estrategias de Repartición (Estáticas)
Estas estrategias reparten el canal según algún criterio utilizando multiplexores. La
repartición se puede hacer de múltiples formas, como pueden ser:
TDM (Multiplexación por División de Tiempo): Divide el tiempo de utilización
del canal en segmentos, para que cada máquina transmita sólo en el
tiempo asignado a ella (problema: sincronización);
FDM (Multiplexación por División de Frecuencia): Utiliza múltiples
frecuencias base en un mismo canal, para que cada máquina utilice
una de ellas;
CDM (Multiplexación por División de Código): Utiliza sólo una parte del
código de transmisión del canal para cada máquina;
Existen versiones directas e indirectas de cada uno de ellos. En las directas las
máquinas están conectadas directamente al canal, y en las indirectas existe un concentrador
intermedio que realiza el proceso de multiplexación.
Conexión Directa
Control Centralizado 
Control Distribuido
TDMA, FDMA, CDMA
Conexión Indirecta
TDM, FDM, CDM
(concentradores)

b) Estrategias de Compartición (Dinámicas)
Estas estrategias permiten compartir el canal, pudiendo todas las máquinas transmitir
y recibir utilizando un mismo canal, y las estrategias para evitar las colisiones son
implementadas mediante algún algoritmo.
Conexión Directa
Control Centralizado 1. Selección (Daisy Chaining)
2. Reserva
Control Distribuido 1. Selección (Token-Ring,
Token-Bus)
2. Reserva (DQDB)
3. Contienda (Aloha, CSMA/CD)
Conexión Indirecta
1. Concentradores Estáticos
2. Concentradores Dinámicos

Estas estrategias de compartición se pueden caracterizar mediante los siguientes
criterios:
Hipótesis del Canal Único: Se tiene un solo canal disponible para transmitir y
recibir, y no se puede utilizar otro medio de comunicación;
Modelo de Estaciones: Existe una cantidad finita de máquinas conectadas
directamente al canal, las cuales pueden transmitir y recibir tramas
en cualquier momento. Sin embargo, cuando la capa de red en una
de esas máquinas desea transmitir un paquete, ésta se bloquea hasta
que la capa de enlace lo transmite con éxito;
Colisiones: Cuando dos tramas colisionan la información se pierde, por lo que se
debe transmitir ambas nuevamente;
Asignación de Tiempo: Las tramas se pueden transmitir en cualquier momento
(tiempo continuo) o de acuerdo a cierta sincronización (tiempo
ranurado);
Detección de Uso: Las máquinas pueden o no ser capaces de detectar si el canal
está siendo o no utilizado.
V.3.2. Estándares de Gestión de Enlace (IEEE 802)
El siguiente esquema muestra la relación de los estándares de Enlace de IEEE con
respecto al estándar de capas de la ISO:
IEEE
ISO
802.1
Capas Superiores
LLC 802.2
Capa de Enlace
MAC
MAC
MAC
MAC
802.3
802.4
….
802.8
Capa Física
802.1: Interfaz de la Capa de Enlace con capas superiores (A),
Arquitectura de las LAN (B), e Interconexionado
de Redes (C);
802.2: Control de Enlace Lógico (Logic Link Control);
802.3: CSMA/CD;
802.4: Token-Bus;
802.5: Token-Ring;
802.6: Red de Area Metropolitana DQDB (Distributed Queue
Dual Bus);
802.7: Red de Banda Ancha; ????
802.8: FDDI (Fiber Distributed Data Interface).
V.3.3. Protocolos Aloha
a) Aloha Puro
process alohaPuro
transmite;
end
transmite inmediatamente
 Estrategia: Compartición distribuida, directa y de contienda;
 Detección de Uso: No pueden detectar si el canal está o no siendo
utilizado;
 Asignación de Tiempo: Continuo, las estaciones pueden transmitir en
cualquier momento.
En este protocolo las estaciones pueden transmitir en cualquier momento sus tramas,
y para detectar si hubo o no colisión deben recibir simultáneamente el canal. Si lo recibido
es diferente a lo enviado es porque hubo colisión, y se debe intentar retransmitir
nuevamente la trama luego de un periodo de tiempo aleatorio.
b) Aloha Ranurado
process alohaRanurado
[no bip] alohaRanurado;
[]
[bip] transmite;
end
espera la ranura
transmite en ranura
 Estrategia: Compartición distribuida, directa y de contienda;
 Detección de Uso: No pueden detectar si el canal está o no siendo
utilizado;
 Asignación de Tiempo: Ranurado, las estaciones pueden transmitir
sólo en momentos dados.
Para establecer las ranuras de tiempo es necesaria una estación especial que emita una
señal al inicio de cada ranura, para que así las demás estaciones puedan saber cuándo
comienza cada una. En este protocolo las estaciones pueden transmitir sólo a partir del
comienzo de las ranuras, de manera que la probabilidad de colisión se reduce a la mitad.
Al igual que en Aloha Puro, para detectar si hubo o no colisión deben recibir
simultáneamente el canal. Si lo recibido es diferente a lo enviado es porque hubo colisión, y
se debe intentar retransmitir nuevamente la trama en otra ranura, siempre luego de un
periodo de tiempo aleatorio.
V.3.4. Protocolos CSMA (802.3)
a) CSMA 1Persistente
process csma1P
[ocupado] csma1P;
[]
[libre] transmite;
end
espera que este desocupado
transmite
 Estrategia: Compartición distribuida, directa y de contienda;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado;
 Asignación de Tiempo: Continuo, las estaciones pueden transmitir en
cualquier momento.
Este protocolo es igual al Aloha Puro, pero puede detectar si el canal está o no siendo
utilizado. Así, la estación empezará a transmitir inmediatamente después de que se termine
de transmitir la trama actual.
Esto produce un problema, debido a que si dos estaciones están esperando,
colisionarán cuando termine la trama actual.
b) CSMA No Persistente
process csmaNP
[ocupado] delay; csmaNP;
[]
[libre] transmite;
end
espera un tiempo aleatorio
transmite
 Estrategia: Compartición distribuida, directa y de contienda;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado;
 Asignación de Tiempo: Continuo, las estaciones pueden transmitir en
cualquier momento.
El CSMA No Persistente es una mejora del 1Persistente, y consiste en no verificar
continuamente si el canal está ocupado o no, sino que se debe esperar un cierto periodo
aleatorio de tiempo antes de la próxima verificación. Así, cuando hay dos estaciones
esperando por el final de la trama actual, es muy improbable que colisionen entre ellas.
c) CSMA pPersistente
process csmaPP
[ocupado] csmaPP;
[]
[libre]
[prob = p]
transmite;
[]
[prob != p]
delay;
csmaPP;
end
espera que esté desocupado
transmite con probabilidad p
espera un tiempo aleatorio
 Estrategia: Compartición distribuida, directa y de contienda;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado;
 Asignación de Tiempo: Continuo (puedes ser ranurado, con delay =
tiempo de ranura), las estaciones pueden transmitir en cualquier
momento.
El CSMA pPersistente es otra mejora del 1Persistente, y consiste en no transmitir
siempre inmediatamente después de la trama actual, sino que sólo transmite con una
probabilidad p. Con esto se logra que sólo algunas de las estaciones transmitan al finalizar
la trama actual.
d) CSMA con Detección de Colisión (CSMA/CD)
El CSMA/CD es una mejora a los protocolos CSMA no ranurados, que consiste en
detener la transmisión de una trama en cuanto se detecte una colisión con otra estación. Así,
no es necesario esperar por la transmisión de toda la trama para que se desocupe el canal.
Esta variante es utilizada en muchos protocolos de LAN comerciales.
e) Cableado de 802.3
La norma 802.3 establece los siguientes niveles de calidad de cableado:





????
????
????
UTP Nivel 5 (FastEthernet):
????
par trenzado (máx. 10 Mbps); 10 Base T
V.3.5. Rendimiento: Aloha y CSMA
Consideremos las estrategias Aloha y CSMA, para un canal con infinitas estaciones
intentando transmitir tramas de largo fijo. Se tiene un tiempo de trama fijo (largo de trama
/ bps).
Sea S el rendimiento efectivo desde el punto de vista de una estación, esto es, la
probabilidad de transmitir una trama inmediatamente. Se tiene que 0 < S < 1, ya que S > 1
significa que las estaciones generan tramas a velocidad mayor que la que es capaz de llevar
el canal.
Sea además G la razón de tramas que se desean transmitir (en total, todas las
estaciones) en un tiempo de trama, incluyendo los intentos de retransmisión. Podemos
relacionar G con S para los protocolos considerados:
V.3.6. Protocolo TokenBus (Paso de Testigo en Bus) (802.4)
Testigo: Trama especial que es enviada por una estación que terminó de
transmitir a otra para que ésta comience a transmitir.
En esta estrategia existe un ordenamiento de estaciones, y se implementa un
protocolo distribuido para asignar turnos de transmisión a cada estación, de forma que no
existen colisiones.
 Estrategia: Compartición distribuida, directa y de selección;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado, más aún, pueden saber cuándo están autorizados para
transmitir (sin colisiones);
 Asignación de Tiempo: Continuo, pero las estaciones pueden
transmitir sólo cuando les toca.
Cuando se inicializa el anillo cada estación determina a cuál estación debe pasar el
testigo cuando ha terminado su turno. Esta asignación se hace generalmente basándose en
los valores de las direcciones de enlace de cada una de las estaciones, de manera que cada
una de ellas pasa el testigo a la estación con dirección inmediatamente menor que la propia.
Para el caso de la estación con menor dirección, ésta debe pasar el testigo a la estación con
dirección mayor. Se establece así un anillo lógico para el paso del testigo.
Cuando una estación recibe el testigo, puede transmitir cuantas tramas desee hasta
que no tenga más tramas o hasta que pase un tiempo determinado. Luego debe pasar el
testigo a la siguiente estación.
Además, para asegurar un ancho de banda mínimo de transmisión, se establecen en
cada estación varias colas de tramas a transmitir, de manera que para la cola de prioridad
mayor se tiene seguridad de una cierta velocidad de transmisión.
El mecanismo para agregar y sacar estaciones del anillo lógico ha de ser especificado
con exactitud, y debe considerar los casos de una estación que se salga del anillo sin previo
aviso.
V.3.7. Protocolo TokenRing (Paso de Testigo en Anillo) (802.5)
Esta estrategia es similar a la anterior, pero en vez de un anillo lógico (SW) se utiliza
un anillo físico (HW) de cableado. Lo anterior puede resultar muy engorroso a la hora de
implementar la red, pero existen soluciones tipo anilloestrella.
 Estrategia: Compartición distribuida, directa y de selección;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado, más aún, pueden saber cuándo están autorizados para
transmitir (sin colisiones);
 Asignación de Tiempo: Continuo, pero las estaciones pueden
transmitir sólo cuando les toca.
Retardo de 1 bit
a la
Estación
Configuración
Física
Modo de
Recepción
a la
Estación
de la
Estación
Modo de
Transmisión
En el modo de recepción la estación puede recibir todas las tramas que circulen por el
anillo. Hay que destacar que los nodos del anillo son activos, de forma que deben estar
siempre energizados para el correcto funcionamiento del anillo. Es aquí donde son de
utilidad los anillosestrella, que son capaces de detectar nodos no energizados para dejarlos
fuera del anillo.
En modo de transmisión la estación corta el anillo y transmite, recibiendo de regreso
el mismo mensaje transmitido con un cierto atraso. Esto sirve para evitar el uso de
asentimientos (vea la siguiente sección, Control de Flujo): si se recibe con errores se intenta
transmitir de nuevo.
El paso de testigo se hace directamente entre estaciones físicamente consecutivas, y
las tramas no poseen límite de longitud. Así, se debe imponer un tiempo máximo de
utilización del canal para cada estación.
El funcionamiento es similar al caso de Testigo en Bus, pero el formato de la trama
de TokenRing es especial (los largos son en bytes):
Testigo:
1
1
1
SD AC ED
Trama de Datos o de Control:
1
1
1
2ó6
SD AC FC Dir. Destino
2ó6
Dir. Origen
SD: Delimitador de Comienzo
AC: Control de Acceso
FC: Control de Trama
sin límite
Datos
4
CRC
1
1
ED FS
DE: Delimitador de Fin
FS: Estado de Trama
El byte FS se envía sólo cuando se envían datos, y contiene dos bits especiales para
manejar errores en la recepción: los bits A y C. Las tramas siempre se envían con ambos
bits con valor 0, pero pueden ser modificados por el destinatario de la trama. Cuando el
emisor recibe de regreso la trama enviada, verifica estos bits, y pueden darse 3 casos:
 A=0, C=0: El destinatario no está presente (no se modificaron los bits);
 A=1, C=0: El destinatario está presente, pero no ha copiado la trama
(falta de memoria u otro motivo);
 A=1, C=1: El destinatario está presente y ha copiado con éxito la trama.
V.3.8. Distributed Queue Dual Bus (DQDB, 802.6)
Esta estrategia se basa en una topología de doble bus, como se muestra en la figura:
 Estrategia: Compartición distribuida, directa y de reserva;
 Detección de Uso: deben reservar espacio para transmitir, por lo que
pueden saber cuándo están autorizados para transmitir (sin colisiones);
 Asignación de Tiempo: Ranurado, y las estaciones pueden transmitir
sólo cuando les toca.
Las tramas en DQDB se llaman celdas, y son de 53 bytes de largo (9 de encabezado y
44 de datos). Los terminadores de bus generan celdas vacías a 125  s , lo cual equivale a
una velocidad de transmisión máxima de 22Mbps (sólo datos). Cada celda transmitida llega
a todas las estaciones que están más adelante en el camino, y en cada una existe un retraso
de transmisión de una celda de largo.
El primer byte da las celdas corresponde al campo de control de acceso (Access
Control Field), el cual posee los siguientes bits (además de otros):
 Busy
(1 bit): Indica si la celda contiene o no datos;
 Reserved (1 bit): Indica si esta trama (vacía) está o no reservada;
 Req.
(4 bits): indica una cantidad de celdas que se deben dejar pasar,
además de las ya reservadas con anterioridad.
Cuando una estación desea transmitir, primero debe encontrar una celda por el bus en
dirección opuesta, en la cual se pueda aumentar el valor Req (se evita así la congestión). En
todas las estaciones, por cada celda con Req. Mayor que cero que se reciba, se deben dejar
pasar las correspondientes celdas vacías en la dirección opuesta.
Luego de enviar la reserva, se puede utilizar cualquier celda vacía que viaje en la
dirección opuesta para enviar los datos, siempre que ya se hayan satisfecho todas las
reservas que se recibieron con anterioridad. El algoritmo funciona de la misma forma para
ambas direcciones de transmisión, y asegura una igualdad de oportunidades de transmisión
a todas las estaciones.
Las direcciones son de 6 bits, y no es necesario incluir la dirección origen en el
encabezado de las celdas, debido a que se provee un servicio de red sin conexión, el cual no
tiene por que asegurar que las celdas llegan a destino.
V.3.9. Fiber Distributed Data Interface (FDDI, 802.8)
Este protocolo MAC es similar al paso de testigo en anillo (802.), pero utiliza una
topología de doble anillo y un protocolo diferente, adaptado a las fibras ópticas. Si se corta
una línea, las estaciones pueden cerrar el anillo utilizando como se muestra en las figuras:
 Estrategia: Compartición distribuida, indirecta y de selección;
 Detección de Uso: pueden detectar si el canal está o no siendo
utilizado, más aún, pueden saber cuándo están autorizados para
transmitir (sin colisiones);
 Asignación de Tiempo: Continuo, pero las estaciones pueden
transmitir sólo cuando les toca.
La velocidad de transmisión es de 100Mbps, y el alcance es de dos kilómetros. La
única diferencia práctica con Token-Passing Bus (además de la mayor velocidad) es que no
se conectan las estaciones directamente sino que se usan concentradores, debido al alto
costo de las interfaces ópticas.
V.3.10. ISDN, BISDN (ATM)
Son estándares comerciales para transmisión digital de voz, video y datos, utilizados
ampliamente por las empresas portadoras privadas. Proveen servicios combinados de los
siguientes tipos:
Tipo B: canal de 16Kbps, se asegura este ancho de banda al cliente;
Tipo D: canal de control, compartido por todos los clientes, quienes lo utilizan
sólo como el proveedor indique;
Otros: se pueden proveer servicios con ancho de banda variable según demanda,
de forma que se cobre no por la línea dedicada, sino por la cantidad de
datos transmitidos.
Existen dos estándares ISDN, y son los siguientes:
ISDN (Integrated Services Digital Network): provee servicios básicos, con
2B+D (16Kbps), y primarios, con 23B+D (64Kbps) en EEUU, con 30B+D
(64Kbps) en Europa;
BISDN (ISDN de Banda Ancha): provee servicios con banda variable según
demanda, con límite predefinido. Usa tecnología ATM para
implementación.
ATM (Asyncronous Transfer Mode):
 Estrategia: Compartición distribuida, directa y de ???? (selección,
reserva, contienda????);
 Detección de Uso: ????;
 Asignación de Tiempo: ????.
Está definido por el estándar BISDN, y utiliza fibras ópticas para transmisión a larga
distancia. Además, se definen no sólo las capas físicas y de enlace, sino que también la de
red, para poder conectar varias subredes ATM entre sí.
Las tramas en ATM se llaman celdas, y son de 53 bytes de largo (5 de encabezado y
48 de datos). Los terminadores de bus generan celdas vacías, a una velocidad de
transmisión máxima de 155Mbps (sólo datos).
Provee un servicio orientado a conexión, por lo que es difícil utilizar ATM para
implementar una red LAN.
V.4.
Control de Flujo
El protocolo de comunicaciones entre transmisor y receptor debe ser capaz de
manejar la situación de un transmisor rápido y un receptor lento, así como asegurar la
correcta recepción de todos los mensajes.
A continuación analizaremos una serie de protocolos simples de enlace, para los cual
son necesarias algunas definiciones previas:
V.4.1. Definiciones
a) Estructura de la Trama
Una trama está constituida por cuatro campos, y los tres primeros constituyen la
cabecera de la capa de enlace:




Tipo:
Seq:
Ack:
Info:
Indica si hay o no datos en el campo Info;
Nº de secuencia de esta trama;
Nº de secuencia de asentimiento;
Un paquete de capa de red transmitido.
El campo Info podría ser de tamaño variable, pero debería agregarse otro campo en la
cabecera para indicar su largo.
b) Eventos que Recibe la Capa de Enlace
Cada entidad de la torre de protocolos trabaja en base a la manipulación o reacción a
eventos que recibe. Para la capa de red, los eventos básicos necesarios son los que listan a
continuación:
 LlegóTrama: Indica que se ha recibido una trama desde la capa física;
 CRCerr:
Indica que la trama recibida desde la capa física tiene errores;
 CapaRedDesocupada: Indica que la capa de red está desocupada y lista para
recibir un paquete;
 CapaRedLista: Indica que la capa de red está lista a enviar un paquete;
 TimeOut:
Indica que ha vencido el temporizador;
c) Funciones Predefinidas para la Capa de Enlace
Los protocolos que se mostrarán a continuación utilizan una serie de funciones
predefinidas, que son las siguientes:
 Espera():
Espera a que suceda algún evento;
 Incrementa(): incrementa circularmente un contador.
 ACapaFísica():
 DeCapaFísica():
Transmite una trama utilizando la capa física;
Recibe una trama desde la capa física;
 ACapaRed():
 DeCapaRed():
Envía un paquete recibido a la capa de red;
Recibe paquete de la capa de red para ser transmitido;
 IniciaTimer():
 ParaTimer():
Inicia el temporizador y activa el evento TimeOut;
Detiene el temporizador y desactiva el evento TimeOut;
 IniciaTimerAck():
 ParaTimerAck():
Inicia el temporizador auxiliar;
Detiene el temporizador auxiliar y desactiva el evento
CapaRedDesocupada;
 HabilitaCapaRed():
Habilita la capa de red para generar evento
CapaRedLista;
 DeshabilitaCapaRed():Deshabilita la capa de red, prohibiéndole
generar un evento CapaRedLista;
Cuando llega una trama, el HW determina si es correcta o no. Cuando lo es, se genera
el evento LlegóTrama, y si no se genera el evento CRCerr.
Supondremos que el HW de la capa de enlace dedicado a la utilización de la capa
física implementa los algoritmos de detección de error, utilizando código de redundancia,
por ejemplo. Además, para simplificar, los algoritmos que se mostrarán para la capa de
enlace no implementan ningún tipo de paralelismo, el cual es necesario en la capa de
enlace.
V.4.2. Protocolos sin Memoria
a) Protocolo Unilateral No Restringido (U-NR)
Este protocolo es el más simple, y sólo puede enviar datos en una dirección.
Supondremos que ambas entidades de la capa de red siempre están listas a transmitir y
recibir respectivamente. Además despreciaremos el tiempo de procesamiento, y
supondremos que la capa física nunca daña la información.
Emisor()
{
t : trama
p : paquete
repetir
DeCapaRed(p)
t.Info = p
ACapaFísica(t)
hasta-siempre
}
Receptor()
{
t : trama
e : evento
repetir
Espera(e)
DeCapaFísica(t)
ACapaRed(t.Info)
hasta-siempre
}
obtiene paquete a transmitir
lo copia a la trama
trasmite la trama
único evento posible es LlegóTrama
recibe la trama
pasa el paquete a la capa de red
b) Protocolo Unilateral de Parada y Espera (U-P/E)
Este protocolo maneja la situación cuando el receptor no puede recibir más tramas
debido a que no ha procesado aún las que ha recibido. Esto se hace mediante un mecanismo
de retroalimentación llamado asentimiento, mediante el cual el receptor puede indicar al
emisor que ya puede recibir una nueva trama.
Sin embargo, este protocolo provoca una estricta alternancia, debido a que el emisor
puede transmitir la siguiente trama sólo cuando ya ha recibido asentimiento de la anterior.
Emisor()
{
t : trama
p : paquete
e : evento
repetir
DeCapaRed(p)
t.Info = p
AcapaFísica(t)
Espera(e)
hasta-siempre
obtiene paquete a transmitir
lo copia a la trama
trasmite la trama
espera único evento posible: LlegóTrama
}
Receptor()
{
s,t : trama
e : evento
repetir
Espera(e)
DeCapaFísica(t)
ACapaRed(t.Info)
ACapaFísica(s)
hasta-siempre
}
único evento posible es LlegóTrama
recibe la trama
pasa el paquete a la capa de red
envía trama de relleno como asentimiento
c) Protocolo Unilateral para Canal Ruidoso (U-CR)
Este protocolo agrega la capacidad de manejar las situaciones en que una trama se
recibe con errores, caso en el cual es necesaria la retransmisión de ella. Para lo anterior es
necesario utilizar números de secuencia asociados a cada trama transmitida, de manera que
el receptor pueda saber si la trama que recibe es la siguiente esperada o no.
Cabe destacar que también se pueden dañar las tramas de asentimiento, por lo que no
basta con que el emisor suponga que si no se recibe asentimiento, significa la trama enviada
llegó con errores al receptor.
Emisor()
{
t : trama
p : paquete
e : evento
inicializa secuencia de transmitidos
sgte = 0 : secuencia
obtiene paquete a transmitir
DeCapaRed(p)
repetir
construye la trama a transmitir
t.Info = p
t.Seq = sgte
transmite la trama
ACapaFisica(t)
inicializa Timer
IniciaTimer()
(LlegóTrama,
CRCerr
ó TimeOut)
Espera(e)
si e = LlegóTrama entonces
obtiene paquete a transmitir
DeCapaRed(p)
incrementa secuencia
Incrementa(sgte)
fin-si
hasta-siempre
}
Receptor()
{
s,r : trama
e : evento
inicializa secuencia de esperados
sgte = 0 : secuencia
obtiene paquete a transmitir
DeCapaRed(p)
repetir
(LlegóTrama ó CRCerr)
Espera(e)
si e = LlegóTrama entonces
obtiene paquete a transmitir
DeCapaFísica(r)
si r.Seq = sgte entonces
se recibió trama esperada
ACapaRed(t.Info)
incrementa secuencia
Incrementa(sgte)
fin-si
envía asentimiento
ACapaFísica(s)
fin-si
hasta-siempre
}
En este protocolo se pueden producir dos casos de errores de transmisión:
Error en Datos: El receptor recibe una trama errónea y no envía asentimiento,
haciendo que en el emisor se genere el evento TimeOut y se
retransmite la trama;
Error en Asentimiento: El receptor recibe correctamente una trama, pero el
asentimiento llega incorrecto al emisor. Se genera en él el evento
TimeOut y se retransmite la trama. El receptor recibe una trama
duplicada y la descarta.
En resumen, cualquiera sea la situación en que una trama se recibe con errores, el
protocolo es capaz de solucionar el problema. Aún así, este protocolo es muy lento, debido
a que, por la alternancia estricta, se debe esperar a que se venza el temporizador para enviar
la siguiente trama
V.4.3. Protocolos de Ventana Deslizante
El concepto de ventana deslizante permite proveer a los protocolos de enlace una
gran ventaja: permite comunicación bidireccional.
En los protocolos anteriores se utilizaban tramas en sentido contrario para enviar
asentimientos, las cuales podrían contener además datos. Para los asentimientos de estos
que viajan en dirección opuesta se puede asimismo utilizar las tramas de datos originales.
Esta técnica recibe el nombre de superposición, y permite aprovechar mucho mejor el
ancho de banda del canal, ya que permite enviar datos y asentimientos en una misma trama.
Debe tenerse claro que siempre es posible enviar una trama con sólo asentimiento o sólo
datos, ya que el asentimiento debe siempre ser recibido de vuelta antes que ocurra el evento
TimeOut en el emisor, debido a que esto generaría su retransmisión.
Además, las entidades de la capa de enlace, que ahora pueden enviar y recibir datos,
poseen una cierta capacidad de memoria emisora y de memoria receptora (ventanas). La
ventana emisora contiene una lista de las tramas que ya se han enviado pero todavía no se
ha recibido el asentimiento (si está llena, no se pueden enviar más), y la ventana receptora
contiene las tramas recibidas que aún no han sido procesadas por la capa de red (si está
llena, no se pueden recibir más).
a) Protocolo de Ventana Deslizante de 1 Bit
El protocolo que sigue posee una ventana de tamaño 1, esto es, se puede almacenar
sólo una trama a la vez en el emisor o receptor. Por lo anterior, este protocolo sólo acepta la
recepción de tramas en orden, lo que para tamaños más grandes no es una restricción.
Además, posee el problema de no aprovechar la velocidad del canal de datos de forma
óptima.
ProtocoloVentana1()
{
r,s : trama
p : paquete
e : evento
aRecibir = 0 : sec
aTransmitir = 0 : sec
inicializa secuencia de recibidos (0 ó 1)
inicializa secuencia de enviados (0 ó 1)
DeCapaRed(p)
arma trama a enviar
s.info = p
s.seq = aTransmitir
s.ack = 1 - aRecibir
transmite trama
ACapaFísica(s)
inicializa
temporizador
principal
IniciaTimer()
repetir
(LlegóTrama, CRCerr ó TimeOut)
Espera(e)
si e = LlegóTrama entonces
obtiene la trama
DeCapaFísica(r)
trama correcta
si r.seq = aRecibir entonces
despacha paquete
ACapaRed(r.info)
Incrementa(aRecibir)
asent. correcto
si r.ack = aTransmitir entonces
obtiene paquete sgte.
DeCapaRed(p)
Incrementa(aTransmitir)
arma trama a enviar
s.info = p
s.seq = aTransmitir
s.ack = 1 - aRecibir
transmite trama
ACapaFísica(s)
inicializa
temporizador
principal
IniciaTimer()
hasta-siempre
}
Hasta ahora se han considerado los tiempos necesarios para que una trama llegue al
receptor y que un asentimiento llegue de regreso como despreciables, lo cual es una
suposición absurda (considere transmisión satelital, por ej.). Debido a lo anterior, es
imposible que los protocolos anteriores utilicen el ancho de banda del canal de manera
siquiera buena, debido a que están obligados a esperar a que llegue el asentimiento antes de
enviar otra trama.
La solución es utilizar la técnica de envío continuo (pipelining), que consiste en
aumentar el tamaño de las ventanas de transmisión y recepción, de manera que el emisor
pueda enviar w tramas sin necesidad de esperar que lleguen los asentimientos. Se debe
entonces seleccionar un w que sea capaz de contener al menos la cantidad de tramas que se
pueden enviar antes que llegue el primer asentimiento de regreso.
La utilización de esta técnica sobre una canal inseguro genera el problema del
tratamiento de tramas con error o perdidas, ya que el receptor debe pasar a la capa de Red
los paquetes en orden. Para resolver el problema se utilizan dos técnicas, que son las
empleadas en los dos últimos protocolos por revisar:
b) Protocolo de Ventana Deslizante - Repetición No Selectiva
En esta solución el receptor tiene una ventana de tamaño 1, y en consecuencia debe
desechar todas las tramas que llegan después de una trama con errores o cuando se pierde
una trama (se detecta un número de secuencia incorrecto). En otras palabras, la capa de
enlace se rehusa a recibir tramas fuera de orden.
La siguiente figura muestra cómo trabaja la capa de enlace en este caso (el código
para este protocolo se puede encontrar en el anexo del presente texto):
0
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
9
10
0
1
E
D
D
D
D
D
D
2
3
4
5
6
7
8
El tamaño de la ventana de transmisión para este protocolo debe ser menor o igual a l
valor máximo para números de secuencia más uno. Esta solución puede parecer buena, pero
cuando los errores son comunes, se desperdicia mucho ancho de banda del canal.
Este protocolo no resuelve el problema de asentimientos que nunca se envían de
regreso porque la capa de red en el receptor no tiene nada que transmitir al emisor.
c) Protocolo de Ventana Deslizante - Repetición Selectiva
En este caso el receptor debe tener una ventana de recepción de más de una trama de
capacidad, y se almacenan en memoria todas las tramas correctas que lleguen después de
ocurrido el error, mientras tenga espacio disponible.
Cuando el emisor detecta que hay algún problema (se vence su temporizador),
retransmite las tramas a partir de la perdida, pero como el receptor ya posee las siguientes,
envía de regreso sólo el asentimiento de la trama con mayor número de secuencia. De esta
forma, el emisor sabe que no necesita retransmitir las tramas que siguen a la del
asentimiento recibido.
La siguiente figura muestra cómo trabaja la capa de enlace en este caso (el código
para este protocolo se puede encontrar en el anexo del presente texto):
0
1
2
3
4
5
6
7
8
2
3
4
5
6
9
10
11
12
0
1
E
3
4
5
6
7
8
2
D
D
D
D
9
10
Se almacenan
2-8 se pasan a
Capa de Red
El tamaño de la ventana de transmisión para este protocolo debe ser menor o igual a
 M a xS eq  1 para que no surjan ambigüedades al momento de decidir qué asentimiento
se recibió.
Este protocolo sí resuelve el problema de los asentimientos cuando no hay tráfico de
datos en la dirección opuesta, utilizando para ello temporizadores auxiliares para los
asentimientos pendientes a enviar. Además, este protocolo es capaz de enviar asentimientos
negativos en el caso de detectar un error, evitando así tener que esperar que venza el
temporizador correspondiente en el emisor. No es necesario el manejo de error para estos
asentimientos, ya que si no llegan, expira el temporizador correspondiente. (Ver código en
anexo para ver cómo se implementa todo lo anterior).
1
2
Los últimos dos protocolos poseen una característica adicional, y es que ya no se hace
la suposición que la capa de red siempre tiene algo para enviar. La capa de red genera un
evento en la capa de enlace cuando tiene algo que transmitir, y la capa de enlace puede
deshabilitar o habilitar este privilegio de la capa de red.
Otra característica de estos protocolos es que necesitan de un temporizador para cada
trama en la ventana de transmisión.
V.4.4. Rendimiento del Canal de Enlace
En este apartado haremos un análisis comparativo del rendimiento de los protocolos
mostrados. Los tres primeros protocolos utilizan pobremente el canal y no solucionan
muchos de los problemas de la capa de enlace. Los otros tres protocolos son todos
igualmente buenos en el sentido de presentar a la capa de red un canal virtualmente libre de
errores, pero su rendimiento es substancialmente distinto en términos de rendimiento
(cantidad de información transmitida por unidad de tiempo), esto es, el aprovechamiento
del ancho de banda del canal.
Los factores que influyen en el rendimiento de un protocolo son los siguientes:





Longitud de la trama: ¿cantidad de bits?, ¿largo fijo o variable?;
Superposición: ¿se utiliza superposición de asentimientos?;
Pipelining: ¿se envían varias tramas antes de recibir asentimientos?;
Canal Duplex o Semiduplex: ¿se puede transmitir en ambos sentidos a la vez?;
Proporción de Error: ¿qué fracción de las tramas se pierde o llega errónea?
Los siguientes gráficos muestran cómo se comportan algunos de los protocolos
mostrados con anterioridad, en términos de eficiencia. La longitud del canal se mide en
términos de cuántas tramas puede enviar el emisor antes que el receptor reciba la primera
trama enviada. Nótese que la eficiencia nunca es 1.0 debido a los errores producidos en el
canal y a la pérdida de tramas.
1.0
1.0
0.8
0.8
0.6
0.6
0.4
Ventana Deslizante
w=7
0.2
0.4
0.2
Parada y Espera
0.0
0.0
0
2
4
6
Longitud del Cable
8
10
0
2
4
6
Tamaño de la Ventana
8
10
VI. Capa de Red
Con las capas Física y de Enlace se ha logrado construir la base para redes que
utilizan un solo medio físico. La Capa de Red es la encargada de proveer los mecanismos
para interconectar redes de varios medios físicos.
VI.1. Problemas de Diseño de la Capa de Red
VI.1.1. Tipo de Servicios Suministrados
Existió gran controversia al momento de decidir cuáles servicios suministraría la
Capa de Red a las capas superiores, y como resultado se decidió que la Capa de Red
proveería servicios con y sin conexión. Todos los servicios comparten las siguientes
características:
 Se define como subredes a las redes definidas por la capa de red, esto es, al
conjunto de entidades de capa de red conectados por un mismo protocolo en la
capa de enlace;
 Son independientes de la tecnología de las subredes;
 Las capas superiores desconocen el número, tipo y topología de las subredes;
 Las direcciones de red deben utilizar una numeración uniforme a lo largo de
todos los tipos de subredes.
Como la Capa de Red es la ultima capa implementable en HW, se asegura la
independencia del HW con el SW de los computadores.
VI.1.2. Encaminamiento
La capa de red debe proveer mecanismos para encaminar los paquetes a través de las
redes físicas de una misma subred.
VI.1.3. Interconexión de Redes
La capa de red debe proveer mecanismos para encaminar correctamente paquetes a
través de subredes diferentes, esto es, con diferente protocolo de capa de enlace. En otras
palabras, si las máquinas origen y destino se encuentran conectadas a subredes diferentes,
la capa de red debe ser capaz de transportar el paquete de subred a subred, hasta que llegue
a la subred del destino, traduciéndolos de un protocolo al otro.
VI.1.4. Control de Congestión
Cuando la capa de red es incapaz de satisfacer todos los requerimientos de las capas
superiores, debido al volumen de tráfico demandado, se llenan los espacios de memorias
temporales en los IMP´s (ver capa de enlace). Esto produce que los IMP’s sean incapaces
de recibir, propagando el problema a los IMP’s que desean transmitir hacia los
congestionados.
La capa de red debe proveer algún mecanismo para controlar estas situaciones.
VI.2. Servicios Proporcionados por la Capa de Red
VI.2.1. Servicio con Conexión
El servicio con conexión debe poseer las siguientes características:
 Inicialmente, la entidad de transporte origen establece la conexión con la
entidad receptora, y en ese momento la capa de red decide qué ruta utilizará
para la conexión. Esta ruta no cambia mientras dure la conexión, la cual se
termina explícitamente;
 Al comienzo, las entidades origen y destino negocian con la capa de red la
calidad del servicio suministrado;
 La conexión establecida es bidireccional, sin errores y con paquetes entregados
secuencialmente;
 El control de flujo se proporciona automáticamente por la capa de red;
 No es necesario que los paquetes contengan la dirección completa de destino,
sino que sólo una identificación del circuito virtual a utilizar, el cual es
conocido por la misma subred;
VI.2.2. Servicio Sin Conexión
El servicio sin conexión que se provee es muy básico, sin que se provean controles de
error o de flujo, y los paquetes pueden ser entregados en cualquier orden. Así, son los
mismos hosts los encargados de realizar todos los controles. Además, para cada paquete se
debe decidir nuevamente la ruta a utilizar, por lo cual es necesario que todo paquete
contenga la dirección completa de destino.
La justificación de incluir un servicio tan poco confiable es la necesidad de muchas
aplicaciones (interactivas o multimediales, por ejemplo) de realizar transmisiones
individuales de poco tamaño, o que requieren gran velocidad sin una gran exactitud.
VI.2.3. Diferencias entre los Servicios Suministrados
La siguiente tabla muestra las diferencias entre los servicios proporcionados por la
capa de red:
Asunto
Establecimiento inicial
Indicación de dirección destino
Secuencialidad de paquetes
Control de error
Control de Flujo
Negociación de calidad
Complejidad realizable en HW
Criterio Preponderante
Con Conexión
Requerido
Sólo inicialmente
Garantizada
Proporcionado
Proporcionado
Posible
Mucha
Exactitud
Sin Conexión
No es posible
En cada paquete
No garantizada
No proporcionado
No proporcionado
Imposible
Poca
Velocidad
VI.3. Primitivas OSI para la Capa de Red
Las primitivas proveídas por la capa de red son las siguientes:
Orientadas a Conexión
N-CONNECT.request ( callee, caller, acks, exp, qos, data )
N-CONNECT.indication ( callee, caller, acks, exp, qos, data )
N-CONNECT.response ( responder, acks, exp, qos, data )
N-CONNECT.confirm ( responder, acks, exp, qos, data )
N-DISCONNECT.request ( originator, reason, data, responder )
N-DISCONNECT.indication ( originator, reason, data, responder
)
N-DATA.request ( data )
N-DATA.indication ( data )
N-DATA-ACK.request ( )
N-DATA-ACK.indication ( )
N-EXPEDITED-DATA.request ( data )
N-EXPEDITED-DATA.indication ( data )
Sin Conexión
N-UNITDATA.request ( callee, caller, qos, data )
N-UNITDATA.indication ( callee, caller, qos, data )
N-FACILITY.request ( originator, reason )
N-FACILITY.indication ( destination, qos, reason )
N-REPORT.indication( destination, qos, reason )
donde:
callee
- dirección de quien es llamado
caller
- dirección de quien llama
acks
- indicación de asentimientos deseados
exp
- indicación de datos acelerados
qos
- calidad de servicio deseada
data
- 0 o más datos transmitidos
originator - especifica quién inició N-RESET
responder - dirección NSAP de destinatario
reason
- razón por la cual sucedió
VI.4. Organización Interna de la Capa de Red
No es posible diseñar la capa de red de forma de que se satisfagan simultáneamente
los requerimientos con y sin conexión deseados, sino que se debe elegir por una
implementación particular que satisfaga uno de estos requerimientos, implementándose
luego el otro sobre la implementación elegida.
VI.4.1. Circuitos Virtuales
La primera posibilidad es implementar directamente el servicio con conexión, para lo
cual se utiliza el concepto de circuito virtual. La idea principal de los circuitos virtuales es
evitar la toma de decisiones de encaminamiento para cada paquete enviado, sino que éstas
se toman sólo al inicio de la conexión.
Para lo anterior se define inicialmente una ruta o camino, el cual es utilizado para
encaminar todos los paquetes de la conexión dada. Cada nodo en el camino elegido debe
conocer hacia dónde enviar cada paquete recibido, y como la comunicación es
bidireccional, cada nodo debe conocer su antecesor y sucesor en cada circuito virtual. Los
nodos sólo pueden decidir hacia dónde redirigir los paquetes recibidos basándose en el
número de circuito virtual que contienen los paquetes.
Para implementar lo anterior, los nodos intermedios (IMP’s) poseen una tabla en la
cual se ingresan los circuitos virtuales a los que pertenece el nodo, y los nodos antecesor y
sucesor de cada uno de ellos. Se ve como necesario que los números de circuitos virtuales
sean únicos en la subred, pero esto no es así, puesto que cada circuito virtual no se
identifica con un valor único, sino que existe un valor diferente para cada red física del
circuito virtual, el cual sólo necesita ser único en esa red física.
Veamos un ejemplo: Supongamos la siguiente topología de la subred:
Hb
Hc
B
C
A
Ha
D
E
Hd
F
He
Hf
y consideremos los caminos Ha-A-B-C-Hc, Ha-E-C-B-Hb, He-E-A-B-C-D-Hd y HeE-F-D-Hd. Las tablas de los nodos intermedios deben contener los siguientes valores (las
flechas indican el segundo circuito definido):
Nodo A
In
H
H
E
Nodo B
Out
0
1
0
B
E
B
In
0
0
1
A
C
A
Nodo D
In
C
F
H
H
0
0
1
C
H
C
In
0
0
1
B
E
B
Nodo E
Out
0
0
Nodo C
Out
In
0
1
A
H
H
C
A
F
H
B
D
0
0
0
Nodo F
Out
0
0
1
Out
0
0
1
In
0
0
0
E
Out
0
D
0
Los circuitos virtuales definidos así son unidireccionales, y para implementar
circuitos bidireccionales basta definir dos circuitos unidireccionales. Note que estos
circuitos inversos pueden no utilizar las mismas rutas, lo que es una ventaja en sí.
Los paquetes enviados a través de un circuito virtual no necesitan acarrear consigo la
dirección de destino, ya que cada nodo sabe de antemano hacia dónde encaminar el
paquete, ahorrando un ancho de banda considerable para paquetes cotos.
Cuando un circuito virtual no se necesita más, éste debe ser eliminado explícitamente
desde las capas superiores, para eliminar cada entrada correspondiente en las tablas de los
nodos intermedios.
VI.4.2. Datagramas
La segunda opción de implementación es sin orientación a conexión, en la cual cada
paquete transmitido debe ser encaminado individualmente. Las redes de este tipo deben
hacer un mayor trabajo para cada paquete, pero son más robustas en un contexto general,
puesto que se responden con facilidad a fallos y congestión.
Para esta solución, cada nodo debe conocer hacia qué nodo adyacente debe enviar
cada paquete recibido, para lo cual es necesaria una tabla que indique lo anterior para cada
destino posible. Esta tabla también es necesaria en los circuitos virtuales para el
establecimiento de conexión.
Además, los paquetes deben contener la dirección completa de destino, para que los
nodos puedan decidir hacia dónde encaminarlos.
VI.4.3. Comparación: Circuitos Virtuales vs. Datagramas
La siguiente tabla muestra las diferencias entre la implementación de la subred:
Asunto
Direccionamiento
Circuitos Virtuales
Sólo número de circuito virtual
Información del
camino
Encaminamiento
Cada nodo almacena
información acerca del camino
Cada paquete a través de
circuito virtual previamente
definido
Se pierden todas las conexiones Sólo se pierden paquetes que
a través del nodo que falla
estaban en memoria del nodo
que falla
Fácil
Difícil
En capa de red
En capas superiores
Servicio orientado a conexión
Servicios orientados a
conexión y sin conexión
Efecto de fallos en
nodos
Control de congestión
Complejidad
Adecuado para
Datagramas
Paquetes con dirección
completa
La subred no almacena al
camino
Cada paquete
independientemente
VI.5. Algoritmos de Encaminamiento
Existen diversos algoritmos que determinan el camino a seguir para llevar un paquete
del origen al destino, los cuales se clasifican en dos grandes grupos:
No Adaptativos o Estáticos: la elección de los caminos se hace a priori, antes de
poner en marcha la red. EL trabajo para redes grandes o con
caminos múltiples es enorme;
Adaptativos: Se basan en el tráfico y topología actuales de la red para decidir
cuál es el mejor camino en cada momento. Se dividen en globales,
locales y distribuidos, según la información que utilizan.
VI.5.1. Encaminamiento Estático
La elección de caminos se hace antes de poner en marcha la red, y se programa cada
uno de los nodos individualmente.
a) Camino más Corto
El camino se elige según el criterio del camino por el cual los paquetes llegan en el
menor tiempo al destino. Para ello se consideran factores diversos, como la distancia, ancho
de banda, promedio de tráfico, largo de la cola de espera, retardo, y otros.
Se elige así el mejor camino desde cada origen a cada destino, y se utiliza este camino
para encaminar todos los paquetes.
b) Camino Múltiple
Este mecanismo es aplicable cuando hay más de un camino que se considera mejor.
Los nodos intermedios pueden decidir cuál de ellos se utilizará para cada paquete,
utilizando para ello alguna función de probabilidad con pesos definidos antes de poner en
marcha la red.
Así, cuando el tráfico es grande, se utilizan los diferentes caminos para distribuir la
carga evitando congestionar algún camino de la subred.
c) Centralizado
En vez de realizar manualmente los cálculos para encontrar los mejores caminos entre
todos los nodos, se puede utilizar un programa automático que recopile información desde
todos los nodos de la subred, realice los cálculos, y luego envíe una nueva configuración a
cada nodo.
Este mecanismo es atractivo, puesto que puede utilizarse de forma automática cada
cierto tiempo para producir resultados adaptativos, pero posee grandes inconvenientes.
Primero, el tráfico desde y hacia la máquina de control centralizado de encaminamiento es
bastante fuerte, y puede incluso afectar los cálculos mismos. Otro problema grave es el
orden en que se distribuyen las nuevas tablas a cada nodo de la subred, ya que pueden
surgir inconsistencias que incluso pueden dejar aislado a algún nodo.
d) Encaminamiento Aislado
Se trata aquí que cada nodo de la subred decida hacia adónde enviar los paquetes
recibidos, utilizando para ello sólo su información interna. Existen varias formas de hacer
lo anterior:
Patata Caliente: los paquetes simplemente se ponen en la cola de salida más
corta del nodo, sin importar hacia adónde se dirige la línea;
Patata Caliente Mejorado: se utilizan pesos estáticos asignados a cada salida, en
conjunto con el largo de las colas para decidir;
Aprendizaje Hacia Atrás: Se incluye en cada paquete un contador de saltos, el
cual se incrementa en uno en cada nodo. Así, cada nodo puede
saber, luego de un tiempo razonable, cual es el mejor camino hacia
cada nodo posible. El problema surge cuando un nodo se desactiva,
puesto que no hay como detectar la falla;
Inundación: los paquetes se envían por todas las líneas, excepto por la cual
llegó. Se incluye un contador en cada paquete, que indica el
número de saltos que ha registrado, y si es mayor que cierto
umbral, se desecha el paquete. Este algoritmo es muy robusto, y
deseable en aplicaciones militares, por ej.
VI.5.2. Encaminamiento Adaptativo
a) Encaminamiento Distribuido
Se utiliza alguna medida de la longitud de los caminos, y cada nodo de la subred
conoce la distancia hacia sus vecinos. Cada cierto tiempo, los nodos piden a sus vecinos
que les envíen sus propias tablas, de forma que si se encuentra un mejor camino, se
actualiza la tabla propia. El tiempo puede ser ajustado para que los caminos elegidos
permanezcan estables en o para que se adapten rápidamente, manteniendo siempre una idea
del camino más corto.
b) Encaminamiento Óptimo
Este algoritmo sirve para realizar la búsqueda de caminos alternativos en caso de
fallar algún nodo, y se basa en que para todo destino, los caminos óptimos desde todo
origen forman un árbol. Así, cuando un nodo detecta que falló algún vecino que era parte
de la mejor ruta hacia algún destino, pide a cada uno de sus otros vecinos que le indique
alguna ruta hacia los destinos perdidos. El nodo puede elegir nuevamente la mejor ruta o
detectar que no hay camino.
Si un nodo recibe un requerimiento de camino para un destino específico, y no
conoce ningún camino hacia él, entonces debe pedir lo mismo a sus propios vecinos, hasta
que se encuentre algún camino posible o no queden más nodos a quién preguntar.
VI.6. Control de Congestión
La congestión en sí se produce cuando la capa de red es incapaz de satisfacer todos
los requerimientos de las capas superiores, debido al volumen de tráfico demandado, se
llenan los espacios de memorias temporales en los IMP´s (ver capa de enlace). Esto
produce que los IMP’s sean incapaces de recibir, propagando el problema a los IMP’s que
desean transmitir hacia los congestionados.
El comportamiento de una subred congestionada se muestra en el siguiente gráfico:
Rendimiento Perfecto
Paquetes
Entregados
Rendimiento Deseado
Rendimiento Real
(por Congestión)
Paquetes Transmitidos
A continuación analizaremos una serie de algoritmos que permiten evitar la
congestión.
VI.6.1. Preasignación de Memorias
Si se utilizan circuitos virtuales dentro de la subred, es posible eliminar por completo
el problema de la congestión, si al establecer la conexión se pide reservar un número dado
de memorias de paquetes en los espacios de almacenamiento de los nodos. Así, a lo largo
de todo el circuito virtual siempre habrá lugar donde almacenar los paquetes enviados,
eliminándose por completo el problema de la congestión.
En el caso del protocolo de enlace de parada y espera, una memoria es suficiente,
pero para otros protocolos de ventana deslizante sofisticados pueden desearse más. De esta
forma, el problema ahora no es la congestión, sino que se hace un uso muy ineficiente del
canal, puesto que las memorias reservadas que no están en uso no los puede utilizar ningún
otro circuito virtual.
Por esto, la reserva de memorias se utiliza sólo para casos críticos, como la
transmisión digital de audio o vídeo, por ejemplo, en que son críticos el retardo y ancho de
banda.
VI.6.2. Descarte de Paquetes
Se trata de una técnica totalmente opuesta a la anterior: si se recibe un paquete y no
hay espacio disponible, se descarta inmediatamente. Si el servicio ofrecido es de
datagrama, no es necesario nada más, pero si se ofrecen circuitos virtuales, se debe asegurar
que el paquete llegue a destino.
Lo anterior se puede hacer esperando que el emisor reenvíe el paquete por
vencimiento de su temporizador, o esperando que el nodo fuente del paquete (que espera un
asentimiento) lo haga. Cabe destacar que cada nodo debe tener al menos una memoria
reservada para entrada, de forma que pueda recibir asentimientos que permitan liberar otras
memorias.
Otro mecanismo es limitar el largo de las colas de salida, de forma que ninguna se
acapare todas las memorias, definiendo un máximo (Irland, 1978) o mínimo (Kamoun,
1976) para la cantidad de memorias asignadas a cada salida. De esta forma se evita que
exista congestión el nodo por culpa de una sola línea ocupada. Determinar los tamaños
máximo y/o mínimos no es fácil.
VI.6.3. Control Isarítmico de Congestión
Consiste en limitar el número de paquetes que puede haber en la subred, evitando que
sobrepase cierto límite. Esto se logra haciendo circular permisos en la subred, de forma que
ningún nodo fuente puede transmitir si no captura primero un permiso. El nodo destino
debe regenerar el permiso cuando reciba el paquete. Los permisos circulan aleatoriamente
por la subred.
Este método evita la congestión, tiene varios problemas graves. Primero, cuando un
nodo tiene muchos paquetes a transmitir, debe capturar muchos permisos, lo que puede
demorar mucho. Otro problema que surge es que para que todos los nodos tengan la misma
probabilidad de recibir un permiso, éstos deben estar uniformemente distribuidos, lo cual
no está para nada garantizado. Un problema grave es que los permisos pueden perderse, y
no existe forma de saberlo.
VI.6.4. Control de Congestión por Control de Flujo
Se puede restringir el ancho de banda que cada máquina puede transmitir o recibir de
la subred, lo cual evitaría la congestión, pero esto deriva en un mal servicio, aún cuando la
red esté desocupada.
Se puede aplicar restringiendo el ancho de banda entre pares de:
 Procesos de Usuario;
 Máquinas, sin considerar el número de circuitos virtuales en que intervienen;
 nodos origen y destino, sin considerar las máquinas.
VI.6.5. Paquetes Reguladores
Se trata aquí de programar los nodos de la subred para que detecten la congestión,
enviando un paquete regulador al nodo fuente de los paquetes, el cual deberá disminuir
paulatinamente su velocidad de transmisión. Si durante de un periodo de tiempo no se
reciben reguladores, se puede volver a aumentar paulatinamente la velocidad.
Este mecanismo controla efectivamente la congestión, pero es complicado, y el
periodo de tiempo debe ajustarse estadísticamente: si es muy corto no se resuelve el
problema, y si es muy largo se pierde utilización del canal.
VI.6.6. Resolución de Bloqueos
Los bloqueos se producen cuando los nodos de una subred están tan congestionados
de forma que ninguno puede hacer algo mientras el otro no haga algo. El bloqueo más
simple se da con dos nodos: supongamos que ambos tienen sus memorias de
transmisión/recepción llenas con paquetes a enviar al otro nodo. Ninguno de ellos puede
recibir lo que el otro está tratando de enviar, ni puede liberar una memoria porque no se
pueden enviar os paquetes. Esta situación no tiene solución, y la capa de red debe evitarla a
toda costa.
La solución es muy simple: todos los nodos deben tener una memoria por cada línea
de entrada reservada para recepción. Además, cada vez que se crea un nuevo paquete, se
incluye en él la fecha y hora en que s creó. Así, para cada par de nodos adyacentes, y cada
vez que la línea está libre, los nodos indican a su vecino cuál es el paquete más antiguo que
desea enviar por ella, y el más antiguo es enviado. Así, se asegura que se liberen las
memorias de transmisión de los nodos.
VI.7. Ejemplos de Capa de Red
VI.7.1. Protocolo de Red IP (Internet Protocol)
El protocolo de red IP define un servicio de red sin conexión que, como se vio
anteriormente, no necesita ser seguro ni fiable. Los datagramas IP son de hasta 64kb de
largo, y su cabecera es de al menos 20 bytes. Un datagrama puede ser dividido en dentro de
la red, para pasarlo por subredes que transportan paquetes más cortos.
El formato de la cabecera es como sigue:
0
7 8
versión
15 18
largo
tipo
identificación
D F
tiempo de vida
protocolo
dirección fuente
dirección destino
opciones
donde:
versión
largo
tipo
23 24
31
largo total
desplazamiento
CRC cabecera
- indica la versión de IP de que se trata (para compatibilidad futura)
- largo de la cabecera, en palabras de 32 bits (mínimo 5)
- indica a la subred el tipo de servicio suministrado (rápido no confiable,
seguro, secreto, o cualquier combinación)
largo total
- largo total del paquete, incluyendo los datos
identificación
- todos los fragmentos de un datagrama poseen la misma identificación
D
- si es 1, no se debe fragmentar el datagrama
F
- todos los fragmentos de un datagrama, excepto el último, deben
contener un 1 en este bit
desplazamiento - cada fragmento de un datagrama indica aquí el desplazamiento (en
bytes) dentro del datagrama completo
tiempo de vida - indica en segundos cuánto tiempo de vida le queda al paquete
protocolo
opciones
CRC cabecera
- indica a qué protocolo pertenece el datagrama. TCP es una posibilidad
- parámetros particulares del protocolo que utiliza IP
- código de redundancia de la cabecera
El estándar de capa de red define la utilización de direcciones únicas a nivel de red, lo
cual es definido por IP de la siguiente forma
1
7
24
0
subred
estación
1
1
1 0
1
1
14
16
subred
estación
1
1 1 0
1
1
1
1
21
8
subred
estación
28
1 1 1 0
dirección multicast
Se definen además los siguientes valores especiales para los campos:
Valor
subred = 0…0
estación = 0…0
subred = 1…1
subred = 1…1
Significado
esta subred
esta estación (eco a primer nodo)
difusión a todas las subredes
difusión a todas las estaciones de esta subred
Las direcciones multicast se propagan (difusión) a todas las estaciones de la subred en
la cual se encuentra la estación origen, y es recibida por todas las estaciones que deseen
hacerlo (analizan la dirección).
La división entre subred y estación se definió para que los nodos puedan saber si el
paquete se puede enviar directamente al destino (estación en esta subred) o se debe enviar
través de un router (estación en otra subred).
VI.7.2. Protocolo ARP (Address Resolution Protocol)
Es un protocolo que trabaja sobre IP, sirve para traducir direcciones IP lógicas en
direcciones de enlace. Lo utilizan los routers para conocer las direcciones de enlace de las
estaciones que están conectadas a los mismos medios físicos que él.
Funciona de la siguiente manera: se envía un requerimiento ARP por difusión a todas
las estaciones de la subred, y cada una que reconozca su propia dirección IP en el
requerimiento, devuelve una respuesta ARP que contiene su dirección física (de enlace) y
lógica (de red). La implementación de ARP considera el uso de tabla, las que disminuyen el
número de mensajes ARP enviados.
VII. Interconexionado de Redes
En este capítulo analizaremos las diferentes maneras en que se pueden conectar las
redes, ya sea de un mismo tipo o de tipos distintos.
VII.1. Conexión de Redes
La conexión entre diferentes redes puede realizarse de variadas maneras, dependiendo
si las redes son compatibles a nivel de las capas física, de enlace o de red. En lo que sigue
analizaremos los diferentes dispositivos de interconexión existentes.
VII.1.1. Capa Física: Repetidores (Hub)
Se utilizan para conectar redes con las mismas características físicas, generalmente
para poder cubrir una distancia mayor que la permitida por el medio físico.
Los repetidores son dispositivos que se conectan a más de un medio físico, y reciben
todas los bits desde ellos, transmitiéndolas a todos los demás medios físicos. No poseen
memoria, de forma que simplemente copian lo transmitido por las estaciones desde un
medio a otro. Generalmente los medios físico son iguales, y si no lo son, deben ser por lo
menos de comportamiento similar (de difusión, por ejemplo).
Cuando dos estaciones transmiten desde medios distintos simultáneamente, se
produce una distorsión de la señal, perdiéndose la información transmitida por ambas
estaciones, lo cual constituye una colisión.
VII.1.2. Subcapa de Acceso al Medio: Puentes (Bridges)
Los puentes son dispositivos que repiten todas las tramas desde cada entrada a todas
sus salidas. Se utilizan cuando las redes a conectar son compatibles a nivel MAC, para
conectar redes con mismo protocolo de enlace pero que usan medios físicos diferentes.
También se producen colisiones cuando dos estaciones en redes diferentes transmiten
simultáneamente.
VII.1.3. Capa de Enlace: Switch
Los switch son dispositivos que son capaces de analizar las direcciones de enlace (de
origen y destino) para determinar por qué salida deben transmitir las tramas que reciben. De
esta forma, sólo transmiten las tramas por el medio en el cual está conectado directamente
el destino.
Son generalmente inteligentes, de manera que no se los necesita programar de
antemano. Inicialmente no saben nada acerca de las direcciones, pero cuando comienzan a
recibir, analizan las direcciones de origen y las almacenan en una tabla, asociándoles un
identificador de la entrada por la cual llegan. Así, cuando se desea transmitir una trama,
basta analizar l tabla buscando la dirección de destino, para saber por qué salida se la debe
transmitir. Si todavía no se conoce por dónde se debe hacer, se transmite por todas ellas,
salvo por la que se recibió la trama.
Se utiliza para mejorar el rendimiento de las redes, debido a que elimina muchas
colisiones al localizar el tráfico.
VII.1.4. Capa de Red: Encaminador (Router)
Son máquinas que están conectadas a más de un tipo de subred, y que son capaces de
traducir protocolos de enlace diferentes, lo cual puede ser un problema muy complejo
dependiendo de qué combinación protocolos se utilice. El SW traductor se encuentra como
entidad de capa de red.
A veces se los utiliza con otros fines, puesto que tienen control directo sobre todo lo
que ocurre a nivel de la capa de red:
Firewall: Es un SW de capa de red que es capaz de discriminar el paso de
paquetes desde una subred a otra. Se utiliza para evitar la entrada
de intrusos, controlando el acceso por medio de filtros (de
direcciones, de protocolos, etc.);
Gateway: Es un SW de router que además es capaz de traducir protocolos de los
niveles más altos, para permitir comunicación entre subredes con
protocolos de red diferentes. Puede opcionalmente traducir
protocolos de aplicación de una subred que no son compatibles en
la otra. Por ejemplo, se puede traducir el protocolo de correo
Microsoft (basado en NetBEUI) al protocolo de correo de e-mail
(basado en TCP/IP)
VII.1.5. Resumen de Características
Asunto
Entidad Compatible
Traduce
Poseen Memoria
Selectivo
Inteligente
Objetivo
Hub
Capa Física
Bits de un
medio a otros
No
No
No
Aumentar
alcance
Bridge
Supcapa MAC
Tramas
Si
No
No
Conectar
diferentes
medios físicos
Switch
Router
Capa de Enlace Capa de Red
Tramas
Protocolo de
Enlace
Si
Si
Si
Si
Si (automático) Si (manual)
Mejorar
Conectar
rendimiento
subredes
diferentes
VII.2. Diseño de Topologías de Redes
Cuando se diseña la topología de una red, se deben tener en cuenta los siguientes
consejos básicos:
 Para conexiones entre diferentes edificios, es mejor usar fibra óptica o algún
otro medio no eléctrico, para evitar el efectos dañinos por diferencias de nivel
tierra (que deteriora interfaces y hace aparecer colisiones falsas);
 Cuando hay muchas estaciones conectadas entre sí, y el tráfico es todos con
todos, es conveniente utilizar un switch a un hub, para evitar las colisiones
entre estaciones que no se comunican entre sí;
 Si hay muchas estaciones tratando de comunicarse con una estación particular,
no importa si es hub o switch, pero es conveniente que la conexión desde éste
hacia la estación particular debe ser más rápida que el resto, para evitar la
congestión en esa línea;
 En general, cuando se tienen muchas estaciones que se comunican
continuamente con alguna en particular (servidor), y raras veces entre sí,
conviene una topología jerárquica con el servidor conectado a un switch,
utilizando hubs en los nodos más cercanos a las estaciones para abaratar costos
(Ver figura 1);
 Cuando se usa un hub, la velocidad de transferencia se puede aumentar
cambiándolo por un switch;
Resto de la Red
Switch
Servidor
Hub
Hub
Estaciones
Estaciones
Figura 1: Topología Jerárquica para muchas estaciones y un servidor
VIII. Capa de Aplicación
Esta capa contiene os programas de usuario o aplicaciones. Los servicios que proveen
son muy variados y casi siempre dirigidos a un problema en particular. Cuando hacen uso
de la red, deben hacerlo a través de los servicios que presta la capa de presentación.
VIII.1. Conceptos Básicos
A continuación se revisan una serie de conceptos que deben estar claros antes de
entrar en materia:
Proceso:
Es el conjunto de código de programa en ejecución y los datos
asociados a él, esto es, de cada instancia de él en ejecución.
Hebra:
Es cada línea de ejecución paralela de un proceso, las cuales
comparten datos y/o código del programa con otras hebras de un
mismo proceso.
Tiempo de Tarea: Tiempo durante el cual el proceso está siendo ejecutado por
el procesador.
Tiempo de Interrupción: Tiempo durante el cual el proceso no está siendo
ejecutado por el procesador.
Comunicación de Procesos:
Forma de intercambiar información entre
procesos. Generalmente se usan dos técnicas: Paso de Mensajes (el
Sistema Operativo se encarga de la comunicación) y Memoria
Compartida (El S.O. no necesita hacer nada).
VIII.2. Aplicaciones Estándar más Comunes
VIII.2.1. Transferencia y Acceso Remoto de Archivos
Uno de los usos más comunes de las redes es el acceso a archivos en otras máquinas,
y la transferencia de ellos desde una máquina a otra. Lo anterior logra mediante dos tipos
de aplicaciones:
a) Transferencia de Archivos (ftp, http):
Consiste en la copia de archivos a través de la red, y es una de las formas más simples
de hacerlo. Consiste fundamentalmente en copiar el archivo de una máquina a la otra. Si el
archivo original se actualiza frecuentemente, o es compartido por varios usuarios, no se
realiza ningún tipo de control especial.
b) Acceso Remoto a Archivos (NFS, Novell):
Consisten en servidores virtuales de archivos, los que controlan la concurrencia de
usuarios sobre ellos. Los servidores de archivos se caracterizan por tres propiedades:
i) Estructura de los archivos:
ii) Atributos de los archivos:
dónde y de qué manera están almacenados;
nombre, propietario, operaciones permitidas,
fecha, etc.;
iii) Operaciones sobre archivos: abrir, leer, escribir, cerrar, etc.
El problema que surge en los servidores de archivos es el de la concurrencia, el cual
se solucione generalmente mediante el uso de tres soluciones:
i) Candado (protocolo con conexión):
existen candados compartidos (para
lectura) y candados exclusivos (para escritura). Así, a un usuario se le acepta un
candado exclusivo sólo si el archivo no tiene candados. Se usa generalmente para
el control de archivos compartidos dentro de una misma máquina;
ii) Transacciones (protocolo sin conexión): cada requerimiento al servidor es
atómico, por lo cual no se necesitan candados. Se usa generalmente en servidores
de archivos para varias máquinas;
iii) Versión más Reciente:
es una solución mixta que considera el crear una nueva
versión de cada archivo cuando se recibe una solicitud de escritura. Así, los
requerimientos de lectura que lleguen antes de finalizar la escritura de la nueva
versión son atendidos con la versión completa más reciente. Versiones anteriores
son eliminadas cuando ya exista una versión más nueva y nadie más las esté
utilizando.
Otra variedad de servidor de archivos posee múltiples copias de los archivos en
diferentes ubicaciones, para los siguientes fines:
*
*
*
*
Acceso muy Remoto: mejorar la velocidad de acceso desde lugares muy alejados;
Dividir Carga:
división de la carga de trabajo a través de varias máquinas;
Acceso Inactivo:
acceso a archivos cuando un servidor no está activo;
Más Fiabilidad:
múltiples copias en caso de daño o pérdida.
VIII.2.2. Correo Electrónico
El correo electrónico es una de las aplicaciones que mayor adeptos ha ganado con la
creación de las redes de computadores. Originalmente se trataba como transferencia de
archivos de texto, y actualmente contienen, mediante codificación MIME, texto con
formato, gráficos, sonidos, etc.
Los problemas que surgen en este tipo de aplicaciones son los siguientes:
i) Composición:
ii) Transferencia:
iii) Notificación:
iv) Conversión:
v) Formato:
vi) Disposición:
creación de la cabecera, mensaje, respuestas, etc.;
cómo llevar el mensaje hasta el receptor;
cómo saber si fue recibido;
convertir el mensaje a representación del receptor;
desplegar correctamente el mensaje;
qué hacer con los mensajes recibidos;
VIII.2.3. Terminales Virtuales
Las aplicaciones de terminales virtuales son tales que el servidor de terminal cree que
son terminales físicas. Es importante entonces que el servidor sepa qué tipo de terminal se
está emulando.
Además, la aplicación de terminal virtual debe imitar todas las características físicas
de las terminales, como son los retardos de respuesta, los formatos especiales de los
paquetes transferidos por la red, etc.
El programa más utilizado es telnet.
IX. Capa de Presentación
Los objetivos fundamentales de esta capa son:
 Codificación: Transferencia Eficiente:
 Seguridad: Encriptación de la Información:
 Conversión a Formatos Estándares:
IX.1. Teoría de la Información y Codificación de Fuentes
Para aprovechar mejor los canales de comunicación, es deseable que los datos
transferidos contenga la mayor cantidad información útil posible. La manera de hacer esto
es utilizar algoritmos de compresión de datos, que eliminan las redundancias de ellos,
optimizando la representación y por consiguiente disminuyendo la cantidad de datos a
transferir.
Las ventajas de comprimir los datos son:




Menor espacio de almacenamiento;
Menor carga de canales de transferencia;
Menor costo de comunicación;
Mayor seguridad;
Las desventajas de comprimir los datos son:




SW o HW más complicado;
Tiempo de CPU necesario;
Menor portabilidad;
menor fiabilidad;
Las técnicas utilizadas para la compresión de datos se clasifican en:





La sustitución de patrones frecuentes (“#A” en vez de “abdsodi”);
La sustitución de series de caracteres repetidos (“#6v7” en vez de “777777”);
Compresión de datos ordenados (“#1-6” en vez de “123456”);
Diferenciación;
Códigos de longitud variable (Huffmann, Extensión de Código, Adaptativos);
IX.1.1. Teoría de la información
La teoría actual de la información postula que:
Información:
Datos recibidos desde una fuente que esclarecen una duda en
el receptor;
Mensaje:
Manifestación física de los datos transferidos;
 La información consiste de datos enviados de una fuente a un receptor a través
de algún medio;
 Los datos constituyen información sólo cuando esclarecen una duda en el
receptor;
 La duda en el receptor implica la existencia de alternativas;
 Las alternativas están dadas por un conjunto de símbolos (alfabeto), el cual
existe tanto en la fuente como en el destino;
Así, la función del emisor es seleccionar un conjunto de símbolos del alfabeto y
enviarlos por un canal al receptor, pero estos datos sólo son información si dicen algo
nuevo al receptor.
Tenemos que:
 Un mensaje largo no tiene más información por ser largo;
 Mientras menor sea la información del mensaje, menos símbolos del alfabeto
se necesitan para representarla;
 Mientras menor sea la información más rápido se puede transmitir por un canal
de transferencia de datos;
 La medida de la información (intuitiva) es una medida del grado de libertad
que se tiene al elegir los símbolos del alfabeto en la fuente al enviar un
mensaje;
Por lo tanto, podemos decir que la medida de la información comprende
probabilidades de elección de símbolos de un alfabeto. Mientras menos probable sea que se
elija un símbolo, más información contiene este símbolo.
Veamos:
Sea  un alfabeto.
Sean A , B   dos símbolos del alfabeto.
Sea P A su probabilidad de que se elija para ser transmitido, con 0  PA  1 .
Sea I A  f  P A  la información mutua del símbolo A donde f es desconocido.
Intuitivamente sabemos que
IA  0
y lim f  P A   0
PA  1
Además,
PA  PB  f  PA   f  PB 
Cuando se recibe A se reciben unidades de información, por lo que si
además se recibe B se recibe en total, si C = AB
IC  I A  IB
Si A y B son estadísticamente independientes, tenemos
PC  P A  PB
y luego
I C  f  P A  PB 
Igualando ambas ecuaciones tenemos
f  P A   f  PB   f  P A  PB 
De aquí deducimos que
 1 

I A  lo g b 
 PA 
La ecuación anterior se dice que es la definición de la información mutua (relativa al
resto del alfabeto) del símbolo A. Este valor es diferente para cada base b, y según el valor
de b se tienen diversas unidades de información: si b = 2 la unidad es el bit.
Para el caso de transferencias binarias, ={0,1}, se tiene que en el mejor de los casos,
esto es, cuando la probabilidad de recibir cualquiera de los dos binits (bits , tradicionales)
es igual a ½, la cantidad de información que lleva cada uno es 1 bit.
IX.1.2. Entropía: Información Media
Consideremos un alfabeto de m caracteres.
Cuando se recibe el caracter j, se tiene
I
j
 1 

 lo g 

 Pj 
[bits]
Consideremos un mensaje muy largo, con N  0 su longitud.
Tenemos que el símbolo j aparece N  P j veces en el mensaje.
La información total en el mensaje es
m
IT 
 N P
Ij
j
[bits]
j1
Se define la entropía del alfabeto como
H 
IT
N
m


Pj  I
j
j 1
La entropía de un alfabeto da una medida de cuán bueno es para representar
información. Mientras mayor sea la entropía de un alfabeto, menos símbolos se necesitan
para representar la misma información.
La entropía máxima se da cuando la probabilidad de que aparezcan es igual, y si este
es el caso se tiene:
H m a x  lo g  m 
IX.1.3. Codificación de la Fuente
Utilizaremos la teoría mostrada para codificar los símbolos de un alfabeto fuente de
manera de maximizar la entropía del alfabeto transferido. El reto es codificar un alfabeto
original en otro (usualmente el binario) de la mejor manera posible, para minimizar el largo
de los mensajes enviados al receptor.
En los mensajes a transmitir se tiene que son de largo:
m
L 

Pi  I i
i
que es el largo necesario para transmitir m símbolos dados.
Luego se tiene que debemos minimizar L, sabiendo que (teorema de codificación de
fuentes):
H  p  L  H  p  1
Lo que se hace es construir códigos de longitud variable adaptados a la fuente, en el
sentido de saber de antemano las probabilidades de aparición de los símbolos.
IX.1.4. Códigos
Sean S el alfabeto fuente y X el alfabeto código. La codificación establece
una correspondencia de todas las secuencias de símbolos posibles de S en
secuencias de símbolos del alfabeto código X.
Los códigos se clasifican en :
No Bloque
Singular
Códigos
No Unívoco
Bloque
No Singular
No Instantáneo
Unívoco
Instantáneo
Códigos Bloque:
Asignan a cada símbolo de S una secuencia fija de
símbolos de X (pudiera no ser única);
Códigos No Singulares: Código bloque con todas sus palabras distintas;
Códigos Unívocos:
Su extensión de orden n es no singular para todo valor
de n, esto es, existe una única forma de descodificar una secuencia
de símbolos de X;
Códigos Instantáneos: Se puede descodificar una secuencia incompleta de
símbolos de X sin necesidad de ir conociendo los símbolos que
faltan;
IX.1.5. Análisis de Códigos Unívocos
Los códigos unívocos deben satisfacer la siguiente condición (Kraft-McMillan):
¿¿¿¿¿??????
El siguiente algoritmo permite determinar si un código es o no unívoco:
1. Sea C0 el conjunto de secuencias de X asociadas a cada símbolo de A.
2. Sea i = 0,
3. Verifíquese cada elemento de C0 en búsqueda de elementos que sean
prefijos de los elementos de Ci, Sea Ci+1 el conjunto de sufijos de esos
elementos (todos con todos).
4. Verifíquese cada elemento de Ci en búsqueda de elementos que sean
prefijos de los elementos de C0, Agrégese a Ci+1 el conjunto de sufijos de
esos elementos (todos con todos).
5. Si Ci+1 =  entonces es código unívoco
6. Si Ci+1 = Cj , j  i entonces es código unívoco
7. Si Ci+1  C0   entonces no es código unívoco
8. i = i + 1;
9. Volver a 3.
Ejemplo:
Sea S = { A, B, C, D, E, F, G }
Sea X = { 0, 1, 2, 3, 4 }
Sea la codificación como se muestra en la tabla:
S
A
B
C
D
E
F
G
C0
0
2
03
011
103
341
11234
C1
3
11
C2
41
234
C3
34
C4
1
Como 03 está en C0, entonces no es código unívoco.
C5
03
1234
IX.1.6. Codificación de Huffmann (Instantáneo y Óptimo)
El método de codificación de HuffMann genera códigos óptimos e instantáneos para
un alfabeto de fuente con probabilidades conocidas. Veamos:
1.
2.
3.
4.
5.
6.
7.
8.
Sea S alfabeto fuente de m símbolos
Sea X alfabeto código de n símbolos
Ordenar alfabeto de fuente según probabilidades, de mayor a menor
Hacer q = ((m-1) mod (n+1)) + 1
Sumar las menores q probabilidades, y reordenar la lista
Hacer q = n
Mientras queden más de n elementos en la tabla volver a 5.
Asignar código hacia atrás desde la última columna de la tabla
Ejemplo:
Sea S = { A, B, C, D, E, F, G, H, I }
Sea X = { 0, 1, 2, 3 }
Sean las probabilidades de los símbolos de S como se muestran en la tabla:
S
A
Pi
0.24
código
1
S
A
Pi
0.24
código
1
B
C
D
E
F
G
H
I
0.21
0.17
0.13
0.10
0.07
0.04
0.03
0.01
2
3
00
01
02
030
031
032
B
C
D
E
F
GHI
0.21
0.17
0.13
0.10
0.07
0.07
2
3
00
01
02
03
S
DEFGH
I
A
B
C
Pi
0.38
código
0
0.24
0.21
0.17
1
2
3
En la tercera columna tenemos el código instantáneo asociado a cada símbolo de la
fuente.
Existen algoritmos que, al momento de comprimir una secuencia de datos, la
analizan, generan el código Huffman óptimo para la secuencia (analizando la cantidad de
veces que aparece cada símbolo), y luego almacenan el código junto con los datos
comprimidos. Estos son los códigos conocidos como adaptativos.
A continuación se muestran los radios de compresión para dos de los más populares
métodos de codificación:
Fuente
Texto (Inglés)
Código de
Programa
HuffMann Adaptativo
1.6
1.7
LZW (Lempel / Ziv / Welch )
1.8
2.3
Código Binario
1.2
1.5
IX.1.7. Otros Métodos
Extensión de Código:
En este método se codifican sólo los caracteres más
frecuentes, y para los menos (las excepciones) se utilizan
secuencias de escape simples (“ddd” -> “#d#d#d”) o con retorno
(“ddd” -> “#ddd\”). Ejemplos de aplicación son el alfabeto CCITT
n2 (Baudot) y el repertorio de instrucciones de los procesadores
Z80 e Intel8085.
Series Repetidas:
Consiste en representar series de símbolos repetidos
como un par (símbolo, cantidad). Es muy útil en la compresión de
dibujos de pocos colores (ej.: transmisión de fax por vía telefónica).
IX.2. Criptografía, Seguridad y Protección de los Datos
En una red, la seguridad de la información transmitida es generalmente un factor de
importancia (transacciones comerciales, por ejemplo). Por ello, desde siempre ha existido la
necesidad de codificar la información de alguna manera, para hacer más difícil su
utilización por parte de intrusos en la red.
IX.2.1. Criptología
La criptología el arte dedicado al desarrollo de crear o desbaratar métodos de
ocultamiento de la información, utilizados cuando no se desea que algún intruso conozca el
contenido del mensaje enviado a través de algún medio. La criptología se divide en os
ramas, la criptografía y el criptoanálisis, que son el arte de crear métodos de encriptación
y el de desbaratarlos, respectivamente.
En general, como es difícil cambiar de un método de cifrado a otro, se utilizan
métodos parametrizados, es decir, los cuales se pueden modificar fácilmente mediante el
uso de una clave. Así, no es necesario que el método de cifrado sea secreto, sino que sólo es
necesario que la clave lo sea. Otra ventaja es que es mucho más fácil cambiar de una clave
a otra que de un método a otro, ya que la creación de métodos nuevos no es nada fácil.
Consideremos un texto plano a enviar P, un método de encriptación E (que utiliza
una clave k), y denotemos como C el texto cifrado, esto es, C = Ek ( P ). Además,
consideremos un método de descifrado D, teniéndose entonces P = Dk ( C ). Entonces
podemos representar el problema de la siguiente manera:
Intruso
P
Emisor
Receptor
Método de
Cifrado
Método de
Descifrado
C = Ek ( P )
P = Dk ( C )
Los intrusos se clasifican en dos tipos: los que solamente escuchan la información
que es transmitida (intrusos pasivos), y los que además modifican esta información
(intrusos activos):
Intrusos Pasivos
Intrusos Activos
IX.2.2. Criptografía
Los métodos de encriptación se clasifican en tres grandes grupos:
Sustitución:
Códigos:
son aquellos en que una unidad (letra o grupo de letras) se
substituye por otra unidad;
utilizan la teoría vista en el subcapítulo anterior;
Transposición: no preservan el orden de los símbolos de los mensajes. Para
ello se escribe el texto en una matriz, la que luego se transpone.
Los diferentes métodos de cifrado se pueden combinar, resultando métodos muy
complejos de cifrado. Variantes de los métodos anteriores se consiguen utilizando claves
muy grandes o introduciendo basura en el texto original para hacer más difícil su
descifrado.
IX.2.3. Criptoanálisis
El criptoanálisis consiste en crear un algoritmo D para descifrar mensajes cifrados.
Generalmente se trata de encontrar primero E, ya que es más fácil y soluciona el problema.
Este problema tiene tres variantes típicas, en cada una de las cuales se conoce de antemano:
Sólo C:
cuando sólo se tiene un texto cifrado, se debe suponer un método
de cifrado y se utilizan las probabilidades de aparición de los
símbolos para encontrar la clave utilizada;
P y C = Ek ( P ): cuando se conocen ambos mensajes, es mucho más fácil
encontrar el método de codificación, pero sigue siendo difícil
encontrar la clave;
C y posibilidad de utilizar E: cuando el criptoanalista tiene la posibilidad de
utilizar el método de cifrado, le es aún más fácil encontrar la clave
del mensaje.
Cabe destacar que generalmente el método de cifrado es público, y sólo la clave es
desconocida. Esto ha llevado a la creación de métodos muy complejos, que hacen casi
imposible el encontrar la clave original, aún cuando el criptoanalista tenga todas las
facultades mencionadas
IX.2.4. Problemas Típicos de Seguridad
a) Protección de Claves
Otro problema común en el tema de las claves es el de hacer que ellas no sean
conocidas nunca por una sola persona, para evitar abusos de autoridad, por ejemplo. Los
polinomios de Shamir son una técnica muy utilizada para esto:
Si se desea que de un gran conjunto de personas se necesiten k de ellas para obtener
la clave, se utiliza un polinomio de grado (k-1) de la forma:
p ( x )  a 0  a 1  x  a 2  x   a k  1  x
2
k 1
donde a0 es la clave del sistema. A cada persona se le da a conocer un punto de la
curva del polinomio, esto es, un par único ( x , p ( x ) ). Así, reuniéndose los pares de k
personas, se puede reconstruir la curva, esto es, calcular los coeficientes del polinomio,
obteniéndose la clave a0.
b) Distribución de Claves
Un problema grave en criptografía de mensajes en redes es el de la distribución de las
claves: para que dos entidades se comunique utilizando algún método de encriptación, es
necesario que ambos utilizan la misma clave. La pregunta es ¿cómo hacer para utilizar una
clave nueva, sin necesidad de ponerse de acuerdo mediante un medio que no sea la red?
Una solución ingeniosa es la de los Puzzles de Merkle, que consiste en más o menos
lo siguiente:
1) Inicialmente se envían n acertijos pares ( C = E ( P ) , k ) , en los cuales
todos los P poseen alguna característica similar (indicada explícitamente).
Además se indica qué método de encriptación E se utilizó en todos los casos;
2) El receptor selecciona uno de los acertijos y lo resuelve por fuerza bruta hasta
que encuentre un texto P que cumple con la característica indicada;
3) El receptor envía de regreso el texto P del acertijo seleccionado (sin cifrar);
4) El emisor selecciona la clave k asociada al acertijo que contiene C = E ( P );
5) Ambos comienzan a utilizar la clave k asociada al acertijo elegido (no la
clave que lo resolvió).
Un intruso escucha toda la conversación no sabe cuál fue el acertijo elegido, y para
saber qué clave será utilizada deberá resolver a fuerza bruta en promedio ½n acertijos. Si n
es un número grande, digamos 20.000, la tarea puede tomar varios años. Si este método se
utiliza con una frecuencia de digamos un mes, la tarea es prácticamente imposible.
Este método posee dos grandes desventajas: requiere de una cantidad bastante grande
de cálculo para el punto 2), y un uso de red grande en el punto 1).
c) Criptografía con Claves Públicas
Diffie y Hellmann publicaron un artículo que cambió la forma de pensar de los
criptógrafos y criptoanalistas, ya que anteriormente se daba por sentado que las claves
debían ser secretas. Esto era así debido a que si se conoce el algoritmo de cifrado E, la
especificación del algoritmo de descifrado D era trivial de obtener.
Así, proponen tres requisitos para sistemas de criptografía seguros:
 D ( E ( P ) ) = P;
 Debe ser muy difícil deducir D a partir de E;
 E no puede descifrarse mediante un ataque basado en la aplicación de él sobre
textos seleccionados.
Bajo estas condiciones no existe ninguna razón por la cual se deba utilizar una clave
secreta. Veamos por qué:
1) Quién desee recibir mensajes cifrados selecciona algoritmos E y D que
cumplan las características anteriores;
2) El algoritmo E se hace público, de manera que cualquier persona que desee
enviar algo pueda utilizarlo;
3) Cuando se reciba un mensaje cifrado E ( P ), se le aplica el algoritmo D,
obteniéndose el mensaje original. Como nadie más conoce D, nadie más podrá
descifrar el mensaje.
Así, el problema consiste en encontrar algoritmos que satisfagan los tres requisitos
planteados. Algoritmos de este tipo se basan generalmente en la teoría de números, ya que
se utilizan números primos muy grandes, y claves del orden de 200 dígitos. La seguridad
del sistema se basa en que para factorizar números de tal magnitud se requieren más de 4
billones de años, aún si se utilizan los mejores algoritmos sobre los mejores computadores
actuales.
d) Autentificación y Firmas Digitales
Este problema consiste en el problema de demostrar la identidad de un usuario en la
red. El fin último de esto es poder realizar transacciones comerciales a través de la red, por
ejemplo. Los algoritmos que se implementen para ello deben cumplir dos características:
 El receptor debe poder verificar la identidad del transmisor;
 El transmisor no debe poder negar el mensaje luego de enviarlo.
El primer problema se descompone en dos, ya que se debe poder autentificar al
usuario no sólo al iniciar una sesión, sino que debe ser posible identificarlo como el emisor
de cada mensaje enviado.
Al Inicio de Sesión:
Una solución al problema es hacer uso de una clave pública b1 (conocida por el
receptor) en conjunto con una privada b2 (conocida por el usuario). Al iniciar una sesión, el
receptor escoge un mensaje aleatorio, lo cifra utilizando el algoritmo Eb1 (público), y envía
al usuario. El usuario debe entonces regresarlo descifrado mediante el algoritmo Db2
(privado). Note que Db2 ( Eb1 ( P ) ) = P.
En Cada Mensaje:
Para autentificar al usuario en cada mensaje enviado se hace que cada mensaje
contenga lo siguiente: una contraseña secreta, un número de secuencia, hora y fecha de
transmisión, el texto en clave utilizando la clave secreta enviada y un código de
redundancia de todo el mensaje. El conjunto de esta información hace prácticamente
imposible que un intruso pudiera reproducir los mensajes de manera exitosa.
El segundo problema, el de evitar que se niegue el envío de algún mensaje, se
resuelve utilizando dos pares de claves públicas y secretas, y la condición que:
D ( E ( P ) ) = E ( D ( P ) ) = P.
Así, el proceso de envío del mensaje es como sigue:
Da(P)
P
Clave
Secreta
Emisor
Eb(Da (P))
Clave
Pública
Receptor
Da(P)
Clave
Secreta
Receptor
Emisor
Clave
Pública
Emisor
P
Receptor
El receptor puede demostrar que fue el usuario quién envió el mensaje enseñando a
un tercero los mensajes Da(P) y P. Sólo el emisor pudo enviar el mensaje, ya que sólo él
conoce su clave secreta.
El problema potencial es que el emisor puede reclamar que su clave le fue robada de
alguna manera.
IX.3. Representación en Formatos de Red
La capa de presentación también de be solucionar el problema de la representación de
datos en formatos estándares, ya que las diferentes arquitecturas de computadores utilizan
diferentes formatos de representación de datos.
El estándar OSI propone un formato estándar de red (ASN.1), que permite especificar
tipos de datos abstractos. ASN.1 posee tipos primitivos muy simples (enteros, booleanos,
cadena de bits y cadena de bytes), y permite construir cualquier tipo de dato
independientemente de su representación.
Cuando se envía información a través de la red con ASN-1, se debe traducir la
información a ASN.1 y enviarla junto a la descripción de su estructura, de manera que el
receptor pueda reconstruir la información.
X. Capa de Sesión
Esta capa se encuentra fuertemente mezclada con la capa de aplicación, y considera
en general las siguientes funciones:






X.1.
Intercambio de Datos
Administración del Diálogo
Sincronización de Procesos
Control de Actividades
Reporte de Excepciones
Control de Conexión
Servicios del Nivel de Sesión
Básicamente, esta capa provee servicios comunes de red a los programadores de
aplicaciones que la utilizan, de manera que ellos no deban volver a programar cada vez los
mismos algoritmos.
X.2.
Interconexión de Procesos
La capa de sesión provee de conexiones entre procesos, comúnmente llamadas
sesiones. Estas sesiones permiten establecer, utilizar y luego terminar una conexión, lo cual
resulta muy útil para una variedad de aplicaciones. El énfasis está en que se proveen
algoritmos de conexión comunes, orientados a la aplicación más que al uso de la red (que
es el caso de la capa de transporte).
Como es de esperar, esta capa provee de primitivas para el intercambio de datos entre
la aplicaciones conectadas.
X.3.
Sincronización de Procesos
Uno de los usos más comunes de la capa de sesión es la sincronización de procesos,
ya que ésta provee los mecanismos para llevarla a cabo de manera transparente al
programador. Así, éste no debe preocuparse por problemas de bloqueo de procesos
sincronizados, por ejemplo.
X.4.
Administración de Actividades
Este servicio consiste en la capacidad de administrar transacciones independientes a
través de la red. Depende del programador determinar qué es una actividad, pero sí deben
ser independientes una de la otra.
Así, la capa de sesión puede optimizar el uso de la red, pudiendo controlar el flujo de
datos de cada actividad de manera independiente.
X.5.
Notificación de Excepciones
Este servicio consiste en que los procesos pueden notificar a su entidad par de
excepciones ocurridas en cualquier momento de la sesión (generalmente errores del
protocolo entre los procesos).
X.6.
Llamada a Procedimiento Remoto (RPC)
Las llamadas a procedimientos remotos son una implementación particular de un
servicio de sesión, que resuelven problemas de transferencia de datos y de sincronización
de procesos. El paradigma en que se basan en el modelo cliente/servidor, y lo que se
pretende es hacer transparente al programador una llamada a un procedimiento o función de
un proceso en otro host de la red.
La idea es que existen dos procesos, presumiblemente en hosts diferentes, uno de los
cuales hace de cliente que solicita algún servicio al otro, que hace de servidor. Esto se
implementa de manera tal que el programador sólo debe declarar un procedimiento como
remoto, especificar el host en que se encuentra, y luego puede simplemente llamar al
procedimiento. La implementación del servidor es similar.
A continuación se muestra cómo funciona una llamada a procedimiento remoto:
Máquina del Cliente
Cliente
10
Máquina del Servidor
Stub
Cliente
1
2
6
Stub
Servidor
9
7
Entidad de
Transporte
Servidor
5
4
Entidad de
Transporte
8
3
Los algoritmos de stub de cliente y servidor tiene como función el recolectar toda la
información a enviar de un proceso al otro y utilizar los servicios de la capa de transporte
para llevar a cabo la comunicación. Esta recolección debe ser muy cuidadosa (cuando se
trata de un puntero, por ejemplo), por lo que el hecho que la capa de sesión provea este
servicio facilita mucho el trabajo al programador.
A pesar de todo, los algoritmos del servidor deben ser construidos con mucho
cuidado, ya que no se puede hacer una llamada pasando parámetros por referencia con
punteros, por ejemplo.
Una característica notable de las RPC es que aseguran la exclusión mutua de los
procesos, ya que nunca estarán simultáneamente ejecutándose el cliente y el servidor (salvo
si se programa de manera explícita).
El problema más común que puede surgir debido al uso de RPC es que el servidor
deje de responder, produciendo que el cliente no siga nunca su ejecución.
XI. Capa de Transporte
Esta capa se considera el corazón de la jerarquía de protocolos, ya que tiene como
objetivos los siguientes:
 Eficiencia en Transporte de Datos;
 Asegurar Confiabilidad;
 Uso Económico del Recurso de Red;
XI.1. Calidad del Servicio
Un objetivo secundario de la capa de transporte es la mejora de la calidad del servicio
proveído a los usuarios de ella, la se puede medir a través de los siguientes parámetros:
Retardo en Establecer la Conexión:
Tiempo entre solicitud de conexión y
confirmación de conexión;
Probabilidad de Fallo de Establecimiento de Conexión:
Probabilidad que
una conexión no pueda efectuarse (por congestión, falta de
capacidad de las IMP’s, etc.);
Retardo en la Liberación de la Conexión:
Tiempo entre
desconexión y confirmación de desconexión;
solicitud
Probabilidad de Fallo de Liberación de Conexión:
Probabilidad
desconexión no se lleve a cabo en un tiempo aceptable;
Caudal:
que
de
una
Cantidad de información por segundo, que puede transferir la red.
Se diferencia entre caudal nominal (que es capaz de llevar la red) y
caudal efectivo (que es posible de utilizar efectivamente, por
capacidad de IMP’s y hosts, por ej.);
Retardo de Tráfico:
Tiempo desde que se envía un mensaje hasta que se
recibe este mensaje;
Tasa de Error:
Fracción de mensajes perdidos o dañados. Debiera ser cero,
ya que la capa de transporte debiera corregir estos errores que se
producen en la capa de red);
Tasa de Falla de Transferencia: Fracción de veces en que los tres puntos
anteriores no fueron aceptables (estuvieron bajo un rango mínimo
aceptable);
Protección: Manera en que la capa de transporte evita que intrusos intercepten
(lean y/o alteren) mensajes;
Prioridad:
Manera en que la capa de transporte maneja prioridades de
conexiones;
Resistencia: Probabilidad que la misma capa de transporte sea la que termine
una conexión (debido a problemas internos, congestión o
prioridades, por ej.).
XI.2. Servicios de la Capa de Transporte
Los servicios que provee la capa de transporte son fundamentalmente los siguientes:
 Primitivas de Transporte;
 Administración de Conexiones:
Direccionamiento;
Establecimiento de la Conexión;
Liberación de la Conexión;
 Control de Flujo;
 Multiplexación;
 Recuperación de Caídas;
XI.3. Primitivas de Transporte
Las primitivas proveídas por la capa de transporte son las siguientes:
Orientadas a Conexión
T-CONNECT.request ( callee, caller, exp, qos, data )
T-CONNECT.indication ( callee, caller, exp, qos, data )
T-CONNECT.response ( qos, respond, exp, data )
T-CONNECT.confirm ( qos, respond, exp, data )
T-DISCONNECT.request ( data )
T-DISCONNECT.indication ( reason, data )
T-DATA.request ( data )
T-DATA.indication ( data )
T-EXPEDITED-DATA.request ( data )
T-EXPEDITED-DATA.indication ( data )
Sin Conexión
T-UNITDATA.request ( callee, caller, qos, data )
T-UNITDATA.indication ( callee, caller, qos, data )
donde:
callee
caller
exp
qos
data
reason
- dirección de quien es llamado
- dirección de quien llama
- indicación de datos acelerados
- calidad de servicio deseada
- 0 o más datos transmitidos
- razón por la cual sucedió
Las primitivas se relacionan mediante el siguiente autómata finito, el cual muestra
cuáles primitivas producen cuáles transiciones de estados. Los estados son los siguientes:
Inactivo: No hay conexión establecida, ni en proceso de establecerse o liberarse;
Conexión Entrante: Se ha recibido un T-CONNECT.indication, pero aún no se
ha aceptado ni rechazado la conexión;
Conexión Saliente: Se ha hecho un T-CONNECT.request, pero aún no se ha
recibido respuesta alguna;
Conexión Establecida: Existe una conexión establecida.
Inactivo
T-DISCONNECT.request
T-DISCONNECT.indication
T-DISCONNECT.request
T-DISCONNECT.indication
T-CONNECT.request
Conexión
Saliente
T-CONNECT.indication
T-DISCONNECT.request
T-DISCONNECT.indication
T-CONNECT.confirm
Conexión
Entrante
T-CONNECT.response
Conexión
Establecid
a
T-DATA.request
T-DATA.indication
T-EXPEDITED-DATA.request
T-EXPEDITED-DATA.indication
Las relaciones posibles entre las primitivas se pueden ver en los siguientes diagramas.
En ellos aparece representada la capa de transporte como un espacio entre dos hosts, uno a
la izquierda y otro a la derecha. El tiempo se representa hacia abajo.
T-CONNECT.
request
T-CONNECT.
request
T-CONNECT.
indication
T-CONNECT.
indication
T-CONNECT.
response
T-DISCONNECT.
request
T-CONNECT.
confirm
T-DISCONNECT.
indication
Conexión Normal
Conexión Rechazada por
el Proceso Llamado
T-CONNECT.
request
T-DISCONNECT.
request
T-DISCONNECT.
indication
T-DISCONNECT.
indication
Conexión Rechazada
por Capa de Transporte
T-DISCONNECT.
request
Desconexión Normal
T-DISCONNECT.
request
T-DISCONNECT.
indication
Desconexión Simultánea
T-DATA.
request
T-DISCONNECT.
indication
Desconexión iniciada
por Capa de Transporte
T-EXPEDITED-DATA.
request
T-DATA.
indication
Transferencia de Datos
Normal
T-EXPEDITED-DATA.
indication
Transferencia De Datos
Acelerados Normal
XI.4. Administración de Conexión
Cuando se desea construir la capa de transporte, se debe poner atención a diversos
problemas que aparecen debido a la naturaleza de las redes de computadores y a los
problemas que no maneja la capa de red.
A continuación se presentan los más importantes de ellos.
XI.4.1. Direccionamiento
 Cuando un proceso desea establecer una conexión, ¿cómo se
determina con cuál proceso desea establecer esta conexión?
La respuesta es la utilización de direccionamiento de procesos. La capa de red provee
direccionamiento de hosts, pero es necesario además direccionar los procesos dentro de
cada host. Para ello se define una dirección (TSAP) de la forma:
<galaxia><estrella><planeta><país><ciudad><host><proceso>
Así, cada proceso se une a una TSAP fija, la cual puede utilizar para requerir
conexiones o recibir requerimientos de conexión.
Debido a que la mayoría de los procesos tienen vida corta, y a que la cantidad de
TSAP’s es limitada, no es posible asociar cada proceso a una TSAP fija realmente,
asociando una TSAP a un proceso sólo cuando éste lo requiera, y liberándola cuando ya no
la utilice.
 ¿Cómo encontrar un proceso si no se conoce su TSAP?
Se pueden utilizar dos soluciones:
Servidor de Procesos:
Se trata de un proceso con TSAP fija y bien conocida,
el cual es capaz de crear procesos a medida que éstos sean
requeridos desde la red. Así, éste servidor de procesos puede
indicar al que requiere la conexión cuál es la TSAP del proceso
requerido ;
Base de Datos de Procesos:
Se trata de un proceso con TSAO fija y bien
conocida, el cual lleva un registro de los procesos del sistema y sus
TSAP asociadas. Es responsabilidad de cada proceso el inscribirse
y desincribirse de esta base de datos.
XI.4.2. Pérdida de Mensajes
 La Capa de Red puede perder mensajes: ¿Cómo manejar esta
situación?
La solución es enviar nuevamente un mensaje si no se ha recibido confirmación de la
llegada de él al destino, luego de cierto tiempo preestablecido. Esto produce la duplicación
de mensajes en la red, ya que ambos pueden llegar íntegros al destino.
Por esto, se deben usar números de secuencia asociados a los mensajes, los que
pueden ser utilizados para verificar si un mensaje entrante es un duplicado o no. Esta
solución sólo funciona para las primitivas de transferencia de datos, pero no para las de
establecimiento o liberación de conexión, ya que si se recibe duplicada una solicitud de
conexión, por ej., el que los números de secuencia sean los mismos no significa que sean
duplicados (pueden ser solicitudes de procesos diferentes en la misma máquina y que
utilizan el mismo TSAP, uno después de otro, por ej.).
XI.4.3. Establecimiento de la Conexión
Problema: duplicación de T-CONNECT.indication:
T-CONNECT.request
T-CONNECT.indication
T-CONNECT.indication
(duplicado)
El duplicado se interpretaría como otra solicitud de conexión, por lo cual debe existir
un mecanismo de control adicional. La solución es utilizar comunicación ida-vuelta-ida
para validar la información recibida. Esto se hace enviando confirmaciones de recepción de
confirmaciones de vuelta al receptor. Veamos:
T-CONNECT.request
(seq=A0)
T-CONNECT.indication
(seq=A0)
T-CONNECT.response
(seq=B0, ack=A0)
(Se recibe A0, se deduce que
receptos recibió C.request)
T-CONNECT.confirm
(seq=B0, ack=A0)
T-DATA.request
(seq=A1, ack=B0)
T-DATA.indication
(seq=A1, ack=B0)
(Se recibe B0, se deduce que
receptos recibió C.confirm)
Veamos cómo se manejan los casos de duplicados de requerimientos de conexión o
de datos. Note que se puede deducir qué ocurre realmente a partir de los ack recibidos:
T-CONNECT.request
(seq=A0)
T-CONNECT.indication
(seq=A0)
T-CONNECT.response
(seq=B0, ack=A0)
(Se recibe A0, se deduce que
receptos recibió C.request)
T-CONNECT.confirm
(seq=B0, ack=A0)
T-DATA.request
(seq=A1, ack=B0)
(Se recibe A0 otra vez, se
deduce que es duplicado)
T-CONNECT.confirm
(seq=C0, ack=A0)
T-REJ.request
(ack=A0)
T-CONNECT.indication
(seq=A0)
T-CONNECT.response
(seq=C0, ack=A0)
(Se recibe A0 otra vez, no se
sabe que es duplicado)
T-DATA.indication
(seq=A1, ack=B0)
(Se recibe B0, se deduce que
receptos recibió C.confirm)
T-DATA.indication
(seq=A1, ack=B0)
(Se recibe B0 otra vez, se
deduce que es duplicado)
T-REJ.indication
(ack=A0)
(Se recibe REJ A0, se deduce que
se termina conexión duplicada)
XI.4.4. Liberación de la Conexión
Problema: pérdida de T-DISCONNECT.confirm:
T-CONNECT.request
T-CONNECT.indication
T-CONNECT.confirm
Si se pierde T-DISCONNECT.confirm, el emisor nunca sabe que el receptor terminó
la conexión, por lo que intentará nuevamente terminar la conexión. Pero el receptor ya no
existe, y pueden surgir graves complicaciones (un nuevo proceso puede estar esperando
mensajes en el mismo puerto, por ej.).
El problema anterior se puede evitar con la utilización de temporizadores, esto es,
relojes de cuenta regresiva, que se reinicializa cada vez que se envía un paquete. Los
tiempos deben ser suficientemente grandes para permitir que el paquete enviado llegue al
destino, y que se reciba el reconocimiento de la recepción (acknowledge).
A continuación se muestran situaciones de desconexión con temporizador:
T-DISCONNECT.request
(seq=A0)
T-DISCONNECT.indication
(seq=A0)
T-DISCONNECT.response
(seq=B0, ack=A0)
(Se recibe A0, se deduce que T-DISCONNECT.confirm
(seq=B0, ack=A0)
receptos recibió D.request)
T-DATA.request
(seq=A1, ack=B0)
(Se elimina Conexión)
T-DATA.indication
(seq=A1, ack=B0)
(Se recibe B0, se deduce que
receptos recibió D.response)
(Se elimina Conexión)
Situación Normal
T-DISCONNECT.request
(seq=A0)
T-DISCONNECT.indication
(seq=A0)
T-DISCONNECT.response
(seq=B0, ack=A0)
(Se inicia temp.)
(Se recibe A0, se deduce que T-DISCONNECT.confirm
receptos recibió D.request)
(seq=B0, ack=A0)
T-DATA.request
(seq=A1, ack=B0)
(Se elimina Conexión)
(fin temp.)
(Se elimina Conexión)
Perdida de Confirmación
(Se inicia temp.) T-DISCONNECT.request
(seq=A0)
T-DISCONNECT.indication
(seq=A0)
T-DISCONNECT.response
(seq=B0, ack=A0)
(fin temp.) T-DISCONNECT.request
(seq=A1)
T-DISCONNECT.indication
(seq=A1)
T-DISCONNECT.response
(seq=B1, ack=A1)
(Se recibe A0, se deduce que T-DISCONNECT.confirm
receptos recibió D.request)
(seq=B1, ack=A1)
T-DATA.request
(seq=A2, ack=B1)
(Se elimina Conexión)
T-DATA.indication
(seq=A2, ack=B1)
(Se recibe B0, se deduce que
receptos recibió D.response)
(Se elimina Conexión)
Pérdida de T-DISCONNECT-confirm
(Se inicia temp.) T-DISCONNECT.request
(seq=A0)
T-DISCONNECT.indication
(seq=A0)
T-DISCONNECT.response
(seq=B0, ack=A0)
(Se inicia temp.)
(fin temp.) T-DISCONNECT.request
(Se inicia temp.)
(seq=A0)
(fin temp.)
(Se elimina Conexión)
(n intentos)
(Se elimina Conexión)
Pérdida de Todo
XI.5. Control de Flujo
 ¿Qué hacer cuando el emisor es más rápido que el receptor?
Se implementan variados sistemas de retroalimentación para manejar esta situación,
de modo que el emisor sólo puede enviar paquetes cuando el receptor le indique, explícita o
implícitamente, que puede hacerlo.
XI.6. Multiplexación
La multiplexación ascendente permite que varios usuarios utilicen la misma conexión
de nivel de red para usar la red, aprovechándose así con mayor eficiencia el ancho de banda
de las conexiones de red.
La multiplexación descendente en la capa de transporte permite que cuando un
usuario desea utilizar una conexión con ancho de banda mayor que lo que es capaz una
conexión de nivel de red, se utilicen varias de ellas paralelamente.
XI.7. Recuperación de Caídas
La capa de transporte es responsable de la recuperación ante caídas de la capa de red.
Así, cuando esta última emite un N-RESET, la capa de transporte deberá comenzar algún
mecanismo para establecer qué paquetes fueron recibidos y cuales no. Por ejemplo, el
emisor puede preguntar al receptor por los paquetes enviados de los que aún no se recibe
asentimiento, pudiendo entonces el receptor indicar cuáles faltan por llegar.
La recuperación ante caídas de las máquinas es más delicada, debido a que el
asentimiento sólo significa que se ha recibido el paquete, y no que se ha procesado con
éxito la información contenida. Por lo tanto, serán las capa superiores las encargadas de
enviar asentimientos de proceso, es decir, de indicar al emisor que se ha procesado con
éxito la información contenida en el paquete.
XI.8. Los Paquetes TCP
El Encabezado de los paquetes (TPDU) en TCP tienen la siguiente estructura:
0
15 16
31
Puerto Fuente
Puerto Destino
(16 bits)
(16 bits)
Número de Secuencia TPDU Enviada
(32 bits)
Número de Secuencia Asentimiento Recibido
(32 bits)
URG, ACK, EOM, RST,
SYN, FIN (6 bits)
Largo Enc.
(6 bits)
Ventana
(16 bits)
Código Redundancia
Puntero Acelerado
(16 bits)
(16 bits)
Opciones
(0 o mas palabras de 32 bits)
 Puerto Fuente: Identificación del puerto TSAP de origen del paquete;
 Puerto Destino: Identificación del puerto TSAP de destino del paquete;
 Número de Secuencia: Número de secuencia del paquete que se envía con el
encabezado actual;
 Número Sec. Asentimiento:
Número de secuencia para asentimiento del
último paquete recibido;
 Largo Encabezado:
Largo del encabezado completo. Es necesario debido al
largo variable de las opciones;
 URG: Activo si se utiliza el Puntero Acelerado;
 ACK: Activo si se utiliza el Número de Sec. Asentimiento;
 EOM: Indica fin del mensaje (??);
 RST:
Indica que se desea retomar una conexión confusa debido a
T-CONNECT.request o T-CONNECT.confirm duplicados;
 SYN: Indica que se desea establecer una nueva conexión, esto es, para
T-CONNECT.request (ACK=0) y T-CONNECT.confirm (ACK=1);
 FIN:
Indica que se desea terminar la conexión;
 Ventana:
Cantidad de ventanas disponibles;
 Código CRC: Código de redundancia de los datos del paquete para detección
de errores. Se suman todos los datos como palabras de 16 bits y se
complementen a 1;
 Puntero Acelerado:
??;
 Opciones:
Indican otros datos dependientes del contexto, como tamaño
de buffers, etc.
XII. Anexos
XII.1. Protocolos de Ventana Deslizante
XII.1.1. Repetición No Selectiva
r,s : trama
p : paquete[MaxSeq]
e : evento
aRecibir = 0 : seq
aTransmitir = 0 : seq
aAckRecibir = 0 : seq
nbuff = 0 : seq
i : seq
ventana de transmisión
inicializa secuencia de recibidos
inicializa secuencia de enviados
inicializa secuencia de asentimientos
Bool entre(a,b,c : seq)
{
si (ab y b<c) ó
(ab y c<a) ó
(c<a y b<c) entonces
entre = verdadero
sino
entre = falso
}
devuelve verdadero si está en la ventana
EnvíaTrama(fnum : seq)
{
s.info = p[fnum]
s.seq = fnum
s.ack = aRecibir + MaxSeq
ACapaFísica(s)
IniciaTimer(fnum)
}
ProtocoloVentanaRNS()
{
HabilitaCapaRed()
repetir
Espera(e)
transmite una trama
arma la trama
asentimiento superpuesto
transmite la trama
inicializa temporizador de la trama
(LlegóTrama, CRCerr, TimeOut ó CapaRedLista)
si e = CapaRedLista entonces
DeCapaRed(p[aTransmitir])
nbuff = nbuff + 1
EnvíaTrama(aTransmitir)
Incrementa(aTransmitir)
obtiene paquete
agranda ventana
transmite datos
si e = LlegóTrama entonces
recibe trama
DeCapaFísica(r)
recibe conforme
si r.seq = aRecibir entonces
ACapaRed(r.info)
Incrementa(aRecibir)
mientras entre(aAckRecibir, r.ack, aTransmitir)
se recibió asentimiento mayor
nbuff = nbuff -1
se vacía ventana
ParaTimer(aAckRecibir)
Incrementa(aAckRecibir)
fin-mientras
si e = CRCerr entonces
(ignora)
si e = TimeOut entonces
aTransmitir = aAckRecibir
para i=1 hasta nbuff
EnvíaTrama(aTransmitir)
Incrementa(aTransmitir)
fin-para
si nbuff<MaxSeq entonces
HabilitaCapaRed()
sino
DeshabilitaCapaRed()
hasta-siempre
}
ignora paquetes con error
retransmite desde trama sin asent.
XII.1.2. Repetición Selectiva
const NrBuff = (MaxSex+1) div 2
const MaxBuf = NrBuff -1
tamaño de ventanas
r,s : trama
e : evento
OutBuff, InBuff : paquete[MaxBuff]
Llegó = falso : booleano[MaxBuff]
aRecibir = 0 : seq
aTransmitir = 0 : seq
aAckRecibir = 0 : seq
nbuff = 0 : seq
i : seq
TooFar = NrBuff : seq
NoNak = verdadero : booleano
Bool entre(a,b,c : seq)
{
si (ab y b<c) ó
(ab y c<a) ó
(c<a y b<c) entonces
entre = verdadero
sino
entre = falso
}
trama recibida y a transmitir
evento recibido
ventana de transmisión
todos son falsos al inicio
inicializa secuencia de recibidos
inicializa secuencia de enviados
inicializa secuencia de asentimientos
devuelve verdadero si está en la ventana
EnvíaTrama(ft: tipoTrama, fnum : seq)
{
s.tipo = ft
si ftipo = datos entonces
s.info = buffOut[fnum mod NrBuff]
s.seq = fnum
s.ack = aRecibir + MaxSeq
si ftipo = nak entonces
NoNak = falso
ACapaFísica(s)
si ftipo = datos entonces
IniciaTimer(fnum mod NrBuff)
}
transmite una trama
arma trama de datos
asentimiento superpuesto
transmite la trama
inicializa temporizador de la trama
ProtocoloVentanaRNS()
{
HabilitaCapaRed()
repetir
Espera(e)
(LlegóTrama, CRCerr, TimeOut, CapaRedDesocupada ó
CapaRedLista)
si e = CapaRedLista entonces
{
nbuff = nbuff + 1
DeCapaRed(OutBuff[aTransmitir mod NrBuff])
EnvíaTrama(datos,aTransmitir)
Incrementa(aTransmitir)
}
agranda ventana
obtiene paquete
transmite datos
si e = LlegóTrama entonces
recibe trama
{
DeCapaFísica(r)
recibe sólo datos
si r.tipo = datos entonces
{
ACapaRed(r.info)
no es esperada
si r.seq<>aRecibir y NoNak entonces
envía nak
EnvíaTrama(nak,0)
si entre(aRecibir, r.seq, TooFar) y
llegó[aRecibir mod NrBuff] = falso entonces
{
llegó[r.seq mod NrBuff] = verdadero
InBuff[r.seq mod NrBuff]=r.info
pasa todas
mientras llegó[aRecibir mod NrBuff]
a
ACapaRed(InBuff[aRecibir mod NrBuff])
capa de red
NoNak = verdadero
llegó[aRecibir mod NrBuff] = verdadero
Incrementa(aRecibir)
Incrementa(TooFar)
IniciaTimerAck()
fin-mientras
}
}
se recibe nak
si r.tipo = nak y entre(aAckRecibir,
(r.ack+1) mod (MaxSeq+1), aTransmitir) entonces
EnvíaTrama(ack,(r.ack+1) mod (MaxSeq+1))
reenvía asentimiento
mientras entre(aAckRecibir, r.ack, aTransmitir)
se recibió asentimiento mayor
nbuff = nbuff -1
se vacía ventana
ParaTimer(aAckRecibir)
Incrementa(aAckRecibir)
fin-mientras
}
si e = CRCerr entonces
{
si NoNak entonces
EnvíaTrama(nak,0)
}
hay error
envía nak
si e = TimeOut entonces
EnvíaTrama(datos,MásAntigua)
si e = CapaRedDesocupada entonces
EnvíaTrama(ack,0)
si nbuff<NrBuff entonces
HabilitaCapaRed()
sino
DeshabilitaCapaRed()
hasta-siempre
}
retransmite trama más antigua
capa de red no quiere enviar nada
envía sólo asentimiento
XIII. Bibliografía
[Tann1]
Andrew S. Tannenbaum
“Redes de Computadores”
Prentice Hall, 1991
[Tann2]
Andrew S. Tannenbaum
“Sistemas Operativos Distribuidos”
Prentice Hall
[Cou1]
George Coulouris
“Distributed Systems”
Addison Wesley
[Com1]
Douglas E. Comer
“Internetworking with TCP/IP vol.3; BCD socket Version”
Prentice Hall
[TAK1]
Jorge López
“Apuntes Curso: Comunicación de Datos”
por Thomas Armstrong
[TAK2]
Jorge López
“Apuntes Curso: Redes de Computadores”
por Thomas Armstrong
I.
Descargar