TEMA 6: NIVEL DE ENLACE I.
 


 
 
1.- CONTROL DE ENLACE. FUNCIONES.

        Podemos definir el concepto de enlace de datos como el conjunto de dos equipos terminales de datos más los elementos que configuran la red de transmisión, que permiten el intercambio de la información entre ellos. 

        La parte lógica de control de la comunicación es la que corresponde al nivel de enlace de datos, y está compuesta por el conjunto de procedimientos para el establecimiento, mantenimiento y desconexión de circuitos para el envío de bloques de información, controla la correcta transferencia de los datos y articula los métodos  necesarios para la detección y corrección de errores. 

        Existen distintos tipos de enlace de datos, siendo la más simple la denominada punto-a-punto, en la que se unen dos equipos terminales de datos de forma directa. En las conexiones entre más de dos equipos aparecen dos modalidades. La primera, denominada enlace multipunto, consiste en la unión de los equipos en paralelo a un medio compartido, mientras que la segunda conecta los equipos en serie y se denomina enlace en bucle. 


 
           El nivel de enlace tiene como objetivo la transmisión y recepción, de forma fiable o no, de bloques de información (tramas) entre usuarios directamente conectados.
           Es importante poder diferenciar los siguientes conceptos a este nivle:
  • Mensaje: Información que se quiere transmitir, esto es, secuencia de caracteres o bits que representan la información que se pretende enviar
  • Bloque: Secuencia de caracteres o bits qeu se agrupan para su transmisión motivados por razones técnicas.
  • Trama: Secuencia de caracteres o bits que se transmiten a nivel de enlace, es decir, según la arquitectura de protocolos ya conocida, la unidad de datos que se trasmiten al nivel de enlace.
           Por lo tanto, ya podremos diferenciar aserciones tales como el formato de trama y la limitación de tamaño de los bloques, o tamaño de los datos a transmitir.

           Los equipos terminales de datos pueden ser tanto la computadora central, como una computadora personal, un terminal de cualquier tipo o un nodo de una red de conmutación de paquetes. Basta con que se le incorpore la correspondiente función de control de comunicaciones, normalmente una tarjeta integrada que se conecta al modem o, en general, el ETCD. Estos equipos, denominados estaciones de enlaces de datos, se clasifican según las funciones de control de enlace que tienen asignadas. Los tipos de estaciones de enlace son las siguientes: 
 

  • Estación de enlace primaria:es la estación encargada de gestionar el control y tomar decisiones ante determinadas situaciones. Genera órdenes y recibe respuestas; se denomina también estación maestra.
  • Estación de enlace secundaria: recibe órdenes y genera respuestas, no tiene control sobre las funciones importantes de gestión del control. También denominada estación esclava.
  • Estación de enlace combinada: genera tanto órdenes como respuestas. En un enlace punto-a-punto las dos estaciones son de ese tipo, y tienen la misma capacidad de control del enlace.
La unidad de transferencia de información a nivel de enlace es la trama, de manera que la información que se desea transmitir se trocea en unidades (tramas) que se envían secuencialmente. En algunos protocolos se denomina bloque a cada una de estas unidades de información.
FUNCIONES DE UN PROTOCOLO A NIVEL DE ENLACE DE DATOS.

