HDLC (High-Level Data Link Control, control d'enllaç síncron de dades) és un protocol de comunicacions de propòsit general punt a punt i multipunt, que opera a nivell d'enllaç de dades. Es basa en ISO 3309 i ISO 4335. Sorgeix com una evolució de l'anterior SDLC. Proporciona recuperació d'errors en cas de pèrdua de paquets de dades, errors de seqüència i altres, per la qual cosa ofereix una comunicació fiable entre el transmissor i el receptor.
D'aquesta protocol deriven altres com LAPB, LAPF, LLC i PPP.
Característiques bàsiques de l'HDLC HDLC defineix tres tipus d'estacions, tres configuracions de l'enllaç i tres maneres de operació per a la transferència de les dades.
Els tres tipus d'estacions són:
* Estació primària : es caracteritza pel fet que té la responsabilitat de controlar el funcionament de l'enllaç. Les trames generades per la primària es denominen ordres.
* Estació secundària : funciona sota el control de l'estació primària. Les trames generades per l'estació secundària es denominen respostes. La primària estableix un enllaç lògic independent per a cadascuna de les secundàries presents en la línia.
* Estació combinada : és una barreja entre les característiques de les primàries i les secundàries. Una estació d'aquest tipus pot generar tant ordres com a respostes.
Les tres possibles configuracions de l'enllaç són:
* Configuració no balancejada : està formada per una estació primària i una o més secundàries. Permet transmissió full-duplex i semi-duplex.
* Configuració balancejada : consisteix en dues estacions combinades. Permet igualment transmissió full-duplex o semi-duplex.
* Configuració simètrica : dues estacions físiques, cadascuna amb una estació lògica, de manera que es connecten una primària d'una estació física amb la secundària de l'altra estació física.
Els tres modes de transferència de dades són:
* Mode de resposta normal (NRM, Normal Response Mode): s'utilitza en la configuració no balancejada. L'estació primària pot iniciar la transferència de dades a la secundària, però la secundària només pot transmetre dades usant respostes a les ordres emeses per la primària.
* Mode balancejat asíncron (ABM, Asynchronous Balanced Mode): s'utilitza en la configuració balancejada. En aquesta manera qualsevol estació combinada podrà iniciar la transmissió sense necessitat de rebre permís per part de l'altra estació combinada.
* Mode de resposta asíncron (ARM, Asynchronous Response Mode): s'utilitza en la configuració no balancejada. L'estació secundària pot iniciar la transmissió sense tenir permís explícit per part de la primària. L'estació primària segueix tenint la responsabilitat del funcionament de la línia, incloent la iniciació, la recuperació d'errors, i la desconnexió lògica.
El NRM sol usar-se en línies amb múltiples connexions i en enllaços punt a punt, mentre que el ABM és el més utilitzat de les tres maneres, pel fet que en ABM no es necessiten fer sondejos, la utilització dels enllaços punt a punt amb full-duplex és més eficient amb aquesta manera. ARM només s'utilitza en casos molt particulars.
Estructura HDLC utilitza transmissió síncrona . Tots els intercanvis es realitzen a través de trames, HDLC utilitza un format únic de trames que és vàlid per a tots els possibles intercanvis: dades i informació de control.
A la Figura es mostra l'estructura d'una trama HDLC. Al camp de delimitació, de direcció i de control, que precedeixen el camp d'informació es denominen capçalera. La FCS juntament amb l'altre camp de delimitació final que està a continuació del camp de dades s'anomena cua .
Els camps de delimitació estan localitzats en els dos extrems de la trama, i ambdós corresponen a la següent combinació de bits 01111110. Es pot usar un únic delimitador com a final i començament de la següent trama simultàniament. A banda i banda de la interfície entre l'usuari i la xarxa, els receptors estaran contínuament intentant detectar aquesta seqüència per sincronitzar-se amb el començament de la trama. Quan es rep una trama, l'estació seguirà intentant detectar aquesta mateixa seqüència per determinar així el final de la trama. Com s'usa la seqüència 01111110 en la delimitació de les trames, és necessari l'ús del procediment denominat inserció de bits. Pel qual, l'emissor quan hagi d'enviar una cadena que contingui una seqüència de cinc bits en 1 inserirà immediatament després del cinquè 1 un 0. El receptor, després de la detecció del delimitador d'inici, monitorarà la cadena de bits rebuda, de tal manera que quan aparegui una combinació de cinc 1 seguits, el sisè bit s'examinarà. Si aquest bit és 0, s'eliminarà sense més. Si el sisè bit és un 1 i el setè és un 0, la combinació es considera com un delimitador. Si els bits sisè i setè són ambdós igual a 1 s'interpreta com una indicació de tancament generada per l'emissor.
Per exemple, si es vol transmetre la següent seqüència
* 01101111011111011111100
HDLC ho modifiqués d'aquesta manera
* 01101111011111 0 011.111 0 100
Flag Direcció Control Informació FCS Flag (començament de la trama següent)8 bits8 bits8 o 16 bitsLongitud variable, 0 o més bits, múltiples de 816 bits8 bits
Al seu torn en camp control pot prendre les següents codificacions depenent del tipus de trama (informació, supervisió i no numerades que es veuran més endavant):
* I: Informació:
1 2-4 5 6-8 0 N (S)P/FN (R)
N (S): Nombre de seqüència enviada.
N (R): Nombre de seqüència rebuda.
P/F: Bit de Sondeig/Final ("Poll/Final")
* S: Supervisió:
1-2 3-4 5 6-8 10 SP/FN (R)
S: bits per a les trames de supervisió (s'explicarà més endavant).
* No numerades:
1-2 3-4 5 6-8 11 MP/FM
M: Bits per a les trames no numerades.
Cada dada que s'envia, és encapsulat en una trama HDLC, això afegint-li un header i una cua. El header conté una adreça HDLC i un camp de control HDLC. La cua conté un camp de CRC (ciclic redundancy check).
Cada trama és separada per un delimitador o bandera amb valor hexadecimal 7E. Aquest flag o bandera es pot utilitzar per identificar l'inici de la següent trama.
Existeixen tres tipus de trama (DL_PDU): trama d'informació que transporten les dades de l'usuari, de supervisió i de gestió (o no numerades). L'ordre d'injecció de les trames en el mitjà de transmissió és LSB (primer el bit menys significatiu).
Les trames de supervisió s'utilitzen per al reconeixement de trames, control de flux i control d'errors (sempre que no sigui possible fer-ho mitjançant les trames d'informació). Existeixen quatre subtrames identificades pel camp S de camp de control (del tipus de supervisió):
00RR (Receive Ready)01REJ (reject)10RNR (Receive Not Ready)11SREJ (Selective reject)
Ready to Receive: Reconeixement Positiu: RR N reconeix les trames fins a la N-1 i indica que la propera trama que espera rebre és la N.
Si té el bit P (poll/sondeig) activat indica que l'estació primària està sondejant a l'estació secundària.
Si té el bit F activat i és després d'una selecció, indica que el secundari està llest per rebre dades del primari. Si no és després d'una selecció, l'estació secundària indica a la primària que no té més trames que transmetre. Normalment l'estació secundària envia trames d'informació fins que se li acaben les dades i llavors envia una trama RR amb F activat per indicar finalització.
Ready Not to Receive: Reconeixement Positiu No Llest Per Rebre: RNR N Reconeix les trames fins a la N-1 i indica que ara mateix no pot rebre més trames.
Si té el bit P activat serveix per seleccionar l'estació secundària que rebrà les dades, indicant que l'estació primària no va a rebre dades.
Si té el bit F activat serveix perquè l'estació secundària indiqui a l'estació primària que no està llest per rebre dades.
reject: Rebuig: REJ N Reconeix les trames fins a la N-1 i indica que a partir de la trama N cal retransmetre.
Selective reject: Rebuig Selectiu: SREJ N Indica que la trama N no va arribar correctament i ha de ser retransmesa.
Les ordres que es poden trobar en les trames de gestió són:
CODIORDRERESPOSTA00.001SNRM11.011SNRME11.000MRSADM11.010SARM11.100SABM11.110SABM00.000UIUI00.110UA00.010DISCRD10.000SIMRIM00.100UP11.001RSET11.101XIDXID10.001FRMR
Les ordres SNRM , SNRME , MRSA , MRSA , SABM i SABM serveixen per activar la manera com s'han de comunicar les estacions: NRM o manera de resposta normal, ARM o manera de resposta asíncrona i ABM o manera asíncrona equilibrat, amb les seves respectives extensions (NRME, SARM i SABM).
L'ordre RSET serveix per reiniciar la connexió i posar a zero els comptadors i finestres lliscants de les trames. L'ordre DISC serveix per desconnectar la connexió.
Camp de Direcció El camp de direcció identifica a l'estació secundària que ha transmès o que va a rebre la trama. Aquest camp no s'usa en enllaços punt a punt. El mateix té normalment 8 bits, pot usar-se també un format ampliat en el qual la direcció tindrà un múltiple de 7 bits. El bit menys significatiu de cada octet serà respectivament 1 o 0, si és o no l'últim octet del camp de direcció. Els 7 bits restants de cada octet formaran la direcció pròpiament dita.
Camp de control En HDLC es defineixen tres tipus de trames, cadascuna amb format diferent per al camp de control. Les trames d'informació (trames-I) transporten les dades generades per l'usuari. En aquestes trames també s'inclou informació per al control ARQ d'errors i de flux. Les trames de supervisió (trames-S) proporcionen el mecanisme ARQ quan la incorporació de les confirmacions en les trames-I no és factible. Les trames no numerades (Trames-N) proporcionen funcions complementàries per controlar l'enllaç.
El primer o els dos primers bits del camp de control s'utilitzen per identificar el tipus de trama. La resta dels bits se situen en subcamps com s'indica a la figura. 6. (C) i (d)
Tots els formats possibles de l'HDLC contenen el bit sondeig/fi (P/F "poll/final"). La seva utilització és dependent del context. Normalment en les trames d'ordres es denomina bit P, i es fixa a 1 per sol·licitar (sondejar) una resposta a l'entitat HDLC parell.
En les trames de resposta, el bit es denomina F, i es fixa a un valor 1 per identificar la trama tipus resposta retornada després de la recepció d'una ordre.
Camp d'informació El camp d'informació només està present en les trames-I i en algunes trames N. Aquest camp pot contenir qualsevol seqüència de bits, amb l'única restricció que el nombre de bits sigui igual a un múltiple sencer de 8. La longitud d'aquest camp és variable i sempre serà menor que un valor màxim predefinit.
Camp per a la seqüència de comprovació de la trama La seqüència de comprovació de la trama (FCS, Frame Check Sequence) és un codi per a la detecció d'errors calculat a partir dels bits de la trama excloent els delimitadors.
Funcionament de l'HDLC miniatura|Maneres de transferència de dades en HDLC (dibuix a mà alçada)
El funcionament de l'HDLC implica tres fases. Primer, un dels dos extrems inicia l'enllaç de dades, de tal manera que les trames es puguin intercanviar d'una forma ordenada. Durant aquesta fase, es pacten les opcions que s'usaran en l'intercanvi posterior. Després de la iniciació, els dos extrems intercanvien les dades generades pels usuaris així com informació de control per dur a terme els procediments de control del flux i d'errors. Finalment, un dels dos extrems comunicarà la finalització de la transmissió.
Iniciació La iniciació la pot sol·licitar qualsevol dels dos extrems transmetent una d'entre les sis ordres previstes per fixar la manera. Aquesta ordre serveix per a tres objectius: 1. S'avisa a l'altre extrem sobre la sol·licitud de la iniciació. 2. S'especifica quin dels tres maneres (NRM, ABM, ARM) s'està sol·licitant. 3. S'especifica si es van a utilitzar nombres de seqüència de 3 o 7 bits.