Tema 6. Transmisión de datos

Documentos relacionados
Tema / La capa de enlace de datos: entramado y detección de errores

Comunicación de datos

Capa de Enlace de Datos

Tema 4: Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

UNIDAD IV MÉTODOS DE DETECCIÓN DE ERRORES.

CONTROL DE ERRORES DETECCIÓN DE ERRORES

Conceptos básicos de comunicación de datos

Redes y Servicios. Módulo I. Fundamentos y modelos de red. Tema 2. Fundamentos. Parte B. Nivel de enlace

3 Interfaz PC DSP. 3.1 Introducción a las comunicaciones serie. 3 Interfaz PC DSP

Tema 2: Sistemas y códigos numéricos

banda, mayor es la distorsión, y mayor es la probabilidad de que se cometan errores en el receptor.

Representación de la Información en los Sistemas Digitales

Tipos de Filtros Introducción

CODIFICACIÓN DE LA FUENTE

Telegrama TP1. KNX Association

Funciones del Control de enlace de datos

TEMA V SISTEMAS DE NUMERACIÓN

Detección y Corrección de Errores

Agenda. 0 Operaciones aritméticas 0 ASCII 0 UTF-8 0 Código Gray. 0 Números de punto flotante

Tipos de Datos y Representaciones. Circuitos Digitales, 2º de Ingeniero de Telecomunicación. EITE ULPGC.

T3. NIVEL DE ENLACE DE DATOS

Comunicación Serial: Conceptos Generales

Tema 2. Sistemas de representación de la información

Capacidad : Número de valores diferentes que puede representar un código. Depende del número de dígitos usados.

ELECTRÓNICA DIGITAL TEMA 1

Protocolo de Enlace de Datos

11. Generador/comprobador de paridad

Transmisión paralelo:

UT01 03 Sistemas de codificación

Redes de Computadores

TÉCNICAS DIGITALES CÓDIGOS DETECTORES Y CORRECTORES DE ERRORES

TEMAS 1 y 2 TECNOLOGIA DE LAS COMUNICACIONES INGENIERÍA INFORMÁTICA

Técnicas y Dispositivos Digitales 1. UNIDAD 3 Códigos Binarios

Figura 6.3 Descripción de la ventana deslizante.

Tema 3: Nivel Enlace.

BLOQUE II. Introducción a la Transmisión de Información

EL BUS I2C CARACTERISTICAS. Fernando Remiro

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I CAPÍTULO III ARITMÉTICA Y CODIFICACIÓN

Módulo 04 Detección y Corrección de Errores (Pt. 1)

SISTEMAS DIGITALES. Margarita Pérez Castellanos

Módulo 04 Detección y Corrección de Errores (Pt. 1)

Tema 10: Transmisión de datos

Redes de Área Local. Arquitectura de una LAN. Tema 2. Medio. Medio. E.T.S.I. Telecomunicación Sonido e Imagen. Aplicaciones en Redes Locales.

El comienzo del protocolo CAN (CONTROLLER AREA NETWORK) Laboratorio de Automatización II. UNQ PROTOCOLO CAN 1

Redes y Comunicaciones

Arquitectura de protocolos en LANs

Representación Información

Problemas resueltos. Problema 1. Problema 3. Problema 5. 0BTema 2: Modelos de redes. Indique los niveles del modelo de Internet.

5. Codificación n de información en binario

INFORMÁTICA APLICADA A LA ECONOMÍA Tema 3: Representación de la Información. Verónica A. Bollati

Soluciones a los Ejercicios

Introducción al PLC Simatic Siemens S7-200.

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

Arquitectura de Computadoras

Diseño e Implementación de detección de errores mediante CRC y algoritmo que supervisa la comunicación entre dispositivos.

Introducción a tecnologías WAN y redes de acceso

Página 1 de 12 CONCEPTOS INFORMÁTICOS BÁSICOS

CONVERSIONES ENTRE NUMEROS DE BASE DIFERENTE

Implantación de Sistemas Operativos 1º ASIR

Arquitectura de protocolos en LANs

Redes. Tema 8 Capa Física OSI

2).Diseñar los circuitos cuyas tablas de estados son las siguientes:

Sistemas numéricos - otras representaciones - Taller de programación

ESOA Sistemas de Transmisión de Datos

Unidad 3: Control y programación de sistemas automáticos Tema 1: Sistemas de control: introducción

I. INTRODUCCIÓN. A cada valor de una señal digital se le llama bit y es la unidad mínima de información.

TEMA 1 Introducción a la Teleinformática

