Das Kefk Network Wiki befindet sich im Testbetrieb.
High-Level Data Link Control
Aus Kefk.
High-Level Data Link Control ist ein von der ISO normiertes Netzprotokoll. Es ist innerhalb des ISO/OSI-Modells in Schicht 2, der Sicherungsschicht einzugliedern. HDLC basiert in seiner Grundstruktur auf dem SDLC-Protokoll, darüber hinaus gibt es das proprietäre Cisco HDLC.
Inhaltsverzeichnis |
Eigenschaften
Der HDLC-Standard besteht aus:
- Steuerung des Übertragungsabschnitts
- Erkennen von Übertragungsfehlern und Reihenfolgefehlern durch Blocküberprüfung (CRC-16) und Sequenznummernkontrolle
- Fehlerkorrektur durch Blockwiederholung
- Flusskontrolle mit Fenstermechanismus
- Weitermelden von nicht-korrigierbaren Fehlern und Protokollfehlern zur nächsthöheren Schicht (Vermittlungsschicht, Network Layer)
Cisco HDLC:
- Wie HDLC - aber durch Einfügen eines proprietären Feldes (2 Byte zwischen den Feldern "Control" und "Information") wird das Layer3-Protokoll der nachfolgenden Daten angegeben und eine Multiprotokoll Umgebung möglich
- Kommunikation zwischen Cisco HDLC und HDLC Geräten ist nicht möglich
Das HDLC Datenformat ist typisch für ein bitorientiertes Protokoll ohne die Möglichkeit der Authentifizierung. Es ermöglicht Punkt-zu-Punkt-Verbindungen und Punkt-zu-Multipunkt Verbindungen.
Blockaufbau
Es besteht aus dem Opening flag (Blockbegrenzung) '01111110', das mit 8 Bits dargestellt wird. Danach folgt das Address field (Adressfeld) mit nochmal 8 Bits oder alternativ ein erweitertes Adressfeld mit einem Vielfachen von 7 Bit, gekennzeichnet durch eine 0 an der Bitposition 1. An dritter Stelle kommt das Control field (Steuerfeld) mit 8 Bits. Dann folgt das Information field (Datenfeld), das variable Länge hat. Das Frame check sequence field (Blockprüfung) besteht aus 16 Bits und enthält eine Prüfsumme der übertragenen Daten (CCITT CRC-16) dessen Binärstellen nach der Berechnung und vor der Übertragung beim Sender mit 0xFFFF xor-verknüpft werden. Alternativ kann das Schieberegister, welches zur CRC Berechnung dient auch vor der Berechnung mit Einsen gefüllt werden. Durch diese Modifikation entsteht eine robustere Prüfsumme, die auch gegen Anfügen und Löschen von Nullen schützt. Der Empfänger vergleicht nach der Division mit 0001 1101 0000 1111, statt mit 0. Zu guter letzt folgt das Closing flag (Blockbegrenzung) mit nochmals 8 Bits ('01111110').
| Flag | Address | Control | Information | Frame Check Sequence | Flag | |
| 01111110 | XXXXXXXX | XXXXXXXX | ... | XXXXXXXX | XXXXXXXX | 01111110 |
Um zu vermeiden, dass innerhalb des Datenbereichs oder der Prüfsumme das Opening flag bzw Closing flag auftritt, wird sogenanntes Bitstopfen (bit stuffing) angewandt. Dies bedeutet, dass innerhalb des Rahmens nach fünfmaligem Auftauchen der '1' eine '0' eingefügt wird, um eine Verwechslung mit einem Flag zu verhindern. Auf Empfängerseite wird eine '0' nach fünfmaligem Auftreten der '1' einfach wieder gelöscht.
Es gibt jedoch zwei Sonderzeichen, die verwendet werden können:
| Kodierung | Bedeutung |
| 01111111 | frame abortion |
| 111111111111111 | channel not active |
Blocktypen
Es gibt drei verschiedene Dateneinheiten, die sich im Aufbau des Steuerungs-Feldes unterscheiden.
I-Rahmen (Information frames) - zur Datenübertragung
| Bit 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 0 | Sende-Sequenznummer | Poll/Final Bit | Empfangs-Sequenznummer | ||||
S-Rahmen (Supervisory frames) - zur Steuerung des Datenflusses
| Bit 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 0 | Funktions-Bits | Poll/Final Bit | Empfangs-Sequenznummer | |||
Die Funktions-Bits des S-Rahmen werden wie folgt kodiert:
| Kodierung | Befehl | Bedeutung |
| 00 | Receive-Ready | zum Empfang weiterer Daten bereit; Quittiert erfolgreichen Empfang der bisherigen Pakete |
| 01 | Receive-Not-Ready | keine weiteren Daten senden |
| 10 | Reject | alle Daten ab der angegebenen Sequenznummer wiederholen |
| 11 | Selective-Reject | den Datenrahmen mit der angegebenen Sequenznummer wiederholen |
U-Rahmen (Unnumbered frames) - zur Steuerung der Verbindung
| Bit 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | Funktions-Bits | Poll/Final-Bit | Funktions-Bits | |||
Die ersten 2 und folgende 3 Funktionsbit werden zu einem Command/Reply Code zusammengesetzt.
| Funktions-
Bits | Befehl | Command(C)/
Reply Code(R) | Bedeutung | Befehl | Command(C)/
Reply Code(R) | Bedeutung |
| 000 01 | SIM | C/- | Set Init.Mode | RIM | -/R | Request Init.Mode |
| 000 11 | SARM | C/- | Set Async. Response Mode | DM | -/R | Disconnected Mode |
| 010 00 | DISC | C/- | Disconnect | RD | -/R | Request disconnect |
| 100 01 | CMDR | -/R | Command Reject | FRMR | -/R | Frame Reject |
| 000 00 | UI | C/R | Unnumbered Information | |||
| 001 00 | UP | C/- | Unnumbered Poll | |||
| 011 00 | UA | -/R | Unnumbered Ack. | |||
| 001 11 | SABM | C/- | Set Async. Balanced Response Mode | |||
| 100 00 | SNRM | C/- | Set Normal Response Mode | |||
| 101 11 | XID | C/R | Exchange Identification | |||
Betriebsarten
HDLC kennt drei verschiedene Betriebsarten:
- Normal Response Mode (NRM)
- Primärstation → Sekundärstation (Halbduplex)
- Asynchronous Response Mode (ARM)
- Primärstation → Sekundärstation (Vollduplex)
- Asynchronous Balanced Mode (ABM)
- Beide Stationen gleichwertig (Vollduplex)
Im NRM sendet eine Leitstation an eine oder mehrere Folgestationen. Diese senden nur auf Anfrage (Polling) der Leitstation Daten an diese. Im ARM, der in der Praxis nur selten eingesetzt wird, haben die Folgestationen zusätzlich die Möglichkeit, auch ohne Polling der Leitstation Daten an diese zu senden. Voraussetzung hierfür ist, dass die Leitung frei ist. Im ABM schließlich sind nur Punkt-zu-Punkt-Verbindungen zwischen genau zwei Stationen möglich. Der Datenaustausch erfolgt hier, im Gegensatz zu den ersten beiden Fällen, symmetrisch.
HDLC und Varianten finden Anwendung bei X.25, GSM, ISDN, Frame Relay und PPP.
Weblinks
- http://www.tlosert.de/alt/hdlc.htm
- Design und Funktion des HDLC-Protokolls
- HDLC Lernsoftware (Java-Applet)
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort High-Level_Data_Link_Control, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
