Capa de enlace
Álvaro González Sotillo
Created: 2024-09-08 dom 17:52
1.1. La capa de enlace
- Es la capa 2 de la arquitectura OSI.
- Se encarga de conseguir que la comunicación de datos se produzca correctamente a través de un medio físico de transmisión.
- Para lograr que dos dispositivos adyacentes se comuniquen, se necesita un control del intercambio de datos: el control del enlace.
- La capa de enlace proporciona a la capa de Red un servicio de transporte de bits fiable (asegura que los bit se trasmiten correctamente por el medio físico).
- El bloque de datos transmitido se denomina TRAMA.
1.2. Funciones de la capa de enlace
- Sincronización a nivel de trama.
- Control de flujo: las estaciones deben ponerse de acuerdo en el ritmo de trasmisión de datos.
- Control de errores: los enlaces no son perfectos. Hay que controlar que no haya errores en la transmisión.
- Direccionamiento: si hay varios posibles destinos, es necesario identificar a quien va dirigida la trama.
- Gestión del enlace:
- Inicio de la transmisión
- Mantenimiento de la transmisión
- Finalización de la transmisión
1.3. MAC y LLC
- En la arquitectura IEEE 802, el nivel de enlace se divide en dos subcapas:
- LLC: se encarga de las funciones comunes de la capa independientemente del medio físico usado
- Control de errores
- Direccionamiento
- Sus funciones han sido definidas por el subgrupo 802.2.
- MAC: se encarga del acceso al medio (gestión del enlace)
2. Tramas
- Una trama es un bloque de bits agrupados que son enviados por la línea.
- El tamaño de la trama depende del tipo de red.
- Agrupar los bits en tramas facilita:
- la detección y corrección de errores
- la compartición del medio.
- Una trama se compone de tres partes
- Información sobre la trama
- Datos.
- Redundancia.
3. Control de flujo
- Veremos el control de flujo cuando estudiemos TCP
- Algunos protocolos de nivel 2 lo soportan. No es el caso de Ethernet.
4.1. Clasificación general
- Medio repartido
- FDM: multiplexación en frecuencias
- Cada vez menos usado: se puede infrautilizar el ancho de banda
- TDM: multiplexación en tiempo
- Medio compartido
- Sin colisiones
- Sondeo
- Paso de testigo (Token Bus)
- Con colisiones
- CSMA/CD (Ethernet)
- CSMA/CA (Wifi)
- Se multiplexa el canal por frecuencia
- Cada canal se asigna a un nodo de la red
- Usado en:
- Red telefónica (analógica)
- Radio FM/AM
- DSL
- Se multiplexa el canal por tiempo (a la Round Robin)
- Cada canal se asigna a un nodo de la red
- Más común en transmisiones digitales
4.4. Paso de testigo
- Cada nodo debe esperar a tener el turno de emisión
- El turno se utiliza, y se cede al siguiente por un testigo
- Un mensaje especial que indica que no se quiere emitir más
- Y señala el siguiente equipo que emitirá
- Ejemplos:
- Carrier-sense multiple access with collision detection
- Multiple access: Cualquiera puede emitir usando el mismo medio
- Carrier-sense: Antes de emitir, se comprueba que nadie más esté emitiendo
- Collision detection:
- Durante la transmisión, detecto si otro también emite
- Si se produce una colisión, dejo de emitir
- Y espero un tiempo aleatorio para volver a intentarlo
- Carrier-sense multiple access with collision avoidance
- Similar a CSMA/CD
- Collision avoidance para evitar los nodos ocultos:
- Antes de emitir los datos se envía un RTS (request to send)
- Es un mensaje pequeño, con poca probalibilidad de colisión
- Un nodo central recibe los RTS y determina quién recibe un CTS (clear to send)
- El que recibe el CTS puede enviar sus datos sin problemas
5. Control de errores
- Consiste en enviar algunos bits añadidos a los datos con información que permita detectar o corregir los errores.
- El porcentaje de redundancia se calcula como
\[\frac{bitsdecontrol}{bitstotales}\times 100\]
- Los errores pueden
- Detectarse
- Adicionalmente, corregirse
5.1. Errores
- Un único bit
- Más comunes en transmisión en paralelo
- Ráfagas de bits
- Una interferencia actúa sobre los medios de transmisión
- Perturban varios bits seguidos
- Afectan más a comunicaciones en serie
5.2. Detección de errores
- ECO
- El receptor envía una copia exacta de la información recibida al emisor.
- El emisor confirma con otra trama que la información es correcta
- Paridad lineal. Se añade un bit extra, indicando si el número de bits con valor a 1 es par o impar.
100100
, con paridad par, se envía como 100100
0
100100
, con paridad impar, se envía como 100100
1
- Problema: ¿Qué pasa si cambia un número par de bits?
5.2.1. Paridad de bloque
- Paridad de bloque. Se distribuyen los datos en una tabla y se calcula paridad por cada línea y columna.
- Mensaje:
1100101
0110110
1011010
1001111
0111001
1100111
1010000
, con paridad par
- Se envía
1100101
0
0110110
0
1011010
0
1001111
1
0111001
0
1100111
1
1010000
0
1001000
0
|
Datos |
Paridad lineal |
|
1100101 |
0 |
|
0110110 |
0 |
|
1011010 |
0 |
|
1001111 |
1 |
|
0111001 |
0 |
|
1100111 |
1 |
|
1010000 |
0 |
Paridad de bloque |
1001000 |
0 |
|
Datos |
Paridad lineal |
|
1100 0 01 |
0 |
|
0110 1 10 |
0 |
|
1011 0 10 |
0 |
|
1001 1 11 |
1 |
|
0111 0 01 |
0 |
|
1100 1 11 |
1 |
|
1010 0 00 |
0 |
Paridad de bloque |
1001 0 00 |
0 |
|
Datos |
Paridad lineal |
|
1 100 0 01 |
0 |
|
0 110 1 10 |
0 |
|
1 011 0 10 |
0 |
|
1 001 1 11 |
1 |
|
0 111 0 01 |
0 |
|
1 100 1 11 |
1 |
|
1 010 0 00 |
0 |
Paridad de bloque |
0 001 0 00 |
0 |
- Conclusión:
- Si falla un bit, puedo arreglarlo
- Si fallan dos bits, lo detecto
- Si fallan más,
- Puedo no enterarme
- Puede parecer que ha fallado solo uno
- Puedo detectar el error
5.3. Actividad
- Calcular la paridad bidimensional del siguiente mensaje:
1001101, 1111010, 1100110, 1110001, 1101001, 1110111, 0010111
5.4. Distancia de Hamming
- Cuando se produce un error, cambian algunos bits
- Según la codificación utilizada, no todas las combinaciones de 0s y 1s son posibles
- La distancia de Hamming de un código es la cantidad de bits que hay que cambiar en una combinación válida para llegar a otra combinación válida
- Cuanto mayor sea la distancia, más robusto es el código frente a errores
- Si la distancia es \(d\), se pueden detectar errores de hasta \(d-1\) bits.
- Si la distancia es \(d\), se pueden corregir errores de hasta \(\lfloor(d-1)/2\rfloor\) bits.
- ¿Cuál es la distancia de Hamming de una transmisión con paridad?
- Al principio de la comunicación, emisor y receptor acuerdan un Polinomio Generador.
- Al iniciar la transmisión se añaden un número predeterminado de ceros a la información a enviar y se divide utilizando el polinomio generador.
- El receptor realiza nuevamente una división sobre los datos recibidos y si el resto es 0 indica que la trama se ha recibido sin errores.
- Finalmente se descartan los bits añadidos en el transmisor para quedarnos con el mensaje original.
5.5.1. ¿Por qué CRC?
- Hay versiones de CRC para diferentes longitudes de polinomio: CRC16, CRC32,…
- Los errores se producen típicamente a ráfagas
- Para un CRC de \(n\) bits
- Se detectan todos los errores de ráfagas de menos de \(n\) bits incorrectos
- Se detecta una fracción de las ráfagas más largas (\(1 - 2^{-n}\))
Longitud de crc |
Porcentaje de detección de ráfagas mayores |
8 |
99.609375 |
16 |
99.998474 |
32 |
99.9999999767169 |
6. Corrección de errores
- La detección de errores es el primer paso
- Una vez detectado:
- Se puede ignorar (las capas más altas deben arreglar el error)
- Se puede corregir
- Ethernet no corrige errores, pero veremos algunas técnicas que pueden usar otras capas 2
6.1. Retransmisión
- Es el método de corrección más sencillo.
- Se detecta el error y se pide al emisor que vuelva a enviar la trama.
- Se tienen que memorizar las tramas enviadas hasta la recepción de un ACK que confirme que el envío de información fue exitosa.
- Codificación que permite la detección y la corrección de un bit
- Se inluyen bits de paridad de la siguiente forma:
- Los bits de las posiciones \(s=2^{p-1}\) son de paridad: 1, 2, 4, 8…
- El resto son de datos
- El bit de la posición \(s\) se incluye en el bit de paridad \(p\) si la expresión de \(s\) en binario tiene a 1 el bit \(p\)
|
p1 |
p2 |
d1 |
p3 |
d2 |
d3 |
d4 |
p4 |
d5 |
d6 |
d7 |
|
s1 |
s2 |
s3 |
s4 |
s5 |
s6 |
s7 |
s8 |
s9 |
s10 |
s11 |
p1 |
x |
|
x |
|
x |
|
x |
|
x |
|
x |
p2 |
|
x |
x |
|
|
x |
x |
|
|
x |
x |
p3 |
|
|
|
x |
x |
x |
x |
|
|
|
|
p4 |
|
|
|
|
|
|
|
x |
x |
x |
x |
6.2.1. Clasificación de códigos de Hamming
- La tabla anterior se puede hacer para cualquier longitud
- El ejemplo tiene 11 bits en total, 7 son de datos: Hamming(11,7)
- También es común el Hamming(7,4)
Tabla 1 Código Hamming(7,4) completo
Datos |
Hamming |
0000 |
0000000 |
1000 |
1110000 |
0100 |
1001100 |
1100 |
0111100 |
0010 |
0101010 |
1010 |
1011010 |
0110 |
1100110 |
1110 |
0010110 |
0001 |
1101001 |
1001 |
0011001 |
0101 |
0100101 |
1101 |
1010101 |
0011 |
1000011 |
1011 |
0110011 |
0111 |
0001111 |
1111 |
1111111 |
6.2.2. Ejemplo Hamming(11,7)
Para transmitir 0110101
|
p1 |
p2 |
d1 |
p3 |
d2 |
d3 |
d4 |
p4 |
d5 |
d6 |
d7 |
|
s1 |
s2 |
s3 |
s4 |
s5 |
s6 |
s7 |
s8 |
s9 |
s10 |
s11 |
Datos |
|
|
0 |
|
1 |
1 |
0 |
|
1 |
0 |
1 |
p1 |
|
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
p2 |
|
|
0 |
|
|
1 |
0 |
|
|
0 |
1 |
p3 |
|
|
|
|
1 |
1 |
0 |
|
|
|
|
p4 |
|
|
|
|
|
|
|
|
1 |
0 |
1 |
- Para transmitir
0110101
Se transmite 10001100101
|
p1 |
p2 |
d1 |
p3 |
d2 |
d3 |
d4 |
p4 |
d5 |
d6 |
d7 |
|
s1 |
s2 |
s3 |
s4 |
s5 |
s6 |
s7 |
s8 |
s9 |
s10 |
s11 |
Datos |
|
|
0 |
|
1 |
1 |
0 |
|
1 |
0 |
1 |
p1 |
1 |
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
p2 |
|
0 |
0 |
|
|
1 |
0 |
|
|
0 |
1 |
p3 |
|
|
|
0 |
1 |
1 |
0 |
|
|
|
|
p4 |
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
Datos (con paridad): |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
6.2.3. Detección de un error con Hamming
|
p1 |
p2 |
d1 |
p3 |
d2 |
d3 |
d4 |
p4 |
d5 |
d6 |
d7 |
Paridad |
|
s1 |
s2 |
s3 |
s4 |
s5 |
s6 |
s7 |
s8 |
s9 |
s10 |
s11 |
|
Recibida: |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
|
p1 |
1 |
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
0 |
p2 |
|
1 |
0 |
|
|
1 |
0 |
|
|
0 |
1 |
1 (error) |
p3 |
|
|
|
0 |
1 |
1 |
0 |
|
|
|
|
0 |
p4 |
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
0 |
- Hay un error, y se localiza en la posición
0010
: s2 (p2)
6.2.4. Ejercicio
- Decide si las siguientes palabras de código Hamming son correctas. Si no son correctas, corrígelas.
10001100101
00100110010
01110111001
6.2.5. ¿Y si hay más de 1 error?
- Su distancia de Hamming es 3, así que no se puede corregir
- En Hamming extendido se añade un bit de paridad adicional
- Permite detectar errores de tres bits, pero no corregirlos
6.3. Ejercicio
- Calcula el porcentaje de redundancia de:
- Tramas de 1000 bytes, con crc32 incluido en los 1000 bytes
- Tramas de 100 bytes, con crc16 añadido a los 100 bytes
- Hamming (7,4)
- Hamming (11,7)
- Hamming (11,7) extendido
- Paridad lineal: un bit de paridad cada 7 de datos
- Paridad de bloque: un bit de paridad lineal cada 7 de datos, bloques de 49 bits de datos
6.4. Códigos Reed Solomon
- En la actualidad, Hamming tiene una utilidad didáctica más que práctica
- En la actualidad se utiliza Reed-Solomon
- CD, DVD, BlueRay
- QR
- Raid 6
- DVB, WiMax, transmisiones aeroespaciales
7. Referencias
- Formatos:
- Creado con:
- Alojado en Github