Organización de Computadoras. Clase 2

Modelo OSI y TCP/IP. Teleprocesamiento Ing. Zoila Marquez.

Representación de la Información.... en los Computadores

SISTEMAS ELECTRÓNICOS DIGITALES

Real Academia de Ciencias

Redes de Computadores

TEMA II SISTEMAS DE NUMERACIÓN USUALES EN INFORMÁTICA.

Introducción a las redes WAN

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.

Direccionamiento IPv4

CAPITULO 6. Sistemas de comunicación. Continuar

Redes de Computadores - Problemas y cuestiones

Redes de Comunicaciones. Ejercicios de clase Tema 3

CURSO 2016/2017 INFORMÁTICA 1ºBCH. La codificación es. Por qué se. Fíjate en. la imagen de decirle que si. cero. decimal: 1* *2 3.

GUÍA DE ESTUDIO TEMA 2. MODELO OSI. ESTÁNDARES Y PROTOCOLOS. MODELO TCP/IP.

TEMA 7. Registros y contadores

Transcripción:

Tema 6. Transmisión de datos 1. Fundamentos de la transmisión de datos 2. Codigos ASCII 3. Modos de transmisión 4. Transmisión asíncrona 5. Transmisión Síncrona 6. Métodos de detección y corrección de errores 7. Control de paridad 8. Suma de comprobación (Checksum) 9. Códigos de redundancia cíclica 10. Protocolos de Ventanas Deslizantes

Fundamentos de la transmisión de datos La comunicación de datos consiste en el intercambio de información codificada digitalmente entre dos dispositivos terminales de datos (DTE), que pueden estar conectados en el mismo enlace, como una red de área local, o a través de redes WAN como PSTNs, PSDNs o ISDN. Recordemos, que denominaremos datos al conjunto de caracteres alfanuméricos codificados digitalmente que intercambian dos dispositivos, e información a lo que el usuario realmente desea transmitir. En transmisión de datos, además de la información de usuario, es necesaria la adición de una serie de datos de control para asegurar la fiabilidad de la transmisión y la correcta extracción de la información en el otro extremo, como bloques de control de errores, control de sincronía, etc. Revisaremos las técnicas empleadas para conseguir una transmisión confiable a través de un medio de transmisión de bits en serie que conecta dos equipos terminales de datos, que denominaremos enlace de datos, pudiendo ser éste cualquiera de los medios físicos estudiados: cable, fibra óptica u ondas de radio.

Fundamentos de la transmisión de datos Cuando se introducen caracteres en un ordenador a través del teclado, estos son codificados en binario a un formato estándar para el intercambio de información. Para ello se emplean tablas de códigos que convierten estos caracteres alfanuméricos a un código binario de 7 u 8 bits, que permiten codificar 128 o 256 caracteres respectivamente. Las dos tablas más empleadas son: EBCDIC (Extended Binary Coded Decimal Interchange Code) o código ampliado decimal codificado en binario, que es un código de 8 bits propietario de IBM y empleado en la mayoría de sus equipos. ASCII (American Standard Code for Information Interchange) del Comité estadounidense de normas para el intercambio de información. Este código es el mismo que el definido por la ITU-T (IA5: Internacional Alphabet number 5) y el ISO 645. Se trata de un código de 7 bits y se puede observar en la figura. Es el sistema de codificación más ampliamente extendido.

Fundamentos de la transmisión de datos Tabla de códigos ASCII y relación de caracteres de control.

Fundamentos de la transmisión de datos Tabla de códigos ASCII y relación de caracteres de control.

Fundamentos de la transmisión de datos En estas tablas podemos distinguir dos tipos de caracteres: Caracteres imprimibles, correspondientes a los alfabéticos, numéricos y signos de puntuación normales. Caracteres no imprimibles. Se trata de un conjunto de caracteres adicionales de control como: Control de formato. Separadores de información. Control de transmisión. Estos caracteres son de entrada/salida para la transmisión, pero una vez recibidos en una máquina, lo normal es que se conviertan y almacenen a un formato binario de longitud fija (de 8, 16, 32 o 64 bits). Llamaremos byte a un grupo de 8 bits y palabra a un patrón más largo, que dependerá del tipo de máquina. La transmisión de datos se hace en múltiplos de 8 bits (en bytes) que pueden representar octetos imprimibles en código binario o bien parte de una palabra del computador, en cuyo caso no tienen por qué representar caracteres imprimibles.

