High-Level Data Link Control ( HDLC ) är ett bitorienterat [1] länklagerprotokoll av OSI-nätverksmodellen utvecklad av ISO .
Den nuvarande standarden för HDLC är ISO 13239.
HDLC kan användas i multi-access-anslutningar, men används för närvarande huvudsakligen i punkt-till-punkt- anslutningar som använder asynkront balanserat läge (ABM).
HDLC utvecklades baserat IBM SDLC -Dess något modifierade underordnade protokoll - LAPB , LAPM , LAPF , LAPD byggdes in av ITU i respektive X.25 , V.42 , Frame Relay , ISDN protokollstack . HDLC var också grunden för utvecklingen av inramningsmekanismer i PPP- protokollet , som används flitigt på Internet .
Var och en av stationerna vid varje tidpunkt är i ett av tre logiska tillstånd:
Om den sekundära stationen är i normalt frånkopplingsläge (NDM) kan den endast ta emot ramar efter att ha fått ett uttryckligt tillstånd från den primära. Om den är i Asynchronous Disconnect Mode (ADM), kan den sekundära stationen initiera en överföring utan tillstånd.
Används för att överföra kontroll till en fjärrkombinerad station och för att utbyta parametrar mellan fjärrstationer.
Alla stationer får sända och ta emot information. Stationer kan vara i lägen NRM, ARM, ABM.
HDLC stöder tre logiska anslutningslägen, som skiljer sig åt i rollerna för interagerande enheter:
För att säkerställa kompatibilitet mellan stationer som kan ändra sin status (typ), tillhandahåller HDLC-protokollet 3-kanalskonfigurationer:
HDLC-ramar kan överföras med både synkrona och asynkrona anslutningar. Själva anslutningarna har inga mekanismer för att bestämma början och slutet av ramen; för dessa ändamål används en unik bitsekvens (FD - Frame Delimiter) '01111110' (0x7E i hexadecimal ) för detta ändamål, placerad i början och slutet av varje ram. Det unika med flaggan garanteras genom att använda bitstaffing i synkrona anslutningar och bytestaffing i asynkrona. Bitstuffing - bitstoppning, här - bit 0 efter 5 på varandra följande bitar 1. Bitstuffing fungerar endast under överföringen av informationsfältet (datafältet) i ramen. Om sändaren upptäcker att fem 1:or har sänts i rad, infogar den automatiskt en extra nolla i den överförda bitsekvensen (även om det redan efter dessa fem 1:or finns en nolla). Därför kommer sekvensen 01111110 aldrig att visas i datafältet för en ram. En liknande krets fungerar i mottagaren och utför den motsatta funktionen. När en nolla hittas efter fem ettor tas den automatiskt bort från ramens datafält. I bytestuffing används en escape-sekvens, här - '01111101' (0x7D i hexadecimal representation ), det vill säga att FD-byten (0x7E) i mitten av ramen ersätts av en byte-sekvens (0x7D, 0x5E), och en byte (0x7D) ersätts av en bytesekvens (0x7D, 0x5D ).
Under inaktiv media på en synkron anslutning sänds sekvensen 0x7E ('01111110') konstant över kanalen för att bibehålla bitsynkronisering. Det kan finnas en kombination av den sista biten 0 i en flagga och den initiala biten 0 i nästa. Inaktiv tid kallas också interframe time fill.
HDLC-ramstruktur inklusive FD-flaggor:
FD flagga | Adress | kontrollfält | Informationsfält | FCS | FD flagga |
---|---|---|---|---|---|
8 bitar | multipel av 8 bitar | 8 eller 16 bitar | 0 eller fler bitar, multipel av 8 | 16 bitar | 8 bitar |
Designad för att överföra användardata. Under överföringen av informationsblock numreras de i enlighet med algoritmen för glidfönster. Efter att anslutningen har upprättats börjar data och positiva bekräftelser att överföras i informationsramar. Den logiska HDLC-kanalen är duplex, så dataramar, och därmed positiva bekräftelser, kan skickas i båda riktningarna. Om det inte finns något flöde av informationsramar i motsatt riktning, eller ett negativt kvitto måste sändas, används kontrollramar. Under HDLC-drift används ett skjutfönster på 7 ramar (med en kontrollfältstorlek på 1 byte) eller 127 (med en kontrollfältstorlek på 2 byte) för att säkerställa överföringssäkerhet. För att stödja fönsteralgoritmen är 2 fält tilldelade i informationsramarna för den sändande stationen:
Antag för tydlighetens skull att station A skickade till station B en informationsram med några värden på NA(S) och NA(R). Om som svar på denna ram en ram anländer från station B, i vilken numret på NB(S)-ramen som sänds av denna station matchar numret på NA(R)-ramen som förväntas av station A, då anses sändningen vara korrekt. Om station A tar emot en svarsram där numret på den sända ramen NB(S) inte är lika med numret på den förväntade NA(R), så kasserar station A denna ram och skickar ett negativt kvitto REJ (från engelska reject - vägran) med numret NA(R ). Efter att ha mottagit ett negativt kvitto måste station B upprepa sändningen av ramen med numret NA(R), såväl som alla ramar med högre nummer som den redan har skickat med hjälp av skjutfönstermekanismen.
I-frames innehåller också P/F ( poll/final ) biten. I NRM-läge använder mastern P-biten för att polla, slaven använder F-biten i den sista I-ramen av svaret. I ARM- och ABM-lägen används P/F-bitarna för att tvinga fram svaret.
Team/
Svar |
Beskrivning | Format ex. fält
8…7…6…5…4…3…2…1…. |
---|---|---|
C/R | Användardata | .-N(R)-… P/F….-N(S)-..0 |
Används för att kontrollera flödet av överföringsfel. Kontrollramar sänder kommandon och svar i samband med en etablerad logisk anslutning, inklusive förfrågningar om att återsända korrupta informationsblock:
Redo att ta emot (RR)
Inte redo att ta emot (RNR)
Avslag (REJ)
Selektivt avslag (SREJ)
namn | Team/
Svar |
Beskrivning | info | Format ex. fält
8…7…6…5…4…3…2…1…. |
---|---|---|---|---|
Redo att ta emot (RR) | C/R | positivt kvitto | Klar att ta emot I-frame | .-N(R)-… P/F…0…0…0…1 |
Inte redo att ta emot (RNR) | C/R | positivt kvitto | Inte redo att ta emot | .-N(R)-… P/F…0…1…0…1 |
Avslag (REJ) | C/R | Negativt kvitto | Upprepa N bildrutor | .-N(R)-… P/F…1…0…1…0 |
Selektivt avslag (SREJ) | C/R | Negativt kvitto | Upprepa 1 ram | .-N(R)-… P/F…1…1…0…1 |
U-ramar identifieras av de två minst signifikanta bitarna satta till 1. Tillsammans med P/F-flaggan lämnar detta alltså 5 bitar för ramtypen. Eftersom det finns färre än 32 värden har vissa ramtyper olika betydelser beroende på om de skickas som en begäran eller som ett svar. Så kopplingen mellan DISC -kommandot (disconnect) och RD -svaret (request disconnect) är tydlig, men anledningarna till att SARM- kommandot och DM- svaret har samma digitala värde är inte klara.[ till vem? ] .
U-ramar är avsedda för att upprätta och bryta en logisk koppling, samt att informera om fel.
M-fältet med onumrerade ramar innehåller koder som definierar typen av kommandon som används av två noder under etableringsfasen för anslutning (t.ex. SABME, UA, REST).
namn | Team/
Svar |
Beskrivning | info | Format ex. fält
8…7…6…5…4…3…2…1…. |
---|---|---|---|---|
Ställ in normalt SNRM -svarsläge | C | Ställ in läge | ..1…0…0…P…1…1…0…1 | |
Ställ in utökat normalsvarsläge SNRME | C | Ställ in läge | ..1…1…0…P…1…1…1…1 | |
Ställ in SARM asynkront svarsläge | C | Ställ in läge | ..0…0…0..P/F..1…1…0…1 | |
Ställ in utökat SARME asynkront svarsläge | C | Ställ in läge | ..0…1…0…P..1…1…1…1 | |
Ställ in asynkront SABM balanserat läge | C | Ställ in läge | ..0…0…1..P/F..1…1…1…1 | |
Ställ in SABME utökat asynkront balanserat läge | C | Ställ in läge | ..0…1…1…P…1…1…1…1 | |
Ställ in SIM -initieringsläge | C | Initiera linjeövervakningsfunktionen i den adresserade stationen | ..0…0…0..P/F..0…1…1…1 | |
Koppla bort DISC- anslutningen | C | Bryt logisk koppling | ..0…1…0..P/F..0…0…1…1 | |
Onumrerad UA - bekräftelse | R | Bekräftelse på mottagande av ett av lägesinställningskommandona | ..0…1…0….F..0…0…1…1 | |
DM frånkopplingsläge | R | Logglägesindikering. separation | ||
RD Disconnect Request | R | Svar på DISC-kommandot | ..0…1…0..P/F..0…0…1…1 | |
RIM- initieringsbegäran | R | Initiering krävs | SIM-kommandobegäran | |
Onumrerad UI -information | C/R | Används för att utbyta kontrollinformation | ..0…0…0..P/F..0…0…1…1 | |
Onumrerad UP - undersökning | C | Används för att begära kontrollinformation | ..0…0…1..P….0…0…1…1 | |
Startar om RSET- räknare | C | Använda sig av återhämtning | Återställer N(R), N(S) | ..1…0…0..P….1…1…1…1 |
XID- statusutbyte | C/R | Använda sig av för att fråga/sända status | ..1…0…1..P/F..1…1…1…1 | |
Testa _ | C/R | Utbyte av identisk inf. testfält | ..1…1…1..P/F..0…0…1…1 | |
FRMR Frame Rejected | C/R | Ogiltig ramavisering |
UI, XID, TEST ramar innehåller användbar data och kan användas både som kommandon och som svar.
TCP / IP-protokoll efter lager av OSI-modellen | Grundläggande|
---|---|
Fysisk | |
kanaliserad | |
nätverk | |
Transport | |
session | |
Representation | |
Applicerad | |
Annat ansökt | |
Lista över TCP- och UDP-portar |