El modelo OSI (Open System Interconnection o Interconexión de Sistemas Abiertos) está basado en una propuesta establecida en el año 1983 por la organización internacional de normas ISO como un avance hacia la normalización a nivel mundial de protocolos. El modelo se llama modelo de referencia OSI de la ISO, puesto que se ocupa de la conexión de sistemas abiertos, esto es, sistemas que están preparados para la conmutación con sistemas diferentes. Usualmente lo llamaremos solo modelo OSI para acortar.
OSI emplea una arquitectura en niveles a fin de dividir los problemas de interconexión en partes manejables. Posteriores estándares de ISO definieron las implementaciones en cada nivel para asegurar que se consigue una compatibilidad total entre ellos. La aproximación en niveles asegura la modularidad y facilita que el software pueda mejorarse sin necesidad de introducir cambios revolucionarios, además de permitir la compatibilidad entre equipos diferentes. Consta de siete niveles, que puede ver en la tabla.
Pero ¿cómo llego la ISO, partiendo desde cero, a definir una arquitectura a siete niveles de esas características? Los principios teóricos en los que se basaron para la realización de OSI fueron fundamentalmente los siguientes:
- Cada capa de la arquitectura está pensada para realizar una función bien definida.
- El número de niveles debe ser suficiente para que no se agrupen funciones distintas, pero no tan grande que haga la arquitectura inmanejable.
- Debe crearse una nueva capa siempre que se necesite realizar una función bien diferenciada del resto.
- Las divisiones en las capas deben establecerse de forma que se minimice el flujo de información entre ellas, es decir, que la interfaz sea más sencilla.
- Permitir que las modificaciones de funciones o protocolos que se realicen en una capa no afecten a los niveles contiguos.
- Utilizar la experiencia de protocolos anteriores. Las fronteras entre niveles deben situarse donde la experiencia ha demostrado que son convenientes.
- Cada nivel debe interaccionar únicamente con los niveles contiguos a él (es decir, el superior y el inferior).
- La función de cada capa se debe elegir pensando en la definición de protocolos estandarizados internacionalmente.
OSI está definido más bien como modelo, y no como arquitectura. La razón principal es que la ISO definió solamente la función general que debe realizar cada capa, pero no menciona en absoluto los servicios y protocolos que se deben usar en cada una de ellas. Esto quiere decir que, al contrario que el resto de arquitecturas de redes, el modelo OSI se definió antes de que se diseñaran los protocolos.
A continuación detallaremos cada una de las capas del modelo OSI:
- Capa física: Primera capa del modelo OSI, define, el nivel más bajo de comunicación definiendo las conexiones físicas entre computadoras (cable de pares trenzados, coaxial, guías de onda, aire, fibra óptica) y describiendo el aspecto mecánico (componentes y conectores), eléctrico (niveles de tensión que se van a usar en transmisión de los datos) y funcional (establecimiento, mantenimiento y liberación del enlace físico) de la interfaz física. Finalmente, es el encargado de transmitir el flujo de bits a través del medio y de garantizar la conexión (aunque no la fiabilidad de la misma).
- Capa de enlace de datos: Esta capa es la encargada de preparar la información codificada de forma binaria en formatos previamente definidos por el protocolo a utilizar. En este nivel se ensamblan los datos en tramas y se transmiten a través del medio, ofreciendo además un control de flujo entre las mismas, así como un sencillo mecanismo para la detección de errores. Aquí se aplican algoritmos como CRC o Comprobación de Redundancia Cíclica que se encargan de validar la integridad física de las tramas, encargándose de notificar al transmisor en caso de error para su retransmisión.
- Capa de red: La finalidad de esta capa es hacer que los datos lleguen desde el origen al destino, aun cuando no estén directamente conectados. Esto lo consiguen manejando los protocolos de enrutamiento, haciendo uso de routers y manejando las direcciones IP para realizar el direccionamiento lógico. También reside en este nivel la responsabilidad de establecer, mantener y terminar las conexiones.
- Capa de transporte: Esta capa es la encargada de efectuar el transporte de datos, desde la maquina origen a la de destino, independizándolo del tipo de red física que se esté utilizando; de esta forma actual de puente entre los tres niveles inferiores totalmente orientados a las comunicaciones y a los tres niveles superiores totalmente orientados a l procesamiento. En este nivel se realiza y se garantiza la calidad de la comunicación, asegurando la integridad de los datos, verificándolos por medio de algoritmos de detección y corrección de errores. Aquí se realizan las retransmisiones cuando la información se corrompe o alguna trama del nivel 2 detecta errores en el formato y es necesario volver a enviar el paquete o datagrama.
- Capa de sesión: Dota de servicios de conexión entre las aplicaciones encargándose de iniciar, mantener y finalizar una sesión. Controla el enlace establecido entre dos máquinas que están transmitiendo datos, asegurando que una vez establecida la sesión entre ambas, la comunicación se puede realizar llevando a cabo todas las operaciones definidas de principio a fin y reiniciando sesión la sesión en caso de interrupción. En esta capa quedan englobadas todas las acciones que se llevan a cabo al establecer una conexión donde se solicita un login, la notificación de todo lo relacionado con la administración de una sesión, como por ejemplo el aviso de que una impresora remota se ha quedado sin papel y también la gestión de la liberación de recursos mediante un logout.
- Capa de presentación: Los datos son representados de forma reconocible. Es en esta capa en la que se realiza la transformación de los datos binarios a un formato más accesible. Aquí están englobados los estándar como ASCII (American Standard Code for Information Interchange o Código Estadunidense Estándar para el Intercambio de Información) y EBCDIC (Extended Binary Coded Decimal Interchange Code o Código Binario extendido de intercambio decimal codificado), que interpretan los datos binarios, convirtiéndolos en caracteres de fácil manejo, igualmente aquí se trabaja con el encriptado de datos y la compresión de los mismos.
- Capa de aplicación: Es el nivel más alto del modelo y más cercano al usuario, ya no proporciona servicios a ningún otro nivel al tratarse del último. Es en esta capa donde las aplicaciones tienen la posibilidad de acceder a los servicios de las demás y donde se definen los protocolos que utilizan las aplicaciones para intercambiar datos. Aquí quedan englobados los protocolos de correo electrónico como SMTP, gestores de bases de datos, servidores de ficheros, etc… Aquí podemos encontrarnos con tantos protocolos como aplicaciones haya, y dado que las aplicaciones están en continua expansión el número de protocolos igualmente crece sin parar.
Este modelo no es perfecto y, de hecho, algunas cuestiones adolecen de un mal diseño. La más importante, en lo que se refiere a las capas, es que alguna de ellas están prácticamente vacías (es decir, hay muy pocos protocolos definido dentro de estas y a la vez son bastante triviales), mientras que otras están llenas a rebosar. Por ejemplo, las capas de sesión y presentación no se usan en la mayoría de las aplicaciones, mientras que las capas más inferiores están saturadas que en revisiones posteriores se han dividido en múltiples subcapas.
Otro problema que tiene OSI es que existen algunas funciones que se repiten en muchas de las capas, lo que hace que muchos servicios y programas estén duplicados, a la vez que contribuye a un aumento del tamaño de las cabeceras de control de los bloques de información que se transmiten.
En la figura que ve en pantalla se muestra como se transmiten datos entre estaciones utilizando el modelo OSI: un programa en la estación A desea enviar un bloque de datos a otro programa de la estación B; el proceso A realiza una llamada al servicio correspondiente en el nivel de aplicación y le entrega ese bloque de datos; el servicio del nivel de aplicación añade la cabecera EA y le entrega toda esa información a la cabecera de presentación, mediante la llamada al servicio.
Estos mismos pasos se repiten conforme los datos van pasando de una capa a otra hasta llegar al nivel físico. Conforme la entidad de una capa recibe datos, les añade la cabecera correspondiente y los envía al nivel inmediatamente inferior. Es muy importante darse cuenta del hecho de que, cuando una entidad recibe datos de su nivel inmediato superior, no sabe qué parte de ellos es cabecera y que parte son datos reales enviados por los programas que se desean comunicar.
Cuando los datos llegan al nivel físico de la maquina receptora, se produce justamente el proceso contrario al anterior: cada capa recibe los datos, le quita su cabecera correspondiente y los pasa al nivel superior. El nivel de aplicación de la estación A le pasa los datos puros al programa receptor.