Fundamentos de la transmisión de datos Transmisión de bits Existen dos formas de transmitir los bits de datos entre equipos, en función del número de hilos empleados para la transmisión de una palabra: Transmisión en paralelo: se emplea un hilo para cada bit de la palabra. Sólo se utiliza cuando las distancias de transmisión son pequeñas (dentro de un equipo o con periféricos cercanos), y supone un retardo muy pequeño en el envío de cada palabra. Su coste sería muy elevado para redes de comunicación con longitudes de cables superiores a unos pocos metros. Transmisión en serie: se emplea un solo par de hilos para enviar los bits de un octeto uno por uno a intervalos fijos de tiempo.

Fundamentos de la transmisión de datos Modos de transmisión Normalmente la transmisión de datos se realiza en grupos de longitud fija, habitualmente de 8 bits (bytes u octetos). El receptor de estos datos deberá ser capaz de identificar: Dónde comienza cada bit, para muestrear la señal eléctrica que lo codifique en el centro de cada celda. Dónde empieza y termina cada byte, para obtener el mismo patrón de 8 bits que transmitió el emisor. Dónde empieza y termina cada trama o bloque de mensaje completo. Esto es lo que se conoce como sincronización de reloj o de bit, sincronización de byte o carácter y sincronización de bloque o trama respectivamente.

Fundamentos de la transmisión de datos Modos de transmisión La sincronización entre equipos se puede realizar de dos maneras, dependiendo que los relojes del emisor y el receptor sean independientes o estén sincronizados, de modo que la transmisión puede ser: Asíncrona. Los relojes son independientes y el receptor se resincroniza al principio de cada carácter recibido para conseguir la sincronía de reloj o bit. Síncrona. Todo el mensaje o trama de datos se transmite como una cadena de bits contiguos, y el receptor debe mantener la sincronía en cada bit hasta el final de la trama.

Transmisión asíncrona La transmisión asíncrona se emplea cuando los datos se transmiten a intervalos aleatorios, de modo que el receptor debe ser capaz de resincronizarse al inicio de cada nuevo carácter que reciba. Para ello cada carácter debe ir precedido de un bit de inicio y seguido de uno o más bits de parada. Ejemplo: la transmisión de caracteres entre un teclado y un ordenador, así como en la norma de interfaz RS-232 para la conexión de DTE con DCE o incluso para la comunicación de datos entre dos ordenadores (DTE-DTE). A continuación de cada bit de parada seguiría el bit de inicio del siguiente carácter sin retardo adicional hasta completar el bloque completo de datos.

Transmisión asíncrona Para comprender mejor el funcionamiento de este modo de transmisión vamos a estudiar todo el proceso seguido desde la generación de los caracteres en el DTE hasta su recepción y procesamiento en el segundo dispositivo DTE. En el enlace de datos los bits son transmitidos en serie agrupados en conjuntos de 8 bits (bytes o caracteres). Por el contrario, en el DTE los datos son tratados en paralelo (palabra interna del procesador), por lo que los circuitos de interfaz de la capa física deberán realizar las siguientes funciones: Conversión paralelo a serie de cada carácter que se desee transmitir por el enlace de datos. Dicha conversión se realiza mediante un registro de desplazamiento de entrada en paralelo y salida serie (PISO: parallel-in, serial-out).

Transmisión asíncrona Conversión serie a paralelo de cada carácter recibido por el enlace de datos. Dicha conversión se realiza mediante un registro de desplazamiento con entrada serie y salida paralelo (SIPO: serial-in, parallel-out). Generación de los bits de inicio, parada y paridad, necesarios para la sincronización de bit y carácter, así como para la detección de errores. En inactividad, la línea permanece en estado de marca ( 1 lógico), y el inicio de cada carácter se detecta por la transición 1 0 provocada por el bit de inicio, que origina un flanco descendente para informar al receptor del comienzo de la transmisión de ese carácter. A continuación el receptor muestreará lo más cerca posible del centro de cada bit, para lo cual emplea un reloj interno N veces mayor (p.e. 16) a la velocidad de transmisión, previamente acordada. A continuación, y mediante el empleo de un contador, se cuentan N/2 pulsos de reloj en el receptor para muestrear en el centro del primer bit, y para los siguientes se realizan conteos de N bits. Con ello se garantiza un muestreo que coincida aproximadamente con los centros de bits (hay que tener en cuenta que el receptor funciona de manera asíncrona respecto del emisor).

