El modelo OSI (Interconexión de sistemas abiertos) es ineficiente; cada capa debe tomar el trabajo de las capas superiores, agregar algún resultado y pasar el trabajo a las capas inferiores. Seguramente esta envoltura (y desenvoltura) es ineficiente. ¿Cuál es la ventaja de seguridad del enfoque por capas?

La pila OSI es un modelo, no una implementación. Nada obliga a una implementación a segmentarse como el modelo, y puede ser más eficiente construir múltiples capas en una sola sección de código. Por ejemplo, la implementación API de una llamada para enviar datos TCP en una máquina con una sola interfaz de Ethernet podría construir todo el paquete de una vez y entregarlo al búfer de hardware / DMA, ya que “conoce” la capa 4,3, 2 valores que se establecieron cuando se creó la conexión. El modelo indica el potencial de elección en cada capa, que es una razón para segmentar las capas en código, pero una implementación puede simplificarse en función del entorno y colapsar las capas para una mayor eficiencia.

Ahora, hay diferencias de eficiencia entre protocolos. Los cálculos de suma de verificación para TCP / UDP / IP son más simples (= eficientes) en comparación con el cálculo de suma de verificación requerido de la pila OSI (por ejemplo, TP4).

Mi opinión personal es que hubo dos razones por las que TCP / IP se ganó a los protocolos OSI.
1. Las especificaciones TCP / IP son gratuitas. OSI cobra (todavía cobra) por sus especificaciones
2. TCP / IP es más simple. TP4 tenía más características pero era mucho más difícil de entender / implementar. El principio KISS gana.

En realidad, es extremadamente eficiente .

Muchos dispositivos entre usted y su aplicación de destino en su dispositivo de destino solo entienden cosas de capa 2 o capa 3. Necesitan trabajar en toda la pila, por lo tanto, solo pueden usar la carga útil de las capas superiores tal como está.

Entonces, si ve el panorama general, es mucho más eficiente. Además, es más escalable y fácil de implementar, ya que puede agregar módulos a cada capa sin preocuparse por la otra. Esto lo hace muy estable.

En este artículo hablo sobre OSI y sus ventajas: El modelo OSI: redes complejas simplificadas.

Independientemente del trabajo que deba realizarse, ese trabajo debe realizarse para comunicarse entre un cliente y un servidor. Un flujo de comunicación aún debe dividirse en paquetes, debe asignarse detalles de comunicación (direcciones locales, remotas y puertos / tipos), debe configurarse con las opciones apropiadas, debe tener en cuenta la capacidad de perder o corromper los datos. (si es necesario), debe ponerse en cola y almacenarse en búfer, y luego esos bits de datos deben convertirse en señales electrónicas apropiadas a las velocidades de datos correctas de acuerdo con los estándares del medio de transmisión (inalámbrico, Ethernet, fibra, etc.) expedido.

¡Imagine tener que escribir eso, desde cero, si desea crear un nuevo cliente de correo electrónico o un nuevo servicio de chat instantáneo!

Al dividirlo en capas distintas (más o menos) que tienen API claramente definidas dentro de la aplicación / kernel / hardware, obtienes la capacidad de usar código común para hacer la mayor parte del trabajo por ti, y hay ventajas para esta:

  • Velocidad casi máxima para un esfuerzo casi mínimo.
    Aunque en teoría es probable que sea posible escribir un código un poco más eficiente y más rápido para hacer todo ese trabajo, su código probablemente no será portátil y aún necesitará ser ajustado y probado. Los controladores, los sockets y las API escritos en los núcleos son a menudo piezas de código altamente eficientes escritas por desarrolladores especialistas e altamente inteligentes para manejar los datos en su dominio de la manera más rápida y eficiente posible. Obtendrá el 99% de la velocidad para el 0.01% del trabajo.
  • Seguridad y estabilidad.
    El código del kernel y del controlador que se ha escrito es probablemente bastante antiguo, ha sido visto por muchos ojos, se han encontrado y corregido muchos errores durante su vida útil y ha sido sometido a pruebas rigurosas (tanto artificiales como del mundo real) para minimizar los errores que pueden afectar tanto el rendimiento como la seguridad. Por ejemplo, muchos sistemas como alguna vez han sufrido el “Ping de la muerte”. Los desarrolladores lo arreglaron en beneficio de todos los usuarios, no solo de su software. Las pilas monolíticas serían mucho más propensas a estos errores y fallas y cualquier corrección solo solucionaría la pila única, no todas. Esto no exime a ningún software que escriba de errores o problemas, pero sí significa que los niveles más bajos del modelo OSI generalmente estarán seguros de la mayoría de los errores o problemas, ¡y todo lo que necesita hacer es llamar a socket ()!

Puede que no parezca tan eficiente, pero en realidad lo es: obtienes el beneficio de probablemente muchas decenas de miles o cientos de miles de horas de trabajo en el código que generalmente se te proporciona de forma gratuita, y realmente funciona, muy , muy bien.

Es ineficiente en el sentido de que una pila monolítica sería más pequeña y funcionaría más rápido, pero es eficiente en la forma en que una línea de ensamblaje es eficiente: partes fungibles y minimización del conocimiento que cada parte necesita para interactuar sin errores con otras.

Desde una perspectiva de seguridad, cada capa interactúa con otras solo a través de interfaces bien definidas, creando oportunidades para aplicar políticas y ofuscando detalles de implementación útiles para exploits.

Por extraño que parezca, la historia temprana del modelo OSI es prácticamente desconocida. Conocí a uno de los autores originales: Andrew Singer (RIP, tristemente). Me dijo que originalmente fue una herramienta de enseñanza para una forma útil de pensar sobre los protocolos de comunicación de datos; nunca tuvo la intención de ser estandarizado e implementado. Estaba bastante avergonzado por eso. Si alguna vez trató de implementar una pila genérica completa de 7 capas, podría entender por qué. Las dos capas superiores simplemente no son útiles en la práctica, dependen demasiado de la aplicación semánticamente. Los inferiores, especialmente. 1 – 4, sin embargo, son genios. Quizás uno podría pensar que pasar la carga útil a través de los encapsuladores para esas capas podría no ser eficaz, solo es, a lo sumo, una llamada indirecta a través de una tabla o un puntero a una estructura de definición de topología, que es el maní en el esquema general de las cosas, pero en practicarlo permite una forma plug-and-play muy flexible de implementar sistemas de comunicación heterogéneos simples y complejos a través del sistema solar.

La pila OSI no fue diseñada teniendo en cuenta la seguridad. De hecho, la seguridad se asigna a una de las capas superiores (la capa de presentación) pero todas las capas pueden implementarla.

El modelo OSI fue diseñado para facilitar redes heterogéneas. Eso es. Las dos capas inferiores (1/2) definen “redes”, las dos capas intermedias (3/4) definen “interredes” y las tres capas superiores (5/6/7) definen los servicios necesarios para soportar las comunicaciones entre aplicaciones.

La seguridad y la eficiencia no ocupaban un lugar destacado en la lista de “must haves”. El único requisito era que debía facilitar la creación e integración de diversos sistemas de red (de varias edades y velocidades).

Y, debo agregar, ha sido un gran éxito.