Вы находитесь на странице: 1из 53

Libro traducción capítulo 2

2.1 PERSPECTIVAS DE CONEXIÓN


Como vimos en el Capítulo 1, las redes se construyen a partir de dos clases de bloques
de construcción de hardware: nodos y enlaces. En este capítulo, nos centramos en lo que
se necesita para hacer un enlace útil, de modo que se puedan construir redes grandes y
confiables que contengan millones de enlaces.
Mientras que los operadores de redes grandes manejan enlaces que abarcan cientos o
miles de kilómetros que conectan enrutadores del tamaño de un refrigerador, el usuario
típico de una red encuentra enlaces principalmente como una forma de conectar una
computadora a Internet global.

A veces, este enlace será un enlace inalámbrico (Wi-Fi) en una cafetería; a veces
es un enlace Ethernet en un edificio de oficinas o universidad; para un sector cada
vez más grande (y afortunado) de la población, es un enlace de fibra óptica
provisto por una compañía de telecomunicaciones o ISP; y muchos otros utilizan
algún tipo de cable de cobre o cable para conectarse. Afortunadamente, existen
muchas estrategias comunes que se utilizan en estos tipos de enlaces
aparentemente dispares para que todos puedan ser confiables y útiles para los
jugadores de alto nivel en la pila de pilotos. Este capítulo examinará esas
estrategias.

La Figura 2.1 ilustra varios tipos de enlaces vistos por un usuario final típico de
Internet de hoy. A la izquierda, vemos una variedad de dispositivos para el usuario
final que van desde teléfonos móviles hasta PDA, computadoras de pleno
rendimiento conectadas por diversos medios a un proveedor de servicios de
Internet. Si bien esos enlaces pueden ser de cualquier tipo mencionado
anteriormente, o de otro tipo, todos se ven iguales en esta imagen, una línea recta
que conecta un dispositivo a un enrutador. Además, hay algunos enlaces que
conectan a los enrutadores dentro del ISP y un enlace que conecta al ISP con el
“resto de Internet”, que consta de muchos otros ISP y los hosts a los que se
conectan. Todos estos enlaces se parecen, no solo porque no somos muy buenos
artistas, sino también porque parte de la función de una arquitectura de red (como
se explica en la Sección 1.3) es proporcionar una abstracción común de algo tan
complejo y diverso como un enlace. La idea es que su computadora portátil o
teléfono inteligente no tiene que preocuparse por el tipo de enlace al que está
conectado, lo único que importa es que tiene un enlace de internet.
Imagen de una red …..

De manera similar, un enrutador no tiene que preocuparse de qué tipo de enlace lo


conecta a otros enrutadores: puede enviar un paquete en el enlace con una expectativa
bastante buena de que el paquete llegará al otro extremo del enlace.
¿Cómo podemos hacer que todos estos diferentes tipos de enlaces se vean lo
suficientemente parecidos para los usuarios finales y los enrutadores? Esencialmente,
tenemos que lidiar con todas las limitaciones físicas y las deficiencias de los enlaces que
existen en el mundo real. Esbozamos algunos de estos problemas en la declaración del
problema de apertura de este capítulo. El primer problema es que los enlaces están
hechos de algún material físico que puede propagar señales (como ondas de radio u otro
tipo de radiación electromagnética), pero lo que realmente queremos hacer es enviar bits.
En las secciones posteriores de este capítulo, veremos cómo codificar los bits para la
transmisión en un medio físico, seguido de los otros problemas mencionados
anteriormente. Al final de este capítulo, entenderemos cómo enviar paquetes completos a
través de cualquier tipo de enlace, sin importar qué medio físico esté involucrado
Capacidad de enlace y el teorema de Shannon-Hartley

Se ha realizado una enorme cantidad de trabajo en las áreas relacionadas con el


procesamiento de señales y la teoría de la información, estudiando todo, desde cómo se
degradan las señales con la distancia hasta la cantidad de datos que una señal dada
puede transportar efectivamente. El trabajo más notable en esta área es una fórmula
conocida como Shannon-Hartleytheorem2. Dicho de manera simple, este es un recurso
que se une a la capacidad de un enlace, en términos de bits por segundo (bps); como una
función de la relación señal-ruido del enlace, medida en decibelios (dB); y el ancho de
banda del canal, medido en Hertz (Hz). (Como se señaló anteriormente, el ancho de
banda es un término un poco sobrecargado en las comunicaciones; aquí lo usamos para
referirnos al rango de frecuencias disponibles para la comunicación). Como ejemplo,
podemos aplicar el teorema de Shannon-Hartley para determinar la tasa a la que se
puede esperar que un módem de acceso telefónico transmita datos binarios a través de
una línea telefónica de calidad de voz sin sufrir una tasa de error demasiado alta. Una
línea telefónica de voz estándar generalmente admite un rango de frecuencia de 300 Hz a
3300 Hz, un ancho de banda de canal de 3 kHz.
El teorema es típicamente dado por la siguiente fórmula
C = Blog2(1+S/N)

donde C es la capacidad de canal alcanzable medida en bits por segundo, B


isthebandwidthofthechannelinHz (3300 Hz - 300 Hz = 3000 Hz), S isthe
La relación señal / ruido (S / N, o SNR) se expresa generalmente en decibeles, y se
relaciona de la siguiente manera:
SNR = 10 × log10(S/N)

Por lo tanto, una relación señal / ruido típica de 30 dB implicaría que S / N = 1000. Por lo
tanto, tenemos
C = 3000 × log2(1001)

lo que equivale a aproximadamente 30 kbps. Cuando los módems de acceso telefónico


eran la forma principal de conectarse a Internet en la década de 1990, 56 kbps era una
capacidad publicitada común para un módem (y sigue siendo aproximadamente el límite
superior para el acceso telefónico). Sin embargo, los módems a menudo alcanzaban
velocidades más bajas en la práctica, ya que no siempre encontraban una relación señal /
ruido lo suficientemente alta para alcanzar 56 kbps. El teorema de Shannon-Hartley es
igualmente aplicable a todo tipo de enlaces que van desde el cable inalámbrico al cable
coaxial a la fibra óptica. Debería ser evidente que en realidad solo hay dos formas de
construir un enlace de alta capacidad: comenzar con un canal de gran ancho de banda o
lograr una alta relación señal / ruido, o, preferiblemente, ambas. Además, incluso esas
condiciones no garantizan un enlace de alta capacidad, a menudo requiere bastante
ingenio por parte de las personas que diseñan esquemas de codificación de canales para
alcanzar los límites teóricos de un canal. Este ingenio es particularmente evidente hoy en
día en los enlaces inalámbricos, donde hay un gran incentivo para obtener la mayor
cantidad de bits por segundo de una cantidad dada de espectro inalámbrico (el ancho de
banda del canal) y el nivel de potencia de la señal (y por lo tanto, SNR).

2.1.1 Clases de enlaces


Si bien la mayoría de los lectores de este libro han encontrado al menos algunos tipos
diferentes de enlaces, ayudará a comprender algunas de las amplias clases de enlaces
que existen y sus propiedades generales. Para empezar, todos los enlaces prácticos se
basan en algún tipo de radiación electromagnética que se propaga a través de un medio
o, en algunos casos, a través del espacio libre. Una forma de caracterizar los enlaces,
entonces, es por el medio que utilizan, por lo general de alguna forma, como en la línea
de suscriptor digital (DSL) y el cable coaxial; fibra óptica, como en los servicios
comerciales de fi bra al hogar y muchos enlaces de larga distancia en la red troncal de
Internet; o aire / espacio libre para enlaces inalámbricos.
Otra característica importante del enlace es la frecuencia, medida en hercios, con la que
oscilan las ondas electromagnéticas. La distancia entre un par de máximos o mínimos
adyacentes de una onda, típicamente
Medido en metros, se denomina longitud de onda de la onda. Dado que todas las ondas
electromagnéticas viajan a la velocidad de la luz (que a su vez depende del medio), esa
velocidad dividida por la frecuencia de la onda es igual a su longitud de onda. Ya puede
ver el ejemplo de una línea telefónica de graduación, que transporta señales
electromagnéticas continuas que oscilan entre 300 Hz y 3300 Hz. ; una onda de 300 Hz
que viaja a través del cobre tendría una longitud de onda o medida en metros, se
denomina longitud de onda de la onda. Dado que todas las ondas electromagnéticas
viajan a la velocidad de la luz (que a su vez depende del medio), esa velocidad dividida
por la frecuencia de la onda es igual a su longitud de onda.
SpeedOfLightInCopper ÷ Frequency = 2/3 × 3 × 108 ÷ 300 = 667 × 103 meters
Ya puede ver el ejemplo de una línea telefónica de graduación, que transporta señales
electromagnéticas continuas que oscilan entre 300 Hz y 3300 Hz. ; una onda de 300 Hz
que viaja a través del cobre tendría una longitud de onda o En general, las ondas
electromagnéticas abarcan un rango mucho más amplio de frecuencias, desde ondas de
radio hasta luz infrarroja, luz visible, rayos X y rayos gamma. La Figura 2.2 muestra el
espectro electromagnético y muestra qué medios se utilizan comúnmente para transportar
qué bandas de frecuencia.
Hasta ahora entendemos que un enlace es un medio físico que transporta señales en
forma de ondas electromagnéticas. Dichos enlaces proporcionan la base para transmitir
todo tipo de información, incluido el tipo de datos que estamos interesados en transmitir:
datos binarios (1sand0s). Suponemos que los datos binarios están codificados en la
señal. El problema de la codificación de datos binarios en señales electromagnéticas es
un tema complejo. Para ayudar a que el tema sea más manejable, podemos pensar que
se divide en dos capas. El más bajo
la capa se ocupa de la modulación, variando la frecuencia, la amplitud o la fase de la
señal para efectuar la transmisión de información. Un ejemplo simple de modulación es
variar la potencia (amplitud) de una sola longitud de onda. Intuitivamente, esto es
equivalente a encender y apagar una luz. Debido a que el tema de la modulación es
secundario a nuestra discusión sobre los enlaces como un bloque de construcción para
las redes de computadoras, simplemente asumimos que es posible transmitir un par de
señales distinguibles; piense en ellas como una señal "alta" y una señal "baja" —Y
consideramos solo la capa superior, que se ocupa del problema mucho más simple de
codificar datos binarios en estas dos señales. La sección 2.2 discute tales codificaciones.
Otra forma de clasificar los enlaces es en términos de cómo se utilizan. Varios problemas
económicos y de implementación tienden a influir donde se encuentran diferentes tipos de
enlaces. La mayoría de los consumidores interactúan con Internet a través de redes
inalámbricas (que se encuentran en cafeterías, aeropuertos, universidades, etc.) o
mediante los llamados enlaces de "última milla" proporcionados por los proveedores de
servicios de Internet, como se ilustra en Figura 2.1. Estos tipos de enlaces se resumen en
la Tabla 2.1. Normalmente se los elige porque son formas rentables de llegar a millones
de consumidores; DSL, por ejemplo, se implementó sobre los cables de cobre de par
trenzado existentes que ya existían para servicios telefónicos simples. La mayoría de
estas tecnologías no son suficientes para construir una red completa desde cero, por
ejemplo, es probable que necesite algunos enlaces de larga distancia y muy alta
velocidad para interconectar ciudades en una red grande.
Los enlaces modernos de larga distancia son casi exclusivamente de fibra hoy en día, y
los cables coaxiales han sido reemplazados en gran medida durante las últimas dos
décadas.
Estos enlaces suelen utilizar una tecnología llamada SONET
(SynchronousOpticalNetwork), que se desarrolló para cumplir con los requisitos
Requisitos de gestión de las compañías telefónicas. Veremos más de cerca a SONET en
la Sección 2.3.3.
Finalmente, además de los enlaces de última milla y de la red troncal, existen los enlaces
que se encuentran dentro de un edificio o un campus, generalmente conocidos como
redes de área local (LAN). Ethernet, descrita en la Sección 2.6, ha sido durante algún
tiempo la tecnología dominante en este espacio, después de muchos años ha desplazado
las tecnologías de token ring. Si bien Ethernet sigue siendo popular, ahora se ve
principalmente junto con las tecnologías inalámbricas basadas en los estándares 802.11,
que veremos en la Sección 2.7.
Esta encuesta de tipos de enlaces no es de ninguna manera exhaustiva, pero debería
haberle dado una idea de la diversidad de tipos de enlaces que existen y algunas de las
razones de esa diversidad. En las siguientes secciones, veremos cómo los protocolos de
red pueden aprovechar esa diversidad y presentar una vista coherente de la red a las
capas más altas a pesar de toda la complejidad de bajo nivel.

2.2 CODIFICACIÓN (NRZ, NRZI, MANCHESTER, 4B / 5B)


El primer paso para convertir los nodos y los enlaces en bloques de construcción
utilizables es entender cómo conectarlos de tal manera que los bits puedan transmitirse
de un nodo a otro. Como se mencionó en la sección anterior, las señales se propagan a
través de enlaces físicos. La tarea, por lo tanto, es codificar los datos binarios que el nodo
fuente desea enviar a las señales que los enlaces pueden transportar y luego decodificar
la señal de nuevo en los datos binarios correspondientes en el nodo receptor. Ignoramos
los detalles de la modulación y asumimos que estamos trabajando con dos señales
discretas: alta y baja. En la práctica, estas señales pueden corresponder a dos voltajes
diferentes en un enlace basado en cobre o dos niveles de potencia diferentes en un
enlace óptico.
La mayoría de las funciones que se analizan en este capítulo las realiza un adaptador de
red: una pieza de hardware que conecta un nodo a un enlace. El adaptador de red
contiene un componente de señalización que en realidad codifica bits en señales en el
nodo emisor y decodifica señales en bits en el nodo receptor. Por lo tanto, como se ilustra
en la Figura 2.3, las señales viajan a través de un enlace entre dos componentes de
señalización, y los bits fluyen entre los adaptadores de red.
Volvamos al problema de codificar bits en señales. Lo obvio es mapear el valor de datos 1
en la señal alta y el valor de datos 0 en la señal baja. Este es exactamente el mapeo
usado por un esquema de codificación llamado, lo suficientemente crípticamente, sin
retorno a cero (NRZ).

Por ejemplo, la Figura 2.4 representa esquemáticamente la señal codificada NRZ (parte
inferior) que corresponde a la transmisión de una secuencia particular de bits (parte
superior).
El problema con NRZ es que una secuencia de varios 1s consecutivos significa que la
señal permanece alta en el enlace durante un período prolongado de tiempo, de manera
similar, varios intentos consecutivos significan que la señal permanece estancada durante
un largo tiempo. Hay dos problemas fundamentales causados por cadenas largas de 1s o
0s. La primera es que conduce a una situación conocida como desviación de referencia.
Específicamente, el receptor mantiene un promedio de la señal que ha visto hasta ahora y
luego utiliza este promedio para distinguir entre señales bajas y altas. Cuando la señal es
significativamente más baja que este promedio, el receptor concluye que acaba de ver un
0; igualmente, una señal que es significativamente más alta que el promedio se interpreta
como un 1. El problema, por supuesto, es que demasiados 1s o 0s consecutivos hacen
que este promedio cambie, lo que hace más difícil detectar un cambio significativo en la
señal. .
El segundo problema es que las transiciones frecuentes de alta a baja y viceversa son
necesarias para permitir la recuperación del reloj. Intuitivamente, el problema de la
recuperación del reloj es que tanto la codificación como los procesos de decodificación
están controlados por un reloj: cada ciclo de reloj que el remitente transmite un bit y el
receptor se recupera un poco. Los relojes del remitente y del receptor deben estar
sincronizados con precisión para que el receptor recupere los mismos bits que transmite
el remitente. Si el reloj del receptor es incluso un poco más rápido o más lento que el reloj
del remitente, entonces no descodifica correctamente la señal. Podría imaginar enviar el
reloj al receptor a través de un cable separado, pero esto generalmente se evita porque
hace que el costo del cableado sea el doble. Entonces, en cambio, el receptor deriva el
reloj de la señal recibida, el proceso de recuperación del reloj. Cuando la señal cambia,
como en una transición de 1 a 0 o de 0 a 1, entonces el receptor sabe que está en un
límite de ciclo de reloj y puede volver a sincronizarse. Sin embargo, un largo período de
tiempo sin tal transición lleva a la deriva del reloj. Por lo tanto, la recuperación del reloj
depende de tener muchas transiciones en la señal, sin importar qué datos se envíen.
Un enfoque que resuelve este problema, llamado no retorno a cero invertido (NRZI), tiene
al emisor haciendo una transición desde la señal actual para codificar un 1 y permanecer
en la señal actual para codificar un 0. Esto resuelve el problema de 1s consecutivos , pero
obviamente no hace nada por 0s consecutivos. NRZI se ilustra en la Figura 2.5. Una
alternativa, llamada codificación Manchester, hace un trabajo más explícito de fusionar el
reloj con la señal transmitiendo el OR exclusivo de los datos codificados con NRZ y el
reloj. (Piense en el reloj local como una señal interna que alterna de bajo a alto; un par
bajo / alto se considera un ciclo de reloj). La codificación de Manchester también se ilustra
en la Figura 2.5. Observe que la codificación de Manchester da como resultado que 0 se
codifique como una transición de bajo a alto y 1 que se codifique como una transición de
alto a bajo. Debido a que tanto el 0 como el 1 resultan en una transición a la señal, el reloj
puede recuperarse efectivamente en el receptor. (Existe una gran variedad de
codificaciones del Manchester, denominada Manga Diferencial, en la cual un 1 está
codificado con la primera mitad de la señal, igualando la mitad de la señal anterior
opuesta a la última mitad de la señal del bit anterior.)
El problema con el esquema de codificación de Manchester es que duplica la velocidad a
la que se realizan las transiciones de la señal en el enlace, lo que significa que el receptor
tiene la mitad del tiempo para detectar cada pulso de la señal. La tasa que cambia la
señal de llamada del ritmo del enlace. En el caso de la codificación de Manchester, la tasa
de bits es la mitad de la velocidad de transmisión, por lo que la codificación se considera
solo un 50% eficiente. Tenga en cuenta que si el receptor hubiera sido capaz de realizar
una operación de seguimiento con el patrón de datos requerido por la codificación
Manchester en la Figura 2.5, entonces NRZ y NRZI podrían haber sido capaces de
transmitir el doble de bits en el mismo período de tiempo.
Una codificación final que, a su juicio, llamada 4B / 5B, intenta eliminar la ineficiencia de la
codificación de Manchester sin sufrir el problema de tener prolongadas duraciones de
señales de alta calidad. La idea de 4B / 5B es insertar bits adicionales en el flujo de bits
para romper largas secuencias de 0s o 1s. Específicamente, cada 4 bits de datos reales
se codifican en un código de 5 bits que luego se transmite al receptor; De ahí el nombre
4B / 5B. Los códigos de 5 bits se seleccionan de tal manera que cada uno no tiene más
de un 0 inicial y no más de dos 0s finales. Por lo tanto, cuando se envían de nuevo a
atrás, ningún par de códigos de 5 bits da como resultado que se transmitan más de tres
0s consecutivos. Los códigos de 5 bits resultantes se transmiten luego utilizando la
codificación NRZI, lo que explica por qué al código solo le preocupan los 0 consecutivos.
NRZI ya resuelve el problema de los 1s consecutivos. Tenga en cuenta que la codificación
4B / 5B da como resultado una eficiencia del 80%.
La Tabla 2.2 muestra los códigos de 5 bits que corresponden a cada uno de los 16
símbolos de datos posibles de 4 bits. Tenga en cuenta que dado que 5 bits son suficientes
para codificar 32 códigos diferentes, y estamos usando solo 16 de estos para datos, hay
16 códigos restantes que podemos usar para otros fines. De estos, el código 11111 se
usa cuando la línea está inactiva, el código 00000 corresponde a cuando la línea está
muerta y 00100 se interpreta como que significa detención. De los 13 códigos restantes, 7
de ellos no son válidos porque violan la regla de "uno de los primeros 0, dos de los últimos
0", y los otros 6 representan varios símbolos de control. Como veremos más adelante en
el capítulo, algunos protocolos de enmarcar pueden ser utilizados por estos símbolos de
control.

2.3 ENMARCADO