Transmisión asíncrona El bit de parada (siempre nivel lógico 1 ) garantiza el regreso de la línea al estado de marca para que el bit de inicio del siguiente carácter vuelva a provocar un flanco descendente, de modo que se produzca de nuevo la sincronización y se repita todo el proceso. Al producirse sincronización al principio de cada carácter se evita que las posibles desviaciones entre los relojes del emisor y el receptor se acumulen durante la transmisión de tramas completas de datos. Cuanto mayor sea la frecuencia del reloj del receptor, se podrá muestrear con mayor precisión en el centro de cada bit. Este modo de operación limita la velocidad de transmisión máxima, que no suele superar los 19.2 kbps. Sincronización de trama Cuando se transmiten bloques de caracteres (o bytes), también denominados tramas de información, es necesaria, además de la sincronización de bit y de byte o carácter, la sincronización de trama; el receptor debe saber cuándo comienza y termina la trama, compuesta por una serie de caracteres consecutivos. Para ello, es habitual utilizar un carácter de inicio de trama STX que indique dónde comienza el bloque, y un carácter de fin de trama ETX.

Transmisión asíncrona Sincronización de trama en transmisión asíncrona: (a) caracteres imprimibles; (b) datos binarios. Este método, es válido únicamente en el caso de que se estén transmitiendo caracteres imprimibles (caracteres alfanuméricos). Pero qué ocurriría si transmitimos datos internos del procesador (p.e. palabras internas de 8 bytes convertidas a caracteres de 8 bits) cuya representación no tiene por qué ser imprimible? Podría darse el caso de que uno de ellos coincidiera con la codificación correspondiente al carácter de fin de trama ETX y se finalizaría erróneamente la recepción. Tal es el caso de transmisión de datos binarios que pueden corresponder con ficheros, números en formato entero o de tipo mantisa-exponente, que son directamente enviados por el enlace de datos.

Transmisión asíncrona En el caso de transmisiones binarias, los caracteres de principio y fin de trama van precedidos por el carácter de escape de enlace de datos DLE (Data Link Escape). El inicio de bloque se delimita por DLE-STX y el final por DLE-ETX. En el caso de que alguno de los bytes intermedios coincidiera con el código correspondiente a DLE, el emisor insertaría un segundo código DLE, de modo que el receptor podrá diferencial de manera unívoca entre códigos de escape del enlace de datos, que irán seguidos por STX o ETX y datos que coinciden con un DLE, que llegarán de dos en dos (una vez identificado, el receptor eliminará el byte duplicado). Este esquema de sincronización de trama es el mismo que se emplea en transmisiones síncronas (suprimiendo, lógicamente, los bits de inicio y parada para cada byte).

Transmisión Síncrona El modo de transmisión asíncrono presenta una serie de inconvenientes que lo hacen poco apropiado cuando se pretende conseguir velocidades de transmisión elevadas con un aprovechamiento eficiente del canal de comunicación. Entre otras: Son necesarios una serie de bits adicionales de sincronía para cada carácter enviado (un bit de inicio y entre uno y dos bits de parada), que suponen, como mínimo, un 20% de los datos. Lo que la hace especialmente ineficiente en la transmisión de grandes bloques de datos. El método de sincronización obliga a emplear un reloj en el receptor con frecuencia N veces mayor a la del emisor, lo que limita considerablemente la tasa máxima de transferencia.

Transmisión Síncrona Por ello es muy frecuente el empleo de técnicas de transmisión síncrona en redes de comunicación de datos. En este caso el reloj del receptor funciona de manera síncrona con la señal recibida, al contrario que ocurría en modo asíncrono. Para ello se utiliza una de las dos siguientes técnicas: Bien el sistema de codificación integra información de la señal de reloj, que el receptor extrae para generar su reloj de recepción. Tal es el caso de la codificación de tipo Manchester empleada en redes Ethernet. O bien el receptor tiene un reloj interno que se mantiene sincronizado mediante un dispositivo denominado lazo de fijación de la fase digital (DPLL: Digital Phase lock loop), que aprovecha las transiciones de 1 0 y de 0 1 de la señal recibida para mantener la sincronía de bit.

Transmisión Síncrona Sincronización de Trama Para la sincronización de trama o bloque se utilizan técnicas similares a las descritas en transmisión asíncrona. El bloque se delimita por un carácter de inicio (STX) y un carácter de fin (ETX) en el caso de caracteres imprimibles. Si se transmiten datos binarios se inserta el carácter de escape de enlace de datos (DLE) previamente a la utilización de STX o ETX. Transmisión síncrona.

