"High-level data link control" (HDLC)Professor Adjunto do Departamento de Engenharia Informática do ISEP O HDLC é uma especificação do nível 2 do MR-OSI com grande utilização e que inclui diversas variantes, utiliza a transmissão síncrona de tramas, orientada por bit. Existem três tipos de nós:
Se numa linha multiponto ou ponto a ponto existe um nó primário e um ou mais secundários, a ligação é não balanceada. Se numa ligação ponto a ponto existem dois nós combinados a ligação é balanceada. Numa ligação balanceada qualquer dos nós combinados pode iniciar uma transmissão, este modo de transmissão é designado por ABM (“Asynchronous balanced mode”). Numa ligação não balanceada o modo normal de funcionamento é NRM (“Normal Response Mode”), os nós secundários só podem transmitir quando solicitados pelo nó primário. Existe ainda um terceiro modo, raramente usado, que permite que numa ligação não balanceada os nós secundários tomem a iniciativa de transmitir, trata-se do ARM (“Asynchronous response mode”). Tramas HDLCExiste um único formato de trama que é usado tanto para transmissão de dados como informação de controlo:
![]() Todas as tramas são delimitadas por “flags” de sincronização de trama. Estas “flags” são constituídas por 8 bits com o padrão 01111110. Uma única “flag” pode ser usada para assinalar o fim de uma trama e inicio da seguinte. Para evitar que os dados no interior da trama sejam confundidos com a “flag” que assinala o fim da trama utiliza-se o seguinte procedimento conhecido como “bit stuffing”:
O endereço é usado para identificar o nó secundário a que se destina o comando ou o nó secundário que emitiu a resposta, numa configuração ponto-a-ponto não é necessário, mas existe sempre. Normalmente um endereço de 7 bits (127 nós secundários) é suficiente, mas é possível usar endereços com qualquer número de bits múltiplo de 7. Para cada octeto, se o oitavo bit é um, significa que não existem mais octetos de endereço, se é zero o endereço continua. O octeto 11111111 é reservado para “broadcast” permitindo ao nó primário enviar uma trama para todos os secundários. O campo de controlo começa com dois bits que identificam o tipo de trama. Existem três tipos de trama e a parte restante deste campo é diferente para cada um deles. Os três tipos de trama são:
O esquema seguinte apresenta a constituição do campo de controlo para os vários tipos de "trama":
![]() O bits assinalado com P/F (“Poll/Final”) tem diversas funções conforme o tipo de trama, e de acordo com o modo de funcionamento da ligação. Por exemplo numa trama I em modo normal de resposta (NRM), o nó primário coloca este bit a 1 para permitir ao nó secundário responder e o nó secundário coloca-o a 1 para indicar que se trata da ultima trama da resposta. As tramas I e S podem ter o campo de controlo expandido para 16 bits, isto permite aumentar os números de sequência de 3 para 7 bits. A comutação entre control de 8 ou 16 bits é realizada com funções U. O campo de dados só existe nas tramas I e, em alguns casos, nas tramas U. Contém os dados a transmitir ao nó destinatário, embora no “standard” não exista comprimento máximo definido, cada implementação particular impõe limitações. O FCS de 16 bits corresponde ao CRT-CCITT, no entanto, quando tal se justifica, certas implementações podem usar o CRC-32, dando origem a um FCS de 32 bits. Operação do HDLCAs transferencias de dados baseiam-se nas tramas-I, cada trama contém um número de sequência de emissão, e um número de sequência de recepção. O número de sequência de recepção funciona como confirmação de recepção de tramas anteriormente enviadas em sentido inverso (“piggybackind”). Trata-se do número de sequência da trama que é esperada a seguir, o tamanho máximo da janela pode variar entre 7 e 127. Embora as tramas I possam por si controlar o fluxo e os erros, nem sempre isso é adequado (pode não existir uma trama I pronta a enviar, para transportar o ACK), neste caso usam-se tramas S. As tramas S permitem a implementação de ARQ em modo “stop & wait”, “go-back-n” ou “selective-repeat”, para este efeito estão definidos os seguintes comandos:
O número de trama ao qual se aplica o comando é indicado no campo “Nº de Sequência de Recepção” da trama S. As funções proporcionadas pelas tramas U são bastante mais extensas e diversificadas:
Os comandos SNRM, SARM e SABM são usados para estabelecer a ligação lógica, o nó que as recebe responde com UA ou DM conforme aceita ou não a ligação. O comando DISC é usado para quebrar a ligação lógica, o nó que o recebe responde com UA.
O protocolo HDLC é repleto de funcionalidade e serviu de base a diversas implementação, em algumas delas são implementações parciais, noutras a maior diferença está na sua designação e outras aindas o HDLC apenas serviu de inspiração:
|