Ahora que hemos visto cómo transmitir una secuencia de bits a través de un enlace punto
a punto (de adaptador a adaptador), consideremos el escenario ilustrado en la Figura 2.6.
Recuerde en el Capítulo 1 que nos estamos enfocando en las redes de conmutación de
paquetes, lo que significa que los bloques de datos (llamados cuadros en este nivel), no
los flujos de bits, se intercambian entre nodos. Es el adaptador de red que permite a los
nodos intercambiar marcos. Cuando el nodo A desea transmitir un marco al nodo B, le
dice a su adaptador que transmita un marco desde la memoria del nodo. Esto da lugar a
una secuencia de bits que se envían a través del enlace. El adaptador en el nodo B luego
recopila la secuencia de bits que llegan al enlace y deposita la trama correspondiente en
la memoria de B. Reconocer exactamente qué conjunto de bits constituye una trama, es
decir, determinar dónde comienza y termina la trama, es el desafío central que enfrenta el
adaptador.
Hay varias formas de abordar el problema del encuadre. Esta sección utiliza varios
protocolos diferentes para ilustrar los diversos puntos en el espacio de diseño. Tenga en
cuenta que, si bien tratamos el encuadre en el contexto de los enlaces punto a punto, el
problema es fundamental y también debe abordarse en redes de acceso múltiple como
Ethernet y anillos de token.
2.3.1 Protocolos orientados a bytes (BISYNC, PPP, DDCMP)
Uno de los enfoques más antiguos para el encuadre, que tiene sus raíces en la conexión
de terminales a mainframes, es ver cada cuadro como una colección de bytes
(caracteres) en lugar de una colección de bits. El enfoque orientado a los chiquillos se
ejemplifica mediante protocolos más antiguos, como la Comunicación Sincrónica Binaria
(BISYNC ) protocolo desarrollado por IBM a fines de la década de 1960, y el Protocolo de
mensajes de comunicación de datos digitales (DDCMP) utilizado en DECNET de Digital
Equipment Corporation. El protocolo punto a punto (PPP) más reciente y más utilizado es
otro ejemplo de este enfoque.
Enfoques basados en Sentinel La Figura 2.7 ilustra el formato de trama del protocolo
BISYNC. Esta figura es la primera de muchas de las que verá en este libro que se utilizan
para ilustrar los formatos de marcos o paquetes, por lo que son necesarias algunas
palabras de explicación. Mostramos un paquete como una secuencia de campos
etiquetados. Sobre cada campo hay un número que indica la longitud de ese campo en
bits. Tenga en cuenta que los paquetes se transmiten a partir del campo más a la
izquierda.
BISYNC usa caracteres especiales conocidos como caracteres centinela para indicar
dónde comienzan y terminan los marcos. El comienzo de un cuadro se denota mediante
el envío de un carácter especial SYN (sincronización). La parte de datos del marco está
contenida entre dos caracteres especiales más: STX (inicio del texto) y ETX (final del
texto). El campo SOH (inicio del encabezado) cumple con el mismo propósito que el
campo STX. El problema con el enfoque centinela, por supuesto, es que el carácter ETX
puede aparecer en la parte de datos del marco. BISYNC supera este problema al
"escapar" del carácter ETX precediéndolo con un carácter DLE (escape de enlace de
datos) cada vez que aparece en el cuerpo de un marco; el carácter DLE también se
escapa (precediéndolo con un DLE adicional) en el cuerpo del marco. (Los
programadores de C pueden notar que esto es análogo a la forma en que una comilla
escapa a una comilla cuando ocurre dentro de una cadena). Este enfoque a menudo se
denomina relleno de caracteres porque se insertan caracteres adicionales en la parte de
datos del marco.
El formato de trama también incluye un campo etiquetado como CRC (verificación de
redundancia cíclica), que se utiliza para detectar errores de transmisión; en la Sección 2.4
se presentan varios algoritmos para la detección de errores. Finalmente, el marco
contiene campos de encabezado adicionales que se utilizan, entre otras cosas, para el
algoritmo de entrega confiable de nivel de enlace. En la Sección 2.5 se dan ejemplos de
estos algoritmos.
El más reciente Protocolo Punto a Punto (PPP), que se usa comúnmente para transportar
paquetes de Protocolo de Internet a través de varios tipos de enlaces punto a punto, es
similar a BISYNCinthatitalsusessentinelsandcharacter stuf fi ng. El formato para un marco
PPP se muestra en la Figura 2.8. El carácter especial de inicio de texto, denotadoelFlagde
el campoFigura2.8, es01111110. Los campos de Dirección y Control usualmente
contienen valores predeterminados y, por lo tanto, no son interesantes. El campo de
protocolo se utiliza para demultiplexar; identifica el protocolo de alto nivel, como IP o IPX
(un protocolo similar a IP desarrollado por Novell). El tamaño de la carga útil de trama se
puede negociar, pero es 1500 bytes por defecto. El campo Checksum tiene una longitud
de 2 (por defecto) o de 4 bytes.
El formato de trama PPP es inusual ya que varios de los tamaños de campo se negocian
en lugar de fijarse. Esta negociación se lleva a cabo mediante un protocolo denominado
Protocolo de control de enlace (LCP). El PPP y el LCP trabajan en tándem: el LCP envía
mensajes de control encapsulados en marcos PPP; estos mensajes se indican mediante
un identificador LCP en el campo del Protocolo PPP, y luego cambia el formato del marco
del PPP en función de la información contenida en esos mensajes de control. LCP
también participa en el establecimiento de un enlace entre dos pares cuando ambos lados
detectan que la comunicación a través del enlace es posible (por ejemplo, cuando cada
receptor óptico detecta una señal entrante de la fibra a la que se conecta).

Enfoque de conteo de bytes Como saben todos los estudiantes de Ciencias de la


computación 101, la alternativa a detectar el final de un archivo con un valor de centinela
es incluir la cantidad de elementos en el archivo al comienzo del archivo. Lo mismo ocurre
con el marco: el número de bytes contenidos en un marco se puede incluir como un
campo en el encabezado del marco. El DDCMP de DECNET utiliza este enfoque, como
se ilustra en la Figura 2.9. En este ejemplo, el campo COUNT especifica cuántos bytes
están contenidos en el cuerpo del marco.
Un peligro con este enfoque es que un error de transmisión podría dañar el campo de
conteo, en cuyo caso el final de la trama no se detectaría correctamente. (Existe un
problema similar con el enfoque basado en centinela si el campo ETX se corrompe). Si
esto sucede, el receptor acumulará tantos bytes como indica el campo COUNT incorrecto
y luego usará el campo de detección de errores para determinar que el marco es malo. .
Esto a veces se llama un error de encuadre. El receptor esperará hasta que vea el
siguiente carácter SYN para comenzar a recopilar los bytes que forman el siguiente
fotograma. Por lo tanto, es posible que un error de trama cause que las tramas se reciban
incorrectamente.
2.3.2 Protocolos orientados a bits (HDLC)
A diferencia de estos protocolos orientados a bytes, un protocolo orientado a bits no se
ocupa de los límites de bytes, simplemente ve la trama como una colección de bits. Estos
bits pueden provenir de algún conjunto de caracteres, como ASCII; pueden ser valores de
píxel en una imagen; o podrían ser instrucciones y operandos de un archivo ejecutable. El
protocolo de control de enlace de datos síncronos (SDLC) desarrollado por IBM es un
ejemplo de un protocolo orientado a bits; SDLC fue luego estandarizado por la ISO como
protocolo de control de enlace de datos de alto nivel (HDLC). En la siguiente discusión,
usamos HDLC como ejemplo; Su formato de cuadro se muestra en la Figura 2.10.
HDLC denota tanto el comienzo como el final de una trama con la secuencia de bits
distinguida 01111110. Esta secuencia también se transmite en cualquier momento en que
el enlace esté inactivo, de modo que el emisor y el receptor puedan mantener sus relojes
sincronizados. De esta manera, ambos protocolos utilizan esencialmente el enfoque
centinela. Debido a que esta secuencia puede aparecer en cualquier parte del cuerpo de
la trama (de hecho, los bits 01111110 pueden cruzar los límites de bytes), los protocolos
orientados a bits utilizan el análogo del carácter DLE, una técnica conocida como relleno
de bits.
Bitstuf fi ngintheHDLCprotocolworkssollows.Onthesendingside, cada vez que se han
transmitido cinco 1s consecutivos desde el cuerpo del mensaje (es decir, excluyendo
cuando el remitente está intentando transmitir la secuencia 01111110 distinguida), el
remitente inserta un 0 antes de transmitir el siguiente bit. En el lado receptor, si llegan
cinco 1s consecutivos, el receptor toma su decisión basándose en el siguiente bit que ve
(es decir, el bit que sigue a los cinco 1s). Si el siguiente bit es un 0, debe haberse
rellenado, por lo que el receptor lo elimina. Si el siguiente bit es un 1, entonces una de las
dos cosas es verdadera: este es el marcador de fin de trama o se ha introducido un error
en el flujo de bits. Al observar el siguiente bit, el receptor puede distinguir entre estos dos
casos. Si ve un 0 (es decir, los últimos 8 bits que ha mirado son 01111110), entonces es
el marcador de fin de trama; si ve un 1 (es decir, los últimos 8 bits que ha mirado son
01111111), entonces debe haber habido un error y toda la trama se descarta. En este
último caso, el receptor debe esperar el próximo 01111110 antes de que pueda comenzar
a recibir nuevamente y, como consecuencia, existe la posibilidad de que el receptor fallará
en dos tramas consecutivas. Obviamente, todavía hay formas en que los errores de trama
pueden pasar desapercibidos, como cuando un error completo genera un patrón de final
de trama falso, pero estas fallas son relativamente poco probables. Las formas robustas
de detectar errores se discuten en la Sección 2.4.

Una característica interesante del relleno de bits, así como el relleno de caracteres, es
que el tamaño de una trama depende de los datos que se envían en la carga útil de la
trama. De hecho, no es posible hacer que todos los cuadros tengan exactamente el
mismo tamaño, dado que los datos que podrían transportarse en cualquier cuadro son
arbitrarios. (Para convencerse de esto, considere qué sucede si el último byte del cuerpo
de un marco es el carácter ETX). En la siguiente subsección se describe una forma de
marco que garantiza que todos los marcos tengan el mismo tamaño.

¿Qué hay en una capa?

Una de las contribuciones importantes del modelo de referencia OSI presentado en el


Capítulo 1 fue proporcionar un vocabulario para hablar sobre los protocolos y, en
particular, las capas de protocolo. Este vocabulario ha proporcionado combustible para
muchos argumentos a lo largo de las líneas de "Su protocolo funciona con X en la capa Y,
y el modelo de referencia OSI dice que debe hacerse en la capa Z, eso es una violación
de capa". De hecho, descubrir el derecho La capa en la que realizar una función
determinada puede ser muy difícil, y el razonamiento suele ser mucho más sutil que
"¿Qué dice el modelo OSI?" Es en parte por esta razón que este libro evita una aplicación
de estrategia de forma muy acertada. En su lugar, es necesario realizar una función. Por
protocolos y mira algunas formas en que se han implementado con éxito. A pesar de
nuestro enfoque no partidista, a veces necesitamos formas convenientes de hablar sobre
las clases de protocolos, y el nombre de la capa en la que operan suele ser la mejor
opción. Así, por ejemplo, este capítulo se centra principalmente en los protocolos de capa
de enlace. (La codificación de bits, descrita en la Sección 2.2, es la excepción, ya que se
considera una función de capa física). Los protocolos de capa de enlace se pueden
identificar por el hecho de que se ejecutan en enlaces únicos, el tipo de red que se analiza
en este capítulo. Los protocolos de capa de red, por el contrario, se ejecutan en redes
conmutadas que contienen muchos enlaces interconectados por conmutadores o
enrutadores. Los temas relacionados con los protocolos de capa de red se analizan en los
Capítulos 3 y 4. Tenga en cuenta que se supone que las capas de protocolo son útiles:
proporcionan formas útiles de hablar sobre las clases de protocolos y nos ayudan a dividir
el problema de construir redes en subtareas manejables. Sin embargo, no están
destinados a ser demasiado restrictivos: el mero hecho de que algo sea una violación de
capa no termina con el argumento de si vale la pena hacerlo. En otras palabras, las capas
son un buen esclavo, pero un pobre amo. Cuando analizamos el control de congestión en
el Capítulo 6, aparece un argumento particularmente interesante sobre la mejor capa en la
que se ubica una función determinada.

2.3.3 Encuadre basado en reloj (SONET)


Un tercer enfoque del encuadre se ejemplifica en el estándar de la red óptica síncrona
(SONET). A falta de un término genérico ampliamente aceptado, nos referimos a este
enfoque simplemente como un marco basado en el reloj. SONET fue propuesto por
primera vez por Bell Communications Research (Bellcore) y luego desarrollado bajo el
American National Standards Institute (ANSI) para la transmisión digital sobre fibra óptica;
desde entonces ha sido adoptado por el UIT-T. SONET ha sido durante muchos años el
estándar dominante para la transmisión de datos a través de redes ópticas a larga
distancia.
Un punto importante que debe hacerse sobre SONET antes de seguir adelante es que la
especificación completa es sustancialmente mayor que este libro. Por lo tanto, la siguiente
discusión necesariamente cubrirá solo los puntos altos de la norma. Además, SONET
resuelve tanto el problema de trama como el problema de codificación. También aborda
un problema que es muy importante para las compañías telefónicas: la multiplexación de
varios enlaces de baja velocidad en un enlace de alta velocidad. (De hecho, gran parte del
diseño de SONET refleja el hecho de que las compañías telefónicas deben preocuparse
por la multiplexación de grandes cantidades de canales de 64 kbps que tradicionalmente
se usan para llamadas telefónicas). Comenzamos con el enfoque de SONET para
encuadrar y discutir los otros temas siguientes. .
Al igual que con los esquemas de encuadre discutidos anteriormente, un marco SONET
tiene cierta información especial que le indica al receptor dónde comienza y termina el
marco; Sin embargo, eso es todo lo que se refiere a las similitudes. Cabe destacar que no
se utiliza relleno de bits, por lo que la longitud de un cuadro no depende de los datos que
se envíen. Entonces, la pregunta que debe hacerse es "¿Cómo sabe el receptor dónde
comienza y termina cada trama?" Consideramos esta pregunta para el enlace SONET de
velocidad más baja, que se conoce como STS-1 y se ejecuta a 51.84 Mbps. En la Figura
2.11 se muestra un marco STS-1. Se organiza en 9 filas de 90 bytes cada una, y los
primeros 3 bytes de cada fila están sobre la cabeza, mientras que el resto está disponible
para ser transmitido por el enlace. Los primeros 2 bytes del cuadro contienen un patrón
especial de navegación y, además, se muestran en el receptor para determinar dónde
comienza el marco. Sin embargo, dado que no se utiliza el relleno de bits, no hay ninguna
razón por la que este patrón no aparezca de vez en cuando en la parte de carga útil de la
trama.

La importancia del encuadre es que un solo cuadro de SONET puede contener subtramas
para múltiples canales de menor velocidad. Una segunda característica relacionada es
que cada cuadro tiene una longitud de 125 µs. Esto significa que a velocidades STS-1,
una trama SONET tiene una longitud de 810 bytes, mientras que a velocidades STS-3,
cada trama SONET tiene una longitud de 2430 bytes. Observe la sinergia entre estas dos
características: 3 × 810 = 2430, lo que significa que tres marcos STS-1 se ajustan
exactamente en un solo marco STS-3.
Intuitivamente, puede pensarse que la trama STS-N está formada por N tramas STS-1,
donde los bytes de estas tramas están entrelazados; es decir, se transmite un byte desde
la primera trama, luego se transmite un byte desde la segunda trama, y así
sucesivamente. La razón para intercalar los bytes de cada trama STS-N es asegurar que
los bytes en cada trama STS-1 se estimulen de manera uniforme; es decir, los bytes
aparecen en el receptor a una velocidad de 51 Mbps, en lugar de agruparse durante un 1 /
Nth particular del intervalo de 125 µs.
Aunque es preciso ver una señal STS-N como si se utilizara para multiplexar N tramas
STS-1, la carga útil de estas tramas STS-1 se puede vincular entre sí para formar una
carga útil mayor STS-N; dicho enlace se indica como STS-Nc (para concatenado). Uno de
los campos en la sobrecarga se utiliza para este propósito. La Figura 2.12 muestra
esquemáticamente la concatenación en el caso de tres tramas STS-1 que se concatenan
en una sola trama STS-3c. La importancia de que un enlace de SONET se designe como
STS-3c en lugar de STS-3 es que, en el primer caso, el usuario del enlace puede verlo
como un solo 155.25Mbpspipe, mientras que un STS-3 debería realmente ver en pantalla
los enlaces de 51.84-Mbps que ocurren compartir una fi bra.
Finalmente, la descripción anterior de SONET es demasiado simplista, ya que se supone
que la carga que se carga para cada marco se encuentra completamente dentro del
marco. (¿Por qué no sería así?) De hecho, deberíamos ver la trama STS-1 que acabamos
de describir como simplemente un marcador de posición para la trama, donde la carga útil
real puede flotar a través de los límites de la trama.
Esta situación se ilustra en la Figura 2.13. Aquí vemos que la carga útil STS-1 fluye a
través de dos tramas STS-1 y que la carga útil se desplaza un cierto número de bytes a la
derecha y, por lo tanto, se enrolla alrededor. Uno de los campos en la sobrecarga del
marco apunta al comienzo de la carga útil. El valor de esta capacidad es que simplifica la
tarea de sincronizar los relojes utilizados en las redes de los operadores, que es algo por
lo que los operadores pasan mucho tiempo preocupándose.

2.4 DETECCIÓN DE ERRORES


Como se discutió en el Capítulo 1, los errores de bit a veces se introducen en marcos.
Esto sucede, por ejemplo, debido a interferencias eléctricas o ruido térmico. Aunque los
errores son raros, especialmente en los enlaces ópticos, se necesita algún mecanismo
para detectar estos errores para poder tomar medidas correctivas. De lo contrario, el
usuario final se queda preguntándose por qué el programa C que se compiló con éxito
hace un momento ahora tiene un error de sintaxis, cuando todo lo que sucedió en el
ínterin es que se copió a través de un sistema de archivos de red.
Existe una larga historia de técnicas para tratar los errores de bits en los sistemas
informáticos, que se remontan a al menos la década de 1940. Los códigos de Hamming y
ReedSolomon son dos ejemplos notables que se desarrollaron para su uso en lectores de
tarjetas perforadas, cuando se almacenan datos en discos magnéticos y en memorias
primarias tempranas. En esta sección se describen algunas de las técnicas de detección
de errores que se utilizan con más frecuencia en las redes.
Detectar errores es solo una parte del problema. La otra parte es corregir errores una vez
detectados. Se pueden tomar dos enfoques básicos cuando el destinatario de un mensaje
detecta un error. Una es notificar al remitente que el mensaje está dañado para que el
remitente pueda retransmitir una copia del mensaje. Si los errores de bit son raros,
entonces con toda probabilidad la copia retransmitida estará libre de errores.
Alternativamente, algunos tipos de algoritmos de detección de errores le permiten al
receptor reconstruir el mensaje correcto, incluso después de haber sido corrompido; por
ejemplo, los códigos de corrección de errores se repiten a continuación.

Una de las técnicas más comunes para detectar errores de transmisión es una técnica
conocida como verificación de redundancia cíclica (CRC). Se usa en casi todos los
protocolos de nivel de enlace analizados en la sección anterior (por ejemplo, HDLC,
DDCMP), así como en los protocolos CSMA e inalámbricos descritos más adelante en
este capítulo. La sección 2.4.3 describe el algoritmo básico de CRC. Antes de discutir ese
enfoque, consideramos dos esquemas más simples: paridad bidimensional y sumas de
comprobación. El primero es utilizado por el protocolo BISYNC cuando está transmitiendo
caracteres ASCII (CRC se usa como el código de detección de errores cuando BISYNC
se usa para transmitir EBCDIC3), y el último es usado por varios protocolos de Internet.
La idea básica detrás de cualquier esquema de detección de errores es agregar
información redundante a una trama que se pueda usar para determinar si se han
introducido errores. En el extremo, podríamos transmitir una copia completa de las copias
completas de los datos. Si las dos copias son idénticas en el receptor, es probable que
ambas sean correctas. Si difieren, entonces se introdujo un error en uno (o ambos) de
ellos, y deben ser descartados. Este es un esquema de detección de errores bastante
pobre por dos razones. Primero, envía n bits redundantes para un mensaje de n bits.
Segundo, muchos errores no se detectarán: cualquier error que dañe las mismas
posiciones de bit en la primera y segunda copia del mensaje. En general, el objetivo de
los códigos de detección de errores es proporcionar una alta probabilidad de detectar
errores combinados con un número relativamente bajo de bits redundantes.
Afortunadamente, podemos hacerlo mucho mejor que este simple esquema. En general,
podemos proporcionar una capacidad de detección de errores bastante fuerte al enviar
solo k bits redundantes para un mensaje de n bits, donde k ≪ n. En una Ethernet, por
ejemplo, una trama que lleva hasta 12,000 bits (1500 bytes) de datos requiere solo un
código CRC de 32 bits, o como se expresa comúnmente, utiliza CRC-32. Dicho código
detectará la gran mayoría de errores, como veremos a continuación.

Decimos que los bits adicionales que enviamos son redundantes porque no agregan
información nueva al mensaje. En su lugar, se derivan directamente del mensaje original
utilizando algún algoritmo bien de fi nido. Tanto el remitente como el receptor saben
exactamente qué es ese algoritmo. El remitente aplica el algoritmo para que se genere
tanto el bit como los bits. Transmite tanto el mensaje como esos pocos bits adicionales.
Cuando el receptor aplica el mismo algoritmo al mensaje recibido, debería (en ausencia
de errores) dar con el mismo resultado que el remitente. Compara el resultado con el
enviado por el remitente. Si coinciden, se puede concluir (con alta probabilidad) que no se
introdujeron errores en el mensaje durante la transmisión. Si no coinciden, puede estar
seguro de que el mensaje o los bits redundantes se corrompieron, y debe tomar las
medidas adecuadas, es decir, descartar el mensaje o corregirlo si es posible.
Una nota sobre la terminología para estos bits extra. En general, se les conoce como
códigos de detección de errores. En casos especí fi cos, cuando el algoritmo para crear el
código se basa en una adición, pueden llamarse sumas de control. Veremos que la suma
de comprobación de Internet se llama adecuadamente: es una comprobación de errores
que utiliza un algoritmo de suma. Desafortunadamente, la palabra suma de comprobación
se usa de manera imprecisa para significar cualquier forma de código de detección de
errores, incluidos los CRC. Esto puede ser confuso, por lo que le recomendamos que
utilice la palabra checksum solo para aplicar a los códigos que realmente usan la suma y
que use el código de detección de errores para referirse a la clase general de códigos que
se describe en esta sección.
2.4.1 Paridad bidimensional
Paridad bidimensional es exactamente lo que sugiere su nombre. Se basa en una paridad
“simple” (unidimensional), que generalmente implica agregar un bit adicional a un código
de 7 bits para equilibrar el número de 1s en el byte. Por ejemplo, paridad impar establece
el octavo bit en 1 si es necesario para dar un número impar de 1s en el byte, e incluso
paridad establece el octavo bit en 1 si es necesario para dar un número par de 1s en el
byte. La paridad bidimensional realiza un cálculo similar para cada posición de bit en cada
uno de los bytes contenidos en el marco. Esto da como resultado un byte de paridad
adicional para toda la trama, además de un bit de paridad para cada byte. La Figura 2.14
ilustra cómo funciona la paridad par bidimensional para un marco de ejemplo que contiene
6 bytes de datos. Observe que el tercer bit del byte de paridad es 1, ya que hay un
número impar de 1s en el tercer bit a través de los 6 bytes en el marco.
Se puede demostrar que la paridad bidimensional captura todos los errores de 1, 2 y 3
bits, y la mayoría de los errores de 4 bits. En este caso, hemos agregado 14 bits de
información redundante a un mensaje de 42 bits y, sin embargo, tenemos una protección
más fuerte contra los errores comunes que el "código de repetición" descrito
anteriormente.
2.4.2 Algoritmo de suma de comprobación de Internet
Un segundo enfoque para la detección de errores se ejemplifica en la suma de control de
Internet. Aunque no se usa a nivel de enlace, proporciona el mismo tipo de funcionalidad
que los CRC y la paridad, por lo que lo discutimos aquí. Veremos ejemplos de su uso en
las Secciones 3.2, 5.1 y 5.2.
La idea detrás de la suma de comprobación de Internet es muy simple: sumas todas las
palabras que se transmiten y luego transmites el resultado de esa suma. El resultado es la
suma de comprobación. El receptor realiza el mismo cálculo sobre los datos recibidos y
en comparación con otros recibidos. Si alguno de los datos transmitidos, incluida la suma
de comprobación, está dañado, los resultados no coincidirán, por lo que el receptor sabe
que se produjo un error.
Usted puede anunciar muchas diferentes variaciones en la base de la planta de control. El
esquema exacto utilizado por los protocolos de Internet funciona de la siguiente manera.
Considere los datos que se están sumando como una secuencia de enteros de 16 bits.
Súmelos juntos utilizando aritmética de complemento de 16 bits (se explica a
continuación) y luego tome los complementos del resultado. Ese número de 16 bits es la
suma de comprobación.
En la aritmética del complemento, un entero negativo (−x) se representa como el
complemento de x; Es decir, cada bit de x está invertido.
Al agregar números en la aritmética del complemento, se debe agregar al resultado un
resultado del bit más significativo. Considere, por ejemplo, la suma de −5 y −3 en la
aritmética de un complemento en enteros de 4 bits: +5 es 0101, por lo que −5 es 1010; +3
es 0011, entonces −3 es 1100. Si agregamos 1010 y 1100, ignorando el acarreo,
obtenemos 0110. En la aritmética del complemento, el hecho de que esta operación se
produzca desde un principio demuestra que el canto del bitácora nos permite incrementar
el resultado, dando 0111, que es la representación del complemento de - 8 (obtenido
invirtiendo los bits en 1000), como es de esperar.
La siguiente rutina proporciona una implementación directa del algoritmo de suma de
comprobación de Internet. El argumento de conteo da la longitud de buf medida en
unidades de 16 bits. La rutina supone que buf ya se ha rellenado con 0s a un límite de 16
bits.
Líneas de código …
Este código garantiza que el cálculo utiliza los complementos aritméticos en lugar del
complemento de dos que se utiliza en la mayoría de las máquinas. Note la sentencia if
dentro del bucle while. Si hay un acarreo en los 16 bits superiores de suma, entonces
incrementamos la suma como en el ejemplo anterior.
Compared to our repetition code, this algorithm scores well for using a small number of
redundant bits—only 16 for a message of any length— but it does not score extremely well
for strength of error detection. For example, a pair of single-bit errors, one of which
increments a word and one of which decrements another word by the same amount, will
go undetected. The reason for using an algorithm like this in spite of its relatively weak
protection against errors (compared to a CRC, for example) is simple: This algorithm is
much easier to implement in software. Experience in the ARPANET suggested that a
checksum of this form was adequate. One reason it is adequate is that this checksum is
the last line of defense in an end-to-end protocol; the majority of errors are picked up by
stronger error detection algorithms, such as CRCs, at the link level.
Cuadro
Cálculos de probabilidad simple
Cuando se trata de errores de red y otros eventos improbables (esperamos), a menudo
tenemos uso para estimaciones de probabilidad simples en el reverso del sobre. Una
aproximación útil aquí es que si dos eventos independientes tienen pequeñas
probabilidades p y q, entonces la probabilidad de cualquiera de los eventos es p + q; la
respuesta exacta es 1 - (1 - p) (1 - q) = p + q - pq. Para p = q = .01, esta estimación es
.02, mientras que el valor exacto es .0199. Para una aplicación simple de esto, suponga
que la tasa de error por bit en un enlace es 1 en 107. Ahora supongamos que estamos
interesados en estimar la probabilidad de que al menos un bit en un paquete de 10,000
bits esté en error. Usando la aproximación anterior repetidamente sobre todos los bits,
podemos decir que estamos interesados en la probabilidad de error del primer bit, o del
segundo bit, o del tercero, etc. Asumiendo que los bits son muy dependientes (que no
son), podemos estimar que la probabilidad de al menos un error en un paquete de 10,000
bits (104 bits) es 104 × 10−7 = 10−3. La respuesta exacta, calculada como 1 - P (sin
errores), sería 1 - (1 - 10−7) 10,000 = .00099950. Para una aplicación un poco más
compleja, calculamos la probabilidad de exactamente dos errores en dicho paquete; esta
es la probabilidad de un error que pasaría por alto una suma de comprobación de 1 bit de
paridad. Si consideramos dos bits particulares en el paquete, digamos bit i y bit j, la
probabilidad de que esos bits exactos estén en error es 10−7 × 10−7. Ahora, el número
total de pares de bits posibles en el paquete es 104 2 = 104 × (104 - 1) / 2 ≈ 5 ×
107. Así que nuevamente, utilizando la aproximación de agregar repetidamente las
probabilidades de muchos eventos raros (en este caso, de cualquier posible par de bits
con error), nuestra probabilidad total de al menos dos bits con error es 5 × 107 × 10−14 =
5 × 10−7.