Transmisión Síncrona Sincronización de Trama Pero en el caso de transmisión síncrona es necesario mantener en todo momento la sincronía, de modo que es fundamental que antes del inicio de un bloque de datos los dispositivos se encuentren sincronizados. Para ello se puede emplear una de las dos siguientes técnicas: Incluir, antes del inicio de trama, uno o dos bytes especiales de sincronización, para que el receptor recupere la sincronía de bit y de byte. Realizar transmisión de caracteres continuamente en los periodos de inactividad entre las transmisiones para mantener la sincronía de bit y byte en el receptor. A esto se le conoce como inactividad síncrona. Ejemplo 1: Calcular el número de bits adicionales requeridos para transmitir por un enlace de datos un mensaje compuesto por 100 caracteres de 8 bits en cada uno de los siguientes modos de transmisión. Si la velocidad de modulación o transmisión es de 1200 bps, obtener la velocidad de transferencia (de información útil) en cada uno de los casos:

Transmisión Síncrona a) Modo asíncrono con 1 bit de inicio, 1 bit de paridad y dos de parada por carácter. Además de un carácter de inicio de trama y uno de fin (STX y ETX) para conseguir la sincronía de bloque. b) Modo síncrono con 2 bytes de sincronía, 1 carácter de inicio de trama y 1 carácter de fin de trama (STX y ETX). Solución: a) Por cada carácter que se transmite tenemos: 1+1+2 = 4 bits adicionales, que estarán presentes para todos los caracteres transmitidos, puesto que se trata de transmisión asíncrona y son necesarios para mantener la sincronía de bit y byte. Luego el total de bits adicionales será: 4 100 + 2 (4+8) = 424 bits que corresponden a 4 bits por cada uno de los 100 datos enviados, más los caracteres de inicio y fin que sólo contienen datos adicionales (los 4 bits por ser transmisión asíncrona más los 8 de datos que son para sincronización de trama).

Transmisión Síncrona Así, podemos obtener el coeficiente de redundancia (proporción de datos de control) como: bits control R= bits control+bits datos = 424 102 12 =0.35 es decir, un 35% de los datos enviados son de control. Por lo tanto, la velocidad de transferencia será: V transf =V t (1 R)=1200 (1 0.35)=780 bps b) En este caso no hay bits para sincronía en cada carácter, con lo que los bits adicionales serán los correspondientes a los dos bytes de sincronía iniciales y los caracteres de inicio y fin de trama (STX y ETX). Por lo tanto, los bits adicionales serán: (2+1+1) 8 = 32 bits Podemos obtener el coeficiente de redundancia: R= bits control bits control+bits datos = 32 32+100 8 =0.04

Transmisión Síncrona es decir, tan sólo un 4% de los datos enviados son de control. La velocidad de transferencia será: V transf =V t (1 R)=1200 (1 0.04)=1152 bps En este ejemplo se puede apreciar la diferencia en cuanto a eficiencia en la transmisión entre ambos modos cuando los bloques de datos enviados son grandes. El modo síncrono requiere una cantidad de bits de control muy inferior, ya que no requiere la repetición de los bits de sincronía (inicio y parada) para cada byte. Esto hace que el aprovechamiento del canal de comunicación sea mucho más eficiente.

Métodos de detección y corrección de errores Los métodos de detección y corrección de errores son característicos del nivel de enlace (comunicación fiable entre dispositivos comunicados a través de un enlace de datos), aunque no exclusivos de éste. Las señales que representan los datos, en muchos casos eléctricas, circulan por un medio físico sometido a ruidos y perturbaciones que pueden hacer que el receptor interprete erróneamente los niveles recibidos. Por ello son necesarios sistemas que permitan detectar cuando se producen este tipo de errores para poner en marcha los mecanismos necesarios para corregirlos. Dependiendo de la técnica empleada para recuperar los errores de la transmisión se distinguen: Protocolos autodetectores. Se incluye información para que el receptor sea capaz de detectar que se ha producido un error. Estos protocolos se denominan también de corrección hacia atrás, puesto que en caso de error es necesario volver a transmitir los datos erróneos. Tal es el caso del control de paridad, suma de comprobación o códigos de redundancia cíclica (CRC).

Métodos de detección y corrección de errores Protocolos autocorrectores. El receptor puede detectar y corregir el error automáticamente. Para ello el mensaje debe contener información redundante que permita recuperar la información a pesar de los datos erróneos. Estos protocolos son también denominados de corrección hacia delante, ya que no requieren la retransmisión del mensaje erróneo para recuperar los datos (p.e. códigos Hamming). Los protocolos autocorrectores requieren una gran cantidad de información adicional para la corrección de errores. Este hecho, unido a que las tasas de error en redes de comunicación de datos son muy pequeñas, hace que este tipo de técnicas sea muy poco utilizado frente a los protocolos autodetectores o de corrección hacia atrás. A continuación vamos a revisar algunas de las técnicas más empleadas para corrección de errores.

