Netzwerk-Grundlagen, Teil 1

Markierungszeichen

Bei der Übertragung von Texten verwendet man die im ASCII-Standard definierten Steuerzeichen zum Aufbau von Rahmen. Ein einfacher Rahmen könnte dann folgende Form haben (Beispiel nach [5]):

[DLE] [STX] [Daten] [DLE] [ETX]

Die zeitliche Abfolge ist bei dieser Darstellung von links nach rechts, das heißt, das am weitesten links stehende Element wird zuerst gesendet. Das Zeichen DLE (Data Link Escape, ASCII Code 127) markiert den Beginn einer Steuersequenz. Anfang und Ende werden durch STX (Start of TeXt, ASCII Code 2) beziehungsweise ETX (End of TeXt, ASCII Code 3) gekennzeichnet. Eingebettet zwischen diesen beiden Steuersequenzen liegen die Nutzdaten.

Dieses Verfahren funktioniert bei der Übertragung von Textdaten problemlos. Bei beliebigen Binärdaten - Gleitkommazahlen, Bilder oder Ähnliches - besteht allerdings die Möglichkeit, dass die Endsequenz DLE ETX auch in den Nutzdaten auftritt:

[DLE] [STX] [...] [DLE] [ETX] [...] [DLE] [ETX]

Der Empfänger würde dann vorzeitig das Ende des Rahmens erkennen. Ein ähnliches Problem ist bei der Programmierung in C und verwandten Sprachen die Darstellung des Zeichens " als Teil einer Zeichenkette. Eine Lösung besteht in der Einfügung eines zusätzlichen Zeichens. Man kann etwa in den Daten vor jedem DLE ein zweites DLE einfügen:

[DLE] [STX] [...] [DLE] [DLE] [ETX] [...] [DLE] [ETX]

Durch dieses so genannte Zeichenstopfen (engl. character stuffing) wird sichergestellt, dass innerhalb des Datenfeldes nie ein einzelnes DLE erscheint. Vielmehr folgen stets zwei oder - allgemein betrachtet - eine gerade Anzahl von DLE-Zeichen aufeinander. Der Empfänger muss dann nur aus jedem Paar von DLE-Zeichen eines entfernen, um die gesendete Byte-Folge zu rekonstruieren.