2.4.3 Control de redundancia cíclica


Ya debería estar claro que un objetivo principal en el diseño de algoritmos de detección
de errores es maximizar la probabilidad de detectar errores utilizando solo un pequeño
número de bits redundantes. Las comprobaciones de redundancia cíclica utilizan algunas
matemáticas bastante potentes para lograr este objetivo. Por ejemplo, un CRC de 32 bits
ofrece una fuerte protección contra errores comunes de bits en mensajes que tienen miles
de bytes. El fundamento teórico de los chequeos de redundancia cíclica fue provocado
por un enfoque de matemática llamado campos fi nitos. Si bien esto puede sonar
desalentador, las ideas básicas se pueden entender fácilmente.
Para comenzar, piense en un mensaje de (n + 1) bits representado por un polinomio de n
grados, es decir, un polinomio cuyo término de orden más alto es xn. El mensaje se
representa mediante un polinomio utilizando el valor de cada bit en el mensaje como el
coeficiente de cada término en el polinomio, comenzando con el bit más significativo para
representar el término de orden más alto. Por ejemplo, un mensaje de 8 bits que consta
de los bits 10011010 corresponde al polinomio. Podemos pensar que un remitente y un
receptor intercambian polinomios entre sí.
Para los propósitos de calcular un CRC, un remitente y un receptor deben acordar un
polinomio divisor, C (x). C (x) es un polinomio de grado k. Por ejemplo, supongamos que
C (x) = x3 + x2 +1. En este caso, k = 3. La respuesta a la pregunta "¿De dónde viene C
(x)?" Es, en la mayoría de los casos prácticos, "Lo buscas en un libro". De hecho, la
elección de C (x ) tiene un impacto significativo en los tipos de errores que pueden
detectarse de manera confiable, como veremos a continuación. Hay un puñado de
polinomios de divisor que son muy buenas opciones para varios entornos, y la elección
exacta normalmente se realiza como parte del diseño del protocolo. Por ejemplo, el
estándar de Ethernet utiliza un conocido polinomio de grado 32.
Cuando un remitente desea transmitir un mensaje M (x) que tiene una longitud de n + 1
bits, ¿cuál es la ubicación real de los bits de enmascaramiento de mensajes de bits (n +
1)? Reclame el mensaje transmitido completo, incluidos los bits redundantes, P (x).
Lo que vamos a hacer es hacer que el polinomio que representa P (x) sea exactamente
divisible por C (x); A continuación explicamos cómo se logra esto. Si P (x) se transmite a
través de un enlace y no se introducen errores durante la transmisión, entonces el
receptor debe poder dividir P (x) por C (x) exactamente, dejando un elemento de cero. De
otra manera, si se introduce algún error en P (x) durante la transmisión Luego, con toda
probabilidad, el polinomio recibido ya no será exactamente divisible por C (x) y, por lo
tanto, el receptor obtendrá un resto distinto de cero, lo que implica que se ha producido un
error.
Ayudará a comprender lo siguiente si sabe un poco acerca de la aritmética polinómica; es
ligeramente diferente de la aritmética entera normal. Estamos tratando con una clase
especial de aritmética polinómica aquí, donde los coeficientes pueden ser solo uno o cero,
y las operaciones en los coeficientes se realizan utilizando aritmética de módulo 2. Esto
se conoce como “módulo aritmético polinomial 2”. Dado que se trata de un libro de redes,
no de textos matemáticos, concentrémonos en las propiedades clave de este tipo de
aritmética para nuestros propósitos (que le pedimos que acepte en la fe):
n Cualquier polinomio B (x) se puede dividir por un polinomio divisor C (x) si B (x) es de
mayor grado que C (x).
n Cualquier polinomio B (x) puede dividirse una vez por un polinomio divisor C (x) si B (x)
es del mismo grado que C (x).
n El resto obtenido cuando B (x) se divide por C (x) se obtiene al realizar la operación
exclusiva OR (XOR) en cada par de coeficientes coincidentes.
Por ejemplo, el polinomio x3 +1 se puede dividir por x3 + x2 +1 (porque ambos son de
grado 3) y el resto sería 0 × x3 + 1 × x2 +0 × x1 +0 × x0 = x2 (obtenido XORIANDO los
coeficientes de cada término). En términos de mensajes, podríamos decir que 1001 se
puede dividir por 1101 y deja un resto de 0100. Debería poder ver que el resto es solo el
OR exclusivo a nivel de bits de los dos mensajes.
Ahora que conocemos las reglas básicas para dividir polinomios, podemos hacer una
división larga, que es necesaria para manejar mensajes más largos. Un ejemplo aparece
a continuación.
Recuerde que queríamos crear un polinomio para la transmisión derivado del mensaje
original M (x), es k bits más largo que M (x) y es exactamente divisible por C (x). Podemos
hacer esto de la siguiente manera:
1. Multiplica M (x) por xk; es decir, agregue k ceros al final del mensaje. Llama a este
mensaje extendido en cero T (x).
2. Divida T (x) por C (x) y encuentre el resto.
3. Resta el resto de T (x).
Debería ser obvio que lo que queda en este punto es un mensaje que es exactamente
divisible por C (x). También podemos notar que el mensaje resultante consiste en M (x)
seguido del resto obtenido en el paso 2, porque cuando restamos el resto (que no puede
tener más de k bits de longitud), solo lo alineamos con los ceros k. añadido en el paso 1.
Esta parte se aclarará con un ejemplo. Considere el mensaje x7 + x4 + x3 + x1, o
10011010. Comenzamos multiplicando por x3, ya que nuestro polinomio divisor es de
grado 3. Esto da 10011010000. Lo dividimos por C (x), que corresponde a 1101 en este
caso .Figura2.15 muestra la operación polinómica de división larga. Dadas las reglas de la
aritmética polinómica descritas anteriormente, la operación de división larga se realiza de
la misma manera que lo haría si estuviéramos dividiendo enteros. Por lo tanto, en el
primer paso de su ejemplo, si bien el divisor 1101 se divide en los primeros cuatro bits del
mensaje (1001), aunque no tienen ningún grado de libertad, y deja un resto de 100 (1101
XOR 1001). El siguiente paso es reducir el indicador de polinomio del mensaje hasta el de
otro polinomio con el mismo grado que C (x), en este caso 1001. Calculamos el resto
nuevamente (100) y continuamos hasta que el cálculo se complete. Tenga en cuenta que
el "resultado" de la división larga, que aparece en la parte superior del cálculo, no es
realmente de mucho interés, lo que importa es el resto al final.
Puede ver desde la parte inferior de la Figura 2.15 que el resto del cálculo del ejemplo es
101. Así que sabemos que 10011010000 menos 101 sería exactamente divisible por C
(x), y esto es lo que enviamos. La operación menos en la aritmética polinomial es la
operación XOR lógica, por lo que en realidad enviamos 10011010101. Como se señaló
anteriormente, esto resulta ser solo el mensaje original con el resto del cálculo de división
larga que se le adjunta. El destinatario divide el polinomio recibido por C (x) y, si el
resultado es 0, concluye que no hubo errores. Si el resultado es distinto de cero, puede
ser necesario descartar el mensaje dañado; con algunos códigos, puede ser posible
corregir un pequeño error (por ejemplo, si el error afectó solo un bit). Un código que
permite la corrección de errores se denomina código de corrección de errores (ECC).
Image

Ahora consideraremos la cuestión de dónde proviene el polinomio C (x). Intuitivamente, la


idea es seleccionar este polinomio de modo que sea muy poco probable que se divida de
manera uniforme en un mensaje que contenga errores. Si el mensaje transmitido es P (x),
podemos pensar en la introducción de errores como la adición de otro polinomio E (x), por
lo que el destinatario ve P (x) + E (x). La única forma en que un error podría pasar
desapercibido sería si el mensaje recibido pudiera dividirse en partes iguales por C (x), y
como sabemos que P (x) puede dividirse en partes iguales por C (x), esto solo podría
suceder si E (x) puede dividirse uniformemente por C (x). El truco es elegir C (x) para que
esto sea muy improbable para los tipos comunes de errores.
Un tipo común de error es un error de un solo bit, que se puede expresar como E (x) = xi
cuando afecta a la posición del bit i. Si seleccionamos C (x) de modo que el primer
término y el último término (es decir, los términos xk y x0) sean distintos de cero, entonces
ya tenemos un polinomio de dos términos que no puede dividirse uniformemente en un
término E (x). Tal C (x) puede, por lo tanto, detectar todos los errores de un solo bit. En
general, es posible probar que los siguientes tipos de errores pueden ser detectados por
una C (x) con las propiedades indicadas:
n Todos los errores de un solo bit, siempre que los términos xk y x0 tengan coeficientes
distintos de cero.
n Todos los errores de doble bit, siempre que C (x) tenga un factor con al menos tres
términos
n Cualquier número impar de errores, siempre que C (x) contenga el factor (x + 1)

¿Detección de errores o corrección de errores?