Detección de errores Estos protocolos permiten al equipo receptor comprobar si se ha producido un error en el mensaje transmitido. Para ello se realizan las siguientes operaciones: 1. El emisor toma el mensaje a enviar y calcula un valor de comprobación (FCS: Frame Check Sequence) que enviará como parte de la trama. 2. El receptor toma el mensaje más el valor de comprobación y realiza los mismos cálculos para obtener dicho campo de comprobación. 3. Si los valores de comprobación recibido y calculado coinciden se supone que la transmisión ha sido correcta. En el caso de que dichos valores de comprobación (recibido y calculado) difieran, sabemos con un 100% de probabilidad que se ha producido un error en la transmisión, pero si dichos valores coinciden no es seguro que el mensaje recibido coincida con el original, aunque sí muy probable. Esto es así porque el campo de comprobación también se puede ver afectado por errores en la transmisión de tal modo que dichas alteraciones puedan inducir a validar datos erróneos.

Detección de errores Estos métodos de detección de errores serán tanto más fiables cuanto menor sea la probabilidad de que se produzcan errores no detectados y mayor número de bits erróneos sean capaces de detectar. Vamos a revisar los principales sistemas que son: control de paridad, suma de comprobación y códigos de redundancia cíclica (CRC). Control de paridad Los errores en la transmisión se detectan utilizando uno o varios bits de paridad. Existen cuatro tipos de control de paridad: Par (Even). El número de bits de datos a 1 lógico más el bit de paridad debe ser par. Impar (Odd). El número de bits de datos a 1 lógico más el bit de paridad debe ser impar. Marca (Mark). El bit de paridad siempre vale 1. Espacio. El bit de paridad siempre vale 0.

Detección de errores Por ejemplo, para el carácter codificado en binario con el valor 0110 1111 la paridad par valdría 0 y la impar 1. Con este sistema el receptor sólo detectará un error en la transmisión si el número de bits que cambia como consecuencia de dicho error es impar. Ejemplo 2: Si el emisor envía el carácter 0110 1111 1 (impar) veamos qué ocurre en diferentes situaciones de error: Error en 5º bit: se recibe 0110 0111 0 detecta el error (cambia un bit) Error en 1º y 5º bit: se recibe 1110 0111 1 no detecta el error (cambian dos bits) De este modo, si fallaran los ocho bits de un carácter el error no se detectaría. Se trata por lo tanto de un sistema poco fiable que se suele relegar al nivel físico. Sin embargo, en los sistemas actuales la fiabilidad de la transmisión es tan alta que es improbable que se produzca más de un bit de error en el mismo byte, por lo que en muchos casos es una técnica aplicable.

Detección de errores Existen dos formas de aplicar el control de paridad, dependiendo de si se quiere obtener un bit de paridad por byte o un byte de comprobación completo para un bloque de datos: Paridad vertical (VRC = Vertical Redundancy Check). Consiste en obtener un bit de paridad para cada byte o carácter retransmitido. Paridad longitudinal u horizontal (LRC = Longitudinal Redundancy Check). Obtiene un byte de comprobación para un mensaje o bloque de datos completo. Cada bit se determina calculado la paridad de los bits de igual peso en cada uno de los bytes del mensaje. Ejemplo 3: Supongamos que se transmite el mensaje HOLA. En la tabla adjunta se calcula la paridad vertical y longitudinal impar. La paridad vertical (VRC) se obtiene para cada carácter, y la longitudinal (LRC) se calcula para todo el mensaje. En paridad longitudinal (LRC) no se detectan errores por alteración del orden de los bytes ( HOLA tendrá el mismo LRC que OHLA ).

Detección de errores Este sistema de detección es muy sencillo, el bit de paridad se puede obtener mediante la realización de operaciones XOR sobre los bits correspondientes (ve siguiete figura).

Detección de errores. Paridad Obtención de paridad mediante puertas XOR.

