Rechnernetze
Home Nach oben

Der Aufbau der Blöcke

Die CCITT-Empfehlung X.25 schreibt für die ISO Prozedur HDLC (high level data link control) die Variante LAP B (link access procedure balanced) vor. Die Dateneinheiten in HDLC werden als Blöcke (frames) bezeichnet, die den folgenden Aufbau haben:

... flag Adresse Steuerfeld Datenfeld FCS flag ...

Hierbei bedeuten

flag

Blockbegrenzung. Länge 1 Byte: 01111110. Zwischen zwei Blöcken muß mindestens ein flag stehen. Werden keine Blöcke gesendet, so werden ununterbrochen Flags geschickt, so daß beide Stationen auf diese Weise ständig synchronisiert sind.
Adresse Man unterscheidet zwischen Adressen des Senders und des Empfängers. Bei Befehlen wird als Adresse die des Empfängers angegeben, bei Meldungen die des Senders.
Steuerfeld Gibt den Blocktyp an, der unten genauer beschreiben wird.
Datenfeld Enthält die Benutzerdaten, die von der Schicht 3 übergeben werden. Die Länge des Datenfelds kann zwischen 0 und 131 Bytes betragen.
FCS Das Blockprüffeld (frame checking sequence) besteht aus zwei Bytes, welche der Sicherung der Datenübertragung dienen. Es wird ein CRC-Prüfverfahren verwendet, das den gesamten Block überprüft.

Die Sicherung der Datenblöcke wird durch eine CRC-Kodierung erreicht. Darüber hinaus ist auch die Reihenfolge der Blöcke zu sichern. Dieses wird durch ein Fensterverfahren realisiert, welches zugleich für die Flußkontrolle benutzt werden kann.

Im HDLC-Protokoll werden drei Blockformate verwendet, von denen eines dem Transport von Daten dient, eines zur Steuerung der Datenübermittlung verwendet wird, und eines die Steuerung der Verbindung zwischen den Endgeräten regelt. Die Befehle und Meldungen haben das folgende Format:

Bit

Steuerfeld

1

2

3

4

5

6

7

8

I-Block

0

N(S)

P

N(R)

S-Block

1

0

S

S

P/F

N(R)

S-Block: RR

1

0

0

0

P/F

N(R)

S-Block: RNR

1

0

1

0

P/F

N(R)

S-Block: REJ

1

0

0

1

P/F

N(R)

U-Block

1

1

M

M

P/F

M

M

M

U-Block: DM

1

1

1

1

P/F

0

0

0

U-Block: SABM

1

1

1

1

P

1

0

0

U-Block: DISC

1

1

0

0

P

0

1

0

U-Block: UA

1

1

0

0

F

1

1

0

U-Block: CMDR / FRMR

1

1

1

0

F

0

0

1

N(S) Sendefolgenummer: (Wertigkeit: Bit 2 niedrigstes Bit)
N(R) Empfangsfolgenummer: (Wertigkeit: Bit 6 niedrigstes Bit)
S Bits für Steuerung
M Legt die Steuerungsfunktion fest
P/F Sendeaufruf bei Befehlen (Polling=1)
Ende-Anzeige bei Meldungen (Finish=1)

Die I-Blöcke (Informationsblöcke) werden zum Übertragen von Daten benutzt, wie sie an der Schnittstelle zur Schicht 3 übergeben werden. Ist P/F=1, so hat die Gegenstelle auf den übermittelten Block (z.B. durch eine Quittung) zu reagieren. N(S) gibt den aktuellen Sendefolgezähler an, d.h. die Nummer dieses Blocks. N(R) quittiert den korrekten Empfang aller bisher empfangenen Blöcke bis zum Block mit der Nummer N(R)-1.

Die S-Blöcke (Steuerungsblock, supervisory block) steuern die Datenübermittlung. Mit ihnen können drei Befehle übermittelt werden.