Hemos mencionado que es posible utilizar códigos que no solo detectan la presencia de
errores sino que también permiten corregir los errores. Dado que los detalles de dichos
códigos requieren una matemática aún más compleja que la requerida para comprender
los CRC, no nos detendremos en ellos aquí. Sin embargo, vale la pena considerar los
méritos de la corrección frente a la detección. A primera vista, parecería que la corrección
siempre es mejor, ya que con la detección nos vemos obligados a desechar el mensaje y,
en general, pedir que se transmita otra copia. Esto consume ancho de banda y puede
introducir latencia mientras se espera la retransmisión. Sin embargo, hay una desventaja
en la corrección, ya que generalmente requiere un mayor número de bits redundantes
para enviar un código de corrección de errores que sea tan fuerte (es decir, capaz de
hacer frente al mismo rango de errores) como un código que solo detecta errores Por lo
tanto, mientras que la detección de errores requiere que se envíen más bits cuando se
producen errores, la corrección de errores requiere que se envíen más bits todo el tiempo.
Como resultado, la corrección de errores tiende a ser más útil cuando (1) los errores son
bastante probables, como pueden ser, por ejemplo, en un entorno inalámbrico, o (2) el
costo de la retransmisión es demasiado alto, por ejemplo, debido a la latencia implicaba la
retransmisión de un paquete a través de un enlace de satélite. El uso de códigos de
corrección de errores en redes a veces se denomina corrección de errores hacia adelante
(FEC) porque la corrección de errores se maneja "de antemano" mediante el envío de
información adicional, en lugar de esperar a que ocurran errores y tratarlos posteriormente
mediante la retransmisión . FEC se usa comúnmente en redes inalámbricas como 802.11.
Cualquier error de "ráfaga" (es decir, secuencia de bits con error consecutivo) para la cual
la longitud de la ráfaga es menor que k bits (la mayoría de los errores de ráfaga de
longitud mayor que k bits también se pueden detectar).
Seis versiones de C (x) se usan ampliamente en los protocolos de nivel de enlace (que se
muestran en la Tabla 2.3). Por ejemplo, Ethernet usa CRC-32, mientras que HDLC usa
CRCCCITT. ATM, como se describe en el Capítulo 3, utiliza CRC-8, CRC-10 y CRC-32.
Finalmente, observamos que el algoritmo CRC, aunque aparentemente complejo, se
implementa fácilmente en el hardware utilizando el registro de bits de bit -ak yXORgates.
El número de bits en el registro de desplazamiento es igual al grado del polinomio
generador (k). La figura 2.16 muestra el mensaje de advertencia que se debe utilizar para
el generador x3 + x2 +1 de nuestro ejemplo anterior. El mensaje es cambiado desde la
izquierda, comenzando con el bit más significativo y terminando con la cadena de k ceros
que se adjunta al mensaje, al igual que en el ejemplo de división larga. Cuando todos los
bits se han desplazado y XORed de forma adecuada, el registro contiene el resto, es
decir, el CRC (el bit más significativo a la derecha). La posición de las compuertas XOR
se determina de la siguiente manera: si los bits en el registro de desplazamiento están
etiquetados de 0 a k - 1, de izquierda a derecha, luego coloque una compuerta XOR
delante del bit n si hay un término xn en el polinomio generador . Por lo tanto, vemos una
puerta XOR delante de las posiciones 0 y 2 para el generador x3 + x2 + x0.
Imagen
2.5 TRANSMISIÓN CONFIABLE
Como vimos en la sección anterior, los marcos a veces se corrompen mientras están en
tránsito, con un código de error como el CRC utilizado para detectar dichos errores. Si
bien algunos códigos de error son lo suficientemente fuertes como para corregir errores,
en la práctica, la sobrecarga suele ser demasiado grande para manejar el rango de
errores de ráfagas y bits que pueden introducirse en un enlace de red. Incluso cuando se
utilizan códigos de corrección de errores (por ejemplo, en enlaces inalámbricos), algunos
errores serán demasiado graves para ser corregidos. Como resultado, algunos marcos
corruptos deben ser descartados. Un
linklevelprotocolthatwantstanteliverframesreliablymustshowhowrecover de estos marcos
descartados (perdidos).
Vale la pena señalar que la confiabilidad es una función que puede proporcionarse a nivel
de enlace, pero muchas tecnologías de enlace modernas omiten esta función. Además, la
entrega confiable se proporciona con frecuencia en niveles más altos, que incluyen tanto
el transporte (como se describe en la Sección 5.2) como, a veces, la capa de aplicación
(Capítulo 9). Exactamente dónde se debe proporcionar es un tema de debate y depende
de muchos factores. Aquí describimos los conceptos básicos de una entrega confiable, ya
que los principios son comunes en todas las capas, pero debe tener en cuenta que no
estamos hablando solo de una función de capa de enlace (consulte la barra lateral "¿Qué
hay en una capa?" Más arriba para obtener más información sobre esta).
Esto generalmente se logra utilizando una combinación de dos mecanismos
fundamentales: reconocimientos y tiempos de espera. Un acuse de recibo (ACK para
abreviar) es un pequeño marco de control que un protocolo envía de vuelta a sus pares y
dice que se recibió un cuadro de datos. Por ejemplo, un control del encabezado de un
encabezado sin datos, aunque un protocolo puede superponer un ACK en un marco de
datos que se envía en la dirección opuesta. La recepción de un acuse de recibo indica al
remitente del marco original que su marco se entregó correctamente. Si el remitente no
recibe un acuse de recibo después de un período de tiempo razonable, entonces
retransmite el marco original. Esta acción de espera en una gran cantidad de tiempo se
denomina tiempo de espera.
La estrategia general de uso de los componentes reconocidos y el tiempo para
implementar una entrega confiable a veces se denomina solicitud de repetición
automática (ARQ, normalmente abreviada). Esta sección describe tres algoritmos ARQ
diferentes usando lenguaje genérico; es decir, no proporcionamos información detallada
sobre los campos de encabezado de un protocolo en particular.
2.5.1 Detener y esperar

El esquema ARQ más simple es el algoritmo de parada y espera. La idea de parar y


esperar de manera inmediata: después de transmitir un cuadro, el remitente espera un
acuse de recibo antes de transmitir el siguiente cuadro. Si el acuse de recibo no llega
después de un cierto período de tiempo, el remitente agota el tiempo y retransmite el
marco original.
La Figura 2.17 ilustra cuatro escenarios diferentes que resultan de este algoritmo básico.
Esta figura es una línea de tiempo, una forma común de representar el comportamiento
de un protocolo (vea también la barra lateral en este tipo de diagrama). El lado de envío
se representa a la izquierda, el lado de recepción se representa a la derecha y el flujo de
tiempo desde la parte superior a la parte inferior. La figura2.17 (a) muestra una situación
en la que se recibió el PAZ antes de que existan las aspiraciones; (b) y (c) muestran la
situación en la que el marco original y el ACK, respectivamente, son perdió; y (d) muestra
la situación en la que el tiempo de espera se dispara demasiado pronto. Recuerde que
“perdido” significa que la trama se corrompió mientras estaba en tránsito, que un código
de error en el receptor detectó esta corrupción y que la trama se descartó posteriormente.

Cronogramas y diagramas de intercambio de paquetes


Las figuras2.17 y2.18 son dos ejemplos de los que se utilizan con mayor frecuencia para
aprender, explicar y diseñar protocolos: la línea de tiempo o el diagrama de intercambio
de paquetes. Verá muchos más en este libro; consulte la Figura 9.9 para ver un ejemplo
más complejo. Son muy útiles porque capturan visualmente el comportamiento a lo largo
del tiempo de un sistema distribuido, algo que puede ser bastante difícil de analizar. Al
diseñar un protocolo, a menudo tiene que estar preparado para lo inesperado: un sistema
se bloquea, un mensaje se pierde o algo que esperaba que sucediera rápidamente
demora mucho. Este tipo de diagramas a menudo puede ayudarnos a comprender qué
puede salir mal en tales casos y, por lo tanto, ayudar a un diseñador de protocolos a estar
preparado para cualquier eventualidad.
Hay una sutileza importante en el algoritmo de parar y esperar. Supongamos que el
remitente envía una trama y el receptor lo confirma, pero el acuse de recibo se pierde o se
demora en llegar. Esta situación se ilustra en los cronogramas (c) y (d) de la Figura 2.17.
En ambos casos, el remitente agota el tiempo de espera y retransmite el marco original,
pero el receptor pensará que es el siguiente marco, ya que recibió y confirmó
correctamente el primer marco. Esto tiene el potencial de causar la entrega de copias
duplicadas de un marco. Para resolver este problema, el encabezado de un protocolo de
parada y espera generalmente incluye un número de secuencia de 1 bit, es decir, el
número de secuencia puede tomar los valores 0 y 1, y los números de secuencia
utilizados para cada trama se alternan, como ilustrado en la figura 2.18. Por lo tanto,
cuando el remitente retransmite el fotograma 0, el receptor puede determinar que está
viendo una segunda copia del fotograma 0 en lugar de la primera copia del fotograma 1 y,
por lo tanto, puede ignorarlo (el receptor todavía lo reconoce, en caso de que se haya
perdido el primer ACK). ).
El principal defecto del algoritmo de detener y esperar es que permite que el remitente
tenga solo un marco destacado en el enlace a la vez, y esto puede estar muy por debajo
de la capacidad del enlace. Considere, por ejemplo, un enlace de 1.5 Mbps con un tiempo
de ida y vuelta de 45 ms. Este enlace tiene un producto de ancho de banda de retraso ×
de 67.5 Kb, o aproximadamente 8 KB. Dado que el remitente solo puede enviar una trama
por RTT, y suponiendo un tamaño de trama de 1 KB, esto o aproximadamente un octavo
de la capacidad del enlace. Para utilizar el enlace completamente, entonces, nos gustaría
que el remitente pueda transmitir hasta ocho cuadros antes de tener que esperar un
acuse de recibo.
2.5.2 Ventana corrediza
Considere nuevamente el escenario en el que el enlace tiene un producto de ancho de
banda de retraso × de 8 KB y los marcos tienen un tamaño de 1 KB. Nos gustaría que el
remitente esté listo para transmitir el noveno fotograma casi al mismo tiempo que llega el
ACK para el primer fotograma. El algoritmo que nos permite hacer esto se llama ventana
deslizante, y en la Figura 2.19 se ofrece una línea de tiempo ilustrativa.
TheSlidingWindowAlgorithm El algoritmo de ventana deslizante funciona de la siguiente
manera. Primero, el remitente asigna un número de secuencia, indicado como SeqNum, a
cada cuadro. Por ahora, ignoremos el hecho de que SeqNum se implementa mediante un
campo de encabezado de tamaño finito y, en su lugar, supongamos que puede crecer
infinitamente grande. El remitente mantiene tres variables: el tamaño de la ventana de
envío, denotado SWS, proporciona el límite superior en el número de tramas pendientes
(no reconocidas) que el remitente puede transmitir; LAR denota el número de secuencia
del último acuse de recibo; y LFS denota el número de secuencia de la última trama
enviada. El remitente también mantiene el siguiente invariante:
LFS − LAR ≤ SWS
Esta situación se ilustra en la Figura 2.20.
Cuando llega un acuse de recibo, el remitente mueve LAR hacia la derecha, lo que
permite que el remitente transmita otra trama. Además, el remitente asocia un
temporizador con cada trama que transmite, y retransmite la trama en caso de que el
temporizador expire antes de que se reciba un ACK. Observe que el remitente debe estar
dispuesto a almacenar en búfer hasta las tramas SWS, ya que debe estar preparado para
retransmitirlos hasta que se confirmen.
El receptor mantiene las tres variables siguientes: El tamaño de la ventana de recepción,
denotado como RWS, proporciona el límite superior en el número de tramas fuera de
orden que el receptor está dispuesto a aceptar; LAF denota el número de secuencia del
marco aceptable más grande; y LFR denota el número de secuencia de la última trama
recibida. El receptor también mantiene el siguiente invariante:
LAF − LFR ≤ RWS
Esta situación se ilustra en la figura 2.21.
Cuando llega un cuadro con el número de secuencia SeqNum, el receptor realiza la
siguiente acción. Si SeqNum ≤ LFR o SeqNum> LAF, entonces el marco está fuera de la
ventana del receptor y se descarta. Si LFR <SeqNum ≤ LAF, entonces el marco está
dentro de la ventana del receptor y se acepta. Ahora el receptor debe decidir si enviar o
no un ACK. Deje que SeqNumToAck denote el número de secuencia más grande que aún
no se ha reconocido, de manera que se hayan recibido todas las tramas con números de
secuencia menores o iguales a SeqNumToAck. El receptor confirma el recibo
deSeqNumToAck, incluso si se han recibido paquetes en un número elevado. Se dice que
este reconocimiento es acumulativo. Luego establece LFR = SeqNumToAck y ajusta LAF
= LFR + RWS.
Por ejemplo, supongamos que LFR = 5 (es decir, el último ACK que el receptor envió fue
para el número de secuencia 5) y RWS = 4. Esto implica que LAF = 9. Si llegan las tramas
7 y 8, se almacenarán en búfer porque están dentro de La ventana del receptor. Sin
embargo, no hay necesidad de NECESITOS enmarcarse en el marco 6yyy
toarrive.Frames7and8aresid ha sido necesario para que se pueda obtener fuera de la
orden (Técnicamente, el receptor podría reenviar un ACK para el fotograma 5 cuando los
marcos 7 y 8 llegan).
En caso de que llegue el fotograma 6, tal vez sea tarde porque se perdió por primera vez
y tuvo que ser retransmitido, o tal vez simplemente se retrasó4, el receptor reconoce el
fotograma 8, golpea LFR a 8 y establece LAF a 12. Si el fotograma 6 de hecho se perdió,
entonces se habrá producido un tiempo de espera en el remitente, lo que provocará que
retransmita el cuadro 6.
Observamos que cuando se produce un tiempo de espera, la cantidad de datos en
tránsito disminuye, ya que el remitente no puede avanzar su ventana hasta que se
reconoce el cuadro 6. Esto significa que cuando se producen pérdidas de paquetes, este
esquema ya no mantiene la tubería llena. Cuanto más tarde en darse cuenta de que se ha
producido una pérdida de paquetes, más grave se vuelve este problema.
Observe que, en este ejemplo, el receptor podría haber enviado un acuse de recibo
negativo (NAK) para el fotograma 6 tan pronto como llegó el fotograma 7. Sin embargo,
esto no es necesario ya que el mecanismo de tiempo de espera del remitente es
suficiente para detectar esta situación, y el envío de NAK agrega complejidad adicional al
receptor. Además, como mencionamos, habría sido legítimo enviar acuses de recibo
adicionales al marco 5 cuando llegaron los marcos 7 y 8; en algunos casos, un remitente
puede usar ACK duplicados como una pista de que se perdió una trama. Ambos enfoques
ayudan a mejorar el rendimiento al permitir la detección temprana de pérdidas de
paquetes.
Sin embargo, en este caso, se puede hacer un seguimiento electivo de los
agradecimientos. Es decir, el receptor podría reconocer exactamente aquellas tramas que
ha recibido en lugar de la trama con el número más alto recibido en orden. Por lo tanto, en
el ejemplo anterior, el receptor podría acusar recibo de las tramas 7 y 8. Darle más
información al remitente hace que sea más fácil para el remitente mantener el canal lleno
pero agrega complejidad a la implementación.
El tamaño de la ventana de envío se selecciona de acuerdo con la cantidad de
fotogramas que queremos tener pendientes en el enlace en un momento dado; SWS es
fácil de calcular para un retraso dado × producto de ancho de banda.5 Por otra parte, el
receptor puede configurar RWS a lo que quiera. Dos configuraciones comunes son RWS
= 1, lo que implica que el receptor no almacenará en búfer las tramas que lleguen fuera de
orden, y RWS = SWS, que implica que el receptor puede almacenar en búfer cualquiera
de las tramas que transmite el remitente. No tiene sentido configurar RWS> SWS ya que
es imposible que más de las tramas SWS salgan de orden.
Números de secuencia finita y ventana deslizante Ahora volvemos a la simplificación que
introdujimos en el algoritmo: nuestra suposición de que los números de secuencia pueden
crecer infinitamente grandes. En la práctica, por supuesto, el número de secuencia de un
cuadro se especifica en un campo de encabezado de algunos tamaños finitos. Por
ejemplo, un campo de 3 bits significa que hay ocho números de secuencia posibles, 0 ···
7. Esto hace que sea necesario reutilizar los números de secuencia o, expresados de otra
manera, los números de secuencia se envuelven alrededor. Esta introducción presenta el
problema de ser capaz de distinguir entre diferentes encarnaciones de los mismos
números de secuencia, lo que implica que el número de posibles números de secuencia
debe ser mayor que el número de cuadros pendientes permitido. Por ejemplo, detener y
esperar permitió un cuadro sobresaliente a la vez y tenía dos números de secuencia
distintos.
Supongamos que tenemos un número más en nuestro espacio de números de secuencia
que los marcos potencialmente pendientes; es decir, SWS ≤ MaxSeqNum - 1,
dondeMaxSeqNumisthenumberofavailablesequence numbers. ¿Esto es suficiente? La
respuesta depende de RWS. Si RWS = 1, entonces MaxSeqNum ≥ SWS + 1 es
suficiente. Si RWS es igual a SWS, tener un MaxSeqNum solo uno mayor que el tamaño
de la ventana de envío no es suficiente. Para ver esto, considere la situación en la que
tenemos los ocho números de secuencia 0 a 7, y SWS = RWS = 7. Supongamos que el
remitente transmite las tramas 0 ... 6, se reciben con éxito, pero el
ACKsarelost.Thereceiverisnowexpectingframes7,0. ..5, el tiempo de espera de
butthesender y envía los marcos 0 ... 6. Desafortunadamente, el receptor está esperando
la segunda encarnación de las tramas 0 ... 5, pero obtiene la primera encarnación de
estas tramas. Esta es exactamente la situación que queríamos evitar.
Resulta que el tamaño de la ventana de envío no puede ser más de la mitad del número
de números de secuencia disponibles cuando RWS = SWS, o se indica con mayor
precisión,
SWS <(MaxSeqNum + 1) / 2
Intuitivamente, lo que esto dice es que el protocolo de la ventana deslizante alterna entre
las dos mitades del espacio del número de secuencia, al igual que las paradas y esperas
alternan entre los números de secuencia 0 y 1. La única diferencia es que se desliza
continuamente entre las dos mitades. En lugar de alternar discretamente entre ellos.
Tenga en cuenta que esta regla es específica de la situación en la que RWS = SWS. Lo
dejamos como un ejercicio para determinar la regla más general que funciona para los
valores arbitrarios de RWSandSWS. También se dice que la relación entre el tamaño de
la ventana y el espacio del número de secuencia depende de un supuesto que es tan
obvio que es fácil pasarlo por alto, es decir, que los marcos no se reordenan en el tránsito.
Esto no puede ocurrir en un enlace directo punto a punto, ya que no hay forma de que
una trama supere a otra durante la transmisión. Sin embargo, veremos el algoritmo de
ventana deslizante usado en un entorno diferente en el Capítulo 5, y necesitaremos
diseñar otra regla.
Implementación de la ventana deslizante Las siguientes rutinas ilustran cómo podemos
implementar los lados de envío y recepción del algoritmo de ventana deslizante. Las
rutinas se toman de un protocolo de trabajo denominado, apropiadamente, Protocolo de
ventana deslizante (SWP). Para no ocuparnos de los protocolos adyacentes en el gráfico
de protocolo, no debemos modificar los protocolos sobre el protocolo de alto nivel (PSP) y
el protocolo de protocolo de nivel de enlace (LLP).
Comenzamos por definir un par de estructuras de datos. Primero, el encabezado del
cuadro es muy simple: contiene un número de secuencia (SeqNum) y un número de
confirmación (AckNum). También contiene un campo de indicadores que indica si la trama
es un ACK o si transporta datos.
Líneas de código
A continuación, el estado del algoritmo de ventana deslizante tiene la siguiente estructura.
Para el lado de envío del protocolo, este estado incluye las variables LAR y LFS, como se
describió anteriormente en esta sección, así como una cola que contiene tramas que se
han transmitido pero aún no se han confirmado (sendQ). El estado de envío también
incluye un semáforo de conteo llamado sendWindowNotFull. Veremos cómo se usa a
continuación, pero generalmente un semáforo es una primitiva de sincronización que
admite operaciones de semWait y semSignal. Cada invocación de semSignal incrementa
el semáforo en 1, y cada invocación de semWait decrementa en 1, con el proceso de
llamada bloqueado (suspendido) en caso de que disminuya la semáfora para que sea
valuetobecomelessthan0.Aprocessthatisblocked durante su llamada a semWait Se han
realizado para elevar el valor del semáforo por encima de 0.
Para el lado receptor del protocolo, el estado incluye la variable NFE. Esta es la siguiente
trama esperada, la trama con un número de secuencia uno más que la última trama
recibida (LFR), descrita anteriormente en esta sección. También hay una cola que
contiene tramas que se han recibido fuera de orden (recvQ). Finalmente, aunque no se
muestra, los tamaños de las ventanas deslizantes del emisor y el receptor se definen por
las constantes SWS y RWS, respectivamente.

Líneas de código

El lado de envío de SWP se implementa mediante el procedimiento sendSWP. Esta rutina


es bastante simple. Primero, semWait hace que este proceso se bloquee en un semáforo
hasta que esté bien enviar otro marco. Una vez que se permite continuar, sendSWP
establece el número de secuencia en el encabezado del marco, guarda una copia del
marco en la cola de transmisión (sendQ), programa un evento de tiempo de espera para
manejar el caso en el que no se reconoce el marco, y envía el marco a El siguiente
protocolo de nivel inferior, que denotamos como ENLACE.
Un detalle que vale la pena mencionar es la llamada a almacenar swp hdr justo antes de
la llamada a msgAddHdr. Esta rutina traduce la estructura C que contiene el encabezado
SWP (estado-> hdr) en una cadena de bytes que puede adjuntarse de manera segura al
frente del mensaje (hbuf). Esta rutina (no se muestra) debe traducir cada campo de
enteros en el encabezado al orden de bytes de la red y eliminar cualquier relleno que el
compilador haya agregado a la estructura C. El tema del orden de bytes se analiza con
mayor detalle en la Sección 7.1, pero por ahora es suficiente suponer que esta rutina
coloca el bit más significativo de un entero de varias palabras en el byte con la dirección
más alta.
Otra pieza de complejidad en esta rutina es el uso de semWait y el semáforo
sendWindowNotFull. sendWindowNotFull se inicializa con el tamaño de la ventana
deslizante del remitente, SWS (esta inicialización no se muestra). Cada vez que el
remitente transmite una trama, la operación semWait disminuye este conteo y bloquea el
remitente si el conteo pasa a 0. Cada vez que se recibe un ACK, la operación semSignal
invocada en deliverSWP (ver más abajo) incrementa este conteo, desbloqueando así
cualquier espera remitente.
Líneas de código

Antes de continuar con el lado de recepción de SWP, debemos reconciliar una


incongruencia aparente. Por una parte, tenemos que decir que el protocolo de alto nivel
invoca los servicios de un protocolo de bajo nivel llamando a la operación de envío, por lo
que esperaríamos que un protocolo que desea enviar un mensaje a través de SWP
Llamaría a enviar (SWP, paquete). Por otro lado, el procedimiento que se aplica a SWW
es una variable de estado (SwpState) y su primer argumento. ¿Lo que da? La respuesta
es que el sistema operativo proporciona un código de cola que traduce la llamada
genérica para enviar una llamada específica del protocolo a sendSWP. Este código de
pegamento asigna el primer argumento a enviar (la variable de protocolo mágico SWP)
tanto en un puntero de función a sendSWP como un puntero al estado de protocolo que
SWP necesita para hacer su trabajo. La razón por la que el protocolo de alto nivel invoca
indirectamente la función específica del protocolo a través de la llamada a la función
genérica es que queremos limitar la cantidad de información que el protocolo de alto nivel
ha codificado sobre el protocolo de bajo nivel. Esto hace que sea más fácil cambiar la
configuración del gráfico de protocolo en algún momento en el futuro.
Ahora pasamos a la implementación específica de protocolo de SWP de la operación de
entrega, que se proporciona en el procedimiento deliverSWP. En realidad, esta rutina
maneja dos tipos diferentes de mensajes entrantes: los ACK para el marco se procesan
más temprano desde este nódulo y los marcos de datos que se reciben en este nodo. En
cierto sentido, la mitad de ACK de esta rutina es la contraparte del lado del remitente del
algoritmo dado en sendSWP. Se toma una decisión sobre si el mensaje entrante es un
ACK o un marco de datos al verificar el campo de los indicadores en el encabezado.
Tenga en cuenta que esta implementación en particular no admite ACK en los marcos de
datos.
Cuando la trama entrante es un ACK, deliverSWP simplemente encuentra la ranura en la
cola de transmisión (sendQ) que corresponde a la ACK, cancela el evento de tiempo de
espera y libera la trama guardada en esa ranura. Este trabajo realmente se realiza en un
bucle ya que el ACK puede ser acumulativo. La única otra cosa que notar acerca de este
caso es la llamada a la subrutina swpInWindow. Esta subrutina, que se proporciona a
continuación, garantiza que el número de secuencia para la trama que se confirma está
dentro del rango de los ACK que el remitente espera recibir actualmente.
Cuando el marco entrante contiene datos, deliverSWP primero llama a msgStripHdr y
carga swp hdr para extraer el encabezado del marco. La carga de rutina swp hdr es la
contraparte para almacenar swp hdr discutida anteriormente; traduce una cadena de
bytes a la estructura de datos C que contiene el encabezado SWP. deliverSWP luego
llama a swpInWindow para asegurarse de que el número de secuencia del cuadro esté
dentro del rango de números de secuencia que espera. Si es así, la rutina recorre el
conjunto de tramas consecutivas que ha recibido y las pasa al protocolo de nivel superior
invocando la rutina deliverHLP. También envía un ACK acumulativo al remitente, pero lo
hace en bucle a través de la cola de recepción (no usa la variable SeqNumToAck usada
en la descripción de prosa dada anteriormente en esta sección).
Líneas de código

Por último, swpInwindowisas es un ejemplo de subproceso para ver la secuencia dada en


una serie de números entre un número mínimo y un número máximo de secuencia.
Líneas de código

FrameOrderandFlowControl
Theslidingwindowprotocolisperhapsthebstostalgorithmincomputer networking. Sin
embargo, lo que se confunde fácilmente con el algoritmo es que se puede utilizar para
cumplir tres funciones diferentes. El primer rol es el que nos hemos concentrado en esta
sección: entregar de manera confiable los marcos a través de un enlace de enlace fijo.
(En general, el algoritmo puede ser usado para enviar mensajes a través de una red no
confiable.) Esta es la función central del algoritmo.
La segunda función que puede cumplir el algoritmo de ventana deslizante es preservar el
orden en que se transmiten las tramas. Esto es fácil de hacer en el receptor, ya que cada
cuadro tiene un número de secuencia, el receptor solo se asegura de que no pase un
cuadro al siguiente protocolo de nivel superior hasta que ya haya pasado todos los
cuadros con una secuencia más pequeña. número. Es decir, los buffers del receptor (es
decir, no pasan) tramas fuera de orden. La versión del algoritmo de ventana deslizante
que se describe en esta sección conserva el orden de los cuadros, aunque podemos
imaginar una variación en la cual el receptor pasa los cuadros al siguiente protocolo sin
esperar a que se entreguen todos los cuadros anteriores. Una pregunta que deberíamos
hacernos es si realmente necesitamos el protocolo de ventana deslizante para mantener
los marcos en orden, o si, en cambio, esta es una funcionalidad innecesaria en el nivel del
enlace. Desafortunadamente, todavía no hemos visto suficiente de la arquitectura de red
para responder a esta pregunta; En primer lugar, debemos comprender cómo se conectan
los enlaces punto a punto mediante una secuencia de enlaces de extremo a extremo.
El tercer papel que juega a veces el algoritmo de ventana deslizante es admitir el control
de fl ujo, un mecanismo de retroalimentación mediante el cual el receptor puede
estrangular al remitente. Dicho mecanismo se utiliza para evitar que el remitente supere al
receptor, es decir, que transmita más datos de los que el receptor puede procesar. Esto
generalmente se logra aumentando el protocolo de la ventana deslizante para que el
receptor no solo reconozca las tramas que ha recibido sino que también informe al
remitente de cuántas tramas tiene espacio para recibir. La cantidad de cuadros que el
receptor puede recibir corresponde a la cantidad de espacio disponible en el búfer. Al
igual que en el caso de la entrega ordenada, debemos asegurarnos de que el control de fl
ujo sea necesario en el nivel del enlace antes de incorporarlo en el protocolo de ventana
deslizante
2.5.3 Canales lógicos concurrentes
El protocolo de enlace de datos utilizado en ARPANET proporciona una alternativa
interesante al protocolo de ventana deslizante, ya que es capaz de mantener la tubería
llena mientras se usa el algoritmo simple de parada y espera. Una consecuencia
importante de este enfoque es que las tramas enviadas a través de un enlace dado no se
mantienen en ningún orden en particular. El protocolo tampoco implica nada sobre el
control de fl ujo.
La idea que subyace al protocolo ARPANET, a la que nos referimos como canales lógicos
concurrentes, es multiplexar varios canales lógicos en un enlace punto a punto único y
unir el circuito de parada y en espera de cada canal lógico. No se mantiene ninguna
relación entre las tramas enviadas en ninguno de los canales lógicos, sin embargo, debido
a que una trama diferente puede sobresalir en cada uno de los varios canales lógicos, el
remitente puede mantener el enlace completo.
Más precisamente, el remitente conserva 3 bits de estado para cada canal: un valor
booleano, que indica si el canal es o no muy activo, el número de secuencia de 1 bit para
usar la próxima vez que se envíe una trama en este canal lógico; y el siguiente número de
secuencia que se espera en un cuadro que llega a este canal. Cuando el nodo tiene un
marco para enviar, utiliza el canal inactivo más bajo y, de lo contrario, se comporta como
detener y esperar.
En la práctica, ARPANET admitió 8 canales lógicos sobre cada enlace de tierra y 16 sobre
cada enlace de satélite. En el caso de enlace a tierra, el encabezado de cada trama
incluye un número de canal de 3 bits y un número de secuencia de 1 bit, para un total de
4 bits. Esta es exactamente la cantidad de bits que requiere el protocolo de ventana
deslizante para admitir hasta 8 cuadros pendientes en el enlace cuando RWS = SWS.
2.6 ETHERNET Y REDES DE ACCESO MÚLTIPLES (802.3)
Desarrollado a mediados de la década de 1970 por investigadores del Centro de
Investigación Palo Alto de Xerox (PARC), el Ethernet finalmente se convirtió en la
tecnología de red de área local dominante, surgiendo de un paquete de tecnologías de la
competencia. Hoy en día, compite principalmente con redes inalámbricas 802.11, pero
sigue siendo extremadamente popular en redes de campus y centros de datos. El nombre
más general para la tecnología detrás de Ethernet es Carrier Sense, Acceso múltiple con
Collision Detect (CSMA / CD).
Como lo indica el nombre de CSMA, la Ethernet es una red de acceso múltiple, lo que
significa que el conjunto de datos de los trámites del mensaje y lo que se recibe es un
enlace de enlace compartido. Por lo tanto, puede pensar que un Ethernet es como un bus
que tiene varias estaciones conectadas. El "sentido de la portadora" en CSMA / CD
significa que todos los nodos pueden distinguir entre un enlace inactivo y un enlace
ocupado, y "detección de colisión" significa que un nodo escucha mientras transmite y,
por lo tanto, puede detectar cuando una trama que está transmitiendo ha interferido (
colisionado) con una trama transmitida por otro nodo.
Ethernet tiene sus raíces en una red de radio de paquetes temprana, llamada Aloha,
desarrollada en la Universidad de Hawai para apoyar la comunicación por computadora
en las islas hawaianas. Al igual que la red Aloha, el problema fundamental al que se
enfrenta Ethernet es cómo mediar el acceso a un medio compartido de manera imparcial
y definida (en Alha, el tema es la atmósfera, mientras que en Ethernet el medio es un
cable coaxial). La idea central tanto en Aloha como en Ethernet es un algoritmo que
controla cuándo puede transmitir cada nodo.
Curiosamente, los enlaces modernos de Ethernet ahora son en gran parte punto a punto;
es decir, conectan un host a un conmutador Ethernet o interconectan conmutadores. Por
lo tanto, las técnicas de "acceso múltiple" no se usan mucho en los medios de
comunicación de hoy. En el mismo momento, la red inalámbrica se ha vuelto
extremadamente popular, por lo que las tecnologías de acceso múltiple que comenzaron
en Aloha se utilizan nuevamente en redes inalámbricas como las redes 802.11 (Wi-Fi).
Estas redes serán discutidas en la Sección 2.7.