Suma de comprobación (Checksum) La suma de comprobación se emplea para obtener un campo de comprobación de errores para los diferentes datos que componen la trama. Para ello se suman todos los bytes a transmitir en un único registro de 8, 16 o 32 bits, dependiendo del tamaño deseado para el campo de comprobación. Si la suma supera el valor máximo del registro, el valor quedará truncado al número de bits empleado en el mismo. Ejemplo 4: Vamos a obtener la suma de comprobación de 8 bits para el mensaje ABCD. Para ello se sumarán los códigos ASCII correspondientes a cada carácter, que en decimal son: 65+66+67+68 = 266 (en binario 1 0000 1010) 10 (en binario 0000 1010) Puesto que la suma supera el valor máximo para 8 bits (255) el resultado se trunca a 8 bits. Este sistema presenta también algunos inconvenientes. En primer lugar, no se detectan errores por alteración de orden en los bytes de la trama (la suma de comprobación para ABCD es la misma que para BADC ).

Suma de comprobación (Checksum) Y en segundo, si se produce un fallo sistemático en un bit varios fallos lo pueden hacer parecer correcto, como se puede ver en el siguiente ejemplo: Ejemplo 5: Supongamos que calculamos la suma de comprobación de 8 bits para la trama de dos bytes: 01001001 01110010 Suma comprobación = 10111011 Si se producen dos fallos en b 7, el receptor recibirá: 11001001 11110010 Suma comprobación = 10111011 Que identificará como correcto. Esto se produce como consecuencia del efecto combinado de sumar dos errores en b 7 (128+128=256) que producen un desbordamiento en el registro de 8 bits cuyo valor (truncado a 8) coincide con el del mensaje original. Lo mismo ocurriría con cuatro errores en b 6, ocho en b 5, etc. No obstante, este sistema de detección es mucho más fiable que el control de paridad, y es muy empleado en redes de comunicación de datos por su simplicidad.

Códigos de redundancia cíclica Los sistemas de detección anteriores son apropiados para aplicaciones en las que se producen errores aleatorios de un solo bit. Cuando se presentan ráfagas de errores es necesario emplear técnicas más complejas. Una ráfaga de errores se define como el número de bits entre dos bits erróneos sucesivos, incluidos éstos. Además, para determinar la longitud de la ráfaga, el último bit erróneo de una ráfaga y el primero de la siguiente deben estar separados n bits, siendo n la longitud de la ráfaga. Los códigos de redundancia cíclica utilizan polinomios generadores para la obtención del campo de comprobación. La teoría matemática en que se basan queda fuera del alcance de este curso, por lo que nos limitaremos a describir su funcionamiento, que se puede resumir en: Se emplea aritmética de módulo 2 para las operaciones, por lo que la resta de polinomios equivale a una operación XOR. La obtención del campo de comprobación, denominado CRC o FCS (Frame Check Sequence) se puede realizar mediante operaciones XOR y desplazamientos.

Códigos de redundancia cíclica El mensaje de k bits a transmitir se representa por un polinomio M (x) de grado k-1, donde cada coeficiente representa un bit del mensaje: M (x)=b k x k 1 +b k 1 x k 2 + +b 0 x 0 Para generar el CRC se emplea un polinomio generador G(x) de grado n con los bits de mayor y menor peso a 1. G(x) tiene n+1 bits, siendo n el número de bits de CRC a generar, es decir, el polinomio generador tiene un bit más que el número de bits del campo de CRC que queramos obtener. Para el cálculo del campo de comprobación de CRC (o FCS) se realizan las siguientes operaciones: Añadir n ceros al final de del mensaje, representado por M (x), que equivale a multiplicar por x n : M (x) x n M (x) x n M ( x) Dividir por el polinomio generador: R( x), operación de la G( x) que se obtiene el resto R(x), que representa el campo de CRC.

Códigos de redundancia cíclica El emisor transmite T (x)=x n M (x) R(x), que representa el mensaje de datos al que se ha añadido el campo de CRC: T (x) contiene el mensaje en su parte de mayor peso y el CRC en los n bits de menor peso. Al haber restado R(x), T (x) es divisible por el generador G(x). Si no hay error se recibirá el mensaje transmitido, T (x). Como dicho mensaje es divisible por G(x), el receptor sólo tendrá que realizar la operación: T ( x) R' ( x) G( x) Si el resto obtenido es 0, la recepción ha sido correcta, si no, se habrá producido un error.

Códigos de redundancia cíclica Si hay error, se recibe T (x)+e (x) (mensaje más error), y como T (x) es divisible por G(x), el resto se debe a la componente de error E (x), por lo tanto, si E (x) es divisible por G(x) el error no se detecta. Por ejemplo, si el error es de un bit, E (x)=x i, y si G(x) tiene más de un término no puede dividir a E (x) y se detectan todos los errores de un bit. En general, un polinomio generador de n bits detectará: Todos los errores de 1 bit. Todos los errores de 2 bits. Todos los errores de bit en número impar. Todas las ráfagas de errores de longitud menor de n. La mayor parte de las ráfagas de errores mayor que n.

