PRÁCTICO 2 NIVEL DE ENLACE DE DATOS DELIMITADOR DE FRAMES DETECCIÓN DE ERRORES CONTROL DE FLUJO Comunicación de Datos I
Framing Al enviar información, en vez de enviar un stream continuo de información, se utilizan frames. Así es posible detectar errores por frame, y de existir un error, se puede retransmitir sólo el frame problemático. Para delimitar los frames existen diversos métodos: Cuenta de caracteres. Delimitación de frame por caracteres. Delimitación de frame por bits. Por lo general se utilizan combinaciones de éstos
Framing Determine, para la siguiente información a enviar, cómo será transportada a través del vínculo de transmisión y cómo será entregada al receptor luego de eliminar los caracteres producidos por el proceso de framing: 23-7D-03-5E-45-5E-5E-7E Delimitadores de bloques: 7E Caracter de transparencia: 7D Procedimiento en el emisor Cuando se quiere transmitir 7E, se envía 7D-5E Cuando se quiere transmitir 7D, se envía 7D-5D Cuando se quiere transmitir 00..1F, se envía 7D-caracter+20
Framing Se desea transmitir como dato: 23-7D-03-5E-45-5E-5E-7E El emisor agrega inicio de bloque, transparencia, y fin de bloque 7E- 23-7D-5D-7D-23-5E-45-5E-5E-7D-5E-7E El receptor busca inicio de bloque, caracteres de transparencia, y fin de bloque 23-7D-03-5E-45-5E-5E-7E
Framing Utilizando delimitación de bloque por secuencia de bits, para los bits de información: determine como será transportada Delimitación: Se utilizan flags de tipo: Transparencia: Cuando en los datos aparecen 5 unos seguidos se le agrega un 0 luego del 5to bit. 0 EJ > Entonces: será transportado como:
Detección de Errores x**3+x**2+x Suponga un código cíclico, con 5 bits de información y tres de redundancia, cuyo polinomio generador es x**3+x**2+x+1, y que se desea enviar la secuencia de bits % Recordando el esquema de paridad simple, en una ráfaga de errores vamos a poder detectar solo el 50% de los errores. No muy aceptable, ya que aceptaríamos como buenos la mitad de los frames con errror. Info Redund Errores RedundInfoRedundInfo Gener. redund Info Compr. redund M(x)M’(x) I(x) R(x) EmisorReceptor Medio de Transmisión
Detección de Errores Suponga un código cíclico, con 5 bits de información y tres de redundancia, cuyo polinomio generador es x**3+x**2+x+1, y que se desea enviar la secuencia de bits G(x)= x³+x²+x G(x)= x³+x²+x+1 = Los coeficientes: 1111 (existen todos los términos) Redundancia r = grado Polinomio= I(x)= Información (5 bits) La idea es hacer que el frame a transmitir sea divisible por el polinomio Generador G(x), en caso de que no lo sea, el frame contendrá un error. Para esto, el emisor agrega los bits de redundancia al final del frame con la información, generando un nuevo frame de tamaño i + r bits (5 + 3 bits) de forma tal que el nuevo frame sea efectivamente divisible por G(x). M (x) = I (x) * x ** r + Resto [ I (x) * x ** r / G (x) ] Así, sólo se envían múltiplos de G(x)
Detección de Errores x**3+x**2+x Suponga un código cíclico, con 5 bits de información y tres de redundancia, cuyo polinomio generador es x**3+x**2+x+1, y que se desea enviar la secuencia de bits Desarrolle en forma de polinomios los pasos que seguirá el emisor para generar redundancia y el receptor para verificar la validez de la secuencia de bits recibida. G(x)= x³+x²+x+1 = 1111 G(x)= x³+x²+x+1 = 1111 (existen todos los términos) I(x)= I(x)= Información (5 bits) I(x) ) Se agregan la I(x) r bits (3bits) en 0, --> G(x) G(x) 2) Se divide por G(x), se obtiene el resto, y luego es restado para que sea divisible por G(x). M(x) = I(x) *x^r
Detección de Errores... y el receptor para verificar la validez de la secuencia de bits recibida X³+X²+X+1 (1111) Recibimos: Dividiendo por X³+X²+X+1 (1111) > Resto es “0” Asumo que recibí OK
Detección de Errores x**5+x**3+1 Verifique la validez de la secuencia recibida, cuando en la línea ocurren errores que responden al polinomio x**5+x** E(x)= Recibimos: M'(x)= M(x) + E(x) = = ? = M'(x)=
Detección de Errores x**5+x**3+1 Verifique la validez de la secuencia recibida, cuando en la línea ocurren errores que responden al polinomio x**5+x** Error 100 -> Resto no es “0”! Error
Detección de Errores x**3+x**2+x+1 Rehaga el punto b) considerando que el polinomio de error es x**3+x**2+x+1. Explique lo sucedido E(x)= = ? Recibimos: M'(x)= M(x) + E(x) = = ? = M'(x)=
Detección de Errores x**3+x**2+x+1 Rehaga el punto anterior considerando que el polinomio de error es x**3+x**2+x+1. Explique lo sucedido OK 000 -> Resto es “0” Asumo que recibí OK Lo que sucede en este caso es que el error que se introdujo es un múltiplo del polinomio generador. Por este motivo, no es posible detectar el error.
Control de Flujo El control de flujo es necesario para no saturar al receptor de uno a más emisores Se utilizan mecanismos de confirmaciones Existen distintas técnicas Parada y Espera Ventana Fija Ventana Deslizante
Parada y Espera El emisor envía una trama cada vez Hasta que no recibe confirmación (ACK=Acknowledgement) no envía la siguiente El proceso continúa hasta enviar el fin de transmisión En caso de recibir un NACK (rechazo de la recepción NO Acknowledgement) se reenvía el paquete anterior. Eficiencia e = Tb / (Tb + Tok + 2 * dp)
Parada y Espera
Parada y Espera.
Parada y Espera
Ventana Fija Se envía una cantidad W de paquetes (tamaño de ventana), y se espera a que se reciba el ACK de todos los paquetes. Aumenta eficiencia de Parada y Espera
¿Preguntas?