Las funciones que han de considerar los distintos protocolos de enlace de datos son los siguientes: 
 

  • Iniciación: conlleva el envío de tramas de control entre las estaciones enlazadas para averiguar la disponibilidad de ambas para transmitir o recibir la información.
  • Identificación: se compone del conjunto de procesos necesarios para identificar a la estación destino o a la que da origen a la información que se desea transmitir. Frecuentemente se realiza mediante el envío de tramas de identificación entre las estaciones para que puedan reconocerse mutuamente. El procedimiento de identificación se utiliza en enlaces conmutados o enlaces punto-a-punto.
  • Terminación: relativo a todos los procesos que todos los datos han sido bien recibidos y , por tanto, se produce la desconexión del enlace dejando libres los recursos ocupados en ambas estaciones.
  • Sincronización: el envío de información se realiza normalmente en bloques de 8 bits o algún múltiplo de 8, por lo que es necesario establecer una serie de procesos cuya misión sea la de sincronizar el envío y recepción de dichos octetos de información (para más información ver el apartado 5.1 del tema 5).
  • Segmentación y bloqueo: en ocasiones aparece la necesidad de transmitir mensajes excesivamente largos o excesivamente cortos. Para adaptar estos tamaños a un formato que esté en concordancia con las características del enlace, para la eliminación de posibles errores en la transmisión así como optimizar la utilización del enlace, se dividen los mensajes largos en varias tramas (segmentación) o se unen los mensajes cortos en una trama (bloqueo).
  • Sincronización de trama: consiste en definir y diferenciar una trama del conjunto de información que se transmite. El proceso consiste en unir a la trama una información de control que indique dónde empieza y dónde termina. Existen tres modalidades de sincronización de las tramas:
    • la primera consiste en la utilización de caracteres especiales para indicar el principio y fin de la trama.
    • la segunda se compone de un carácter de principio de trama y un contador que indica el número de caracteres de la misma.
    • la tercera modalidad emplea un guión para indicar el principio y final de la trama.



  • Transparencia: esta función trata de eliminar la mala interpretación  que pueda darse si se desea transmitir un conjunto de bits o caracteres similares a los de algún elemento de control del protocolo. Existirán elementos en este nivel para la eliminación de estos posibles conflictos. Se necesita la transparencia , por ejemplo, cuando se transfieren archivos binarios o volcados de memoria, puesto que en  estos casos puede aparecer cualquier combinación de bits.
  • Control de errores: el nivel de enlace debe asegurar que ante la aparición de un error en la transmisión de una trama, éste se detectará y posteriormente se recuperará de algún modo. Las técnicas más utilizadas para la recuperación de errores son las denominadas:
    • control directo de errores (Fordware Error Control-FEQ).
    • petición automática de retransmisión (Automatic Repeat reQuest-ARQ).
    • control de eco que se utiliza para transmisiones asíncronas.
  • Control de flujo: esta función trata de regular el ritmo de envío de tramas desde el transmisor al receptor. Las distintas técnicas utilizadas aseguran que cuando el transmisor envía información, el receptor tiene recursos para recibirla. Existen varias técnicas:
    • Parada y Espera: el emisor envía una trama, y espera a que el receptor le devuelva una señal de asentimiento (ACK) antes de enviar la siguiente.
    • Parada y Arranque: el transmisor envía tramas hasta que el receptor le envía una señal para que pare un determinado tiempo; a continuación, mediante una nueva señal, el receptor le indica al emisor que puede continuar transmitiendo.
    • Ventana Deslizante: el receptor autoriza en cada instante al emisor el envío de un determinado número de tramas; el receptor renovará las autorizaciones según tenga disponibilidad para la recepción de las mismas. Es la técnica más frecuentemente empleada por los protocolos más modernos..
  • Recuperación de anomalías: incluye el control de todas las situaciones imprevistas que puedan presentarse a lo largo de una transmisión. Estos procesos de control de situaciones anómalas estiman plazos de espera para reintentar normalizar la situación, así como limitar a un determinado valor el número de reintentos.
  • Coordinación de la comunicación: Es necesario establecer procesos para evitar conflictos en el establecimiento de los enlaces por parte de las estaciones que los solicitan. Se utilizan dos métodos fundamentales:
    • centralizado: consiste en la asignación de una estación como principal, que toma la responsabilidad del intercambio de información que se produzca enviando información al resto de estaciones, y sondeándolas cada cierto tiempo para recibir información de ellas. Una estación secundaria no puede transmitir hasta que la principal no le de paso. Es un método usado en canales multipunto.
    • de contienda: utilizado en enlaces punto a punto, en los que cualquier estación puede solicitar información en cualquier momento, existiendo procedimientos para solucionar situaciones de colisión de peticiones, debido a la compartición del medio.
2.2.- Protocolos Orientados al Bit.
     Son protocolos más modernos que los anteriores y su aparición se debe a las dificultades que en determinados casos presentan los protocolos orientados a carácter. Las grandes ventajas de estos protocolos son:
 
  • Independencia del código utilizado: se trata de enviar conjuntos de bits que en principio pueden configurar información en cualquier código.
  • Gran eficiencia en la transmisión: la relación existente entre los bits de información y los bits de control es muy alta.
  • Gran fiabilidad en las transmisiones: se dispone de métodos de control para la detección y recuperación de errores con gran eficacia.
            Los protocolos más extendidos de este tipo son los siguientes:
 
  • HDLC (High-level Data Link Control) de ISO(más información en apartado 5).
  • ADCCP (Advanced Data Communications Control Procedures) de ANSI.
  • LAPB (Link Acces Procedure Balanced) del CCITT.
  • SDLC (Synchronous Data Link Control) de IBM.
  • BDLC (Burroughs Data Link Control) de Borroughs.
  • UDLC (Data Link Control Univac) de Univac. 

 