Códigos de redundancia cíclica La forma de representar el polinomio generador consiste en indicar las posiciones de los unos binarios como potencias de x. Algunos de los polinomios normalizados que se utilizan en comunicación de datos son: CRC-16: x 16 +x 15 + x 2 +1 CRC-CCITT: x 16 +x 12 +x 5 +1 CRC-32: x 32 +x 26 +x 23 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 + x 5 +x 4 +x 2 + x+1 CRC-16 y CRC-CCITT se utilizan mucho en redes de área extensa (WAN), y el CRC-32 se emplea redes de área local (LAN). La elección de este polinomio, puesto que determinará los tipos de errores que es posible detectar. A continuación se ilustra un ejemplo de cálculo del CRC siguiendo las indicaciones descritas con anterioridad:

Códigos de redundancia cíclica Ejemplo 6: Supongamos que se transmiten tramas de ocho bits por un enlace de datos empleando CRC como protocolo detector de errores. El polinomio generador es 11001 ( G(x)= x 4 +x 3 +1 ), vamos a ver: (a) Cómo generar el FCS/CRC. (b) Cómo comprobar el FCS en caso de recepción correcta y con ráfaga de error. El mensaje a enviar será: 10011001 ( M (x)=x 7 +x 4 + x 3 +1 ) (a) Para generar el FCS o CRC: 1. Añadimos cuatro ceros a M(x), que equivale a M (x) x 4 10011001 0000 2. Dividimos por G(x):

Códigos de redundancia cíclica Luego la trama transmitida será T (x)=m (x) x 4 R(x) 10011001 1101 (incluyendo el FCS).

Códigos de redundancia cíclica (b) A la recepción dividimos la trama por el polinomio generador:

Protocolos de Ventanas Deslizantes Los protocolos de ventanas deslizantes se utilizan para controlar el flujo de datos en protocolos de corrección hacia atrás (autodetectores). En estos sistemas, cuando se envía un paquete, el receptor responde con un código de reconocimiento ACK (Acknowledge) o un código de no reconocimiento NAK (paquete rechazado por existencia de error en el mismo). Cuando los retardos en la transmisión son importantes hay que establecer alguna modificación en esta mecánica. Supongamos el caso de una transmisión con un enlace vía satélite, en la que cada envío puede tener retardos de varios segundos; si para cada paquete de datos que enviamos hemos de esperar confirmación la eficiencia de uso del canal será bajísima, puesto que todo ese tiempo se podría haber aprovechado para enviar una gran cantidad de datos. En estos casos, en los que el retardo en la transmisión es elevado, se emplean los protocolos de ventanas deslizantes, que permiten enviar varios paquetes sin haber recibido el reconocimiento (ACK) de los anteriores. El funcionamiento se describe a continuación: Se define un tamaño de ventana, normalmente potencia de 2, que determina el número de mensajes a enviar sin haber recibido reconocimiento (ACK) del primero.

Protocolos de Ventanas Deslizantes Una vez enviados los paquetes de la ventana, en el momento que se reciba ACK del primer envío se transmitirá el siguiente paquete, cuando se reciba ACK del segundo se enviará el siguiente, y así sucesivamente, siempre manteniendo un máximo de n paquetes enviados en espera de confirmación, siendo n el tamaño de la ventana. En la figura se ilustra este funcionamiento con una ventana de tamaño 4.

Protocolos de Ventanas Deslizantes El emisor envía los mensajes 1 al 4 sin esperar ACK. Hasta que no llega ACK del primero no se envía el mensaje 5, cuando llegue ACK2 se envía el mensaje 6 y así sucesivamente con el resto de mensajes. Si por alguna causa uno de ellos se perdiera o no llegara el reconocimiento, por ejemplo para el mensaje 2, la ventana quedará bloqueada y se realizará el reenvío del mensaje 2 cuando venza un temporizador programado para detectar reconocimientos no recibidos (con un tiempo superior al de ida del mensaje más vuelta de ACK). Mientras tanto, se habrán recibido las confirmaciones para los mensajes 3, 4 y 5, de modo que en el momento que llegue la del mensaje 2, una vez realizado el reenvío, la ventana se desplazará cuatro posiciones, y se pasará a enviar los mensajes 6, 7 8 y 9.