La capa de enlace de datos

Anuncio
La capa de enlace de datos
Introducción
• La capa de enlace de datos:
– Tiene como objetivo lograr la comunicación fiable
entre dos máquinas adyacentes.
– Debe resolver la perdida o cambio de los valores de
los bits enviados.
– Ofrece tres tipos de servicio:
• No orientado a conexión y sin acuse de recibo.
• No orientado a conexión y con acuse de recibo.
• Orientado a conexión y con acuse de recibo:
– Establecimiento de la conexión.
– Envío de los datos.
– Cierre de la conexión.
Adquisición y Tratamiento de Datos
1
La capa de enlace de datos
Especificación de las tramas
• La capa de enlace divide los bits a enviar en
tramas de bits.
– Permite simplificar la detección y corrección de
errores.
– Utilizar factores temporales como la duración es
difícil y da lugar a errores.
• Existen tres formas de dividir en tramas:
– Cuenta de caracteres.
– Caracteres de inicio y final con caracteres de relleno.
– Bits indicadores de inicio y final con bits de relleno.
Adquisición y Tratamiento de Datos
2
La capa de enlace de datos
Cuenta de caracteres
• Incluir delante de cada trama un byte cuyo valor indique el
número de bytes que forman la trama.
Cuenta de caracteres
5
1
2
3
4
5
Trama 1
5 caracteres
5
6
7
8
4
Trama 2
5 caracteres
9
0
1
Trama 3
4 caracteres
3
2
3
Trama 4
3 caracteres
• Problema: Un fallo en un byte indicador pierde toda la secuencia.
Error
5
1
2
3
4
7
Trama 1
5 caracteres
Adquisición y Tratamiento de Datos
5
6
7
Trama 2
erroneo
8
4
9
0
1
3
2
3
Ahora es una cuenta de
caracteres de ¡ 0 caracteres !
3
La capa de enlace de datos
Caracteres de inicio y final
• Indicar cada trama por caracteres ASCII:
– Comienzo de trama: DLE STX.
– Fin de trama: DLE ETX.
– Cuando como datos de la trama aparece el carácter DLE este
se duplica.
• Su problema es la dependencia del código ASCII.
DLE
STX
A
A
B
DLE
C
D
DLE
STX
E
F
B
DLE
DLE
C
D
DLE
DLE
STX
E
F
DLE
ETX
DLE de relleno
Adquisición y Tratamiento de Datos
4
La capa de enlace de datos
Bits indicadores de inicio y final
• Cada trama comienza y termina con la secuencia
de bits 01111110.
• Si en algún momento en los datos que se envían
aparecen 5 bits seguidos con valor 1, se coloca
un bit con valor 0 detrás.
011011111111111111110010
0111111001101111101111101111101001001111110
Byte indicador
Byte indicador
Bits de relleno
Adquisición y Tratamiento de Datos
5
La capa de enlace de datos
Control de errores
• Los ordenadores emisor y receptor necesitan saber si:
– Las tramas llegan al otro extremo.
– Son correctas.
• Para ello el receptor suele enviar al emisor un mensaje
diciendo que ha recibido la trama:
– ACK: Trama recibida correctamente.
– NAK: Trama recibida incorrectamente.
• Si una trama o respuesta se pierde completamente, existe un
“timeout” al cabo del cual el emisor o receptor repiten el
mensaje.
• Existen mecanismos para:
– Saber si una trama ha llegado con errores.
– Corregir los errores en una trama.
Adquisición y Tratamiento de Datos
6
La capa de enlace de datos
Distancia de Hamming
• La distancia de Hamming es el número de bits en que
difieren dos palabras código.
– Indica el número de bits en que ha de cambiar una palabra código
para convertirse en la otra.
• La distancia de Hamming de un conjunto es el valor mínimo
de la distancia de Hamming entre todos los elementos del
conjunto.
– Indica el número mínimo de bits en que ha de cambiar una palabra
código del conjunto para convertirse en otra palabra código del
conjunto.
• Para detectar d errores de un bit en un conjunto:
– Distancia de Hamming >= d+1.
• Para corregir d errores de un bit en un conjunto:
– Distancia de Hamming >= 2d+1.
Adquisición y Tratamiento de Datos
7
La capa de enlace de datos
Código de corrección de errores de Hamming (I)
• Deseamos construir un código de corrección
para un error de 1 bit:
– Las palabras código están formadas por m bits.
– Introducimos r bits de redundancia de forma que el
código a enviar es de longitud n=m+r.
– Tenemos 2m palabras código.
– Debemos construir un conjunto de palabras 2n de
forma que cada palabra tenga n palabras incorrectas a
una distancia de Hamming 1.
– Entonces (n+1)2m<=2n, y como n=m+r entonces
(m+r+1)<=2r.
Adquisición y Tratamiento de Datos
8
La capa de enlace de datos
Código de corrección de errores de Hamming (II)
• El código se construye:
– Se calcula el número de bits de redundancia r usando (m+r+1)<=2r.
– Se numeran los bits de 1 en adelante.
– Los bits potencia de 2 (1=20, 2=21, 4=22, etc.), se utilizan para los bits de
redundancia.
– Los otros bits se utilizan para el mensaje m.
• Se descomponen en sumas de potencias de 2, por ejemplo, 3=2+1, 5=4+1,
6=4+2, etc.
• Se utiliza la paridad como función de redundancia:
– Paridad par: El número de unos, contando el bit de redundancia, debe ser par.
– Paridad impar: El número de unos, contando el bit de redundancia, debe ser impar.
• La paridad de los bits de redundancia se calcula en función de los valores de
los bits de mensaje m:
• b(1)=F(b(3),b(5),b(7),...), todos los bits de mensaje que tienen el valor 1 en su
descomposición.
Adquisición y Tratamiento de Datos
9
La capa de enlace de datos
Códigos de detección de errores
• En ocasiones, es más útil detectar errores y pedir
la retransmisión que corregir errores.
– Un método sencillo es utilizar un bit de paridad:
• Si se produce un error en un bit de la transmisión la
paridad será incorrecta.
– Su problema es que si se produce más de un error, la
probabilidad de detectar el error es de 0.5 (50%).
– Por ello se suele utilizar la detección utilizando
códigos CRC.
Adquisición y Tratamiento de Datos
10
La capa de enlace de datos
Detección de errores mediante CRC (I)
• Utilizan que una cadena de bits puede representar un
polinómio en base 2:
– 110001 -> x5+x4+x0.
– La trama a transmitir es un polinomio M(x).
– Para detectar los errores se utiliza un polinomio generador
G(x), con sus bits mayor y menor con valor 1.
– Los bits a enviar T(x) se calculan como:
•
•
•
•
•
Sea r el grado de G(x), calcular xrM(x).
Dividir xrM(x) entre G(x) y obtener el resto R(x).
Calcular T(x)= xrM(x)-R(x).
Con estos cálculos T(x) es divisible por G(x).
Los m=n-r primeros bits son M(x) y los r últimos bits son la
redundancia.
Adquisición y Tratamiento de Datos
11
La capa de enlace de datos
Detección de errores mediante CRC (II)
• Un emisor envía un mensaje T(x) y llega un mensaje T'(x)
al receptor.
• Designemos T'(x)=T(x)+E(x), donde E(x) es un polinomio
que tiene a 1 los bits que han sufrido un error en la
transmisión.
• Calculemos el resto de T'(x)/G(x):
mod(T'(x)/G(x)) = mod((T(x)+E(x))/G(x)) =
mod(T(x)/G(x)) + mod(E(x)/G(x))=
0 + mod(E(x)/G(x)) = mod(E(x)/G(x))
• El resto es cero si:
– E(x)=0. No existe error en la transmisión y T'(x)=T(x).
– E(x) es divisible por G(x).
Adquisición y Tratamiento de Datos
12
La capa de enlace de datos
Detección de errores mediante CRC (III)
• Existen G(x) calculados para minimizar la
segunda posibilidad:
CRC-12
=
CRC-16
=
CRC-CCITT =
CRC-32
=
x10 + x8 +
x12+x11+x3+x2+x+1
x16+x15+x2+1
x16+x12+x5+1
x32 + x26 + x23 + x16 + x12 + x11 +
x7 + x5 + x4 + x2 + x + 1
Adquisición y Tratamiento de Datos
13
La capa de enlace de datos
Control de flujo
• Dos ordenadores han de sincronizar sus
velocidad:
– Si el emisor envía muy rápido el receptor puede no
poder procesar las tramas.
• Existen dos mecanismos básicos:
– Protocolo de parada y espera.
• Acuse de recibo “piggybacked” (a hombros) es un caso
optimizado de parada y espera.
– Ventana deslizante.
Adquisición y Tratamiento de Datos
14
La capa de enlace de datos
Protocolo de parada y espera
• El emisor envía una trama:
– Si el receptor la recibe correctamente envía una trama de
respuesta ACK.
– Si no la recibe o la recibe incorrectamente, espera a que el
emisor se la reenvíe al pasar un cierto tiempo (timeout).
• Una optimización es enviar una trama de respuesta NAK en caso de
que la trama recibida sea incorrecta y no espera el timeout.
• Si la trama ACK del receptor al emisor se pierde:
– El emisor repetirá la trama al pasar el timeout:
• El receptor recibirá dos veces la misma trama y no sabrá que es una
repetición
• Deben numerarse las tramas como 0, 1, 0, 1, ... para que el receptor
sepa diferenciar una repetición incorrecta.
Adquisición y Tratamiento de Datos
15
La capa de enlace de datos
Protocolos de ventana deslizante (I)
• Los protocolos de parada y espera son muy poco
eficientes:
– Ordenador X a 2.000 Kms del ordenador Y. Unidos
por una línea de 56 Kbps con tramas de 560 bits.
Instante (ms)
Suceso en X
Suceso en Y
0
Emite primer bit de trama 1 Espera
10
Emite último bit de trama 1 Recibe primer bit de trama 1
20
Espera
Recibe último bit de trama 1
Envía ACK
30
Recibe ACK
Espera
Emite primer bit de trama 2
...
...
...
Adquisición y Tratamiento de Datos
16
La capa de enlace de datos
Protocolos de ventana deslizante (II)
• Sea:
– v : Velocidad de la línea.
– t : Tamaño de la trama.
–  : Tiempo de ida de la línea (suponemos el tiempo de ida
igual al de vuelta).
Eficiencia = (t/v)/((t/v)+2) = t/(t+2v)
• En el ejemplo anterior la eficiencia es del 33%.
• En una línea de 512 Kbps la eficiencia sería del 5%.
Adquisición y Tratamiento de Datos
17
La capa de enlace de datos
Protocolos de ventana deslizante (III)
• Es necesario enviar tramas por la línea antes de
recibir el ACK de la primera de ellas.
• Para ello el emisor establece un buffer (ventana)
en la cual almacena las tramas enviadas por si
debe reenviarlas.
• Deben numerarse las tramas para poder conocer
que trama es la que se debe reenviar.
– Utilizando n bits se pueden enviar tramas numeradas
de 0 a 2n-2 antes de recibir un ACK.
Adquisición y Tratamiento de Datos
18
La capa de enlace de datos
Protocolos de ventana deslizante (IV)
• El tamaño de la ventana necesaria se calcula como:
W = 1 + (2v/t)
• En el ejemplo anterior W=3, por ejemplo.
• Cuando el receptor detecta una trama incorrecta puede:
– Descartar todas las tramas posteriores recibidas:
Retroceso n.
– Pedir la repetición de la trama errónea pero aceptar
las posteriores: Repetición selectiva.
• Repetición selectiva requiere que el emisor numere las
tramas con valores 2n en vez de n.
Adquisición y Tratamiento de Datos
19
Descargar