Discutiremos los switches Ethernet en el próximo capítulo. Por ahora, nos centraremos en
cómo funciona un solo enlace Ethernet. Y a pesar de que Ethernet de acceso múltiple se
está convirtiendo en una curiosidad histórica, los principios de las redes de acceso
múltiple siguen siendo lo suficientemente importantes como para justificar una discusión
adicional, que se proporciona a continuación.
Digital Equipment Corporation e Intel Corporation se unieron a Xerox para definir un
estándar de Ethernet de 10 Mbps en 1978. Este estándar luego formó la base para el
estándar IEEE 802.3, que además de fi ne una colección mucho más amplia de medios
físicos sobre los que puede operar un Ethernet, incluyendo 100 Versiones de Mbps, 1-
Gbps y 10-Gbps.
2.6.1 Propiedades físicas
Los segmentos de Ethernet se implementaron originalmente utilizando un cable coaxial de
una longitud de hasta 500 m. (Las Ethernets modernas utilizan pares de cobre trenzado,
generalmente un tipo particular conocido como "Categoría 5", o fibras ópticas, y en
algunos casos pueden ser mucho más largos que 500 m). Este cable era similar al tipo
usado para la televisión por cable. Hosts conectados a un segmento de Ethernet al
acceder a él. Un transceptor, un pequeño dispositivo conectado directamente a la toma,
detectó cuando la línea estaba inactiva e impulsó la señal cuando el host estaba
transmitiendo. También recibió señales entrantes. El transceptor, a su vez, se conectó a
un adaptador Ethernet, que estaba conectado al host. Esta con fi guración se muestra en
la figura 2.22.
Los repetidores pueden unir varios segmentos de Ethernet. Un repetidor es un dispositivo
que envía señales digitales, como un ampli fi cador de señales analógicas. Los
repetidores comprenden solo bits, no marcos, sin embargo, el nombre de cuatro
repetidores podría estar ubicado entre cualquier par de hosts, lo que significa que una
Ethernet clásica tenía un alcance total de solo 2500 m. Por ejemplo, usar solo dos
repetidores entre cualquier par de hosts admite una configuración similar a la ilustrada en
la Figura 2.23, es decir, un segmento que se extiende por la columna vertebral de un
edificio con un segmento en cada piso.
Es un abanico de archivos de gran tamaño que se repite en el repetidor, a veces se llama
Hub, como se ilustra en la Figura 2.24. Un concentrador simplemente repite lo que
escucha en un puerto y en todos sus otros puertos.
Cualquier señal colocada en Ethernet por un host se transmite a través de toda la red; es
decir, la señal se propaga en ambas direcciones, y los repetidores y los concentradores
envían la señal a todos los segmentos salientes. Los terminadores adjuntos al final de
cada segmento absorben la señal y evitan que rebote e interfiera con señales de trazas.
Las especi fi caciones originales de Ethernet utilizaron el esquema de codificación de
Manchester descrito en la Sección 2.2, mientras que la codificación 4B / 5B o el esquema
8B / 10B similar se usa hoy en Ethernets de mayor velocidad.
Imagen

Es importante comprender que si una Ethernet dada abarca un solo segmento, una
secuencia lineal de segmentos conectados por repetidores o múltiples segmentos
conectados en una configuración en estrella por un concentrador, los datos transmitidos
por cualquier host en ese Ethernet llegan a todos los demás hosts . Éstas son las buenas
noticias. La mala noticia es que todos estos hosts están compitiendo por acceder al
mismo enlace y, como consecuencia, se dice que están en el mismo dominio de colisión.
La parte de acceso múltiple de Ethernet tiene que ver con tratar con la competencia por el
enlace que surge en un dominio de colisión.
2.6.2 Protocolo de acceso
Ahora prestamos atención al algoritmo que controla el acceso a un enlace Ethernet
compartido. Este algoritmo se denomina comúnmente control de acceso de medios (MAC)
de Ethernet. Por lo general, se implementa en el hardware en el adaptador de red. No se
describirá el error de guerra, sino que se enfoca en el algoritmo que implementa. Primero,
sin embargo, describimos el formato de trama y las direcciones de Ethernet.
FrameFormat Cada trama de Ethernet se de fi ne mediante el formato dado en la Figura
2.25.6 El preámbulo de 64 bits permite que el receptor se sincronice con la señal; Es una
secuencia de alternar 0s y 1s. Tanto los hosts de origen como los de destino se identifican
con una dirección de 48 bits. El campo de tipo de paquete sirve como clave de
demultiplexación; identifica a cuál de los posiblemente muchos protocolos de nivel
superior se debe entregar este marco. Cada cuadro contiene hasta 1500 bytes de datos.
Como mínimo, un marco debe contener al menos 46 bytes de datos, incluso si esto
significa que el host debe rellenar el marco antes de transmitirlo. El motivo de este tamaño
de cuadro mínimo es que el cuadro debe ser lo suficientemente largo para detectar una
colisión; Discutimos esto más abajo. Finalmente, cada cuadro incluye un CRC de 32 bits.
Al igual que el protocolo HDLC descrito en la Sección 2.3.2, Ethernet es un protocolo de
trama orientado a bits. Tenga en cuenta que, desde la perspectiva del host, una trama
Ethernet tiene un encabezado de 14 bytes: dos direcciones de 6 bytes y un campo de tipo
de 2 bytes. El adaptador de envío adjunta el preámbulo y el CRC antes de transmitir, y el
adaptador de recepción los elimina.
Direcciones Cada host en una Ethernet, de hecho, cada host Ethernet en el mundo, tiene
una dirección Ethernet única. Técnicamente, la dirección pertenece al adaptador, no al
host; por lo general se quema en ROM. Las direcciones de Ethernet se imprimen
normalmente en una forma que los humanos pueden leer como una secuencia de seis
números separados por dos puntos. Cada número corresponde a 1 byte de la dirección de
6 bytes y está dado por un par de dígitos hexadecimales, uno para cada uno de los
nibbles de 4 bits en el byte; 0s iniciales se caen. Por ejemplo, 8: 0: 2b: e4: b1: 2 es la
representación legible por humanos de la dirección Ethernet
00001000 00000000 00101011 11100100 10110001 00000010
Para garantizar que cada adaptador obtenga una dirección única, a cada fabricante de
dispositivos Ethernet se le asigna un prefijo diferente que debe incluirse en la dirección de
cada adaptador que construyen. Por ejemplo, a Advanced Micro Devices se le ha
asignado el prefijo de 24 bits x080020 (o 8: 0: 20). Un fabricante determinado se asegura
de que la dirección que produce sea única.
Cada trama transmitida en una Ethernet es recibida por cada adaptador conectado a esa
Ethernet. Cada adaptador reconoce los marcos dirigidos a su dirección y pasa solo esos
marcos al host. (También se puede programar un adaptador para que se ejecute en modo
promiscuo, en cuyo caso entrega todas las tramas recibidas al host, pero este no es el
modo normal). Además de estas direcciones de unidifusión, se trata una dirección
Ethernet que consta de todos los 1s como una dirección de difusión; todos los
adaptadores pasan tramas dirigidas a la dirección de transmisión hasta el host. De
manera similar, una dirección que tiene el primer bit establecido en 1 pero no es la
dirección de difusión se llama una dirección de multidifusión. Un host determinado puede
programar su adaptador para aceptar algún conjunto de direcciones de multidifusión. Las
direcciones de multidifusión se utilizan para enviar mensajes a algún subconjunto de los
hosts en una Ethernet (por ejemplo, todos los servidores de archivos). Para resumir, un
adaptador Ethernet recibe todos los marcos y acepta
n Marcos dirigidos a su propia dirección.
n Cuadros dirigidos a la dirección de transmisión.
n Marcos dirigidos a una dirección de multidifusión, si se le ha indicado que escuche esa
dirección
n Todos los cuadros, si se ha colocado en modo promiscuo.
Pasa al host solo los frames que acepta.
TransmitterAlgorithm Como acabamos de ver, el lado del receptor del protocolo Ethernet
es simple; Las inteligencia reales se implementan en el lado del remitente. El algoritmo del
transmisor se define de la siguiente manera.
Cuando el adaptador tiene un marco para enviar y la línea está inactiva, transmite el
marco inmediatamente; No hay negociación con los otros adaptadores. El límite superior
de 1500 bytes en el mensaje significa que el adaptador puede ocupar la línea solo por un
tiempo fijo.
Cuando un adaptador tiene una trama para enviar y la línea está ocupada, espera a que
la línea pase a estar inactiva y luego la transmite inmediatamente.7 Se dice que Ethernet
es un protocolo persistente 1 porque un adaptador con una trama para enviar transmite
con probabilidad 1 cada vez que una línea ocupada queda inactiva. En general, un
algoritmo p-persistente transmite con probabilidad 0 ≤ p ≤ 1 después de que una línea
esté inactiva y difiere con probabilidad q = 1 - p. El razonamiento detrás de la elección de
una p <1 es que puede haber varios adaptadores esperando a que la línea ocupada
quede inactiva, y no queremos que todos empiecen a transmitir al mismo tiempo. Si cada
adaptador transmite inmediatamente con una probabilidad de, digamos, un 33%, entonces
hasta tres adaptadores pueden estar esperando para transmitir y es probable que solo
uno comience a transmitir cuando la línea esté inactiva. A pesar de este razonamiento, un
adaptador de Ethernet siempre transmite de forma inmediata y deliberadamente que la
red se ha convertido en algo muy bueno y ha sido muy eficaz al hacerlo.

Para completar la historia sobre los protocolos p-persistentes para el caso en que p <1,
puede preguntarse cuánto tiempo tiene que esperar un remitente que pierde la moneda
(es decir, decide diferir) antes de que pueda transmitir. La respuesta para la red Aloha,
que originalmente desarrolló este estilo de protocolo, fue dividir el tiempo en intervalos
discretos, con cada intervalo correspondiente a la cantidad de tiempo que lleva transmitir
un fotograma completo. Cada vez que un nodo tiene una trama para enviar y detecta una
ranura vacía (inactiva), transmite con probabilidad p y difiere hasta la siguiente ranura con
probabilidad q = 1 - p. Si la siguiente ranura también está vacía, el nodo nuevamente
decide transmitir o diferir, con probabilidades p y q, respectivamente. Si la siguiente
ranura no está vacía, es decir, alguna otra estación ha decidido transmitir, entonces el
nodo simplemente espera la próxima ranura inactiva y el algoritmo se repite.
Volviendo a nuestro análisis de Ethernet, porque no hay control centralizado, es posible
que dos (o más) adaptadores comiencen a transmitir al mismo tiempo, ya sea porque
ambos encontraron que la línea estaba inactiva o porque ambos habían estado esperando
a un ocupado línea para estar inactivo. Cuando esto sucede, dos (o más) cuadros se
reparten en la red. Cada remitente, debido a que la última guía de detección de colisión,
determina que dicha colisión está en curso, se configura en un lugar en el que se
encuentra. Por lo tanto, un transmisor enviará mínimamente 96 bits en el caso de una
colisión: preámbulo de 64 bits más una secuencia de bloqueo de 32 bits.
Una forma en que un adaptador enviará solo 96 bits, lo que a veces se denomina trama
runt, es si los dos hosts están cerca uno del otro. Si los dos hosts estuvieran más
separados, hubieran tenido que transmitir más tiempo, y así enviar más bits, antes de
detectar la colisión. De hecho, el caso más desfavorable ocurre cuando se trata de dos
partes opuestas a los límites de Internet. Para estar seguro de que la trama que acaba de
enviar no chocó con otra trama, es posible que el transmisor deba enviar hasta 512 bits.
No por casualidad, cada trama de Ethernet debe tener una longitud de al menos 512 bits
(64 bytes): 14 bytes de encabezado más 46 bytes de datos más 4 bytes de CRC.
¿Por qué 512 bits? La respuesta está relacionada con otra pregunta que podría hacer
acerca de un Ethernet: ¿Por qué su longitud se limita a solo 2500 m? ¿Por qué no 10 o
1000 km? La respuesta a ambas preguntas tiene que ver con el hecho de que cuanto más
separados están dos nodos, más tarda en llegar una trama a la otra y la red es vulnerable
a una colisión durante este tiempo.
La Figura 2.26 ilustra el peor escenario, donde los hosts A y B se encuentran en los
extremos opuestos de la red. Supongamos que el host A comienza a transmitir una trama
en el tiempo t, como se muestra en (a). Toma una latencia de enlace (denotemos la
latencia como d) para que la trama alcance el host B. Por lo tanto, el primer bit de la trama
de A llega a B en el tiempo t + d, como se muestra en (b). Supongamos que un instante
antes de que llegue el marco del host A (es decir, B todavía ve una línea inactiva), el host
B comienza a transmitir su propio marco. El marco de B colisionará inmediatamente con el
marco de A, y esta colisión será detectada por el host B (c). El host B enviará la secuencia
de bloqueo de 32 bits, como se describe anteriormente. (El marco de B será un tramo).
Desafortunadamente, el host A no sabrá que la colisión ocurrió hasta que el marco de B lo
alcanza, lo que ocurrirá una latencia de enlace más tarde, en el tiempo t + 2 × d, como se
muestra en (d). El host A debe continuar transmitiendo hasta este momento para detectar
la colisión. En otras palabras, el host A debe transmitir 2 × d para asegurarse de que
detecta todas las posibles colisiones. Teniendo en cuenta que una Ethernet con máxima
configuración tiene una longitud de 2500 m, y que puede haber hasta cuatro repetidores
entre cualquiera de los dos hosts, se ha determinado que el retardo de ida y vuelta es de
51,2 µs, que en una Ethernet de 10 Mbps corresponde a 512 bits. La otra forma de ver
esta situación es que necesitamos limitar la latencia máxima de Ethernet a un valor
bastante pequeño (por ejemplo, 51.2 µs) para que funcione el algoritmo de acceso; Por lo
tanto, la longitud máxima de un Ethernet debe ser algo del orden de 2500 m.
Una vez que un adaptador detectó una colisión y detuvo su transmisión, espera que se
acumule una cantidad máxima de tiempo y vuelva a intentarlo. Cada vez que se transmite,
se produce un error, y el adaptador puede volver a montar una vez más para volver a
intentarlo. Esta estrategia de duplicar el intervalo de retardo entre cada intento de
retransmisión es una técnica general conocida como retroceso exponencial. Más
precisamente, el adaptador retrasa primero 0 o 51.2 µs, seleccionados al azar. Si este
esfuerzo falla, espera 0, 51.2, 102.4 o 153.6 µs (seleccionado al azar) antes de volver a
intentarlo; esto es k × 51.2 para k = 0 ... 3. Después de la tercera colisión, espera k × 51.2
para k = 0 ... 23 - 1, nuevamente seleccionado al azar. En general, el algoritmo selecciona
aleatoriamente una k entre 0 y 2n - 1 y espera k × 51.2 µs, donde n es el número de
colisiones experimentadas hasta el momento. El adaptador se da por vencido después de
un número determinado de intentos e informa de un error de transmisión al host. Los
adaptadores generalmente reintentan hasta 16 veces, aunque el algoritmo de retroceso
limita n en la fórmula anterior en 10.
2.6.3 Experiencia con Ethernet
Debido a que Ethernets ha existido durante tantos años y es tan popular, tenemos mucha
experiencia en su uso. Una de las observaciones más importantes que las personas han
hecho acerca de Ethernets de acceso múltiple es que funcionan mejor en condiciones de
poca carga. Esto se debe a que bajo cargas pesadas (por lo general, una utilización de
más del 30% se considera pesada en una Ethernet) una gran parte de la capacidad de la
red se desperdicia por colisiones.
Para mitigar estas preocupaciones, las redes de acceso múltiple se utilizaron
normalmente de una manera mucho más conservadora de lo que permite el estándar. Por
ejemplo, la mayoría de los Ethernets tenían menos de 200 hosts conectados, lo que es
mucho menos que el máximo de 1024. De manera similar, la mayoría de los Ethernets
eran mucho más cortos que los 2500m, con una respuesta aproximada al retardo del
cierre de 5 µsthan51.2 µs. Otro factor que hizo práctico a Ethernets es que, a pesar de
que los adaptadores Ethernet no implementan el control de flujo a nivel de enlace, los
hosts generalmente proporcionan un mecanismo de control de flujo de extremo a extremo,
como veremos más adelante. Como resultado, es raro encontrar situaciones en las que
cualquier host esté continuamente bombeando marcos a la red.
Finalmente, vale la pena decir algunas palabras acerca de por qué Ethernets ha tenido
tanto éxito, para que podamos entender las propiedades que debemos emular con
cualquier tecnología de LAN que intente reemplazarla. Primero, una Ethernet es
extremadamente fácil de administrar y mantener: no había switches en las redes Ethernet
originales, no había tablas de enrutamiento o de configuración para mantenerse al día, y
es fácil agregar un nuevo host a la red. Es difícil imaginar una red más simple de
administrar. Segundo, es barato: el cable es barato y el único otro costo es el adaptador
de red en cada host. Ethernet se arraigó profundamente por estas razones, y cualquier
enfoque basado en conmutadores que aspiraba a desplazarlo requería una inversión
adicional en infraestructura (los conmutadores), además del costo de cada adaptador.
Como veremos en el siguiente capítulo, una tecnología basada en conmutadores logró
reemplazar la Ethernet de acceso múltiple: Ethernet conmutada. Retener la simplicidad de
la administración (y la familiaridad) fue una razón clave para este éxito.
¿Donde están ahora?
ANILLOS DE TOKEN
Durante muchos años, hubo dos formas principales de construir una LAN: Ethernet o
token ring. La forma más prevalente de token ring fue inventada por IBM y estandarizada
como IEEE 802.5. Los anillos de señales tienen una serie de cosas en común con
Ethernet: el anillo se comporta como un solo medio compartido y emplea un algoritmo
distribuido para decidir qué estación puede transmitir en ese medio en un momento dado,
y cada nodo en un anillo determinado puede ver todos los Paquetes transmitidos por otros
nodos.
La diferencia más obvia entre el token ring y Ethernet es la topología; mientras que en
Ethernet, luego en el modo de funcionamiento de la interfaz, cada nodo está conectado a
un par de vecinos, uno en sentido ascendente y otro en sentido descendente. El "token"
es solo una secuencia especial de bits que circula alrededor del anillo; Cada nodo recibe y
luego envía el token. Cuando un nodo que tiene un cuadro para transmitir ve el token, lo
quita del anillo (es decir, no reenvía el patrón de bits especial) y, en cambio, inserta su
cuadro en el anillo. Cada nodo en el camino simplemente reenvía el marco, con el nodo
de destino guardando una copia y enviando el mensaje al siguiente nodo en el anillo.
Cuando el marco vuelve al remitente, este nodo quita su marco del anillo (en lugar de
continuar enviándolo) y vuelve a insertar el token. De esta manera, algún nodo
descendente tendrá la oportunidad de transmitir un cuadro. El algoritmo de acceso a los
medios es justo en el sentido de que a medida que el token circula alrededor del anillo,
cada nodo tiene la oportunidad de transmitir. Los nodos son atendidos en forma de round-
robin.
A lo largo de las décadas, aparecieron muchas variantes de token rings, y la Interfaz de
Datos Distribuidos de Fibra (FDDI) fue una de las últimas en ver una implementación
significativa. Al final, los token ring se perdieron en Ethernet, especialmente con el
advenimiento de la conmutación de Ethernet y las variantes de Ethernet de alta velocidad
(100-Mbit y Gigabit Ethernet).

2.7 INALAMBRICO
Las tecnologías inalámbricas se diferencian de los enlaces por cable en algunas formas
importantes, mientras que al mismo tiempo comparten muchas propiedades comunes. Al
igual que los enlaces por cable, las cuestiones de los errores de bits son de gran
preocupación, por lo general aún más debido al entorno de ruido impredecible de la
mayoría de los enlaces inalámbricos. El encuadre y la confiabilidad también tienen que
ser abordados. A diferencia de los enlaces por cable, la energía es un gran problema para
la conexión inalámbrica, especialmente porque los dispositivos inalámbricos pequeños
suelen utilizar los enlaces (como los de los sensores de sonido) que no dependen del
acceso a la energía (por ejemplo, una batería pequeña). Además, no se puede disparar a
una potencia arbitrariamente alta con un transmisor de radio: existen dudas sobre la
interferencia con otros dispositivos y, por lo general, las regulaciones sobre la cantidad de
energía que un dispositivo puede emitir a una frecuencia determinada.
Los medios inalámbricos también son inherentemente de acceso múltiple; es difícil dirigir
la transmisión de la radio para que el receptor reciba las señales de radio de cualquier
transmisor con suficiente potencia en su vecindario. Por lo tanto, el control de acceso a
los medios es un problema central para los enlaces inalámbricos. Y, debido a que es difícil
controlar quién recibe su señal cuando se transmite por aire, es posible que también
deban abordarse los problemas de escuchas ilegales.
Existe una amplia variedad de diferentes tecnologías inalámbricas, cada una de las cuales
hace concesiones diferentes en diversas dimensiones. Una forma sencilla de categorizar
las diferentes tecnologías es por las tasas de datos que proporcionan y qué tan alejados
pueden estar los nodos de comunicación. Otras diferencias importantes incluyen qué
parte del espectro electromagnético usan (incluso si requiere una licencia) y cuánta
energía consumen. En esta sección, discutimos tres tecnologías inalámbricas
prominentes:
Table

Wi-Fi (más conocido oficialmente como 802.11), Bluetoothr, y la tercera generación o


