Cuando queremos establecer una
comunicación, las personas utilizan un medio físico
ya determinado. Pese a esto, debemos “definir” el
idioma que utilizaremos, el volumen de voz en el
cual nos sentimos cómodos, de acuerdo al ruido
ambiente, las capacidades auditivas de ambos, la
distancia, etc. Inconcientemente “probamos” el canal
con palabras que no son necesarias para el mensaje
que queremos transmitir. Verificamos el nivel de
sofisticación de las palabras que utilizamos,
verificando que es el correcto para la comunicación.
Incluso nos aseguramos del nivel de atención de la
otra persona, y el momento exacto cuando emitir el
mensaje principal. Todo esto lo hacemos con nuestros
“hola”, comentarios sobre el clima, etc.
Veremos que todo esto tiene su
equivalente en la comunicación entre computadores, y
los protocolos son esenciales para lograr ese
objetivo.
Imaginemos, por ejemplo, la
transferencia de un archivo entre dos computadoras.
Naturalmente debemos contar con el medio físico que
puede ser una conexión local directa, o una conexión
a través de una o varias redes.
Antes que nada el sistema emisor
debe activar el medio de comunicación directamente (conexión
local) o avisar a la red cuál es el destino de esa
comunicación. Luego se debe asegurar que el sistema
destino esté preparado para recibir los datos. Este
paso involucra posibles validaciones de identidad,
disponibilidad de medios físicos de almacenaje,
aceptación de los datos, etc. Finalmente, si el
formato de los datos fuese incompatible uno de los
dos sistemas debería realizar una conversión de
datos.
Toda esta tarea representa un
alto grado de cooperación entre los sistemas. Como
se ve, no es una tarea sencilla, y es lógico pensar
en dividirlas en subtareas, cada una con una misión
específica. Los protocolos realizan una o varias de
estas subtareas. De este modo, se puede incluso
asignar algunas subtareas a un protocolo, y otras a
otro, aprovechando las mejores características de
cada uno. Es una práctica común describir un
protocolo como una serie de capas apiladas en forma
vertical. A cada capa le corresponde una función
específica o subtarea.
Cada capa delega a la inferior
tareas más simples y específicas, por el contrario,
cada capa realiza servicios para la capa superior.
Este esquema tiene sentido si los cambios en cada
capa tienen escaso o nulo impacto en su inmediata
superior e inferior.
Por supuesto, en ambos extremos
se debe tener el mismo esquema de capas, y cada
nivel tiene su equivalente en el otro extremo. Esto
se puede ver como que las dos capas con igual nivel
dialogan horizontalmente entre ellas, ambas
confiando e ignorando lo que sucede abajo y arriba
en la estructura de capas. Ese diálogo horizontal
está formado por bloques de datos que obedecen a
ciertas reglas y convenciones que integran lo que
llamamos “protocolo”.
Estas reglas y convenciones que
conforman un protocolo deben estar claramente
definidas en cuanto a los siguientes aspectos:
-
De sintaxis, que definen el
formato de esos bloques de datos,
-
De semántica, que agregan a los
bloques de datos información de control y manejo
de errores
-
Temporales, que controlan la
secuencia de los bloques, y la velocidad a la que
se transmiten.
CARACTERÍSTICAS DE UN PROTOCOLO
Los protocolos tienen normalmente
los siguientes objetivos:
1. Optimización: Se refiere a la
habilidad de seleccionar la mejor ruta entre origen
y destino. Esta selección se basa en ciertas
características o “métricas” que se incluyen en un
cálculo según se desee optimizar retrazo, número de
saltos, etc.
2. Simplicidad: Se desea que un
protocolo sea lo más simple posible. Esto afecta las
características del software o hardware que debe
implementarlo, y la demora en los procesos
involucrados. Esto es particularmente importante
cuando algún nodo de la ruta presenta limitaciones
físicas.
3. Robustez: La robustez de un
protocolo está relacionada con el funcionamiento
ante situaciones inusuales o imprevistas (fallas de
hardware, demoras excesivas, etc.)
4. Rapidez de convergencia: La
convergencia de una red es la consistencia de todos
los ruteadores en cuanto a rutas óptimas. Cuando un
ruteador sale de servicio o vuelve a funcionar, se
genera un intercambio de información en toda la red
que refleja esa nueva situación. Con esa información
se actualizan tablas de ruteo, cálculos de retrasos,
etc. Es deseable que este proceso se realice
rápidamente a fin de evitar cuellos de botella o
ruteo en lazos interminables.
5. Flexibilidad: Los protocolos
deben ser flexibles, a fin de poder adaptarse a
distintas circunstancias de la red.
LA ARQUITECTURA DE PROTOCOLOS OSI
Para comprender más el modelo de
capas, y dar un ejemplo que la mayoría de los
protocolos actuales toman como referencia (pero rara
vez cumplen estrictamente), analizaremos brevemente
el modelo desarrollado por la International
Organization fo Standardization (ISO). Este modelo
se llama Open Systems Interconnection (OSI), y está
dividido en diferentes capas pudiendo cada una, o
varias juntas, dar origen a un protocolo
estandarizado. Es interesante ver los principios que
fundamentan la división de un sistema en capas, a
saber:
1. Una capa debería crearse
cuando se requiere de un diferente nivel de
abstracción.
2. Cada capa debería realizar una
función bien determinada.
3. Al definir cada capa, debería
tenerse en cuenta la existencia de protocolos
internacionales ya existentes.
4. El fin de una capa y el
comienzo de otra deberían elegirse de modo que se
minimice la información entre capas.
5. El número de capas debería ser
grande, de modo de no mezclar funciones bien
diferenciadas en la misma capa, pero no tan grande
como para volver inmanejable al arquitectura de
protocolos que la satisfaga.
El modelo OSI utiliza 7 capas,
que son:
-
Aplicación: Es aquí
donde se desarrollan las aplicaciones, manejo de
usuarios, y definición de servicios disponibles al
usuario (impresoras, servicios de mail, bases de
datos, etc.). En esta capa se puede realizar la
división de una tarea entre diferentes
computadoras locales o remotas.
-
Presentación: Aísla a
las aplicaciones de las diferencias que puede
haber entre los formatos de datos. Agrupa en forma
de librerías rutinas que se pueden requerir con
cierta frecuencia. Cuando la aplicación lo
requiere, en esta capa se realizan la compresión
de datos y el cifrado de datos para obtener
privacidad. En esta capa también se manejan la
elección de distintos modos gráficos, set de
caracteres, etc, ya sea porque son opcionales o
porque los dos sistemas extremos presentan
incompatibilidades.
-
Sesión: Establece,
gerencia y termina las conexiones (sesiones) entre
las aplicaciones. Controla y se recupera de
distintos errores que le pueda reportar la capa de
Transporte. Asegura que un grupo de datos se
presente indivisible a la capa de sesión del otro
extremo. Por ejemplo: una serie consecutiva de
comandos a un servicio remoto, que deben
presentarse indivisiblemente para evitar que el
sistema remoto quede en un estado inconsistente.
En esta capa se realiza la identificación y
autenticación de los usuarios. Cuando la capa de
Transporte entrega los datos en forma desordenada,
delega a la capa de sesión la tarea de
presentarlos ordenados a la capa superior.
-
Transporte: Provee una
transferencia de datos confiable y transparente
entre los dos puntos finales. Para esto administra
el flujo (velocidad entre los dos sistemas
extremos) y orden de los datos y el manejo de los
errores entre los extremos finales. Además aísla a
la capa de sesión de posibles cambios de hardware.
Ella puede establecer más de una conexión de red
si la velocidad de transporte no es suficiente, o
mezclar (multiplexar) diferentes mensajes en la
misma conexión de red si éstas son caras. Esta
capa se implementa normalmente como una pieza de
software en el sistema o computador.
-
Red: Provee a las capas
superiores de independencia de las conmutaciones,
transformaciones y derivaciones a otras subredes
que sufrirán los datos para llegar al otro extremo,
ya sea que se conecten en la misma red, o deban
pasar por diferentes redes. Para esto administra
el flujo de datos y el manejo de los errores entre
las partes o subredes parciales. Es aquí donde se
produce la división de los paquetes, y el ruteo de
los mismos, con objeto de evitar congestión,
evitar pasar por nodos fuera de servicio, etc.
Esta capa se implementa normalmente como un driver
en el sistema o computador.
-
Enlace: Tiene la misión
de producir transmisión de datos confiables sobre
el medio físico. En el sistema transmisor, divide
los paquetes en unidades llamadas frames. En el
sistema receptor, recibe los bits individuales del
medio físico y con un número determinado de ellos
arma las frames. Sobre las frames realiza
sincronización (orden), control de errores y de
flujo de datos. También realiza la confirmación de
recepción de las frames (acknogledgement o “ack”)
de modo que la capa de enlace del extremo remoto
sepa que los datos han llegado correctamente o en
caso contrario deba retransmitirlos. Si una frame
se transmite duplicada (porque un ack no llega al
otro extremo) se descarta en esta capa. También es
misión de la capa de enlace que se eviten pérdidas
de datos porque el emisor transmite más rápido de
lo que la capa de enlace del receptor puede
procesar.
-
Física: Esta capa
entiende la transmisión y recepción de bits
individuales. Tiene en cuenta características
eléctricas y mecánicas del medio utilizado. Por
ejemplo, se debe definir en esta capa qué nivel de
tensión representa un “1” y un “0” lógico, cuanto
tiempo dura cada bit, si se pueden transmitir en
ambo sentidos a la vez, como se establece y
termina el envío de bits, cómo se sincronizan los
sistemas, etc.
La figura I-1 muestra
gráficamente el modelo OSI, donde se ha incluido un
nodo intermedio para mostrar más claramente el paso
de información a través de un elemento de red, o un
puente entre dos redes diferentes. Notar que las
líneas llenas simbolizan una conexión real, mientras
que las punteadas simbolizan una conexión virtual
entre capas equivalentes.
Figura I-1. El modelo OSI
Figura I-2. Relación entre el modelo OSI y otros
protocolos.
La figura I-2 ejemplifica la relación entre el
modelo OSI y algunos de los protocolos reales
actuales o que han tenido relevancia en la historia
de las comunicaciones en redes de paquetes.
Roberto Rossi
Universidad Blas Pascal
|