2.3.- Técnicas de delimitación de trama.

        Se tratan de las técnicas más comunes utilizadas por los distintos protocolos para la correcta identificación por parte del receptor del principio y fin de la trama, según el tipo del canal, el caudal por el mismo, multiplexación o no de canales habrán distintas técnicas:

  • Tamaño fijo: Todas las tramas tienen el mismo tamaño. Esta técnica es la utilizada en multiplexación de canales, es decir, para el acceso de varias máquinas a un canal común de mayor capacidad binaria. Se irá asignando un espacio fijo de tiempo a cada canal, bien sea de manera estáticao dinámica: 
  • Principio y longitud: Se parte sabiendo la longitud de la trama. por lo que no hay más que añadir un carácter especial para indicar cuándo inicia la misma, por ejemplo, si el dato que queremos tranmitir es la siguiente secuencia de octetos:
                   abcde%57f

           La trama que se transmitiría sería:

                   $abcde%57f

           Este caracter puede acarrear problemas si los datos tienen este mismo
           carácter, como veremos más tarde

  • Principio y fin: Es muy similar a la técnica anterior, pero supone no conocida la longitud de la trama, por lo que se hace necesario otro caracter indicador del fin de la trama. Para el mismo ejemplo anterior, lo que se enviaría es:
                  $abcde%57f$

          Estos símbolos se denominan guiones. Para el caso en el que representemos 
          los datos de la trama por bits:

                  Datos:                0110101100010111

                  Enviado:  01111110011010110001011101111110

          El guión 01111110 suele ser el más utilizado.

          Como ya se indicó pueden existir problemas si en los datos hay secuencias de bits o caracteres que coinciden con los guiones. Para ello se utilizar caracteres de control. La transparencia consiste en transmitir todos los caracteres posibles, para conseguir esta transparencia necesitamos caracteres de escape.
          Veamoslo con un ejemplo: 

                  Principio-fin: $        Escape: %

                  Dato:           abc$ef%$hi 

                  Enviado: %$ abc$ef%%$hi %$

           Los caracteres en azul representan los datos reales, el resto no aporta información alguna. Como se ve, si el caracter $ aparece dentro de la cadena, hemos de escapar tanto el principio como el fin. Si aparecen caracteres que coinciden con los de principio y fin, se vuelven a escapar, como se indica en el ejemplo anterior. Con esta técnica, en el peor de los casos introduzco mitad información de control, mitad datos.

           Si vemos los bits, la solución es más sencilla, pues si aparecen seis unos seguidos, no hay más que añadir un cero tras el quinto uno, de tal manera que el receptor, al ver cinco unos seguidos, sabe que el cero inmediatamente posterior no forma parte de los datos, y si hay otro uno, signofica que es el fin de la trama. Veamoslo:

                  Datos:                01101011111100010111

                  Enviado:  0111111001101011111010001011101111110

           El cero introducido en color verde no aporta información alguna.

3.- CODIGOS DE CONTROL DE ERRORES.
 

       Debido a los defectos existentes en cualquier canal de transmisión de datos, siempre se introducen errores en la información transmitida, caracterizándose la calidad de la transmisión por la tasa de errores, que es la relación entre el número de bits recibidos erróneos y el número de bits transmitidos. Esta tasa depende de los elementos del canal. 

       Una de las posibles técnicas para reducir la tasa de errores es la introducción de redundancias en la codificación. Se entiende como redundancia de un código la diferencia entre la información máxima que podría proporcionar el alfabeto empleado y la que proporciona realmente. En general un código más redundante que otro necesita mensajes más largos que el primero para transmitir la misma cantidad de información. En los códigos redundantes se utilizan los dígitos que no transportan información como detectores, e incluso correctores, de errores que se hayan producido en la palabra a la que pertenecen. 

       Las estructuras de los diversos códigos son distintas según el tipo de errores que deban detectar o corregir. Actualmente la generación de códigos se realiza por procesos algebraicos, los cuales permiten la realización práctica de codificadores y decodificadores mediante autómatas lineales. 

       El esquema general de una transmisión con codificador y decodificador es el siguiente: 

 m es el mensaje que se trata de comunicar.
 t es m codificado, es decir, m más una cierta información redundante. 
 t' es el mensaje recibido. Cuando llega al decodificador pueden ocurrir dos cosas: 
 
1. Que t' sea una palabra del código, que se decodifica como m' (que seguramente coincidirá con m). 
2. Que t' no sea una palabra del código, detectándose como error. El detector tiene tres opciones: tirar el mensaje sin más, pedir la retransmisión del mismo, o corregirlo si tiene la lógica adicional necesaria. 

      Según la potencia del código, los sistemas pueden detectar errores, corregirlos, o realizar ambas funciones especializándose en la detección de cierto tipo de errores y en la corrección de otros. 
 
 

3.1.- Distancia de Hamming.

       La primera subdivisión que se efectúa entre códigos es la siguiente. 

  • códigos de bloque: la longitud de sus palabras es constante. Son los más utilizados, y para entenderlos resulta fundamental el concepto de distancia.
  • códigos sin bloque: la longitud es variable.
       La distancia de Hamming entre dos palabras es el número de bits en que difieren una de la otra. Por ejemplo: 
 
10001110 11100101
00111000   11110111
d = 5   d = 2

       El peso de una palabra se define como el número de 1s que tiene. Utilizando este concepto podemos decir que la distancia entre dos palabras como el peso de la suma en módulo 2 del peso de las mismas. 
 
 

10001110 11100101
00111000   11110111
10110110  => peso 5 00010010  => peso 2

       Dos palabras serán tanto más fáciles de distinguir cuanto mayor sea su distancia Hamming, ya que si la distancia es d será necesario que se produzcan d errores para que una palabra pase a ser la otra. De este análisis se desprende que la eficacia de un código será función de su distancia Hamming, que se define como la mínima distancia que puede encontrarse entre dos palabras que pertenezcan a ese código. En general: 

  • Un código de distancia mínima de Hamming d será capaz de detectar d-1 errores.
  • Un código de distancia mínima de Hamming d será capaz de corregir (d-1)/2 errores.

  • Un código que corrija t errores y detecte d (d>t) debe tener una distancia mínima igual a dm, siendo dm = t + d +1.
