2. Este estudio se enfoca en los algoritmos para lograr una comunicación confiable y eficiente
de unidades completas de información llamadas tramas (en vez de bits individuales, como en
la capa física) entre dos máquinas adyacentes.
Por adyacente, queremos decir que las dos máquinas están conectadas mediante un canal
de comunicaciones que actúa de manera conceptual como un alambre.
La propiedad esencial de un canal que lo hace asemejarse a un “alambre” es que los bits se
entregan exactamente en el mismo orden en que se enviaron
Cable coaxial
Cable de línea
telefónica
3. CUESTIONES DE DISEÑO DE LA CAPA DE ENLACE DE DATOS
La capa de enlace de datos utiliza los servicios de la capa física para enviar y recibir bits a
través de los canales de comunicación. Tiene varias funciones específicas, entre las que se
incluyen:
1. Proporcionar a la capa de red una interfaz de servicio bien definida.
2. Manejar los errores de transmisión
3. Regular el flujo de datos para que los emisores rápidos no saturen a los receptores
lentos.
Para cumplir con estas metas, la capa de enlace de datos toma los paquetes que obtiene
de la capa de red y los encapsula en tramas para transmitirlos. Cada trama contiene un
encabezado, un campo de carga útil para almacenar el paquete y un terminador, como
se muestra en la figura 3-1. El manejo de las tramas es la tarea más importante de la capa
de enlace de datos. En las siguientes secciones examinaremos
en detalle todos los aspectos antes mencionados.
5. Servicios proporcionados a la
capa de red
La función de la capa de enlace de datos es proveer servicios a la capa de red. El servicio
principal es la transferencia de datos de la capa de red en la máquina de origen, a la capa de
red en la máquina de destino. En la capa de red de la máquina de origen está una entidad,
llamada proceso, que entrega algunos bits a la capa de enlace de datos para que los
transmita al destino.
(a) Comunicación virtual. (b)
Comunicación real.
6. Los servicios reales ofrecidos varían de un protocolo a otro. Tres posibilidades
razonables que normalmente se proporcionan son:
Servicio sin conexión ni confirmación de recepción.
Servicio sin conexión con confirmación de recepción.
Servicio orientado a conexión con confirmación de recepción.
El servicio sin conexión ni confirmación de recepción consiste en hacer que la
máquina de origen envíe tramas independientes a la máquina de destino sin que
ésta confirme la recepción.
Cuando se ofrece este servicio tampoco se utilizan conexiones lógicas, pero se
confirma de manera individual la recepción de cada trama enviada.
Recapitulando el servicio más sofisticado que puede proveer la capa de enlace de
datos a la capa de redes el servicio orientado a conexión. Con este servicio, las
máquinas de origen y de destino establecen unaconexión antes de transferir datos.
7. Entramado
Para proveer servicio a la capa de red, la capa de enlace de datos debe usar el servicio que la capa física le
proporciona. Lo que hace la capa física es aceptar un flujo de bits puros y tratar de entregarlo al destino. Si el
canal es ruidoso, como en la mayoría de los enlaces inalámbricos y en algunos alámbricos, la capa física agregará
cierta redundancia a sus señales para reducir la tasa de error de bits a un nivel tolerable.
Es más difícil dividir el flujo de bits en tramas de lo que parece a simple vista. Un buen diseño debe facilitar a un
receptor el proceso de encontrar el inicio de las nuevas tramas al tiempo que utiliza una pequeña parte del
ancho de banda del canal. En esta sección veremos cuatro métodos:
1. Conteo de bytes.
2. Bytes bandera con relleno de bytes.
3. Bits bandera con relleno de bits.
4. Violaciones de codificación de la capa física.
8. El primer método de entramado se vale de
un campo en el encabezado para
especificar el número de bytes en la trama.
Cuando la capa de enlace de datos del
destino ve el conteo de bytes, sabe
cuántos bytes siguen y, por lo tanto, dónde
concluye la trama.
9. IN DEPTH
Venus has a beautiful name and is the
second planet from the Sun. It’s
terribly hot—even hotter than
Mercury—and its atmosphere is
extremely poisonous. It’s the second-
brightest natural object in the night
sky after the Moon
VENUS
10. El tercer método de delimitar el flujo de bits resuelve una desventaja del relleno de bytes: que está
obligado a usar bytes de 8 bits. También se puede realizar el entramado a nivel de bit, de modo que las
tramas puedan contener un número arbitrario de bits compuesto por unidades de cualquier tamaño.
Esto se desarrolló para el protocolo HDLC (Control de Enlace de Datos de Alto Nivel, del inglés High-
level Data Link Control), que alguna vez fue muy popular. Cada trama empieza y termina con un patrón
de bits especial, 01111110 o 0x7E en hexadecimal.
Relleno de bits. (a) Los datos
originales.
(b) Los datos, según aparecen en la
línea.
(c) Los datos, como se almacenan en
la memoria del receptor después de
quitar el relleno.
11. Control de errores
Una vez resuelto el problema de
marcar el inicio y el fin de cada
trama, llegamos al siguiente
dilema: cómo asegurar que todas
las tramas realmente se
entreguen en el orden apropiado
a la capa de red del destino.
Suponga por un momento que el
receptor puede saber si una
trama que recibe contiene la
información correcta o errónea
Para un servicio sin conexión
ni confirmación de recepción
sería ideal si el emisor
siguiera enviando tramas sin
importarle si llegan en forma
adecuada. Pero para un
servicio confiable orientado
a conexión no sería nada
bueno.
Una complicación adicional surge
de la posibilidad de que los
problemas de hardware causen la
desaparición de una trama
completa (por ejemplo, por una
ráfaga de ruido). En este caso, el
receptor no reaccionará en
absoluto, ya que no tiene razón
para reaccionar. De manera similar,
si se pierde la trama de
confirmación de recepción, el
emisor no sabrá cómo proceder.
12. CONTROL DE FLUJO
Otro tema de diseño importante que se presenta en la capa de enlace de datos (y también en las capas superiores)
es qué hacer con un emisor que quiere transmitir tramas de manera sistemática y a mayor velocidad que aquella
con que puede aceptarlos el receptor. Esta situación puede ocurrir cuando el emisor opera en una computadora
rápida y el receptor trabaja en una máquina lenta. Es obvio que tiene que hacerse algo para evitar esta situación.
Por lo general, se utilizan dos métodos. En el primero, el control de flujo basado en retroalimentación, el receptor
regresa información al emisor para autorizarle que envíe más datos o por lo menos indicarle su estado. En el
segundo, el control de flujo basado en tasa, el protocolo tiene un mecanismo integrado que limita la tasa a la que
el emisor puede transmitir los datos, sin recurrir a la retroalimentación por parte del receptor.
DETECCIÓN Y CORRECCIÓN DE ERRORES
Los diseñadores de redes han desarrollado dos estrategias básicas para manejar los errores. Ambas
añaden información redundante a los datos que se envían. Una es incluir suficiente información
redundante para que el receptor pueda deducir cuáles debieron ser los datos transmitidos. La otra
estrategia es incluir sólo suficiente redundancia para permitir que el receptor sepa que ha ocurrido un
error (pero no qué error) y entonces solicite una retransmisión. La primera estrategia utiliza códigos de
corrección de errores; la segunda usa códigos de detección de errores. El uso de códigos de corrección de
errores por lo regular se conoce como FEC (Corrección de Errores hacia Adelante, del inglés Forward Error
Correction).
13. Códigos de corrección de errores
Analizaremos cuatro códigos de corrección de errores:
Códigos de Hamming.
Códigos convolucionales binarios.
Códigos de Reed-Solomon.
Códigos de verificación de paridad de baja densidad.
La tasa de código, o simplemente tasa, es la fracción de la palabra codificada que lleva
información no redundante, o m/n. Las tasas que se utilizan en la práctica varían mucho.
Podrían ser 1/2 para un canal ruidoso, en cuyo caso la mitad de la información recibida
es redundante, o podrían estar cerca de 1 para un canal de alta calidad, en donde sólo se
agrega un pequeño número de bits de verificación a un mensaje extenso.
14. La cantidad de posiciones de bits en la que difieren dos palabras codificadas se llama distancia
de Hamming (Hamming, 1950). Su significado es que, si dos palabras codificadas están
separadas una distancia de Hamming d, se requerirán de errores de un solo bit para convertir
una en la otra. Dado el algoritmo para calcular los bits de verificación, es posible construir una
lista completa de las palabras codificadas válidas, y a partir de esta lista se pueden encontrar las
dos palabras codificadas con la menor distancia de Hamming. Esta distancia es la distancia de
Hamming del código completo.
Este código tiene una distancia de 5, lo cual significa que puede corregir errores
dobles o detectar errores cuádruples. Si llega la palabra codificada 0000000111 y
esperamos sólo errores de uno o dos bits, el receptor sabrá que la palabra original
debió haber sido 0000011111. Pero si un error triple cambia 0000000000 a
0000000111, el error no se corregirá en forma apropiada.
15. Imagine que deseamos diseñar un código con m bits de mensaje y r bits de verificación que
permitirá la corrección de todos los errores individuales. Cada uno de los 2m mensajes válidos
tiene n palabras codificadas inválidas a una distancia 1 de él. Éstas se forman invirtiendo de
manera sistemática cada uno de los n bits de la palabra codificada de n bits que la conforman.
Por lo tanto, cada uno de los 2m mensajes válidos requiere n 1 1 patrones de bits dedicados a
él. Dado que la cantidad total de patrones de bits es 2n , debemos tener (n 1 1)2m ≤ 2n . Si
usamos n 1 m 1 r, este requisito se vuelve
Dado el valor de m, esto impone un límite inferior a la cantidad de bits de verificación necesarios
para corregir errores individuales.
16. De hecho, este límite inferior teórico puede lograrse mediante el uso de un método desarrollado por
Hamming (1950). En los códigos de Hamming, los bits de la palabra codificada se numeran en forma
consecutiva, comenzando por el bit 1 a la izquierda, el bit 2 a su derecha inmediata, etc. Los bits que son
potencias de 2 (1, 2, 4, 8, 16, etc.) son bits de verificación. El resto (3, 5, 6, 7, 9, etc.) se rellenan con los m
bits de datos. El patrón se muestra para un código de Hamming (11,7) con 7 bits de datos y 4 bits de
verificación en la figura 3-6. Cada bit de verificación obliga a que la suma módulo 2, o paridad de un grupo
de bits, incluyéndolo a él mismo, sea par (o impar). Un bit puede estar incluido en varios cálculos de bits de
verificación. Para ver a qué bits de verificación contribuye el bit de datos en la posición k, reescriba k como
una suma de potencias de 2. Por ejemplo, 11 5 1 1 2 1 8 y 29 5 1 1 4 1 8 1 16. Un bit es verificado
solamente por los bits de verificación que ocurren en su expansión (por ejemplo, el bit 11 es verificado por
los bits 1, 2 y 8). En el ejemplo se calculan los bits de verificación para las sumas con paridad par de un
mensaje que contiene la letra “A” del código ASCII.
17. Los códigos convolucionales se utilizan mucho en las redes implementadas; por ejemplo,
como parte del sistema de telefonía móvil GSM, en las comunicaciones de satélite y en 802.11.
Como ejemplo, en la figura 3-7 se muestra un código convolucional popular. Este código se
conoce como código convolucional NASA de r 5 1/2 y k 5 7, ya que se utilizó por primera vez
en las misiones espaciales del Voyager a partir de 1977. Desde entonces se ha reutilizado
libremente, por ejemplo, como parte de las redes 802.11.
18. Códigos de detección de errores
Los códigos de corrección de errores se utilizan de manera amplia en los enlaces inalámbricos,
que son notoriamente más ruidosos y propensos a errores si se les compara con la fibra óptica.
Sin los códigos de corrección de errores sería difícil hacer pasar cualquier cosa. Sin embargo, a
través de la fibra óptica o del cable de cobre de alta calidad, la tasa de error es mucho más baja,
por lo que la detección de errores y la retransmisión por lo general son más eficientes para
manejar un error ocasional.
En esta sección examinaremos tres códigos de detección de errores distintos. Todos son códigos
de bloques sistemáticos lineales:
1. Paridad.
2. Sumas de verificación.
3. Pruebas de Redundancia Cíclica (CRC).
19. Un problema con este esquema es que un bit de paridad sólo
puede detectar de manera confiable un error de un solo bit en el
bloque. Si el bloque está muy confuso debido a una ráfaga de
errores larga, la probabilidad de detectar ese error es sólo de 0.5,
lo cual es difícilmente aceptable. Es posible aumentar la
probabilidad de manera considerable si cada bloque a enviar se
trata como una matriz rectangular de n bits de ancho por k bits de
alto. Ahora, si calculamos y enviamos un bit de paridad para cada
fila, se detectarán de manera confiable errores de hasta k bits
siempre y cuando haya a lo mucho un error por fila. Pero hay algo
más que podemos hacer para ofrecer una mejor protección contra
los errores: calcular los bits de paridad sobre los datos en un orden
distinto al que se transmiten los bits de datos. A este proceso se le
denomina intercalado. En este caso, calculamos un bit de paridad
para cada una de las n columnas y enviamos todos los bits de
datos como k filas; para ello enviamos las filas de arriba hacia
abajo y los bits en cada fila de izquierda a derecha de la manera
usual. En la última fila enviamos los n bits de paridad. Este orden
de transmisión se muestra en la figura 3-8 para n 5 7 y k 5 7.
20. El intercalado es una técnica general para convertir un código que detecta (o corrige) los errores
aislados en uno que detecta (o corrige) los errores de ráfaga.
Cuando en la figura 3-8 ocurre un error de ráfaga de longitud n 5 7, los bits con error se esparcen
a través de distintas columnas (un error de ráfaga no implica que todos esos bits estén mal; sólo
implica que por lo menos el primero y el último están mal.
En la figura 3-8, se voltearon 4 bits en un rango de 7 bits). Por lo menos 1 bit en cada una de las n
columnas se verá afectado, de modo que los bits de paridad en esas columnas detectarán el error.
Este método usa n bits de paridad en bloques de kn bits de datos para detectar un solo error de
ráfaga de longitud n o menor.
21. Sin embargo, una ráfaga de longitud n 1 1 pasará sin ser detectada si el
primer bit está invertido, el último bit está invertido y todos los demás bits
son correctos. Si el bloque está muy alterado por una ráfaga continua o por
múltiples ráfagas más cortas, la probabilidad de que cualquiera de las n
columnas tenga por accidente la paridad correcta es de 0.5, por lo que la
probabilidad de aceptar un bloque alterado cuando no se debe es de 22n .
El segundo tipo de código de detección de errores, la suma de verificación,
está muy relacionado con los grupos de bits de paridad. La palabra “suma de
verificación” se utiliza con frecuencia para indicar un grupo de bits de
verificación asociados con un mensaje, sin importar cómo se calculen. Un
grupo de bits de paridad es un ejemplo de una suma de verificación. Sin
embargo, hay otras sumas de verificación más poderosas basadas en la suma
acumulada de los bits de datos del mensaje. Por lo general la suma de
verificación se coloca al final del mensaje, como el complemento de la
función de suma. De esta forma, los errores se pueden detectar al sumar
toda la palabra codificada recibida, tanto los bits de datos como la suma de
verificación. Si el resultado es cero, no se ha detectado ningún error.
22. Un ejemplo es la suma de verificación de Internet de 16 bits que se utiliza en
todos los paquetes de Internet como parte del protocolo IP (Braden y
colaboradores, 1988). Esta suma de verificación es una suma de los bits del
mensaje divididos en palabras de 16 bits. Como este método opera sobre
palabras en vez de bits, como en la paridad, los errores que no modifican la
paridad de todas formas pueden alterar la suma y ser detectados. Por ejemplo,
si el bit de menor orden en dos palabras distintas se voltea de 0 a 1, una
verificación de paridad a lo largo de estos bits no podría detectar un error. Sin
embargo, se agregarán dos 1s a la suma de verificación de 16 bits para producir
un resultado distinto. Entonces se podrá detectar el error.
23. Ahora analizaremos el alcance de este método. ¿Qué
tipos de errores se detectarán? Imagine que ocurre un
error de transmisión tal que en lugar de que llegue la
cadena de bits para T(x), llega T(x) 1 E(x). Cada bit 1 en
E(x) corresponde a un bit que ha sido invertido. Si hay k
bits 1 en E(x), han ocurrido k errores de un solo bit. Una
ráfaga de errores individual se caracteriza por un 1
inicial, una mezcla de ceros y unos, y un 1 final, siendo
los demás bits 0. Al recibir la trama con suma de
verificación, el receptor la divide entre G(x); es decir,
calcula [T(x) 1 E(x)]/G(x). T(x)/G(x) es 0, por lo que el
resultado del cálculo es simplemente E(x)/G(x). No se
detectarán los errores que por casualidad
correspondan a polinomios que contengan G(x) como
factor; todos los demás errores serán detectados. Si ha
ocurrido un error de un solo bit, E(x) 5 xi , donde i
determina qué bit es erróneo. Si G(x) contiene dos o
más términos, nunca será divisor exacto de E(x), por lo
que se detectarán los errores de un solo bit.
24. CREDITS: This presentation template was created by Slidesgo,
including icons by Flaticon, and infographics & images by
Freepik.
Please keep this slide for attribution.
GRACIAS ☺
Nombre: Cervantes Palacios Sofía
Curso: 1-6