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