familia de estándares inalámbricos “3G”. La Tabla 2.4 ofrece una visión general de estas
tecnologías y cómo se comparan entre sí.
Puede recordar de la Sección 1.5 que el ancho de banda a veces significa el ancho de
una banda de frecuencia en hercios y, a veces, la velocidad de datos de un enlace.
Debido a que estos dos conceptos surgen en discusiones sobre redes inalámbricas,
usaremos el ancho de banda aquí en su sentido más estricto (ancho de una banda de
frecuencia) y usaremos el término tasa de datos para describir el número de bits por
segundo que se pueden enviar El enlace, como en la tabla 2.4.
Debido a que todos los enlaces inalámbricos comparten el mismo medio, el desafío es
compartir ese medio de manera eficiente, sin interferir mucho con los demás. La mayor
parte de este intercambio se logra dividiéndolo a lo largo de las dimensiones de
frecuencia y espacio. El uso exclusivo de una frecuencia particular en un área geográfica
particular puede asignarse a una entidad individual como una corporación. Es posible
limitar el área cubierta por una señal electromagnética porque dichas señales se debilitan
o atenúan con la distancia desde su origen. Para reducir el área cubierta por su señal,
reduzca la potencia de su transmisor.
Estas asignaciones suelen ser determinadas por agencias gubernamentales, como la
Comisión Federal de Comunicaciones (FCC) en los Estados Unidos. Las bandas especí fi
cas (rangos de frecuencia) se asignan a ciertos usos. Algunas bandas están reservadas
para uso del gobierno. Otras bandas están reservadas para usos tales como radio AM,
radio FM, televisión, comunicación satelital y teléfonos celulares. Las frecuencias especí fi
cas dentro de estas bandas se licencian a organizaciones individuales para su uso dentro
de ciertas áreas geográficas. Finalmente, varias bandas de frecuencia se reservan para
uso exento de licencia, bandas en las que no se necesita una licencia.
Los dispositivos que utilizan frecuencias exentas de licencia todavía están sujetos a
ciertas restricciones para que ese intercambio de otro modo no restringido funcione. El
más importante de estos es un límite en la potencia de transmisión. Esto limita el rango de
una señal, haciendo que sea menos probable que interfiera con otra señal. Por ejemplo,
un teléfono inalámbrico (un dispositivo común sin licencia) puede tener un alcance de
aproximadamente 100 pies.
Una idea que aparece mucho cuando el espectro se comparte entre muchos dispositivos
y aplicaciones es el espectro extendido. La idea detrás del espectro expandido es difundir
la señal en una banda de frecuencia más amplia, para minimizar el impacto de la
interferencia de otros dispositivos. (El espectro de propagación se diseñó originalmente
para uso militar, por lo que estos “otros dispositivos” intentaban a menudo interrumpir la
señal). Por ejemplo, el salto de frecuencia es una técnica de espectro expandido que
implica transmitir la señal a través de una secuencia aleatoria de frecuencias; es decir,
primero transmitiendo a una frecuencia, luego una segunda, luego una tercera, y así
sucesivamente. La secuencia de frecuencias no es realmente aleatoria, sino que se
calcula algorítmicamente mediante un generador de números pseudoaleatorios. El
receptor utiliza el mismo algoritmo que el remitente y lo inicializa con la misma semilla; por
lo tanto, es capaz de saltar frecuencias sincronizadas con el transmisor para recibir
correctamente la trama. Este esquema reduce la interferencia al hacer que sea poco
probable que dos señales usen la misma frecuencia por más que el bit aislado poco
frecuente.
Una segunda técnica de espectro ensanchado, llamada secuencia directa, agrega
redundancia para una mayor tolerancia de interferencia. Cada bit de datos está
representado por múltiples bits en la señal transmitida, de modo que, si algunos de los
bits transmitidos están dañados por la interferencia, generalmente hay suficiente
redundancia para recuperar el bit original. Para cada bit que el transmisor desea
transmitir, en realidad envía el OR exclusivo de ese bit y n bits aleatorios. Al igual que con
el salto de frecuencia, la secuencia de bits aleatorios se genera mediante un generador de
números pseudoaleatorios conocido tanto por el remitente como por el receptor. Los
valores transmitidos, conocidos como código de fragmentación de n bits, distribuyen la
señal a través de una banda de frecuencia que es n veces más ancha de lo que hubiera
requerido la trama. La Figura 2.27 muestra un ejemplo de una secuencia de
fragmentación de 4 bits.
Las diferentes partes del espectro electromagnético tienen propiedades diferentes, lo que
hace que algunas se adapten mejor a la comunicación y otras menos. Por ejemplo,
algunos pueden penetrar edificios y otros no. Los gobiernos regulan solo la parte principal
de comunicación: los rangos de radio y microondas. A medida que aumenta la demanda
de espectro principal, existe un gran interés por el espectro que se está volviendo
disponible a medida que la televisión analógica se va reduciendo progresivamente en
favor de lo digital.8
En muchas redes inalámbricas de hoy observamos que hay dos clases diferentes de
puntos finales. Un punto final, a veces descrito como la estación base, generalmente no
tiene movilidad, pero tiene una conexión cableada (o al menos de banda ancha) a Internet
u otras redes, como se muestra en la Figura 2.28. El nodo en el otro extremo del enlace,
que se muestra aquí como un nodo cliente, es a menudo móvil y se basa en su enlace a
la estación base para toda su comunicación con otros nodos.
Observe que en la Figura 2.28 hemos utilizado un par de líneas onduladas para
representar la abstracción inalámbrica del "enlace" provista entre dos dispositivos (por
ejemplo, entre una estación base y uno de sus nodos de cliente). Uno de los aspectos
interesantes de la comunicación inalámbrica es que, naturalmente, es compatible con la
comunicación punto-tomultipoint, ya que las ondas de radio enviadas por un dispositivo
pueden recibirse múltiples dispositivos de forma simultánea. Sin embargo, es útil crear
una abstracción de enlace punto a punto para protocolos de capa superior, y veremos
ejemplos. de cómo funciona esto más adelante en esta sección.
Tenga en cuenta que en la Figura 2.28, la comunicación entre nodos no base (cliente) se
enruta a través de la estación base. Esto a pesar del hecho de que las ondas de radio
emitidas por un nodo cliente bien pueden ser recibidas por otros nodos cliente; el modelo
de estación base común no permite la comunicación directa entre los nodos cliente.
Imagen
Esta topología implica tres niveles de movilidad cualitativamente diferentes. El primer nivel
es sin movilidad, como cuando un receptor debe estar en una ubicación fija para recibir
una transmisión direccional desde la estación base. El segundo nivel es la movilidad
dentro de la gama de datos, y está disponible con Bluetooth. El tercer nivel es la movilidad
entre bases, como es el caso de los teléfonos celulares y Wi-Fi.
Una topología alternativa que está viendo un creciente interés es la malla o la red ad hoc.
En una malla inalámbrica, los nodos son pares; es decir, no hay un nodo de estación base
especial. Los mensajes pueden reenviarse a través de una cadena de nodos pares
siempre que cada nodo esté dentro del rango del nodo anterior. Esto se ilustra en la
Figura 2.29. Esto permite que la parte inalámbrica de una red se extienda más allá del
rango limitado de una sola radio. Desde el punto de vista de la competencia entre
tecnologías, esto permite que una tecnología de más corto alcance amplíe su alcance y,
potencialmente, compita con una tecnología de mayor alcance. Las mallas también
ofrecen tolerancia a fallas al proporcionar múltiples rutas para que un mensaje llegue del
punto A al punto B. Una red en malla puede extenderse de manera gradual, dentro de los
costos de los cálculos. Por otra parte, una red en malla requiere que los nodos no básicos
tengan un cierto nivel de sofisticación en su hardware y software. , potencialmente
incrementando los costos de la unidad y el consumo de energía, una consideración crítica
para los dispositivos alimentados por batería. Las redes de malla inalámbricas son de
gran interés para la investigación (consulte la sección de lecturas adicionales para
algunas referencias), pero aún están en su infancia relativa en comparación con las redes
con estaciones base. Las redes de sensores inalámbricos, otra tecnología emergente, a
menudo forman mallas inalámbricas.
Ahora que hemos cubierto algunos de los problemas inalámbricos comunes, echemos un
vistazo a los detalles de algunas tecnologías inalámbricas comunes.
Imagen
2.7.1 802.11 / Wi-Fi
La mayoría de los lectores habrán utilizado una red inalámbrica basada en los estándares
IEEE 802.11, a menudo denominada Wi-Fi.9. Wi-Fi es técnicamente una marca comercial,
propiedad de un grupo comercial llamado Wi-Fi Alliance, que certifica el cumplimiento del
producto con 802.11. . Al igual que Ethernet, 802.11 está diseñado para su uso en un
área geográfica limitada (hogares, edificios de oficinas, campus), y su principal desafío es
mediar el acceso a un medio de comunicación compartido; en este caso, las señales se
propagan a través del espacio.
PhysicalProperties 802.11 define varias capas físicas diferentes que operan en varias
bandas de frecuencia y proporcionan un rango de velocidades de datos diferentes. En el
momento de la redacción, 802.11 no proporciona el máximo máximo de datos, superando
los 600 Mbps.
El estándar 802.11 original definió dos estándares de capas físicas basadas en radio, uno
que usa salto de frecuencia (más de 79 anchos de banda de 1 MHz de ancho) y el otro
que usa un espectro de dispersión de secuencia directa (con una secuencia de corte de
11 bits). Ambos proporcionaron tasas de datos en el rango de 2 Mbps. La capa física
estándar 802.11b se añadió posteriormente. Usando una variedad de secuencia directa,
802.11b proporciona hasta 11 Mbps. Estos tres estándares operan todos en la banda de
frecuencia de 2.4 GHz exenta de licencia del espectro electromagnético. Luego vino
802.11a, que entrega hasta 54 Mbps usando una variante de FDM llamada multiplexación
por división de frecuencia ortogonal (OFDM); 802.11a se ejecuta en la banda de 5 GHz
exenta de licencia. Por un lado, esta banda es menos utilizada, por lo que hay menos
interferencia. Por otro lado, hay una mayor absorción de la señal y se limita a casi la línea
de visión. 802.11g seguido; 802.11g también usa OFDM, ofrece hasta 54 Mbps y es
compatible con versiones anteriores con 802.11b (y regresa a la banda de 2.4 GHz).
Más recientemente, 802.11n ha aparecido en escena, con un estándar que fue aprobado
en 2009 (aunque también existían productos pre-estándar). 802.11n logra avances
considerables en la velocidad de datos máxima posible utilizando múltiples antenas y
permitiendo mayores anchos de banda de canales inalámbricos. El uso de múltiples
antenas a menudo se llama MIMO para entrada múltiple, salida múltiple.
Es común para los productos comerciales que brindan soporte a la fluorina de 802.11;
algunas estaciones base admiten las cuatro variantes (a, b, g y n). Esto no solo garantiza
la compatibilidad con cualquier dispositivo que admita cualquiera de los estándares, sino
que también hace posible que dos de estos productos elijan la opción de mayor ancho de
banda para un entorno particular.
Vale la pena señalar que, si bien todos los estándares 802.11 definen una tasa de bits
máxima que puede admitirse, en su mayoría también admiten tasas de bits más bajas; por
ejemplo, 802.11a permite velocidades de bits de 6, 9, 12, 18, 24, 36, 48 y 54 Mbps. Las
tasas de binario de la atmósfera, es más fácil de detectar señales transmitidas en
presencia de ruido. Se utilizan diferentes esquemas de modulación para lograr las
diversas velocidades de bits; Además, se varía la cantidad de información redundante en
forma de códigos de corrección de errores. (Consulte la Sección 2.4 para obtener una
introducción a los códigos de detección de errores). Más información redundante significa
una mayor resistencia a los errores de bits a costa de reducir la velocidad de datos
efectiva (ya que la mayoría de los bits transmitidos son redundantes).
Los sistemas intentan elegir una tasa de bits óptima en función del entorno de ruido en el
que se encuentran; los algoritmos para la selección de la velocidad de bits pueden ser
bastante complejos (consulte la sección Lecturas adicionales para ver un ejemplo).
Curiosamente, los estándares 802.11 no especifican un enfoque particular, pero dejan los
algoritmos a los distintos proveedores. El enfoque básico para elegir una tasa de bits es
estimar la tasa de error de bits, ya sea midiendo directamente la relación señal / ruido
(SNR) en la capa física o estimando la SNNbe medir el tiempo de los paquetes que se
transmiten y reconocen con éxito. En algunos enfoques, un remitente ocasionalmente
probará una tasa de bits más alta enviando uno o más paquetes a esa tasa para ver si
tiene éxito.

Impacto de colisión A primera vista, podría parecer que un protocolo inalámbrico


