6.1 Características funcionales dispositivos de comunicación
El propósito principal de
los medios de comunicación es, precisamente, comunicar, pero según su tipo de
ideología pueden especializarse en; informar, educar, transmitir, entretener,
formar opinión, enseñar, controlar, etc.
Positivas. Las características positivas de los medios de comunicación residen en que posibilitan que amplios contenidos de información lleguen a extendidos lugares del planeta en forma inmediata. Los medios de comunicación, de igual manera, hacen posible que muchas relaciones personales se mantengan unidas o, por lo menos, no desaparezcan por completo. Otro factor positivo se da en el ámbito económico: quien posea el uso de los medios puede generar un determinado tipo de consciencia sobre una especie de producto, es decir, puede generar su propia demanda, ya que los medios muchas veces cumplen la función de formadores de opinión. Entonces, visto desde el ámbito empresarial, es un aspecto ampliamente positivo al hacer posible el marketing y anuncios para el mundo.
Negativas. Las características negativas recaen en la manipulación de la información y el uso de la misma para intereses propios de un grupo específico. En muchos casos, tiende a formar estereotipos, seguidos por muchas personas gracias al alcance que adquiere el mensaje en su difusión (como sucede al generalizar personas o grupos).
Positivas. Las características positivas de los medios de comunicación residen en que posibilitan que amplios contenidos de información lleguen a extendidos lugares del planeta en forma inmediata. Los medios de comunicación, de igual manera, hacen posible que muchas relaciones personales se mantengan unidas o, por lo menos, no desaparezcan por completo. Otro factor positivo se da en el ámbito económico: quien posea el uso de los medios puede generar un determinado tipo de consciencia sobre una especie de producto, es decir, puede generar su propia demanda, ya que los medios muchas veces cumplen la función de formadores de opinión. Entonces, visto desde el ámbito empresarial, es un aspecto ampliamente positivo al hacer posible el marketing y anuncios para el mundo.
Negativas. Las características negativas recaen en la manipulación de la información y el uso de la misma para intereses propios de un grupo específico. En muchos casos, tiende a formar estereotipos, seguidos por muchas personas gracias al alcance que adquiere el mensaje en su difusión (como sucede al generalizar personas o grupos).
6.2 Interfaces
En telecomunicaciones y hardware, una
interfaz es el puerto (circuito físico) a través del que se envían o reciben
señales desde un sistema o subsistemas hacia otros. No existe una interfaz
universal, sino que existen diferentes estándares (Interfaz USB, interfaz SCSI,
etc.) que establecen especificaciones técnicas concretas (características
comunes), con lo que la interconexión sólo es posible utilizando la misma
interfaz en origen y destino. Así también, una interfaz puede ser definida como
un intérprete de condiciones externas al sistema, a través de transductores y
otros dispositivos, que permite una comunicación con actores externos, como
personas u otros sistemas, a través de un protocolo común a ambos. Una interfaz
es una Conexión física y funcional entre dos aparatos o sistemas
independientes.
La interfaz de E/S es requerida cuando los dispositivos son ejecutados por el procesador. La interfaz debe ser necesariamente lógica para interpretar la dirección de los dispositivos generados por el procesador. El Handshaking deberá ser implementado por la interfaz usando los comandos adecuados (BUSY, READY, WAIT…), y el procesador puede comunicarse con el dispositivo de E/S a través de la interfaz. Si se intercambian diferentes formatos de datos, la interfaz debe ser capaz de convertir datos en serie a paralelo y viceversa. Los dispositivos de E/S se comunican por interrupciones con el procesador, si una interrupción es recibida, el procesador la atenderá con la rutina de interrupción correspondiente a dicha interrupción.
Un ordenador que usa E/S mapeados en memoria por lectura y escritura accede al hardware a través de la posición de memoria especifica, usando el mismo lenguaje ensamblador que el procesador usa para el acceso a memoria.
Implementación de interfaces a alto nivel
Los sistemas operativos y lenguajes de programación de alto nivel facilitan el uso separado de más conceptos y primitivas abstractas de E/S. Por Ejemplo: la mayoría de sistemas operativos proporcionan aplicaciones con el concepto de fichero. Los lenguajes de programación C y C++, y los sistemas operativos de la familia UNIX, tradicionalmente abstraen ficheros y dispositivos como streams, los cuales pueden ser leídos o escritos, o ambas cosas. La librería estándar de C proporciona funciones para la manipulación de streams para E/S.
Aplicaciones De La Interfaz (Controlador de periférico)
Actualmente se usan multitud de interfaces o controladores para las conexiones entre el procesador y los distintos periféricos (cada uno de estos últimos suele tener su propio controlador). En ocasiones se puede interconectar los periféricos con la memoria principal directamente sin pasar por el procesador para lo cual se utilizan dispositivos más avanzados como los DMA que son procesadores dedicados a dichas transferencias.
La interfaz de E/S es requerida cuando los dispositivos son ejecutados por el procesador. La interfaz debe ser necesariamente lógica para interpretar la dirección de los dispositivos generados por el procesador. El Handshaking deberá ser implementado por la interfaz usando los comandos adecuados (BUSY, READY, WAIT…), y el procesador puede comunicarse con el dispositivo de E/S a través de la interfaz. Si se intercambian diferentes formatos de datos, la interfaz debe ser capaz de convertir datos en serie a paralelo y viceversa. Los dispositivos de E/S se comunican por interrupciones con el procesador, si una interrupción es recibida, el procesador la atenderá con la rutina de interrupción correspondiente a dicha interrupción.
Un ordenador que usa E/S mapeados en memoria por lectura y escritura accede al hardware a través de la posición de memoria especifica, usando el mismo lenguaje ensamblador que el procesador usa para el acceso a memoria.
Implementación de interfaces a alto nivel
Los sistemas operativos y lenguajes de programación de alto nivel facilitan el uso separado de más conceptos y primitivas abstractas de E/S. Por Ejemplo: la mayoría de sistemas operativos proporcionan aplicaciones con el concepto de fichero. Los lenguajes de programación C y C++, y los sistemas operativos de la familia UNIX, tradicionalmente abstraen ficheros y dispositivos como streams, los cuales pueden ser leídos o escritos, o ambas cosas. La librería estándar de C proporciona funciones para la manipulación de streams para E/S.
Aplicaciones De La Interfaz (Controlador de periférico)
Actualmente se usan multitud de interfaces o controladores para las conexiones entre el procesador y los distintos periféricos (cada uno de estos últimos suele tener su propio controlador). En ocasiones se puede interconectar los periféricos con la memoria principal directamente sin pasar por el procesador para lo cual se utilizan dispositivos más avanzados como los DMA que son procesadores dedicados a dichas transferencias.
6.3 Protocolos y estándares
un protocolo de comunicaciones es el conjunto de reglas normalizadas
para la representación, señalización, autenticación y detección de errores
necesario para enviar información a través de un canal de comunicación. Un
ejemplo de un protocolo de comunicaciones simple adaptado a la comunicación por
voz es el caso de un locutor de radio hablando a sus radioyentes.
Los protocolos de comunicación para la comunicación digital por redes de computadoras tienen características destinadas a asegurar un intercambio de datos fiable a través de un canal de comunicación imperfecto. Los protocolos de comunicación siguen ciertas reglas para que el sistema funcione apropiadamente
• Sintaxis: se especifica como son y cómo se construyen.
• Semántica: que significa cada comando o respuesta del protocolo respecto a sus parámetros/datos.
• Procedimientos de uso de esos mensajes: es lo que hay que programar realmente (los errores, como tratarlos).
Función De Un Protocolo
Cuando se realiza un intercambio de datos entre computadores, terminales y/u otros dispositivos se requieren las siguientes tareas: (similitud de conversación entre un profesor y un alumno)
1. El sistema fuente de información debe activar el camino directo de datos o bien proporcionar a la red de comunicación la identificación del sistema destino deseado. (....Señor Juan M.,...)
2. El sistema fuente debe asegurarse de que el destino está preparado para recibir los datos. (....Señor Juan M., míreme...)
3. La aplicación de transferencia de fichero en el origen debe asegurarse de que el programa gestor en el destino esta preparado para aceptar y almacenar el fichero para el usuario determinado. (....Señor Juan M., míreme..., Don José le estoy escuchando....)
4. Si los formatos de los ficheros son incompatibles uno de los sistemas deberá realizar una operación de adecuación. (....Señor Juan M., míreme..., Don José le estoy escuchando.... perdone pero tengo que acercarme para escucharle mejor).
Los protocolos de comunicación para la comunicación digital por redes de computadoras tienen características destinadas a asegurar un intercambio de datos fiable a través de un canal de comunicación imperfecto. Los protocolos de comunicación siguen ciertas reglas para que el sistema funcione apropiadamente
• Sintaxis: se especifica como son y cómo se construyen.
• Semántica: que significa cada comando o respuesta del protocolo respecto a sus parámetros/datos.
• Procedimientos de uso de esos mensajes: es lo que hay que programar realmente (los errores, como tratarlos).
Función De Un Protocolo
Cuando se realiza un intercambio de datos entre computadores, terminales y/u otros dispositivos se requieren las siguientes tareas: (similitud de conversación entre un profesor y un alumno)
1. El sistema fuente de información debe activar el camino directo de datos o bien proporcionar a la red de comunicación la identificación del sistema destino deseado. (....Señor Juan M.,...)
2. El sistema fuente debe asegurarse de que el destino está preparado para recibir los datos. (....Señor Juan M., míreme...)
3. La aplicación de transferencia de fichero en el origen debe asegurarse de que el programa gestor en el destino esta preparado para aceptar y almacenar el fichero para el usuario determinado. (....Señor Juan M., míreme..., Don José le estoy escuchando....)
4. Si los formatos de los ficheros son incompatibles uno de los sistemas deberá realizar una operación de adecuación. (....Señor Juan M., míreme..., Don José le estoy escuchando.... perdone pero tengo que acercarme para escucharle mejor).
6.3.1 estándares
X10: es un protocolo de comunicaciones para
el control remoto de dispositivos eléctricos. Utiliza la línea eléctrica (220V
o 110V) para transmitir señales de control entre equipos de automatización del
hogar en formato digital. El problema es que este protocolo ha tenido que ser
desestimado y ahora se utiliza el EIB.pl para la transmisión por la red
eléctrica. Los dispositivos X10 que se comercializan son solo para uso individual
y es complicado el enlazarlos para crear un autentico proyecto domótico. Las
señales de control de X10 se basan en la transmisión de ráfagas de pulsos de RF
(120 kHz) que representan información digital. Estos pulsos se sincronizan en
el cruce por cero de la señal de red (50 Hz ó 60 Hz). Con la presencia de un
pulso en un semiciclo y la ausencia del mismo en el semiciclo siguiente se
representa un '1' lógico y a la inversa se representa un '0'. A su vez, cada
orden se transmite 2 veces, con lo cual toda la información transmitida tiene
cuádruple redundancia. Cada orden involucra 11 ciclos de red (220ms para 50 Hz
y 183,33, para 60Hz). Primero se transmite una orden con el Código de Casa y el
Número de Módulo que direccionan el módulo en cuestión. Luego se transmite otro
orden con el código de función a realizar (Function Code). Hay 256 direcciones
soportadas por el protocolo.
KNX/EIB: Bus de Instalación Europeo con más de 20 años y más de 100 fabricantes de productos compatibles entre sí.
ZigBee: Es el nombre de la especificación de un conjunto de protocolos de alto nivel de comunicación inalámbrica para su utilización con radiodifusión digital de bajo consumo, basada en el estándar IEEE 802.15.4 de redes inalámbricas de área personal (wireless personal área network, WPAN). Su objetivo son las aplicaciones que requieren comunicaciones seguras con baja tasa de envío de datos y maximización de la vida útil de sus baterías. Protocolo estándar, recogido en el IEEE 802.15.4, de comunicaciones inalámbrico. Los protocolos ZigBee están definidos para su uso en aplicaciones encastradas con requerimientos muy bajos de transmisión de datos y consumo energético. Se pretende su uso en aplicaciones de propósito general con características auto organizativas y bajo costo (redes en malla, en concreto). Puede utilizarse para realizar control industrial, albergar sensores empotrados, recolectar datos médicos, ejercer labores de detección de humo o intrusos o domótica. La red en su conjunto utilizará una cantidad muy pequeña de energía de forma que cada dispositivo individual pueda tener una autonomía de hasta 5 años antes de necesitar un recambio en su sistema de alimentación.
OSGi: Open Services Gateway Initiative. Especificaciones abiertas de software que permita diseñar plataformas compatibles que puedan proporcionar múltiples servicios. Ha sido pensada para su compatibilidad con Jini o UPnP.
LonWorks: Plataforma estandarizada para el control de edificios, viviendas, industria y transporte.
Universal Plug and Play (UPnP): Arquitectura software abierta y distribuida que permite el intercambio de información y datos a los dispositivos conectados a una red.
KNX/EIB: Bus de Instalación Europeo con más de 20 años y más de 100 fabricantes de productos compatibles entre sí.
ZigBee: Es el nombre de la especificación de un conjunto de protocolos de alto nivel de comunicación inalámbrica para su utilización con radiodifusión digital de bajo consumo, basada en el estándar IEEE 802.15.4 de redes inalámbricas de área personal (wireless personal área network, WPAN). Su objetivo son las aplicaciones que requieren comunicaciones seguras con baja tasa de envío de datos y maximización de la vida útil de sus baterías. Protocolo estándar, recogido en el IEEE 802.15.4, de comunicaciones inalámbrico. Los protocolos ZigBee están definidos para su uso en aplicaciones encastradas con requerimientos muy bajos de transmisión de datos y consumo energético. Se pretende su uso en aplicaciones de propósito general con características auto organizativas y bajo costo (redes en malla, en concreto). Puede utilizarse para realizar control industrial, albergar sensores empotrados, recolectar datos médicos, ejercer labores de detección de humo o intrusos o domótica. La red en su conjunto utilizará una cantidad muy pequeña de energía de forma que cada dispositivo individual pueda tener una autonomía de hasta 5 años antes de necesitar un recambio en su sistema de alimentación.
OSGi: Open Services Gateway Initiative. Especificaciones abiertas de software que permita diseñar plataformas compatibles que puedan proporcionar múltiples servicios. Ha sido pensada para su compatibilidad con Jini o UPnP.
LonWorks: Plataforma estandarizada para el control de edificios, viviendas, industria y transporte.
Universal Plug and Play (UPnP): Arquitectura software abierta y distribuida que permite el intercambio de información y datos a los dispositivos conectados a una red.
6.4 Mecanismos de detección y corrección de errores
La detección y corrección de
errores se implementa bien en el nivel de enlace de datos o bien en el nivel de
transporte del modelo OSI
Tipos de errores.
Interferencias, calor, magnetismo, etc, influyen en una señal electromagnética, esos factores pueden alterar la forma o temporalidad de una señal. Si la señal transporta datos digitales, los cambios pueden modificar el significado de los datos. Los errores posibles son:
Error de bit
Únicamente un bit de una unidad de datos determinada cambia de 1 a 0 o viceversa.
Un error de bit altera el significado del dato. Son el tipo de error menos probable en una transmisión de datos serie, puesto que el intervalo de bit es muy breve (1/frecuencia) el ruido tiene que tener una duración muy breve. Sin embargo si puede ocurrir en una transmisión paralela, en que un cable puede sufrir una perturbación y alterar un bit de cada byte.
Error de ráfaga.
El error de ráfaga significa que dos o más bits de la unidad de datos han cambiado. Los errores de ráfaga no significa necesariamente que los errores se produzcan en bits consecutivos. La longitud de la ráfaga se mide desde el primero hasta el último bit correcto, algunos bits intermedios pueden estar bien.
Los errores de ráfaga es más probable en transmisiones serie, donde la duración del ruido es normalmente mayor que la duración de un bit, por lo que afectara a un conjunto de bits. El número dode bits afectados depende de la tasa de datos y de la duración del ruido.
Detección.
Se conocen el tipo de errores que pueden existir, el problema es ser capaz de reconocerlos, dado que no se puede comparar el dato recibido con el original, sólo se podría saber que ha habido un error cuando se descodifique todo el mensaje y se vea que no tiene sentido. Sin embargo existen determinadas técnicas sencillas y objetivas para detectar los errores producidos en la transmisión:
Redundancia.
La redundancia consiste en enviar dos veces cada unidad de datos, de forma que el dispositivo receptor puede hacer una comparación bit a bit entre ambos datos y detectar si ha habido errores, para corregirlos con el mecanismo apropiado. Esta técnica es muy exacta pero enlentece la transmisión.
Sin embargo el concepto es aplicable añadiendo al flujo de datos un grupo pequeño de bits al final de cada unidad, siendo estos bits redundantes con una parte de la información, esos bits redundantes se descartan una vez comprobada la integridad de la transmisión.
En las comunicaciones de datos se usan cuatro tipos de comprobación de redundancia: verificación de redundancia vertical (VRC, Vertical Redundancy Check) conocida como verificación de paridad, verificación de redundancia longitudinal (LRC longitudinal Redundancy Check), verificación de redundancia cíclica (CRC Cyclic Redundandy Check) y suma de comprobación (Checksum). Las tres primeras se implementan habitualmente en el nivel físico para que pueda usarlo en nivel de enlace de datos, mientras que la suma de comprobación se usa en los niveles más altos.
Verificación
de redundancia vertical VRC
Es el mecanismo más frecuente y barato, la VRC se denomina a menudo verificación de paridad, y se basa en añadir un bit de redundancia, denominado bit de paridad, al final de cada unidad de datos, de forma que el número total de unos en la unidad (incluyendo el bit de paridad) sea par, o impar en el caso de la verificación de paridad impar.
Esta técnica permite reconocer un error de un único bit, y también de ráfaga siempre que el número total de bits cambiados sea impar .La función de paridad (par o impar) suma el dato y devuelve la cantidad de unos que tiene el dato, comparando la paridad real (par o impar) con la esperada (par o impar).
Verificación de redundancia longitudinal LRC
En esta técnica, los bloques de bits se organizan en forma de tabla (filas y columnas), a continuación se calcula un bit de paridad para cada columna y se crea una nueva fila de bits, que serán los bits de paridad de todo el bloque, a continuación se añaden los bits de paridad al dato y se envían al receptor.
Típicamente los datos se agrupa en unidades de múltiplos de 8 -1 byte- (8, 16, 24,32 bits) la función coloca los octetos uno debajo de otro y calcula la paridad de los bits primeros, de los segundos, etc, generando otro octeto cuyo primer bit es el de paridad de todos los primeros bits, etc.
Esta técnica incrementa la probabilidad de detectar errores de ráfaga, ya que una LRC de n bits (n bits de paridad) puede detectar una ráfaga de más de n bits, sin embargo un patrón de ráfaga que dañe algunos bits de una unidad de datos y otros bits de otra unidad exactamente en la misma posición, el comprobador de LRC no detectará un error.
Verificación de redundancia cíclica CRC
A diferencia de las técnicas VRC y LRC, que se basan en la suma (para calcular la paridad), la técnica CRC se basa en la división binaria. En esta técnica, se añaden bits redundantes en la unidad de datos de forma que los todo el conjunto sea divisible exactamente por un número binario determinado, en el destino los datos recibidos son divididos por ese mismo número, si en ese caso no hay resto de la operación, el dato es aceptado, si apareciera un resto de la división, el dato se entendería que se ha corrompido y se rechazará.
La técnica añade unos bits de CRC, de la siguiente manera en tres pasos básicos: en primer lugar se añade una tira de n ceros, siendo n el número inmediatamente menor al número de bits del divisor predefinido (que tiene n+1 bits), el segundo paso es dividir la nueva unidad de datos por el divisor predefinido usando un proceso de división binaria, el resto que quedara sería los bits de CRC a añadir, el tercer paso es sustituir los n bits añadidos en el paso primero por los n bits del resto de la operación del segundo paso, el dato final será divisible exactamente por el divisor predefinido. La imagen muestra el esquema del proceso.
Sumas de comprobación.
Es el método de detección usado por los protocolos de alto nivel, se basa en el concepto de redundancia.
Generador de suma de comprobación.
En el emisor, el generador subdivide la unidad de datos en segmentos iguales de n bits (habitualmente n=16), estos segmentos se suman usando una aritmética de complemento a uno, de forma que la suma sea también n bits, a continuación se complementa la suma y ese dato complementado se añade al final de la unidad de datos original como bits de redundancia, la unidad extendida se transmite por la red.
Comprobador de suma de comprobación.
El receptor subdivide las unidades de datos en los mismos n bits, suma todos los segmentos (incluidos los bits de redundancia) y luego complementa el resultado, si la unidad de datos está intacta, el valor final que se obtiene es nulo (n bits 0), si en resultado no es cero, el paquete contiene un error y es rechazado.
Corrección de errores
Los mecanismos explicados detectan errores pero no los corrigen. La corrección del error se puede conseguir de dos formas, en la primera, cuando de descubre un error el receptor puede pedir al emisor que retransmita toda la unidad de datos, con la segunda, el receptor puede usar un código de corrección de errores que corrija automáticamente determinados errores. En teoría es posible corregir automáticamente cualquier error en un código binario, sin embargo los códigos de corrección son más sofisticados que los de detección y necesitan mas bits de redundancia, el número de bits necesarios es tan alto que su uso no es eficiente, por esa razón la mayoría de la corrección se limita a errores de tres bits o menos.
Corrección de errores de un único bit
El concepto de la corrección de errores se puede comprender con el caso más sencillo: el error de un único bit. Un error de un bit supone que un bit ha cambiado de un 0 a un 1 o de un 1 a un 0, para corregir el error, el receptor sólo tiene que invertir el valor del bit alterado, sin embargo, para hacer eso, el receptor debe saber en qué bit está el error, por lo que el secreto de la corrección de errores es localizar el bit o bits inválidos. La cuestión es el uso de los bits de redundancia para la corrección. Ahora bien ¿cuantos bits de redundancia usar?
Para calcular el número de bits de redundancia r necesarios para corregir un número de bits de datos m, es necesario encontrar una relación entre m y r.
Si a m de datos bits se le añaden r bits de redundancia, la unidad transmitida es m+r, los bits de redundancia r deben ser capaces de indicar todas las posibilidades de error de 1 bit posibles, incluyendo el no error, que en m+r bits es de m+r+1 posibilidades (no error, error en bit0, error en bit 1, etc), por ello r debe ser capaz de indicar todas esos estados. Dado que los r bits pueden representar 2r estados, entonces r debe ser tal que 2r ≥m + r + 1.
Tipos de errores.
Interferencias, calor, magnetismo, etc, influyen en una señal electromagnética, esos factores pueden alterar la forma o temporalidad de una señal. Si la señal transporta datos digitales, los cambios pueden modificar el significado de los datos. Los errores posibles son:
Error de bit
Únicamente un bit de una unidad de datos determinada cambia de 1 a 0 o viceversa.
Un error de bit altera el significado del dato. Son el tipo de error menos probable en una transmisión de datos serie, puesto que el intervalo de bit es muy breve (1/frecuencia) el ruido tiene que tener una duración muy breve. Sin embargo si puede ocurrir en una transmisión paralela, en que un cable puede sufrir una perturbación y alterar un bit de cada byte.
Error de ráfaga.
El error de ráfaga significa que dos o más bits de la unidad de datos han cambiado. Los errores de ráfaga no significa necesariamente que los errores se produzcan en bits consecutivos. La longitud de la ráfaga se mide desde el primero hasta el último bit correcto, algunos bits intermedios pueden estar bien.
Los errores de ráfaga es más probable en transmisiones serie, donde la duración del ruido es normalmente mayor que la duración de un bit, por lo que afectara a un conjunto de bits. El número dode bits afectados depende de la tasa de datos y de la duración del ruido.
Detección.
Se conocen el tipo de errores que pueden existir, el problema es ser capaz de reconocerlos, dado que no se puede comparar el dato recibido con el original, sólo se podría saber que ha habido un error cuando se descodifique todo el mensaje y se vea que no tiene sentido. Sin embargo existen determinadas técnicas sencillas y objetivas para detectar los errores producidos en la transmisión:
Redundancia.
La redundancia consiste en enviar dos veces cada unidad de datos, de forma que el dispositivo receptor puede hacer una comparación bit a bit entre ambos datos y detectar si ha habido errores, para corregirlos con el mecanismo apropiado. Esta técnica es muy exacta pero enlentece la transmisión.
Sin embargo el concepto es aplicable añadiendo al flujo de datos un grupo pequeño de bits al final de cada unidad, siendo estos bits redundantes con una parte de la información, esos bits redundantes se descartan una vez comprobada la integridad de la transmisión.
En las comunicaciones de datos se usan cuatro tipos de comprobación de redundancia: verificación de redundancia vertical (VRC, Vertical Redundancy Check) conocida como verificación de paridad, verificación de redundancia longitudinal (LRC longitudinal Redundancy Check), verificación de redundancia cíclica (CRC Cyclic Redundandy Check) y suma de comprobación (Checksum). Las tres primeras se implementan habitualmente en el nivel físico para que pueda usarlo en nivel de enlace de datos, mientras que la suma de comprobación se usa en los niveles más altos.
Verificación
de redundancia vertical VRC
Es el mecanismo más frecuente y barato, la VRC se denomina a menudo verificación de paridad, y se basa en añadir un bit de redundancia, denominado bit de paridad, al final de cada unidad de datos, de forma que el número total de unos en la unidad (incluyendo el bit de paridad) sea par, o impar en el caso de la verificación de paridad impar.
Esta técnica permite reconocer un error de un único bit, y también de ráfaga siempre que el número total de bits cambiados sea impar .La función de paridad (par o impar) suma el dato y devuelve la cantidad de unos que tiene el dato, comparando la paridad real (par o impar) con la esperada (par o impar).
Verificación de redundancia longitudinal LRC
En esta técnica, los bloques de bits se organizan en forma de tabla (filas y columnas), a continuación se calcula un bit de paridad para cada columna y se crea una nueva fila de bits, que serán los bits de paridad de todo el bloque, a continuación se añaden los bits de paridad al dato y se envían al receptor.
Típicamente los datos se agrupa en unidades de múltiplos de 8 -1 byte- (8, 16, 24,32 bits) la función coloca los octetos uno debajo de otro y calcula la paridad de los bits primeros, de los segundos, etc, generando otro octeto cuyo primer bit es el de paridad de todos los primeros bits, etc.
Esta técnica incrementa la probabilidad de detectar errores de ráfaga, ya que una LRC de n bits (n bits de paridad) puede detectar una ráfaga de más de n bits, sin embargo un patrón de ráfaga que dañe algunos bits de una unidad de datos y otros bits de otra unidad exactamente en la misma posición, el comprobador de LRC no detectará un error.
Verificación de redundancia cíclica CRC
A diferencia de las técnicas VRC y LRC, que se basan en la suma (para calcular la paridad), la técnica CRC se basa en la división binaria. En esta técnica, se añaden bits redundantes en la unidad de datos de forma que los todo el conjunto sea divisible exactamente por un número binario determinado, en el destino los datos recibidos son divididos por ese mismo número, si en ese caso no hay resto de la operación, el dato es aceptado, si apareciera un resto de la división, el dato se entendería que se ha corrompido y se rechazará.
La técnica añade unos bits de CRC, de la siguiente manera en tres pasos básicos: en primer lugar se añade una tira de n ceros, siendo n el número inmediatamente menor al número de bits del divisor predefinido (que tiene n+1 bits), el segundo paso es dividir la nueva unidad de datos por el divisor predefinido usando un proceso de división binaria, el resto que quedara sería los bits de CRC a añadir, el tercer paso es sustituir los n bits añadidos en el paso primero por los n bits del resto de la operación del segundo paso, el dato final será divisible exactamente por el divisor predefinido. La imagen muestra el esquema del proceso.
Sumas de comprobación.
Es el método de detección usado por los protocolos de alto nivel, se basa en el concepto de redundancia.
Generador de suma de comprobación.
En el emisor, el generador subdivide la unidad de datos en segmentos iguales de n bits (habitualmente n=16), estos segmentos se suman usando una aritmética de complemento a uno, de forma que la suma sea también n bits, a continuación se complementa la suma y ese dato complementado se añade al final de la unidad de datos original como bits de redundancia, la unidad extendida se transmite por la red.
Comprobador de suma de comprobación.
El receptor subdivide las unidades de datos en los mismos n bits, suma todos los segmentos (incluidos los bits de redundancia) y luego complementa el resultado, si la unidad de datos está intacta, el valor final que se obtiene es nulo (n bits 0), si en resultado no es cero, el paquete contiene un error y es rechazado.
Corrección de errores
Los mecanismos explicados detectan errores pero no los corrigen. La corrección del error se puede conseguir de dos formas, en la primera, cuando de descubre un error el receptor puede pedir al emisor que retransmita toda la unidad de datos, con la segunda, el receptor puede usar un código de corrección de errores que corrija automáticamente determinados errores. En teoría es posible corregir automáticamente cualquier error en un código binario, sin embargo los códigos de corrección son más sofisticados que los de detección y necesitan mas bits de redundancia, el número de bits necesarios es tan alto que su uso no es eficiente, por esa razón la mayoría de la corrección se limita a errores de tres bits o menos.
Corrección de errores de un único bit
El concepto de la corrección de errores se puede comprender con el caso más sencillo: el error de un único bit. Un error de un bit supone que un bit ha cambiado de un 0 a un 1 o de un 1 a un 0, para corregir el error, el receptor sólo tiene que invertir el valor del bit alterado, sin embargo, para hacer eso, el receptor debe saber en qué bit está el error, por lo que el secreto de la corrección de errores es localizar el bit o bits inválidos. La cuestión es el uso de los bits de redundancia para la corrección. Ahora bien ¿cuantos bits de redundancia usar?
Para calcular el número de bits de redundancia r necesarios para corregir un número de bits de datos m, es necesario encontrar una relación entre m y r.
Si a m de datos bits se le añaden r bits de redundancia, la unidad transmitida es m+r, los bits de redundancia r deben ser capaces de indicar todas las posibilidades de error de 1 bit posibles, incluyendo el no error, que en m+r bits es de m+r+1 posibilidades (no error, error en bit0, error en bit 1, etc), por ello r debe ser capaz de indicar todas esos estados. Dado que los r bits pueden representar 2r estados, entonces r debe ser tal que 2r ≥m + r + 1.
Código Hamming
Se pueden utilizar los bits de redundancia para corregir errores, pero ¿cómo se manipulan esos bits para descubrir en qué posición se ha producido el error? R. W. Hamming desarrolló una técnica que proporciona una solución práctica. El código Hamming se puede aplicar a unidades de datos de cualquier longitud y usa la relación de bits de datos y de redundancia. En el código cada bit r es el bit de VRC (redundancia vertical) para una combinación de bits de datos. Por ejemplo, un dato de 7 bits necesita 4 bits de redundancia, los colocaremos en las posiciones 1, 2, 4 y 8, con lo que la secuencia transmitida es la que indica la figura.
Detección y corrección.
El receptor recibe la transmisión, toma los datos y recalcula cuatro nuevos VRC usando el mismo conjunto de bits usados en el cálculo en el emisor, a continuación reensambla los nuevos valores de paridad siguiendo el orden de la posición (r8, r4, r2, r1) la cifra resultante indica si ha habido error y en qué bit se ha producido. Si el resultado es 0000 no ha habido error, cualquier otro resultado indica error y bit erróneo. Una vez identificado el bit erróneo, el receptor puede cambiar el valor de ese bit para corregir el error.
Corrección de errores de ráfaga.
Se puede diseñar un código Hamming para corregir errores de ráfaga de una cierta longitud, sin embargo el número de bits de redundancia necesarios es muy elevado, porque los errores pueden ser de tantos bits pero pueden estar en cualquiera de los bits de la cadena transmitid.
Se pueden utilizar los bits de redundancia para corregir errores, pero ¿cómo se manipulan esos bits para descubrir en qué posición se ha producido el error? R. W. Hamming desarrolló una técnica que proporciona una solución práctica. El código Hamming se puede aplicar a unidades de datos de cualquier longitud y usa la relación de bits de datos y de redundancia. En el código cada bit r es el bit de VRC (redundancia vertical) para una combinación de bits de datos. Por ejemplo, un dato de 7 bits necesita 4 bits de redundancia, los colocaremos en las posiciones 1, 2, 4 y 8, con lo que la secuencia transmitida es la que indica la figura.
Detección y corrección.
El receptor recibe la transmisión, toma los datos y recalcula cuatro nuevos VRC usando el mismo conjunto de bits usados en el cálculo en el emisor, a continuación reensambla los nuevos valores de paridad siguiendo el orden de la posición (r8, r4, r2, r1) la cifra resultante indica si ha habido error y en qué bit se ha producido. Si el resultado es 0000 no ha habido error, cualquier otro resultado indica error y bit erróneo. Una vez identificado el bit erróneo, el receptor puede cambiar el valor de ese bit para corregir el error.
Corrección de errores de ráfaga.
Se puede diseñar un código Hamming para corregir errores de ráfaga de una cierta longitud, sin embargo el número de bits de redundancia necesarios es muy elevado, porque los errores pueden ser de tantos bits pero pueden estar en cualquiera de los bits de la cadena transmitid.