Der Befehl RR (Receive Ready) teilt die Empfangsbereitschaft dieser Station mit; zugleich wird der korrekte Empfang aller Blöcke bis einschließlich Block N(R)-1 quittiert. Ist P=1, so muß die Gegenstelle ihren Zustand (durch RR oder RNR) mitteilen.
Der Befehl RNR (Receive Not Ready) teilt einer Gegenstelle mit, daß die Station nicht empfangsbereit ist; zugleich werden die Blöcke bis einschließlich Block N(R)-1 quittiert. Dieser Befehl wird durch Senden eines UA-, RR-, REJ- oder SABM-Blocks wieder aufgehoben.
Der Befehl REJ (Reject) fordert die Gegenstelle auf, alle I-Blöcke ab der Nummer N(R) noch einmal zu übertragen. Ehe nicht der Block mit der Nummer N(R) eingetroffen ist, darf kein weiterer REJ-Block ausgesendet werden.

Die U-Blöcke (unnumerierter Block, unnumbered block) dienen nur dem Auf- und Abbau von Verbindungen. Da hier in der Regel ein Block zur Übertragung der gewünschten Information ausreicht, sind keine Folgenummern vorgesehen. Es gibt fünf verschiedene Befehle:

Der Befehl SABM (Set Asynchronous Balanced Mode) fordert die Gegenstelle auf, in die Datenübertragungsphase des gleichberechtigten Spontanbetriebs überzugehen. Die Antwort auf diesen Befehl ist UA; zusätzlich werden alle internen Zähler (N(R), N(S)) auf null gesetzt.
Der Befehl DISC (Disconnect) hält die Übermittlung an; die Gegenstation hat mit UA zu antworten, und die Station geht in den Zustand abgebrochen über.
Die Meldung UA (Unnumbered Acknowledge) bestätigt SABM- und DISC-Befehle, mit deren Ausführung (z.B. Nullsetzen von Zählern, Senden von Datenblöcken) bis zum Eintreffen dieser Nachricht gewartet wird.
Die Meldung DM (Disconnected Mode) wird gesendet, wenn sich eine Station im Zustand abgebrochen befindet und zur Zeit nicht in einen anderen Zustand wechseln kann.
Die Meldung CMDR (Command Reject) oder FRMF (Frame Reject) zeigt einen Fehler an, der nicht durch Blockwiederholung behebbar ist, da das Prüffeld korrekt ist, aber einer der folgenden Fehler erkannt wurde:

ungültige Kodierung im Steuerfeld,

Datenblock zu lang,

empfangene Folgenummer N(R) ist ungültig,

ein U- oder S-Block hat eine falsche Länge.

Dieser Meldung ist ein Datenfeld der Länge 3 Bytes beigegeben, in welchem die Gründe für die Rückweisung beschrieben sind.

Der Protokollablauf gliedert sich in den Verbindungsauf- und -abbau und die Datenphase. Für die Verbindungsauf- und -abbauphasen werden eine Zeitüberwachung (mit der Zeit T1) und ein Zähler (N2) benötigt. Für die Datenphase werden zusätzlich die Zähler V(S), VO(S), V(R), sowie die maximale Anzahl von Bits je Block (N3) und die maximale Anzahl ausstehender Blöcke (K) verwendet.

V(S) Sendefolgezähler; enthält die Nummer, mit der der nächste Datenblock zu senden ist. V(S) wird nach Senden eines Datenblocks um 1 (mod 8) erhöht.
VO(S) Folgenummer N(R) des letzten von der Gegenstation empfangenen Blocks. Der Abstand zwischen V(S) und VO(S) (mod 8) darf niemals größer als sieben werden, damit niemals mehr als sieben unbestätigte Blöcke ausstehen.
V(R) Empfangsfolgezähler N(S) des nächsten erwarteten Datenblocks. Trifft ein fehlerfreier Block mit der Nummer N(S)=V(R) ein, so wird N(S) um 1 (mod 8) inkrementiert.
K Maximale Anzahl unquittierter Datenblöcke (z.B. 7).
T1 Timer für die Zeitüberwachung.
N2 Höchste Anzahl von Wiederholungen bei Zeitablauf.
N3 Höchste Anzahl von Bits in einem Block.