3.2.- Códigos de Control de Paridad. 

       La información redundante que se introduce al final de la palabra está relacionada con la paridad de la misma. Por ejemplo si al código telegráfico ordinario de 5 dígitos se le añade un sexto, de manera que si el número de 1s de los cinco primeros es par , el sexto será un 0, y si es impar un 1 (paridad vertical), conseguimos un código de distancia mínima 2 que detecta los errores simples. La formación de este código sería: 
 
 

  Nº de bit   A     B    C 
1   1    0     1
2   0    1     1
3   1    1     0 
4   1    0     1
5   0    0     0
6   1    0     1

 

       Si los caracteres se agrupan por bloques para la transmisión se puede aumentar la protección de cada bloque con un carácter de control (paridad horizontal) que puede estar combinado con el vertical. Continuando con el ejemplo anterior: 
 
 
 

               A   B   C  D  E   F      Paridad 
   Horizontal
                1   0   1   1   1   0  0
           0   1   1   0   1   0 1
                1   1   0   0   0   1 1
                1   1   1   0   1   0 0
                0   0   0   1   0   0 1
Paridad    1   1   1   0   1   1
Vertical 
                 1     Paridad
                       Cruzada

 

       La transmisión de bloque total se realiza secuencialmente por filas, reconstruyéndose la matriz en recepción para la detección de errores. El ejemplo describe un código de distancia mínima 4, capaz de corregir los errores simples, y detectar los dobles, tiples y cuádruples si éstos no forman un rectángulo en la matriz. A este tipo de códigos se les denomina multidimensionales (el del ejemplo es bidimensional). 
 

3.3.-Códigos de Hamming.

Son un subconjunto de los códigos de control de paridad. En ellos se disponen los dígitos de paridad de tal manera que localicen la presencia de errores dentro del mensaje. Estos códigos tienen como muy poco distancia mínima 3. 

Supongamos palabras de L dígitos. Para detectar un error en una de los L bits, o la ausencia de error, necesitaremos al menos R de esos L bits, cumpliendo la relación: 

L = 2R - 1

de donde se deduce que el código Hamming más sencillo tendrá 2 bits de paridad y 1 de información. A los códigos que cumplen la relación anterior se le denomina código óptimo, en el sentido en que contienen el número máximo posible de bits de información, para una longitud de palabra L y una distancia mínima determinada (en nuestro caso 3). 

Las principales reglas relativas al control de paridad en los códigos de Hamming son: 

  • Dos dígitos no pueden controlar la paridad de un mismo conjunto de dígitos de información.
  • No se puede incluir en el conjunto de dígitos controlado por uno, otros dígitos de paridad.
  • Un error en un bit de información debe afectar a dos o más bits de paridad.
Veamos un ejemplo: 

            p = 3 bits de paridad: p0, p1, p2. 
            L = 7. 
            i = 7 -3 = 4 bits de información: i0, i1, i2, i3. 

     L = i0 i1 i2 i3 p0 p1 p2. 
 

p0 p1 p2 ERROR
0 0 0   NO ERROR 
0 0 1 p2
0 1 0 p1
0 1 1 i3
1 0 0 p0
1 0 1 i2
1 1 0 i1
1 1 1 i0

      Se obtienen las ecuaciones: 
 

0 = p0 xor i2 xor  i1 xor i0 
0 = p1 xor i3 xor  i1 xor i0
0 = p2 xor i3 xor  i2 xor i0

      de manera que si se recibe una palabra se comprueban las tres ecuaciones, y, en función de las que no se cumplen, se detectará la situación de error o la ausencia. Así por ejemplo, si no se verifican la primera y la tercera, el error estará en i2, que es el único que no interviene en la segunda pero sí en las otras dos. 

       La probabilidad de no detectar error en este código depende de como se utilice. Si se utiliza como corrector existirá la probabilidad de que existan al menos dos errores (es decir, el código sólo puede corregir uno, si hay más no son corregibles), en un canal BSC con probabilidad de error p: 

Pe (corrector) = (n2) p2 (1-p)n-2
       Si se utiliza como corrector, la probabilidad de no detección será la de que al menos haya tres errores, es decir: 
Pe (detectar) = (n3) p3 (1-p)n-3
       Sin embargo, si una palabra contiene más errores de los que es capaz de detectar un código el decodificador entrega una palabra errónea. Debido a esto se utilizan muchas veces códigos con función doble: primero detectan los errores, después tratan de corregirlos, y si no es posible solucionar todos se pide la retransmisión. 

 
3.4.- Códigos Polinómicos.
 

       También denominados de redundancia cíclica o CRC. Se basan en el tratamiento polinomios que sólo tienen como coeficientes 0s y 1s, y que representan cadenas de bits. Una trama de k bits se considera como el conjunto de coeficientes de un polinomio de orden k-1, el bit más significativo (el situado más a la izquierda) es el coeficiente de xk-1, y el menos el de x0. Ejemplos: 
 
 
 

