Fundamentos de la Capa de Enlace de Datos (OSI Nivel 2): Protocolos y Control de Errores

La Capa de Enlace de Datos (Nivel 2 del Modelo OSI)

La Capa de Enlace de Datos es la capa 2 del modelo OSI y su función principal es proporcionar a la Capa de Red una comunicación libre de errores. Es la primera capa lógica o software del modelo y conecta la parte física con las capas superiores. En esta capa no se trabaja con bits, sino con tramas.

Funciones Generales de la Capa de Enlace

  • Creación de tramas.
  • Detección y corrección de errores.
  • Control de flujo.
  • Direccionamiento mediante direcciones MAC.
  • Gestión completa del enlace (inicio, mantenimiento y finalización de la comunicación).

Subcapas de la Capa de Enlace

La Capa de Enlace se divide en dos subcapas:

  • LLC (Logical Link Control): Definida en IEEE 802.2, se encarga del enlace lógico, de la comunicación con la Capa de Red y de los tipos de servicio ofrecidos.
  • MAC (Medium Access Control): Definida en IEEE 802.3, gestiona el acceso al medio cuando este es compartido, así como las direcciones MAC y parte del formato de las tramas Ethernet.

Servicios Ofrecidos por la Subcapa LLC

La subcapa LLC ofrece tres tipos de servicios:

  1. Servicio sin conexión no fiable: No se establece conexión ni se esperan confirmaciones. Es rápido y se usa en medios físicos fiables o aplicaciones en tiempo real.
  2. Servicio sin conexión fiable: El receptor confirma cada trama y garantiza la recepción correcta.
  3. Servicio orientado a conexión: Es totalmente fiable y se divide en tres fases: inicio de conexión, transmisión de datos y finalización con liberación de memoria. Es el más seguro, pero también el más complejo.

Estructura de la Trama de Datos

Una trama es un bloque de bits agrupados. Las tramas facilitan la detección y corrección de errores y permiten compartir el medio.

Partes de una Trama

Una trama tiene tres partes esenciales:

  • Información de control.
  • Datos.
  • Redundancia para la detección de errores (como el campo CRC en Ethernet).

Los campos concretos dependen del estándar, pero en Ethernet suelen incluir preámbulo, direcciones MAC, tipo o longitud, datos y el FCS o CRC.

Control de Flujo

El Control de Flujo evita que el emisor envíe datos más rápido de lo que el receptor puede procesar. El receptor usa un búfer temporal para almacenar la información y evitar desbordamientos.

Métodos para Implementar el Control de Flujo

  1. Protocolo de Parada y Espera (Stop-and-Wait)

    El emisor envía una trama y espera a que el receptor envíe una confirmación (ACK). No puede enviar la siguiente trama hasta recibir dicho ACK. Es sencillo y funciona bien con pocas tramas de gran tamaño, pero puede ser muy ineficiente porque el emisor pasa mucho tiempo sin transmitir. Este método requiere comunicación dúplex o semidúplex.

  2. Ventana Deslizante (Sliding Window)

    Se permite que varias tramas estén “en vuelo” sin esperar confirmación inmediata. El receptor dispone de una memoria para almacenar varias tramas y, mediante un número de secuencia, indica al emisor cuál es la próxima trama que espera. El tamaño de la ventana define cuántas tramas puede enviar el emisor sin recibir ACK. Este método es mucho más eficiente que Parada y Espera.

  3. Piggybacking

    En comunicaciones bidireccionales, en lugar de enviar un ACK como trama independiente, dicho ACK se incluye dentro de una trama de datos que el receptor envía al emisor, ahorrando así una transmisión. Solo funciona si el receptor envía datos en un tiempo razonable; si no, se envía un ACK normal.

Control de Errores

El Control de Errores se basa en detectar dos tipos de fallos: tramas perdidas y tramas dañadas. Para detectar errores se usa redundancia añadida a los datos.

Métodos de Detección de Errores

  • Eco: El receptor devuelve una copia de la información recibida.
  • Paridad Simple: Se añade un bit que indica si el número de bits 1 es par o impar.
  • Paridad en Bloque: Se organizan los datos en una matriz y se aplica paridad por filas y columnas.
  • CRC (Cyclic Redundancy Check): Emisor y receptor acuerdan un polinomio generador y realizan divisiones binarias para verificar si el resto es cero. El CRC es uno de los métodos más fiables y utilizados.

Mecanismos de Corrección: Protocolos ARQ

Una vez detectado el error, debe corregirse. El mecanismo más común es la retransmisión, donde el emisor reenvía la trama dañada. Los protocolos de retransmisión se llaman ARQ (Automatic Repeat reQuest). Existen tres variantes:

  1. ARQ con Parada y Espera: Si hay error o la trama no llega, se retransmite solo esa trama.
  2. ARQ con Vuelta Atrás N (Go-Back-N): Si una trama falla, se retransmiten esa y todas las siguientes de la ventana deslizante, aunque algunas hubieran sido recibidas correctamente.
  3. ARQ con Rechazo Selectivo (Selective Repeat): Solo se retransmite la trama concreta que falló. Esta versión es la más eficiente, pero también la más compleja.

El Código Hamming

El Código Hamming permite no solo detectar sino también corregir errores sin necesidad de retransmisión.

Construcción y Funcionamiento

Para construir un código Hamming se calculan primero los bits de paridad necesarios usando la condición:

2p ≥ p + i + 1

Donde i es el número de bits de información y p los bits de paridad. Los bits de paridad se colocan en posiciones que son potencias de 2 (1, 2, 4, 8…). Cada bit de paridad controla un conjunto de posiciones según una tabla determinada. El mensaje final combina bits de información y bits de paridad.

Al verificar un mensaje recibido, se aplican XOR a los bits controlados por cada bit de paridad. Si todas las paridades dan cero, no hay error. Si dan un número binario distinto de cero, dicho número indica la posición exacta del bit erróneo, que puede corregirse simplemente invirtiéndolo.