seguiría el mismo algoritmo que el Ethernet: espere hasta que el enlace quede
inactivo antes de que se produzca una descarga y vuelva a ocurrir una colisión y,
para una primera aproximación, esto es lo que hace 802.11. La complicación
adicional para la tecnología inalámbrica es que, mientras un nodo en una Ethernet
recibe las transmisiones de todos los demás nodos y puede transmitir y recibir al
mismo tiempo, ninguna de estas condiciones se aplica a los nodos inalámbricos.
Esto hace que la detección de colisiones sea más compleja. La razón por la que
los nodos inalámbricos generalmente no pueden transmitir y recibir al mismo
tiempo (en la misma frecuencia) es que la potencia generada por el transmisor es
mucho más alta de lo que probablemente sea cualquier señal recibida y, por lo
tanto, inundará los circuitos de recepción. La razón por la que un nodo puede no
recibir transmisiones de otro nodo es porque ese nodo puede estar demasiado
lejos o bloqueado por un obstáculo. Esta situación es un poco más compleja de lo
que parece, como lo ilustrará la siguiente discusión.
Considere la situación representada en la Figura 2.30, donde A y C están dentro
del rango de B pero no entre sí. Supongamos que tanto A como C quieren
comunicarse con B y, entonces, cada uno de ellos le envía un marco. A y C no se
conocen, ya que sus señales no llegan tan lejos. Estas dos tramas chocan entre sí
en B, pero a diferencia de Ethernet, ni A ni C son conscientes de esta colisión. Se
dice que A y C son nodos ocultos entre sí.
Un problema relacionado, llamado el problema del nodo expuesto, ocurre bajo las
circunstancias ilustradas en la Figura 2.31, donde cada uno de los cuatro nodos
puede enviar y recibir señales que llegan a los nodos a su izquierda y derecha
inmediatas. Por ejemplo, B puede intercambiar tramas con A y C pero no puede
alcanzar D, mientras que puede ExplorarBandDbutnotA.SupposeBissending to A.
El nodo C es consciente de esta comunicación porque escucha la transmisión de
B. Sin embargo, sería un error que C llegara a la conclusión de que no puede
transmitir a nadie simplemente porque puede escuchar la transmisión de B. Por
ejemplo, supongamos que C quiere transmitir al nodo D. Esto no es un problema,
ya que C 'transmite a Dwill no interferirá con la capacidad de un receptor de B
(esto interferiría con el envío de A a B, pero B está transmitiendo en nuestro
ejemplo).
802.11 resuelve estos problemas mediante el uso de CSMA / CA, donde CA representa la
evitación de colisiones, en contraste con la detección de colisiones de CSMA / CD
utilizado en Ethernets. Hay algunas piezas para hacer este trabajo.
La parte de Carrier Sense parece bastante simple: antes de enviar un paquete, el
transmisor comprueba si puede escuchar otras transmisiones; Si no, lo envía. Sin
embargo, debido al problema del terminal oculto, solo esperar la ausencia de señales de
otros transmisores no garantiza que no ocurra una colisión desde la perspectiva del
receptor. Por esta razón, una parte de CSMA / CA es un ACK explícito del receptor al
remitente. Si el paquete fue decodificado con éxito y pasó su CRC en el receptor, el
receptor envía un ACK de vuelta al remitente.
Tenga en cuenta que si se produce una colisión, inutilizará todo el paquete.10 Por este
motivo, 802.11 agrega un mecanismo opcional llamado RTS-CTS (Listo para enviar-
Borrar para enviar). Esto va de alguna manera hacia el problema del terminal oculto. El
remitente envía un RTS, un paquete corto, al receptor deseado, y si ese paquete se
recibe con éxito, el receptor responde con otro paquete corto, el CTS. Aunque el RTS no
haya sido escuchado por un terminal oculto, el CTS probablemente lo será. Esto le indica
a los nodos dentro del alcance del receptor que no deben enviar nada durante un tiempo,
la cantidad de tiempo de la transmisión prevista se incluye en los paquetes RTS y CTS.
Después de ese tiempo, más un pequeño intervalo ha pasado, se puede suponer que el
operador está disponible de nuevo, y otro nodo puede intentar enviar.
Por supuesto, dos nodos pueden detectar un enlace inactivo y tratar de transmitir una
trama RTS al mismo tiempo, haciendo que sus tramas RTS colisionen entre sí. Los
remitentes se dan cuenta de que ha ocurrido una colisión cuando no reciben la trama CTS
después de un período de tiempo, en cuyo caso cada uno espera una cantidad
considerable de timebe para volver a intentarlo. La cantidad de tiempo que el usuario ha
recibido la llamada se ha corregido por una señal de respaldo de respaldo excepcional
que se utiliza en Ethernet (consulte la Sección 2.6.2).
Después de un intercambio RTS-CTS exitoso, el remitente envía su paquete de datos y, si
todo va bien, recibe un ACK para ese paquete. En ausencia de un ACK oportuno, el
remitente intentará nuevamente solicitar el uso del canal nuevamente, utilizando el mismo
proceso descrito anteriormente. Para este momento, por supuesto, otros nodos también
pueden estar tratando de obtener acceso al canal.
Sistema de distribución Como se describió hasta ahora, 802.11 sería adecuado para una
red con una topología de malla (ad hoc), y el desarrollo de un estándar 802.11s para
redes de malla está a punto de completarse. Sin embargo, en la actualidad, casi todas las
redes 802.11 utilizan una topología orientada a estaciones base.
En lugar de que todos los nodos se creen iguales, algunos nodos pueden moverse (por
ejemplo, su computadora portátil) y otros están conectados a una infraestructura de red
cableada. 802.11 llama a estos puntos de acceso (AP) de las estaciones base, y están
conectados entre sí por un llamado sistema de distribución. La Figura 2.32 ilustra un
sistema de distribución que conecta tres puntos de acceso, cada uno de los cuales da
servicio a los nodos en alguna región. Cada punto de acceso opera en algún canal en el
rango de frecuencia apropiado, y cada AP generalmente estará en un canal diferente al
de sus vecinos.
Los detalles del sistema de distribución no son importantes para esta discusión, podría ser
un Ethernet, por ejemplo. El único punto importante es que la red de distribución opera en
la capa de enlace, la misma capa de protocolo que los enlaces inalámbricos. En otras
palabras, no depende de ningún protocolo de nivel superior (como la capa de red).
Aunque dos nodos pueden comunicarse directamente entre sí si están al alcance uno del
otro, la idea detrás de esta configuración es que cada nodo se asocia con un punto de
acceso. Para que el nodo A se comunique con el nodo E, por ejemplo, A primero envía
una trama a su punto de acceso (AP-1), que envía la trama a través del sistema de
distribución a AP-3, que finalmente transmite la trama a E. Cómo AP -1 sabía que reenviar
el mensaje a AP-3 está fuera del alcance de 802.11; puede haber utilizado el protocolo de
puente descrito en el siguiente capítulo (Sección 3.1.4). Lo que 802.11 especifica es cómo
los nodos seleccionan sus puntos de acceso y, lo que es más interesante, cómo funciona
este algoritmo a la luz de los nodos que se mueven de una celda a otra.
La técnica para seleccionar un AP se llama escaneo e incluye los siguientes cuatro pasos:
1. El nodo envía una trama de sonda.
2. Todos los puntos de acceso al alcance responden con un marco de respuesta de
sonda.
3. El nodo selecciona uno de los puntos de acceso y envía a ese AP un marco de solicitud
de asociación.
4. El AP responde con un marco de Respuesta de Asociación.
Un nodo se involucra con este protocolo cada vez que se une a la red, así como cuando
no está satisfecho con su AP actual. Esto podría suceder, por ejemplo, porque la señal de
su AP actual se ha debilitado debido a que el nodo se está alejando de él. Cuando un
nodo adquiere un nuevo AP, el nuevo AP notifica el antiguo AP del cambio (esto sucede
en el paso 4) a través del sistema de distribución.
Considere la situación que se muestra en la Figura 2.33, donde el nodo C se mueve
desde la celda a la que AP-1 da servicio a la celda a la que AP-2 atiende. A medida que
se mueve, envía tramas de Sonda, que eventualmente resultan en tramas de Respuesta
de Sonda desde AP-2. En algún momento, C prefiere AP-2 sobre AP-1, por lo que se
asocia con ese punto de acceso.
El mecanismo que se acaba de describir se denomina exploración activa, ya que el nodo
está buscando activamente un punto de acceso. Los AP también envían periódicamente
un marco Beacon que anuncia las capacidades del punto de acceso; estos incluyen las
tasas de transmisión soportadas por el AP. Esto se denomina escaneo pasivo, y un nodo
puede cambiar a este AP en función del marco Beacon simplemente enviando un marco
de solicitud de asociación al punto de acceso.
FrameFormat La mayoría del formato de marco 802.11, que se muestra en la Figura 2.34,
es exactamente lo que esperaríamos. La trama contiene las direcciones de nodo de
origen y destino, cada una de las cuales tiene una longitud de 48 bits; hasta 2312 bytes
de datos; y un CRC de 32 bits. El campo de control contiene tres subfondos de interés (no
se muestra): un campo de tipo de 6 bits que indica si la trama transporta datos, si es una
trama RTS o CTS, o si la está utilizando el algoritmo de escaneo, y un par de 1 bit
campos, llamados ToDS y FromDS, que se describen a continuación.
Lo peculiar del formato de marco 802.11 es que contiene cuatro direcciones, en lugar de
dos. La forma en que se interpretan estas direcciones depende de la configuración de los
bits ToDS y FromDS en el campo de Control del marco. Esto es para tener en cuenta la
posibilidad de que el marco haya sido reenviado a través del sistema de distribución, lo
que significaría que el remitente original no es necesariamente el mismo nodo de
transmisión de transmisiones.Similará el uso de un dispositivo de dirección de parentesco.
En este caso más sencillo, cuando un nodo se envía directamente a otro, ambos DS
están conectados. el nodo de destino y Addr2 identi fi ca el nodo de origen. En el caso
más complejo, ambos bits DS se establecen en 1, lo que indica que el mensaje pasó de
un nodo inalámbrico al sistema de distribución y luego del sistema de distribución a otro
nodo inalámbrico. Con ambos bits activados, Addr1 identifica el destino final, Addr2
identifica el remitente inmediato (el que envió la trama desde el sistema de distribución al
destino final), Addr3 identifica el destino intermedio (el que aceptó la trama desde un nodo
inalámbrico y lo reenvió a través del sistema de distribución), y Addr4 identifica la fuente
original. En términos del ejemplo dado en la Figura 2.32, Addr1 corresponde a E, Addr2
identifica AP-3, Addr3 corresponde a AP-1, y Addr4 identifica A.
2.7.2 Bluetoothr (802.15.1)
Bluetooth llena el nicho de la comunicación de muy corto alcance entre teléfonos móviles,
PDA, computadoras portátiles y otros dispositivos personales o periféricos. Por ejemplo,
Bluetooth puede usarse para conectar un teléfono móvil a un auricular o una computadora
portátil a un teclado. En términos generales, Bluetooth es una alternativa más conveniente
para conectar dos dispositivos con un cable. En tales aplicaciones, no es necesario
proporcionar mucho rango o ancho de banda. Esto significa que las radios Bluetooth
pueden usar una transmisión de potencia bastante baja, ya que la potencia de transmisión
es uno de los principales factores que afectan el ancho de banda y el rango de los
enlaces inalámbricos. Esto coincide con las aplicaciones de destino de los dispositivos
habilitados para Bluetooth, la mayoría de ellos funcionan con batería (como los
auriculares de teléfono ubicuos) y, por lo tanto, es importante que no consuman mucha
energía.
Bluetooth funciona en la banda exenta de licencia a 2.45 GHz. Los enlaces Bluetooth
tienen anchos de banda típicos de aproximadamente 1 a 3 Mbps y un alcance de unos 10
m. Por este motivo y porque los dispositivos de comunicación suelen pertenecer a un
individuo o grupo, Bluetooth a veces se clasifica como una Red de área personal (PAN).
Bluetooth es especi fi cado por un consorcio de la industria llamado Bluetooth Special
Interest Group. Especifica un conjunto completo de protocolos, yendo más allá de la capa
de enlace para definir protocolos de aplicación, a los que llama perfiles, para una amplia
gama de aplicaciones. Por ejemplo, hay un fi lfil para sincronizar un PDA con una
computadora personal. Otro perfil le da a una computadora móvil acceso a una LAN por
cable de la forma 802.11, aunque este no era el objetivo original de Bluetooth. El estándar
IEEE 802.15.1 se basa en Bluetooth pero excluye los protocolos de la aplicación.
La configuración básica de la red Bluetooth, llamada piconet, consiste en un dispositivo
maestro y hasta siete dispositivos esclavos, como se muestra en la Figura 2.35. Cualquier
comunicación es entre el amo y un esclavo; los esclavos no se comunican directamente
con los demás. Debido a que los servidores tienen un sencillo algoritmo, su hardware y
software Bluetooth pueden ser más sencillos y económicos.
Dado que Bluetooth funciona en una banda exenta de licencia, se requiere usar una
técnica de espectro ensanchado (como se explica al inicio de esta sección) para tratar las
posibles interferencias en la banda. Utiliza el salto de frecuencia con 79 canales
(frecuencias), utilizando cada uno para 625 µs a la vez. Esto proporciona un intervalo de
tiempo natural para que Bluetooth lo utilice para la multiplexación de división de tiempo
síncrona. Un fotograma ocupa 1, 3 o 5 intervalos de tiempo consecutivos. Solo el maestro
puede comenzar a transmitir en ranuras impares. Un esclavo puede comenzar a transmitir
en una ranura de número par, pero solo en respuesta a una solicitud del maestro durante
la ranura anterior, evitando así cualquier conflicto entre los dispositivos esclavos.
En el ámbito de la comunicación de corto alcance y muy baja potencia, hay algunas otras
tecnologías además de Bluetooth. Uno de ellos es ZigBeer, ideado por la alianza ZigBee y
estandarizado como IEEE 802.15.4. Está diseñado para situaciones en las que los
requisitos de ancho de banda son bajos y el consumo de energía debe ser muy bajo para
que la duración de la batería sea muy larga. También pretende ser más simple y más
barato que Bluetooth, por lo que es.
figura 2.35.
De manera financiera, se puede incorporar un par de dispositivos y sensores de sensores.
Los sensores se están volviendo cada vez más importantes como dispositivos de red, ya
que la tecnología avanza hasta el punto en que se pueden implementar dispositivos
pequeños muy económicos en una gran cantidad de dispositivos, monitores, temperatura,
humedad y consumo de energía en un edificio.
2.7.3 Tecnologías de telefonía celular
Si bien la tecnología de la telefonía celular tuvo sus inicios en torno a la comunicación por
voz, los servicios de datos basados en estándares celulares se han vuelto cada vez más
populares (gracias en parte a las crecientes capacidades de los teléfonos móviles o los
teléfonos inteligentes). Un inconveniente en comparación con las tecnologías que se
acaban de describir ha tendido a ser el costo para los usuarios, debido en parte al uso del
espectro con licencia del celular (que históricamente se ha vendido a los operadores de
telefonía celular por sumas astronómicas). Las bandas de frecuencia que se usan para
teléfonos celulares (y ahora para datos celulares) varían alrededor del mundo. En Europa,
por ejemplo, las bandas principales para teléfonos celulares están a 900 MHz y 1800
MHz. En América del Norte, se utilizan las bandas de 850 MHz y 1900 MHz. Esta
variación global en el uso del espectro crea problemas para los usuarios que desean
viajar de una parte del mundo a otra y ha creado un mercado para teléfonos que pueden
operar en múltiples frecuencias (por ejemplo, un teléfono de triple banda puede operar en
tres de los cuatro) bandas de frecuencia mencionadas anteriormente). Ese problema, sin
embargo, palidece en comparación con la proliferación de estándares incompatibles que
han plagado el negocio de la comunicación celular. Sólo recientemente han aparecido
algunos signos de convergencia en un pequeño conjunto de estándares. Y, finalmente,
existe el problema de que, como la mayoría de la tecnología celular fue diseñada para la
comunicación de voz, la comunicación de datos de alto ancho de banda ha sido una
adición relativamente reciente a los estándares.
Al igual que 802.11 y WiMAX, la tecnología celular se basa en el uso de estaciones base
que forman parte de una red cableada. El área geográfica servida por la antena de una
estación base se llama celda. Una estación base podría servir a una sola celda o utilizar
múltiples antenas direccionales para servir a múltiples celdas. Las células no tienen
límites nítidos y se superponen. Cuando se superponen, un teléfono móvil podría
comunicarse con varias estaciones base. Esto es algo similar a la imagen 802.11 que se
muestra en la Figura 2.32. Sin embargo, en cualquier momento, el teléfono está en
comunicación con, y bajo el control de, una sola estación base. Cuando el teléfono
comienza a abandonar una celda, se mueve a un área de superposición con una o más
celdas. La estación base actual detecta la señal de debilitamiento del teléfono y le da el
control del teléfono a la estación base que recibe la señal más fuerte. Si el teléfono está
involucrado en una llamada en ese momento, la llamada debe transferirse a la nueva
estación base en lo que se denomina traspaso.
Como señalamos anteriormente, no existe un estándar único para celulares, sino más
bien una colección de tecnologías competidoras que admiten el tráfico de datos de
diferentes maneras y ofrecen diferentes velocidades. Estas tecnologías están
categorizadas libremente por generación. La primera generación (1G) era analógica y, por
lo tanto, tenía un interés limitado desde la perspectiva de las comunicaciones de datos.
Los estándares de segunda generación pasaron a ser digitales e introdujeron servicios de
datos inalámbricos, mientras que la tercera generación (3G) permitió un mayor ancho de
banda y transmisión simultánea de voz y datos. La mayoría de las redes de teléfonos
móviles ampliamente implementadas en la actualidad son compatibles con algún tipo de
3G, con 4G comenzando a aparecer. Debido a que cada una de las generaciones abarca
una familia de estándares y tecnologías, a menudo se trata de un debate (y de un interés
de marketing) sobre si una red en particular es 3G o alguna otra generación.
El concepto de una tercera generación se estableció antes de que hubiera una
implementación de tecnologías 3G, con el objetivo de dar forma a un estándar
internacional único que proporcionaría un ancho de banda de datos mucho mayor que 2G.
Desafortunadamente, no surgió una norma única, y esta tendencia parece probable que
continúe con 4G. Curiosamente, sin embargo, la mayoría de los estándares 3G se basan
en variantes de CDMA (Code Division Multiple Access).
CDMA utiliza una forma de espectro expandido para multiplexar el tráfico de múltiples
dispositivos en un canal inalámbrico común. Cada transmisor utiliza un código de
fragmentación pseudoaleatorio a una frecuencia que es alta en relación con la velocidad
de datos y envía el OR exclusivo de los datos con el código de fragmentación. El código
de cada transmisor sigue una secuencia que es conocida por el receptor deseado, por
ejemplo, una estación base en una red celular asigna una secuencia de código única a
cada dispositivo móvil con el que está asociado actualmente. Cuando una gran cantidad
de dispositivos transmiten sus señales en la misma celda y banda de frecuencia, la suma
de todas las transmisiones parece un ruido aleatorio. Sin embargo, un receptor que
conoce el código.
En comparación con otras técnicas de multiplexación, CDMA tiene algunas buenas
propiedades para datos en ráfagas. No existe un límite estricto sobre la cantidad de
usuarios que pueden compartir una parte del espectro; solo debe asegurarse de que
todos tengan códigos de astillado únicos. Sin embargo, la tasa de error de bits aumenta
con un número creciente de transmisores concurrentes. Esto lo hace muy adecuado para
aplicaciones donde existen muchos usuarios, pero en un momento dado muchos de ellos
no están transmitiendo, lo que describe bastante bien muchas aplicaciones de datos,
como la vigilancia web. Y, en los sistemas prácticos, cuando es difícil tener en cuenta
todas las sincronizaciones en todos los conjuntos móviles, CDMA logra una mejor
eficiencia espectral (es decir, se acerca a los límites teóricos del teorema de Shannon-
Hartley) que otros esquemas de multiplexación como la TDMA.
Seguridad de los enlaces inalámbricos Uno de los problemas bastante obvios de los
enlaces inalámbricos en comparación con los cables o las redes es que no puede estar
muy seguro de dónde han ido sus datos. Probablemente pueda averiguar si fue recibido
por el destinatario deseado, pero no hay ningún otro modo en el que otros receptores
reciban una transmisión selectiva. Por lo tanto, si le preocupa la privacidad de sus datos,
las redes inalámbricas presentan un desafío.
Incluso si no está preocupado por la privacidad de los datos, o quizás se haya ocupado de
ella de alguna otra manera (consulte el Capítulo 8 para obtener más información sobre
este tema), es posible que se trate de un usuario autorizado para insertar datos en su red.
Si no es otra cosa, tal usuario podría consumir recursos que usted preferiría consumir
usted mismo, como el ancho de banda finito entre su casa y su ISP.
Por estas razones, las redes inalámbricas generalmente vienen con algún tipo de
mecanismo para controlar el acceso tanto al enlace como a los datos transmitidos. Estos
mecanismos a menudo se clasifican como seguridad inalámbrica. La seguridad es un
gran tema en sí mismo, al que dedicamos el Capítulo 8, y veremos los detalles de la
seguridad inalámbrica en ese contexto en la Sección 8.4.5.
Cuadrito
Problemas entre capas en la tecnología inalámbrica
Un aspecto interesante de las redes inalámbricas que ha recibido una gran atención en la
comunidad de investigación en los últimos años es la forma en que desafían las
convenciones de las arquitecturas de protocolo en capas. Por ejemplo, los estándares
802.11 le permiten crear una abstracción de enlace que conecta un nodo a otro en lo que
parece ser una manera de punto a punto. Una vez hecho esto, cualquier protocolo de
capa superior puede tratar el enlace como cualquier otro enlace punto a punto. ¿Pero es
ese el enfoque correcto? Considere, por ejemplo, tres nodos A, B y C en una fila como se
muestra en la Figura 2.30. Si queremos obtener un paquete de A a C, un enfoque
convencional sería que A envíe un paquete a B y B para enviar el paquete a C. Pero, en
realidad, el rango sobre el cual un nodo dado puede enviar paquetes no es No es un
círculo bien definido como se muestra aquí, sino que se reduce lentamente a medida que
aumenta la distancia. Por lo tanto, puede ser que A pueda enviar un paquete a C con, por
ejemplo, un 30% de probabilidad de éxito, mientras que puede enviar un paquete a B con
un 80% de probabilidad de éxito. Entonces, a veces (30% del tiempo) no habría
necesidad de que B reenvíe el paquete a C, ya que C ya lo tendría. Por lo tanto, podría
ser bueno que C le diga a B "No se moleste en reenviar ese paquete, ya lo tengo". Tal
enfoque se probó en un banco de pruebas inalámbrico llamado Roofnet cerca del Instituto
de Tecnología de Massachusetts y se mostró para aumentar el rendimiento
sustancialmente sobre los enfoques convencionales. Pero este enfoque también significa
que A, B y C ya no pueden actuar como si estuvieran conectados mediante enlaces
simples; hemos pasado información que está específicamente relacionada con los
enlaces inalámbricos para un jugador de alto nivel. Algunos de ellos ven una "situación"
cuando ven tal cosa, mientras que otros (como los autores de este libro) admiran el
ingenio de aquellos que mejoraron el rendimiento al pensar más allá de las capas
tradicionales. Existen innumerables ejemplos en los que la transferencia de información
desde la capa de enlace inalámbrico a las capas más altas puede proporcionar beneficios;
también, puede ayudar a pasar información de la capa física a la capa de enlace. Hay un
buen acto de equilibrio aquí. Las capas son una gran herramienta; sin ellas, las redes
serían imposiblemente difíciles de razonar y construir a gran escala. Pero debemos ser
conscientes de que cada vez que ocultamos información, lo que ocurre con las capas,
podemos perder algo que realmente deberíamos haber sido no esconder. Debemos
pensar en las capas (o en cualquier otra forma de abstracción) como una herramienta en
lugar de una regla inviolable.

Cuadrito
Comunicaciones Satelitales
Otra forma de comunicación inalámbrica que ve la aplicación en ciertos escenarios se
basa en el uso de satélites. Los teléfonos satelitales (satélites) usan satélites de
comunicación como estaciones base, comunicándose en bandas de frecuencia que se
han reservado internacionalmente para uso satelital. En consecuencia, el servicio está
disponible incluso cuando no hay estaciones base celulares. Los teléfonos satelitales rara
vez se usan cuando el celular está disponible, ya que el servicio suele ser mucho más
caro. (Alguien tiene que pagar por poner los satélites en órbita.) Los teléfonos satelitales
también son más grandes y pesados que los teléfonos celulares modernos, debido a la
necesidad de transmitir y recibir en distancias mucho más largas para alcanzar satélites
en lugar de torres de teléfonos celulares. La comunicación por satélite se usa más
ampliamente en la transmisión de televisión y radio, aprovechando el hecho de que la
señal se transmite, no punto a punto. La comunicación de datos de alto ancho de banda
vía satélite está disponible comercialmente, pero su precio relativamente alto (tanto para
el equipo como para el servicio) limita su uso a las regiones donde no hay alternativa
disponible.
2.8 RESUMEN
Este capítulo introdujo los muchos y variados tipos de enlaces que se utilizan para
conectar a los usuarios a las redes existentes y para construir grandes redes desde cero.
Si bien los enlaces varían enormemente en sus características detalladas, existen muchos
problemas y técnicas para resolverlos que son comunes. Analizamos los cinco problemas
clave que deben resolverse para que dos o más nodos conectados por algún medio
puedan intercambiar mensajes entre sí.
El primer problema es codificar los bits que forman un mensaje binario en la señal en el
nodo fuente y luego recuperar los bits de la señal en el nodo receptor. Este es el problema
de la codificación, y se hace difícil por la necesidad de mantener sincronizados los relojes
del remitente y del receptor. Discutimos cuatro técnicas de codificación diferentes (NRZ,
NRZI, Manchester y 4B / 5B) que difieren en gran medida en cómo codifican la
información del reloj junto con los datos que se transmiten. Uno de los atributos clave de
los códigos de codificación de los codigos es la debilidad de la fe, la tolerancia a los
signos codificados.
Una vez que es posible transmitir bits entre nodos, el siguiente paso es averiguar cómo
empaquetar estos bits en marcos. Este es el problema del encuadre, y se reduce a poder
reconocer el principio y el final de cada encuadre. Nuevamente, observamos varias
técnicas diferentes, incluidos los protocolos orientados a bytes, los protocolos orientados
a bits y los protocolos basados en reloj.
Suponiendo que cada nodo sea capaz de reconocer la colección de bits que forman una
trama, el tercer problema es determinar si esos bits son correctos o si posiblemente se
corrompieron en tránsito. Este es el problema de detección de errores, y observamos tres
enfoques diferentes: verificación de redundancia cíclica, paridad bidimensional y sumas
de comprobación. De estos, el enfoque CRC ofrece las mejores garantías y es el más
utilizado a nivel de enlace.
Dado que algunas tramas llegarán al nodo de destino que contiene errores y, por lo tanto,
tendrán que ser descartadas, el siguiente problema es cómo recuperarse de tales
pérdidas. El objetivo es hacer que el enlace parezca confiable. El enfoque general de este
problema se llama ARQ e implica el uso de una combinación de reconocimientos y
tiempos de espera. Analizamos tres algoritmos ARQ específicos: parar y esperar, ventana
deslizante y canales concurrentes. Lo que hace que estos algoritmos sean interesantes es
la eficacia con la que utilizan el enlace, con el objetivo de mantener la tubería llena.
El problema final no es relevante para los enlaces punto a punto, pero es el problema
central en los enlaces de acceso múltiple: cómo mediar el acceso a un enlace compartido
para que todos los nodos tengan la oportunidad de transmitir sus datos. En este caso,
observamos una variedad de protocolos de acceso a medios (Ethernet y varios protocolos
inalámbricos) que han sido muy útiles para el desarrollo de redes de área local. El acceso
a los medios en las redes inalámbricas se complica más por el hecho de que algunos
nodos pueden estar ocultos entre sí debido a las limitaciones de alcance de la transmisión
de radio. La mayoría de los dispositivos de protocolo inalámbricos comunes se designan
como nodos de estación base, mientras que los otros nodos móviles se comunican con
una estación base. Los estándares y las tecnologías inalámbricas están evolucionando
rápidamente, con redes de malla, en las que todos los nodos se comunican como pares,
que comienzan a emerger.
CEREMONIAS
1. Muestre las codificaciones NRZ, Manchester y NRZI para el patrón de bits que se
muestra en la Figura 2.36. Supongamos que la señal NRZI comienza baja.
Bits
1001111100010001
NRZ
Reloj
Manchester
NRZI
n FIGURA 2.36 Diagrama para Ejercicio1.
2. Muestre la codificación 4B / 5B y la señal NRZI resultante para la siguiente secuencia
de bits: 1110 0101 0000 0011
3. Muestre la codificación 4B / 5B y la señal NRZI resultante para la siguiente secuencia
de bits: 1101 1110 1010 1101 1011 1110 1110 1111
4. En la codificación 4B / 5B (Tabla 2.2), solo dos de los códigos de 5 bits utilizados
terminan en dos 0s. ¿Cuántas posibles secuencias de 5 bits existen (utilizadas por el
código existente o no) que cumplan con la restricción más fuerte de tener a lo sumo un
primer inicial y como máximo un 0 final? ¿Podrían asignarse todas las secuencias de 4
bits a tales secuencias de 5 bits?
5. Suponiendo un protocolo de trama que utiliza relleno de bits, muestre la secuencia de
bits transmitida a través del enlace cuando la trama contiene la siguiente secuencia de
bits: 110101111101011111101011111110 Marque los bits rellenos.

6. Suponga que la siguiente secuencia de bits llega a través de un enlace:


1101011111010111110010111110110 Muestre la trama resultante después de que se
hayan eliminado los bits rellenos. Indique cualquier error que pueda haber sido introducido
en el marco.
7. Supongamos que la siguiente secuencia de bits llega a través de un enlace:
011010111110101001111111011001111110 Muestre la trama resultante después de que
se hayan eliminado todos los bits rellenos. Indique cualquier error que pueda haber sido
introducido en el marco.
8. Suponga que desea enviar algunos datos utilizando el protocolo de trama BISYNC y los
últimos 2 bytes de sus datos son DLE y ETX. ¿Qué secuencia de bytes se transmitiría
inmediatamente antes del CRC?
9. Para cada uno de los siguientes protocolos de trama, proporcione un ejemplo de una
secuencia de bytes / bits que nunca debería aparecer en una transmisión: (a) BISYNC (b)
HDLC
10. Suponga que un receptor SONET vuelve a sincronizar su reloj cada vez que aparece
un bit 1; de lo contrario, el receptor muestrea la señal en medio de lo que cree que es el
intervalo de tiempo del bit. (a) ¿Qué precisión relativa de los relojes del remitente y del
receptor se requiere para recibir correctamente 48 bytes cero (el valor de una celda ATM)
en una fila? (b) Considere la posibilidad de una estación de reenvío A en una línea
SONET STS-1, recibiendo tramas desde el extremo descendente B y retransmitiéndolas
corriente arriba. ¿Qué precisión relativa de los relojes de A y B se requiere para evitar que
A acumule más de un fotograma adicional por minuto?
11. Muestre que la paridad bidimensional permite la detección de todos los errores de 3
bits.
12. Dé un ejemplo de un error de 4 bits que no se detectaría por paridad bidimensional,
como se ilustra en la Figura 2.14. ¿Cuál es el conjunto general de circunstancias en las
que los errores de 4 bits no se detectarán?
13. Muestre que la paridad bidimensional proporciona al receptor suficiente información
para corregir cualquier error de 1 bit (suponiendo que el receptor sepa que solo 1 bit es
malo), pero no cualquier error de 2 bits.
14. Demuestre que la suma de comprobación de Internet nunca será 0xFFFF (es decir, el
valor final de la suma no será 0x0000) a menos que cada byte en el búfer sea 0. (Las
especificaciones de Internet de hecho requieren que una suma de comprobación de
0x0000 se transmita como 0xFFFF; el valor 0x0000 se reserva para una suma de
comprobación omitida. Tenga en cuenta que, en las operaciones aritméticas del
complemento, 0x0000 y 0xFFFF son representaciones del número 0).
15. Demostrar que el cálculo de la suma de control de Internet que se muestra en el texto
es independiente del orden de bytes (orden del host o orden de la red), excepto que los
bytes en la suma de verificación final deben intercambiarse más adelante para que estén
en el orden correcto. Específicamente, muestre que la suma de palabras de 16 bits se
puede calcular en cualquier orden de bytes. Por ejemplo, si la suma de un complemento
(indicada por + ′) de palabras de 16 bits se representa de la siguiente manera,
[A, B] + ′ [C, D] + ′ ··· + ′ [Y, Z]
la siguiente suma intercambiada es la misma que la suma original anterior:
[B, A] + ′ [D, C] + ′ ··· + ′ [Z, Y]
16. Supongamos que un byte en un búfer cubierto por el algoritmo de suma de control de
Internet necesita disminuirse (por ejemplo, un campo de conteo de saltos de
encabezado). Proporcione un algoritmo para calcular la suma de comprobación revisada
sin volver a analizar todo el búfer. Su algoritmo debe considerar si el byte en cuestión es
de orden bajo o orden alto.
17. Muestre que la suma de control de Internet se puede calcular tomando primero las
sumas complementarias de las de 32 bits en búfer en unidades de 32 bits, y luego la
suma complementaria de las de 16 bits de las palabras medias superiores e inferiores, y
terminando como antes. Complementando el resultado. (Para tomar una suma de
complementos de 32 bits en hardware de complemento de dos de 32 bits, necesita
acceso al bit de “desbordamiento”).
18. Supongamos que queremos transmitir el mensaje 11100011 y protegerlo de errores
utilizando el polinomio CRC x3 +1. (a) Use la división larga polinomial para determinar el
mensaje que debe transmitirse.
(b) Suponga que el bit más a la izquierda del mensaje se invierte debido al ruido en el
enlace de transmisión. ¿Cuál es el resultado del cálculo de CRC del receptor? ¿Cómo
sabe el receptor que ha ocurrido un error?
19. Supongamos que queremos transmitir el mensaje 1011001001001011 y protegerlo de
los errores usando el polinomio CRC8 x8 + x2 + x1 +1. (a) Use la división larga polinomial
para determinar el mensaje que debe transmitirse. (b) Suponga que el bit más a la
izquierda del mensaje se invierte debido al ruido en el enlace de transmisión. ¿Cuál es el
resultado del cálculo de CRC del receptor? ¿Cómo sabe el receptor que ha ocurrido un
error?
20. El algoritmo CRC que se presenta en este capítulo requiere muchas manipulaciones
de bits. Sin embargo, es posible hacer una división polinómica larga tomando múltiples
bits a la vez, a través de un método controlado por tablas, que permite implementaciones
de software de CRC eficientes. Aquí describimos la estrategia para una división larga de 3
bits a la vez (consulte la Tabla 2.5); en la práctica, dividiríamos 8 bits a la vez, y la tabla
tendría 256 entradas. Deje que el polinomio divisor C = C (x) sea x3 + x2 +1, o 1101. Para
construir la tabla para C, tomamos cada secuencia de 3 bits, p, agregamos tres 0s finales
y luego encontramos el cociente q = p ⌢000 ÷ C,
ignorando el resto. La tercera columna es el producto C × q, los primeros 3 bits de los
cuales deben ser iguales a p. (a) Verifique, para p = 110, que los cocientes p⌢000 ÷ C y
p⌢111 ÷ C son los mismos; es decir, no importa cuáles son los bits finales. (b) Complete
las entradas que faltan en la tabla. (c) Use la tabla para dividir 101 001 011 001 100 por
C. Sugerencia: Los primeros 3 bits del dividendo son p = 101, por lo que, desde la tabla,
los primeros 3 bits correspondientes del cociente son q = 110. Escriba el 110 sobre los
segundos 3 bits del dividendo, y reste C × q = 101 110, nuevamente de la tabla, de los
primeros 6 bits del dividendo. Sigue en grupos de 3 bits. No debe haber resto.
21. Con 1 bit de paridad podemos detectar todos los errores de 1 bit. Muestre que al
menos una generalización falla, de la siguiente manera: (a) Muestre que si los mensajes
m tienen una longitud de 8 bits, entonces no hay un código de detección de error e = e (m)
de tamaño 2 bits que pueda detectar todos los errores de 2 bits. Sugerencia: considere el
conjunto M de todos los mensajes de 8 bits con un solo 1 bit; tenga en cuenta que
cualquier mensaje de M se puede transmutar a cualquier otro con un error de 2 bits, y
muestre que algunos pares de mensajes m1 y m2 en M deben tener el mismo código de
error e. (b) Encuentre una N (no necesariamente mínima) de modo que ningún código de
detección de errores de 32 bits aplicado a los bloques de N bits pueda detectar todos los
errores que alteren hasta 8 bits.
22. Considere un protocolo ARQ que use solo acuses de recibo negativos (NAK), pero no
acuses de recibo positivos (ACK). Describa qué tiempos de espera tendrían que ser
programados. Explique por qué un protocolo basado en ACK generalmente se prefiere a
un protocolo basado en NAK.
24. Suponga que está diseñando un protocolo de ventana deslizante para un enlace punto
a punto de 1 Mbps a la luna, que tiene una latencia unidireccional de 1.25 segundos.
Suponiendo que cada fotograma contiene 1 KB de datos, ¿cuál es el número mínimo de
bits que necesita para el número de secuencia?
25. Suponga que está diseñando un protocolo de ventana deslizante para un enlace punto
a punto de 1 Mbps al satélite estacionario que gira alrededor de la Tierra a una altitud de 3
× 104 km. Suponiendo que cada cuadro transporta 1 KB de datos, ¿cuál es el número
mínimo de bits que necesita para el número de secuencia en los siguientes casos?
Suponga que la velocidad de la luz es 3 × 108 m / s. (a) RWS = 1 (b) RWS = SWS
26. El texto sugiere que el protocolo de ventana deslizante puede usarse para
implementar el control de fl ujo. Podemos imaginar esto haciendo que el receptor retrase
los ACK, es decir, no envíe el ACK hasta que haya espacio libre en el búfer para contener
el siguiente fotograma. Al hacerlo, cada ACK acusaría recibo simultáneo de la recepción
del último cuadro y le diría a la fuente que ahora hay espacio disponible en el búfer libre
para contener el siguiente cuadro. No es una buena idea explicar por qué implementar el
control de flujo de esta manera.
27. Implícito en los escenarios de espera y espera de la Figura 2.17 está la noción de que
el receptor retransmitirá su ACK inmediatamente después de recibir la trama de datos
duplicada. Supongamos, en cambio, que el receptor mantiene su propio temporizador y
retransmite su ACK solo después de que el siguiente fotograma esperado no haya llegado
dentro del intervalo de tiempo de espera. Dibuje líneas de tiempo que ilustran los
escenarios en la Figura 2.17 (b) a (d); suponga que el valor de tiempo de espera del
receptor es el doble que el del remitente. También redibuje (c) suponiendo que el valor de
tiempo de espera del receptor es la mitad del remitente.
28. En la transmisión de parada y espera, suponga que tanto el emisor como el receptor
retransmiten su última trama inmediatamente después de recibir un ACK duplicado o una
trama de datos; tal estrategia es supuestamente razonable porque la recepción de tal
duplicado es más probable que signifique que la otra parte ha experimentado un tiempo
de espera. (a) Dibuje una línea de tiempo que muestre lo que sucederá si el primer marco
de datos se duplica de alguna manera, pero no se pierde ningún marco. Cuánto tiempo
¿Continuarán las duplicaciones? Esta situación se conoce como el error del aprendiz de
brujo. (b) Supongamos que, como los datos, los ACK se retransmiten si no hay respuesta
dentro del período de tiempo de espera. Supongamos también que ambos lados utilizan el
mismo intervalo de tiempo de espera. Identifique un escenario razonablemente probable
para desencadenar el error de Aprendiz de Sorcerer.
29. Proporcione algunos detalles de cómo podría aumentar el protocolo de ventana
deslizante con control de flujo haciendo que los ACK lleven información adicional que
reduce el SWS a medida que el receptor se queda sin espacio en el búfer. Ilustre su
protocolo con una línea de tiempo para una transmisión; suponga que el SWS y el RWS
iniciales son 4, la velocidad del enlace es instantánea, y el receptor puede liberar búferes
a una velocidad de uno por segundo (es decir, el receptor es el cuello de botella). Muestra
lo que sucede en T = 0, T = 1, ..., T = 4 segundos.
30. Describa un protocolo que combine el algoritmo de ventana deslizante con ACK
selectivos. Su protocolo debe retransmitirse con prontitud, pero no si una trama
simplemente llega una o dos posiciones fuera de orden. Su protocolo también debe hacer
explícito lo que sucede si se pierden varias tramas consecutivas.
31. Dibuje un diagrama de línea de tiempo para el algoritmo de ventana deslizante con
SWS = RWS = 3 cuadros, para las siguientes dos situaciones. Utilice un intervalo de
tiempo de espera de aproximadamente 2 × RTT. (a) Se pierde el cuadro 4. (b) Se pierden
los cuadros 4 a 6.
32. Dibuje un diagrama de línea de tiempo para el algoritmo de ventana deslizante con
SWS = RWS = 4 cuadros en las siguientes dos situaciones. Suponga que el receptor
envía un acuse de recibo duplicado si no recibe la trama esperada. Por ejemplo, envía
DUPACK [2] cuando espera ver el Frame [2] pero recibe el Frame [3] en su lugar.
Además, el receptor envía un acuse de recibo acumulativo después de recibir todas las
tramas pendientes. Por ejemplo, envía ACK [5] cuando recibe el fotograma perdido [2]
después de que ya recibió el fotograma [3], el fotograma [4] y el fotograma [5]. Utilice un
intervalo de tiempo de espera de aproximadamente 2 × RTT. (a) Se pierde el cuadro 2. La
retransmisión tiene lugar en el tiempo de espera (como de costumbre).

(b) Se pierde el cuadro 2. La retransmisión se lleva a cabo al recibir el primer


DUPACK o al expirar el tiempo. ¿Este esquema reduce el tiempo de transacción?
(Tenga en cuenta que algunos protocolos de extremo a extremo, como las
variantes de TCP, utilizan esquemas similares para una retransmisión rápida).
33. Supongamos que intentamos ejecutar el algoritmo de la ventana deslizante
con SWS = RWS = 3 y con MaxSeqNum = 5. El paquete Nth DATA [N] en realidad
contiene N mod 5 en su campo de número de secuencia. Dé un ejemplo en el que
el algoritmo se confunda; es decir, un escenario en el que el receptor espera
DATOS [5] y acepta DATOS [0], que tiene el mismo número de secuencia
transmitido, en su lugar. Ningún paquete puede llegar fuera de orden. Tenga en
cuenta que esto implica que MaxSeqNum ≥ 6 es necesario, así como suficiente.
34. Considere el algoritmo de ventana deslizante con SWS = RWS = 3, sin
llegadas fuera de orden y con números de secuencia de precisión infinita. (a)
Muestre que si DATA [6] está en la ventana de recepción, entonces DATA [0] (o
en general cualquier dato más antiguo) no puede llegar al receptor (y, por lo tanto,
que MaxSeqNum = 6 hubiera sido suficiente). (b) Muestre que si se puede enviar
ACK [6] (o, más literalmente, que DATA [5] está en la ventana de envío), no se
puede recibir ACK [2] (o anterior). Esto equivale a una prueba de la fórmula dada
en la Sección 2.5.2, particularizada en el caso SWS = 3. Tenga en cuenta que la
parte (b) implica que el escenario del problema anterior no puede revertirse para
que no se distinga ACK [0] y ACK [5].
35. Supongamos que ejecutamos el algoritmo de ventana deslizante con SWS = 5
y RWS = 3, y no hay llegadas fuera de orden. (a) Encuentre el valor más pequeño
para MaxSeqNum. Puede suponer que es suficiente encontrar el MaxSeqNum
más pequeño de manera que si DATA [MaxSeqNum] está en la ventana de
recepción, entonces DATA [0] ya no puede llegar. (b) Dé un ejemplo que muestre
que MaxSeqNum - 1 no es suficiente. (c) Establezca una regla general para el
MaxSeqNum mínimo en términos de SWS y RWS.

36. Suponga que A está conectado a B a través de un enrutador intermedio R, como se


muestra en la Figura 2.37. Los enlaces A – R y R – B aceptan y transmiten solo un
paquete por segundo en cada dirección (por lo que dos paquetes tardan 2 segundos), y
las dos direcciones se transmiten independientemente. Suponga que A envía a B usando
el protocolo de ventana deslizante con SWS = 4. (a) Para Tiempo = 0,1,2,3,4,5, indique a
qué paquetes llegan y salen de cada nodo, o etiquételos en una línea de tiempo. (b) ¿Qué
sucede si los enlaces tienen un retardo de propagación de 1.0 segundo, pero aceptan
inmediatamente tantos paquetes como se ofrecen (es decir, latencia = 1 segundo pero el
ancho de banda es infinito)?
37. Suponga que A está conectado a B a través de un enrutador intermedio R, como en el
problema anterior. El enlace A – R es instantáneo, pero el enlace R – B solo transmite un
paquete cada segundo, de uno en uno (por lo que dos paquetes tardan 2 segundos).
Suponga que A envía a B usando el protocolo de ventana deslizante con SWS = 4. Para
Tiempo = 0,1,2,3,4, indique a qué paquetes llegan y se envían desde A y B. ¿Qué tan
grande crece la cola en R?
38. Considere la situación en el ejercicio anterior, excepto que esta vez suponga que el
enrutador tiene un tamaño de cola de 1; es decir, puede contener un paquete además del
que está enviando (en cada dirección). Dejemos que el tiempo de espera de A sea de 5
segundos y que SWS vuelva a ser 4. Muestre lo que sucede en cada segundo desde
Tiempo = 0 hasta que los cuatro paquetes de la primera ventana se entreguen con éxito.
39. ¿Qué tipo de problemas pueden surgir cuando dos hosts en el mismo Ethernet
comparten la misma dirección de hardware? Describe qué sucede y por qué ese
comportamiento es un problema.
40. La especificación de Ethernet de 1982 permitió entre dos estaciones cualquiera hasta
1500 m de cable coaxial, 1000 m de otro cable de enlace punto a punto y dos repetidores.
Cada estación o repetidor se conecta al cable coaxial a través de hasta 50 m de “caída”.
“Retrasos típicos asociados con cada dispositivo se dan en la Tabla 2.6 (donde c =
velocidad de la luz en un vacío = 3 × 108 m / s). ¿Cuál es el retraso de propagación de ida
y vuelta en el peor de los casos, medido en bits, debido a las fuentes enumeradas? (Esta
lista no está completa; otras fuentes de demora incluyen el tiempo de detección y el
tiempo de subida de la señal).
41. El cable coaxial Ethernet se limitó a un máximo de 500 m entre repetidores, lo que
regeneró la señal al 100% de su amplitud original. A lo largo de un segmento de 500 m, la
señal podría decaer a no menos del 14% de su valor original (8,5 dB). A lo largo de 1500
m, entonces, la descomposición podría ser (0.14) 3 = 0.3%. Tal señal, incluso a lo largo
de 2500 m, todavía es lo suficientemente fuerte como para ser leída; ¿Por qué entonces
se requieren repetidores cada 500 m?
42. Suponga que el retardo de propagación de ida y vuelta para Ethernet es de 46.4 µs.
Esto produce un tamaño de paquete mínimo de 512 bits (464 bits correspondientes al
retardo de propagación + 48 bits de señal de atasco). (a) ¿Qué sucede con el tamaño
mínimo del paquete si el tiempo de retardo se mantiene constante y la velocidad de
señalización aumenta a 100 Mbps? (b) ¿Cuáles son los inconvenientes de un tamaño de
paquete mínimo tan grande? (c) Si la compatibilidad no fuera un problema, ¿cómo
podrían escribirse las especi fi caciones para permitir un tamaño de paquete mínimo más
pequeño?
43. Sean A y B dos estaciones que intentan transmitir en una Ethernet. Cada uno tiene
una cola constante de marcos listos para enviar; Los cuadros de A se numerarán A1, A2,
etc., y los de B de manera similar. Sea T = 51.2 µs la unidad base de retroceso
exponencial. Supongamos que A y B intentan simultáneamente enviar el fotograma 1,
colisionar, y elegir tiempos de retroceso de 0 × T y 1 × T, respectivamente, lo que significa
que A gana la carrera y transmite A1 mientras B
murga. Al final de esta transmisión, B intentará retransmitir B1 mientras que A intentará
transmitir A2. Estos primeros intentos chocarán, pero ahora A retrocede para 0 × T o 1 ×
T, mientras que B retrocede durante un tiempo igual a 0 × T, ..., 3 × T. (a) Da la
probabilidad de que A gana esta segunda carrera de backoff inmediatamente después de
esta primera colisión; es decir, la primera elección de A del tiempo de espera k × 51.2 es
menor que la de B. (b) Supongamos que A gana esta segunda carrera de retroceso. A
transmite A3, y cuando se termina, A y B vuelven a chocar cuando A intenta transmitir A4
y B intenta volver a transmitir B1. Da la probabilidad de que A gane esta tercera carrera
de retroceso inmediatamente después de la primera colisión. (c) Proporcione un límite
inferior razonable para la probabilidad de que A gane todas las carreras de backoff
restantes. (d) ¿Qué pasa entonces con el cuadro B1? Este escenario se conoce como el
efecto de captura de Ethernet.
44. Supongamos que el algoritmo de transmisión de Ethernet se modifica de la siguiente
manera: después de cada intento de transmisión exitoso, un host espera uno o dos
intervalos de tiempo antes de intentar transmitir de nuevo, y de lo contrario retrocede de la
forma habitual. (a) Explique por qué el efecto de captura del ejercicio anterior ahora es
mucho menos probable. (b) Muestre cómo la estrategia anterior puede llevar a un par de
hosts a capturar Ethernet, alternar transmisiones y bloquear un tercero. (c) Proponer un
enfoque alternativo, por ejemplo, modificando el retroceso exponencial. ¿Qué aspectos
del historial de una estación podrían usarse como parámetros para el retroceso modi fi
cado?
45. Ethernets utiliza la codificación de Manchester. Suponiendo que los hosts que
comparten Ethernet no estén perfectamente sincronizados, ¿por qué esto permite que se
detecten colisiones poco después de que ocurran, sin esperar el CRC al final del
paquete?
46. Suponga que A, B y C hacen que su primer portador tenga sentido, como parte de un
intento de transmisión, mientras que una cuarta estación D está transmitiendo. Dibuje una
línea de tiempo que muestre una posible secuencia de transmisiones, intentos, colisiones
y opciones de retroceso exponencial. Su línea de tiempo también debe cumplir con los
siguientes criterios: (i) inicial

os intentos de transmisión deben estar en el orden A, B, C, pero las transmisiones


exitosas deben estar en el orden C, B, A y (ii) debe haber al menos cuatro
colisiones.
47. Repita el ejercicio anterior, ahora suponiendo que Ethernet es p-persistente
con p = 0,33 (es decir, una estación de espera transmite inmediatamente con
probabilidad p cuando la línea queda inactiva y, por lo demás, difiere un intervalo
de 51,2 µs y repite el proceso). Su línea de tiempo debe cumplir con el criterio (i)
del problema anterior, pero en lugar del criterio (ii), debe mostrar al menos una
colisión y al menos una ejecución de cuatro aplazamientos en una línea inactiva.
Una vez más, tenga en cuenta que muchas soluciones son posibles.
48. Suponga que las direcciones físicas de Ethernet se eligen al azar (utilizando
bits aleatorios verdaderos). (a) ¿Cuál es la probabilidad de que en una red de
1024 hosts, dos direcciones sean iguales? (b) ¿Cuál es la probabilidad de que el
evento anterior ocurra en una o más de 220 redes? (c) ¿Cuál es la probabilidad de
que, de los 230 hosts en todas las redes de (b), algún par tenga la misma
dirección? Sugerencia: el cálculo de (a) y (c) es una variante de la que se usa para
resolver el llamado problema de cumpleaños: dadas N personas, ¿cuál es la
probabilidad de que dos de sus cumpleaños (direcciones) sean iguales? La
segunda persona tiene una probabilidad 1 - 1 365 de tener un cumpleaños
diferente al primero, la tercera tiene una probabilidad 1 - 2 365 de tener un
cumpleaños diferente de los dos primeros, y así sucesivamente. La probabilidad
de que todos los cumpleaños sean diferentes es, por lo tanto, 1 - 1 365? ×? 1 - 2
365? × ··· ×? 1 - N - 1 365?
que para N pequeño es sobre
1-
1 + 2 + ··· + (N - 1) 365
49. Supongamos que cinco estaciones están esperando que otro paquete termine
en una Ethernet. Todos transmiten a la vez cuando el paquete se termina y choca.
(a) Simule esta situación hasta el momento en que una de las cinco estaciones de
espera tenga éxito. Use moneda ips o algún otro
Fuente aleatoria genuina para determinar los tiempos de backoff. Realice las siguientes
simplificaciones: ignore el espaciado entre cuadros, ignore la variabilidad en los tiempos
de colisión (de modo que la retransmisión sea siempre después de un múltiplo integral
exacto del tiempo de intervalo de 51.2 µs), y suponga que cada colisión consume
exactamente un tiempo de intervalo. (b) Discuta el efecto de las simplificaciones
enumeradas en su simulación versus el comportamiento que podría encontrar en una
Ethernet real.
50. Escriba un programa para implementar la simulación discutida anteriormente, esta vez
con N estaciones esperando para transmitir. Nuevamente, modele el tiempo como un
número entero, T, en unidades de tiempos de intervalo, y nuevamente trate las colisiones
como tomando un tiempo de intervalo (de modo que una colisión en el momento T
seguida de un retroceso de k = 0 resultaría en un intento de retransmisión en el tiempo T
+ 1). Encuentre el retardo promedio antes de que una estación transmita con éxito, para N
= 20, N = 40 y N = 100. ¿Sus datos admiten la noción de que el retardo es lineal en N?
Sugerencia: para cada estación, realice un seguimiento de NextTimeToSend y
CollisionCount de esa estación. Ha terminado cuando alcanza un tiempo T para el que
solo hay una estación con NextTimeToSend == T. Si no hay tal estación, incremente T. Si
hay dos o más, programe las retransmisiones e intente nuevamente.
51. Supongamos que las N estaciones Ethernet, todas intentando enviar al mismo tiempo,
requieren N / 2 tiempos de ranura para determinar quién transmite a continuación.
Suponiendo que el tamaño promedio del paquete es de 5 intervalos de tiempo, exprese el
ancho de banda disponible en función de N.
52. Considere el siguiente modelo de Ethernet. Los intentos de transmisión son aleatorios
con un espaciado promedio de los tiempos de intervalo de λ; Específicamente, el intervalo
entre intentos consecutivos es una variable aleatoria exponencial x = −λlogu, donde u se
elige aleatoriamente en el intervalo 0 ≤ u ≤ 1. Un intento en el tiempo t produce una
colisión si hay otro intento en el rango de t - 1 a t + 1, donde t se mide en unidades del
tiempo de ranura de 51.2 µs; De lo contrario, el intento tiene éxito. (a) Escriba un
programa para simular, para un valor dado de λ, el número promedio de tiempos de
intervalo necesarios antes de una transmisión exitosa, llamado intervalo de contención.
Encuentra el valor mínimo del intervalo de contención. Tenga en cuenta que tendrá que
encontrar un intento más allá del que tiene éxito para determinar si hubo una colisión.
Ignore las retransmisiones, que probablemente no se ajustan al modelo aleatorio anterior.
(b) El Ethernet alterna entre intervalos de contención y transmisiones exitosas.
Supongamos que la transmisión exitosa promedio dura 8 intervalos de tiempo (512 bytes).
Utilizando su longitud mínima del intervalo de contención desde arriba, ¿qué fracción del
ancho de banda teórico de 10 Mbps está disponible para las transmisiones?
53. ¿Cómo puede un nodo inalámbrico interferir con las comunicaciones de otro nodo
cuando los dos nodos están separados por una distancia mayor que el rango de
transmisión de cada nodo?
54. ¿Por qué la detección de colisiones es más compleja en wirel?

Вам также может понравиться