10010110 .......... x7 + x4 + x2 + x1
11101................. x4 + x3 + x2 + 1
10000001 .......... x7 + 1

       Cuando se emplea el método de código polinómico el receptor y el transmisor deben acordar de antemano un polinomio generador, G(x). Tanto los bits mayor como menor del polinomio deben ser 1. Para calcular la suma de comprobación para una trama con m bits (que constituye l mensaje), correspondiente al polinomio M(x), el polinomio generador debe ser de grado menor que M(x). La suma de comprobación es una operación que se efectúa sobre los bits del mensaje que permite saber si hay alguno erróneo. La idea es anexar una suma de comprobación al final del marco, de manera que el polinomio-mensaje más la suma de comprobación sean divisibles entre G(x). Cuando se recibe el mensaje se realiza la división y si el resto, E(x), es distinto de cero es que se ha producido algún tipo de error en la transmisión. 
 

       El algoritmo para calcular la suma de comprobación es el siguiente:

  • Si G(x) es de grado r, entonces se colocan r ceros al final del polinomio que representa el mensaje, M(x), para que ahora su longitud sea m + r, y corresponda al polinomio xrM(x).
  • Se divide xrM(x) entre G(x) usando división modulo 2.
xrM(x)/G(x) = C(x) + FCS
  • El resto (FCS, frame check sequence), que será de orden r o menor, se coloca al final del polinomio M(x) original. Al resultado de unir estos dos polinomio le llamamos T(x).
T(x) = xrM(x) +  FCS

       Como se ha explicado anteriormente, el polinomio T(x) es divisible entre G(x), de forma que si no resulta alterado durante la transmisión el resto de la división debe ser cero (E(x)=0): 
 

T/G = xrM'/G + FCS/G = C' + E
T/G = C + R/G + FCS/G 
Si  R=FCS, entonces: T/G = C
       Entonces: C' = C; E=0.

  ya que un número binario sumado en módulo 2 con sigo mismo da cero. Sin embargo, un error E(x) no se detectará si es divisible por G(x). Se puede demostrar que mediante la elección de un polinomio generador adecuado los siguientes errores tienen patrones que no son divisibles por él, y por tanto detectables:

  • Todos los errores de 1 bit.
  • Todos los errores dobles, si G(x) tiene al menos tres 1s.
  • Cualquier número impar de errores, siempre que G(x) contenga el factor (x+1).
  • Cualquier error a ráfagas en el que la longitud de la ráfaga sea menor que la longitud del polinomio divisor, es decir menor o igual que la longitud de la secuencia de comprobación de la trama (FCS). Un error en ráfaga se caracteriza por un 1 inicial, una mezcla de ceros y unos, y un 1 final. 
  • La mayoría de las ráfagas de mayor longitud.
       Además, para patrones de error equiprobables, y ráfagas de longitud r+1 ( r era la longitud del FCS, o el grado de G), la probabilidad de que R sea divisible por G es 1/2r-1; para ráfagas mayores es de 1/2r

       Hay tres polinomios que están estandarizados internacionalmente: 
 
 

x12 + x 11 + x3 + x 2 + x1 + 1   CRC - 12
x16 + x15 + x2 + 1  CRC - 16
x16 + x12 + x5 + 1 CRC - CCITT

 
 

 


 
 
4.- Ejemplos de Protocolos de Enlaces.

4.1.- SLIP.

       Es el más viejo de los protocolos,  está descrito en RFC 1055 y extremadamente sencillo. La estación transmite paquetes IP por la línea, delimitándolos exclusivamente con el carácter especial 0xCO al final de la trama. Para solucionar el problema que se presenta cuando este byte especial aparece entre los datos se utiliza una técnica de relleno, enviándose dos bytes (0xDB y 0xDC) en su lugar. Y si son éstos los que aparecen entre los datos se efectúa un nuevo relleno... 

       Aunque en la actualidad SLIP es ampliamente usado presenta ciertos inconvenientes: 

  • No tiene mecanismos para la detección o corrección de errores, que pasa a ser responsabilidad de los niveles superiores.
  • SLIP sólo reconoce IP.
  • Cada lado debe conocer de antemano la dirección IP del otro, lo cual supone la necesidad de tenerla  permanentemente en exclusiva, y esto, debido la escasez de direcciones IP, es un serio problema.
  • No hay procesos de verificación de autenticidad.
  • SLIP no es un estándar aprobado de Internet, por lo que existen muchas versiones diferentes (e incompatibles) lo que complica la interconexión.


       Este protocolo es inherentemente simétrico, es decir, no sigue el modelo cliente servidor en el que un extremo de la comunicación pesaba más que el otro. Este tipo de enlace se suele denominar extremo a extremo (peer-to-peer), ya que ambos extremos son igual de activos en la comunicación, y los dos formulan peticiones y llevan acabo acciones.


 
4.2.- PPP.
 

       Actualmente cuando muchos usuarios piensan en el Protocolo Punto-a-Punto (PPP), lo hacen pensando en ordenadores personales (PCs), modems, y navegación por Internet. Sin embargo, PPP es un protocolo mucho más amplio que se emplea para transferir datos entre diversos tipos de computadoras y sistemas de computación, como routers, satélites ... Este protocolo tiene la habilidad de manejar tasas de datos desde las más bajas a las más altas usadas actualmente y es compatible con prácticamente cualquier tecnología de redes jamas desarrollada. 

       El Internet Engineering Task Force (IETF), que ha sido quien ha guiado el desarrollo del PPP, está integrado por representantes de la industria, de las telecomunicaciones, de academias, y por grupos de usuarios. Se trata de un grupo abierto, cualquiera interesado en establecer estándares es libre de participar. 

       Las reglas por las que se rige el IETF distan bastante de las de el resto de organismos de estandarización, como la ITU o la ISO. El IEFT ha favorecido una cultura según la cual es mucho más importante desarrollar un protocolo que funcione bien que producir documentos con los que todos estén de acuerdo. A diferencia de lo que ocurre en otras organizaciones, los participantes de IERF suelen discutir los prototipos de implementaciones y los resultados experimentales al mismo tiempo que se están escribiendo los protocolos. 

       PPP, como cualquier otro protocolo de red, existe como una capa entre otras dos capas de la pila de protocolos. Por debajo está el interfaz hardware, que debe ser algún tipo de flujo de datos bidireccional, y sobre él los protocolos de la capa de red como IP o IPX. 

       PPP toma prestado parte del control de enlace de datos de alto nivel (HDLC) para su interfaz con el nivel inferior, lo que extiende PPP para trabajar sobre líneas en serie asíncronas. De hecho, en el interfaz hardware, se encuentran una serie de restricciones: 

  • Se puede usar con controladores estándar de HDLC.
  • Está definido sólo para enlaces punto-a-punto.
  • Puede coexistir con otros protocolos basados en HDLC en el mismo enlace sólo si los otros protocolos están restringidos en el uso de las direcciones.
  • Se puede emplear en líneas que tengan control de flujo software.
  • Define mecanismos para la detección de errores que son más potentes que los usados en HDLC.
  • Permite la negociación de direcciones IP en el momento de la conexión.
  • Permite la verificación de autenticidad.
       En general PPP permite tres cosas: 
  • Un método de enmarcado que delinea sin ambigüedades el final de un marco y el inicio del siguiente. El formato de marco también maneja la detección de errores.
  • Un protocolo de control de enlace para activar líneas, probarlas, negociar opciones y desactivarlas ordenadamente cuando ya no son necesarias. Este protocolo se llama LCP (Link Control Protocol).
  • Un mecanismo para negociar opciones de capa de red con independencia del protocolo de red usado. El método escogido consiste en tener un NCP (Network Control Protocol) distinto para cada capa de red reconocida.
       Para los protocolos de nivel de red, PPP presenta una interfaz orientada a paquetes, y puede proporcionar secuenciamiento y fiabilidad si así se requiere. 

       PPP declara tres técnicas estándar de entramado para el uso en distintos medios. Todos están recogidos en la RFC 1662 y se denominan: HDLC asíncrono (AHDLC), HDLC bit-síncrono y HDLC octeto-síncrono. En cualquiera de los casos las tramas tendrán un número entero de bytes, ya que se trata de un protocolo orientado a carácter. El formato general es el siguiente: 

       El campo de control tiene un valor predeterminado de 00000011, que indica un marco sin número, porque PPP no tiene transmisión fiable (no hay números de secuencia y acuses de recibo), excepto en casos particulares como redes inalámbricas. 

       La función del campo de protocolo es indicar la clase de paquete que va en el campo de carga. Se definen códigos para LCP, NCP, IP, IPX, AppleTalk  y otros. El campo de carga es de longitud variable, que puede ser negociada; en su caso se puede usar relleno. 
 

       Cualquier conexión por modem, o enrutador-enrutador, pasa por la siguiente serie de fases: 

1.Cuando se detecta la portadora es porque se ha realizado una conexión a nivel de capa física y la conexión está en la fase establecer. Hasta entonces la línea estaba en reposo (o muerta, ya que no había conexión). 
2. Se negocian las opciones LPC, y si se llega a un acuerdo se pasa a a fase de validar
3. Al entrar en la fase de red se invoca al protocolo NCP apropiado para configurar la capa de red. 
4. Una vez configurada se pasa a la fase Abierta, y comienza el transporte de datos. 
5.y 6. Finalmente la conexión pasa a fase de terminar, y de ahí a muerta.
 

 
 
5.- HDLC.

         Entre las múltiples organizaciones internacionales que en los últimos años se han dedicado a elaborar normas de comunicaciones está la ISO, que se ha especializado en el establecimiento de estándares para los protocolos de red y otras actividades. HDLC (High-Level Link Control) es una norma publicada por la ISO que ha conseguido afianzarse por todo el mundo. Proporciona una amplia variedad de funciones y cubre un amplio espectro de aplicaciones. Está considerada en realidad como un ámbito que engloba a muchos otros protocolos: SDLC, LAP, LAPB,LAPD, LAPX y LLC. Obedece a la definición que vimos para el ARQ continúo (ventana deslizante). Como ya se vio es un protocolo orientado a bit (apartado 2.2). 

5.1.- Opciones de HDLC.

         El protocolo HDLC puede instalarse de muy distintas maneras. Admite transmisiones dúplex y semidúplex, configuraciones punto-a-punto o multipunto, y canales conmutados o no conmutados. Una estación HDLC puede funcionar de una de estas tres maneras: 


        Las estaciones pueden encontrarse en uno de uno de los siguientes estados lógicos: 

  • Estado de desconexión lógica (LDS): prohibe a una estación transmitir o recibir información. Por ejemplo una estación secundaria no puede transmitir hasta que la principal no le da paso, momento en que abandona este estado.
  • Estado de inicialización(IS): depende de cada fabricante, y no entra dentro de las especificaciones de HDLC.
  • Estado de transferencia de Información (ITS): permite a cualquier estación transmitir y recibir información de usuario.
        Mientras una estación permanezca en estado de transferencia de información, podrá emplear para comunicarse cualquiera de los tres modos citados a continuación: 
 
  • Modo de Respuesta Normal (NRM):obliga a la estación secundaria a esperar la autorización explícita de la estación primaria antes de ponerse a transmitir. Una vez recibido este permiso, la estación secundaria comenzará a transmitir una respuesta, que podrá contener datos, y constará de una o varias tramas, enviadas a lo largo de todo el periodo en que la estación utilice el canal. Una vez transmitida su última trama, la estación secundaria deberá esperar otra vez a tener la autorización pertinente.
  • Modo de Respuesta Asíncrona (ARM): una estación secundaria puede comenzar una transmisión sin autorización previa de la estación principal (generalmente cuando el canal está desocupado). En la transmisión pueden incluirse una o varias tramas de datos, o bien informaciones de control relativas a los cambios de estado de la estación secundaria. El modo ARM puede descongestionar el enlace en cierta medida, ya que la estación secundaria no tiene que someterse a toda una secuencia de sondeo para poder enviar sus datos.
  • Modo Asíncrono Balanceado (ABM): emplea estaciones combinadas, las cuales pueden empezar sus transmisiones sin permiso de las otras estaciones combinadas.
       Todos estos modos pueden ser activados o desactivados a lo largo de la sesión, lo cual confiere una gran flexibilidad a las comunicaciones entre diferentes estaciones. 
 

5.2.- Formato de la Trama HDLC.

        En HDLC se usa el término trama para referirse a una entidad independiente de datos que se transmite de una estación a otra través del enlace. Existen tres tipos de tramas, en función de como sea su campo de control: 
 

  • Las tramas con formato de información sirven para transmitir datos de usuario entre dos estaciones. También pueden utilizarse como aceptación de los datos de una estación transmisora. Asimismo, pueden llevar a cabo un limitado número de funciones, por ejemplo funcionar como comando de sondeo (poll). 
  • Las tramas con formato de supervisión realizan funciones diversas, como aceptar o confirmar tramas, o solicitar una interrupción temporal de la transmisión de las mismas. El uso concreto de este tipo de tramas depende del modo de funcionamiento del enlace (repuesta normal, asíncrona,...).

  • Las tramas con formato no numerado también realizan funciones de control. Sirven para inicializar un enlace, para desconectarlo, o para otras funciones de control del canal. Incluyen cinco posiciones de bits, que permiten definir hasta 32 comandos y 32 respuestas. El tipo de comando o respuesta dependerá de la clase de procedimiento HDLC que se trate. 
     
     
     
       Una trama consta de cinco o seis campos: 
 
  • Toda trama comienza y termina con los campos de señalización (banderas, guiones,...). Las estaciones conectadas al enlace deben monitorizar en todo momento la secuencia de señalización en curso. Una secuencia de señalización es 01111110. Entre dos tramas HDLC pueden transmitirse de forma continua señalizaciones. Si se envían siete unos seguidos se indica que existe algún problema en el enlace. Quince unos seguidos hacen que el canal permanezca inactivo. En el momento en que una estación detecta una secuencia que no corresponde a una señalización, sabe que ha encontrado el comienzo de una trama, una condición de error o de canal desocupado. Cuando encuentre la siguiente secuencia de señalización sabrá que la trama ha llegado completa. La señal de la señalización es similar a la del carácter Syn en BSC (ver apartado 2.1, y sobretodo apartado 1.2 del tema 5).
  • El campo de dirección identifica la estación principal o secundaria que interviene en la transmisión de una trama determinada. Cada estación tiene asignada una dirección específica. 
  • El campo de control contiene tanto los comandos y las respuestas como los números de secuencia que se utilizan para llevar la contabilidad del flujo de datos que atraviesa el enlace entre la estación primaria y la secundaria. Su formato y contenido son función del uso al que se destine la trama HDLC. (para más información ver apartado 5.4)
  • El campo de información contiene los datos de usuario propiamente dichos. Este campo sólo aparece en las tramas de información, y no en las de formato no numerado.
  • El campo de comprobación de secuencia de la trama que sirve para averiguar si a aparecido algún error durante la transmisión de dicha trama entre dos estaciones.  La estación emisora lleva a cabo un cálculo sobre los datos del usuario, y añade a la trama el resultado de ese cómputo, colocándolo en el campo FCS. La estación receptora realiza el mismo cálculo, y si ambos coinciden es muy probable que no haya habido error. El cálculo cuyo resultado arroja el valor de FCS se conoce como comprobación por redundancia cíclica (CRC, ver apartado ).
5.3.- Transparencia del Código y Sincronización.

     HDLC es un protocolo transparente al código. El control de la línea no radica en ningún código en concreto. Ya hemos visto que al principio y al final de la trama se sitúa una secuencia de señalización, que puede ser de tres tipos:

  • guión: cadenas del tipo 01111110.
  • abortar: cadenas de más de siete, pero menos de quince bits de valor 1. Esta señal hace acabar una trama, una estación emisora la envía cuando encuentra un problema que exige tomar una acción determinada para solucionarlo.
  • libre: formada por quince o más bits a 1. Indica que el canal está desocupado.
      El problema que surge con este tipo de señalización es que hacer cuando los patrones predefinidos como secuencias de señalización aparecen entre los datos, ¿cómo distinguirlos cuando son datos de cuando son señales? Para evitar que dentro de una cadena de datos aparezcan una señalización, la estación emisora insertará un cero cuando encuentre cinco unos seguidos en cualquier lugar situado entre dos patrones de apertura y cierre de la trama, es decir a los campos de dirección, control, información y FCS. Esta técnica se conoce como inserción de bits.

      El receptor monitoriza constantemente el flujo de datos, después de recibir un cero después de cinco unos consecutivos mira el siguiente bit: si es un cero lo ignora, si es un uno mira al siguiente, si éste es un cero sabe que ha llagado un patrón 01111110.
 

5.4.- Campo de Control HDLC.

     Este campo determina la forma en que HDLC controla el proceso de comunicación. El campo de control define la misión de la trama, que puede tener tres formatos (ver apartado 5.2). El campo de control identifica los comandos y respuestas utilizados para gobernar el flujo de tráfico por el enlace. 

       El formato del campo de control determina como se codificará y empleará éste. El formato más sencillo es el de información; incluye dos números de secuencia: el N(S) (secuencia de envío) indica el número de orden asociado a la trama enviada, el N(R) (secuencia de recepción) indica cuál es el siguiente número de secuencia que espera el receptor. N(R) sirve como asentimiento de las tramas anteriores.

        El bit situado en la quinta posición, P/F (Polling/Final) sólo es reconocido cuando toma valor -1, y desarrolla las siguientes funciones:

  • La estación principal utiliza el bit P para solicitar a la secundaria información a propósito de su estado. También puede expresar una operación de sondeo.
  • La estación secundaria responde a un bit P enviando una trama de datos o de estado junto con un bit F. El bit F puede denotar también el fin de una transmisión de una secundaria en el modo NRM.
       El bit P/F se emplea e interpreta de diversas formas:
  • En NRM, para poder transmitir la estación secundaria tiene que recibir una trama, bien de información (I) bien de control (RR,REJ o SREJ), con el bit P puesto a 1.
  • En ARM y ABM, pueden transmitirse tramas aunque no hayan sido solicitadas si llevan el bit P puesto a 1. Este bit pide una respuesta rápida con el bit F activo.
      La transmisión de una trama con el bit F puesto a 1 no exige que el secundario interrumpa su transmisión.

 
5.5.- Comandos y Respuestas.

      Existen cuatro comandos y respuestas encargados de llevar a cabo funciones numeradas de supervisión, como es el sondeo, la aceptación de datos, la suspensión temporal de transferencia de datos, o la recuperación de errores. El formato del campo de control de supervisión es el siguiente: 

      Estos son los comandos y respuestas empleados por el formato supervisor: 

  • Receptor Preparado (RR): es la respuesta con la que cualquier tipo de estación indica que está lista para recibir; también indica con su campo N(R) la aceptación de tramas recibidas con anterioridad. 
  • Receptor No Preparado (NR): es la señal que emplea una estación para indicar que está ocupada. La trama RNR puede también acusar recibo de tramas anteriores, a través de su campo N(R). 
  • El Rechazo Selectivo (SREJ): sirve para solicitar la retransmisión de la trama concreta que se indica en el campo N(R). Con este mecanismo se aceptan todas las tramas hasta la N(R)-1. Una vez enviada la señal SREJ, las tramas subsiguientes quedan aceptadas, y se guardan hasta que llegue la retransmisión pedida. 
  • El Rechazo Simple (REJ): se utiliza para solicitar la retransmisión de todas las tramas posteriores a la indicada por el campo N(R). Todas las tramas hasta la N(R)-1 quedan aceptadas automáticamente. 
      El tercer formato HDLC proporciona comandos y respuestas no numerados. Se  agrupan según la función que realizan: 
  • Comandos de activación de modo
    • SNRM, activa el modo de respuesta normal.
    • SARM, activa el modo de respuesta asíncrona.
    • SABM, activa el modo asíncrono equilibrado.
    • SNRME, activa el modo de respuesta normal extendido.
    • SABME, activa el modo asíncrono equilibrado extendido.
    • SIM, activa el modo de inicialización.
    • DISC, desconectar (cuando una estación principal se la envía a una secundaria, ésta queda en modo de desconexión, muy útil en líneas conmutadas. La respuesta esperada es UA).
  • Comandos de transferencia de información:
  • UI, información no numerada (permite transmitir datos de usuario dentro de una trama no numerada).
  • UP, sondeos no numerados.
  • Comandos de recuperación: RESET .
  • Comandos diversos: XID, TEST.
          Otros comandos no numerados interesantes son: UA (asentimiento no numerado), FRMR (rechazo de trama),... 
 
 
 

 



 
Al tema anterior.
Al tema siguiente.
Al índice de temas.
Al índice general.
Links relacionados.