Codierte und decodierte Daten

Um Daten über ein Kommunikationsmedium wie eine Telefonleitung zu senden, müssen die Daten serialisiertwerden, d. h. in eine Zeichenfolge von Einsen und Nullen konvertiert werden, die seriell über die Zeile übertragen werden. Die Serialisierung muss so erfolgen, dass der Computer, der die Daten empfängt, die Daten wieder in das ursprüngliche Format konvertieren kann. Die Serialisierung wird als Kommunikationsprotokollbezeichnet und wird sowohl von Software- als auch von Datenübertragungshardware gesteuert. Es gibt mehrere Ebenen, auf denen die Daten konvertiert werden. Die folgende Abbildung zeigt eine stark vereinfachte Ansicht der Kommunikationsprotokollebenen.

Kommunikationsprotokollebenen

Die obige Abbildung zeigt die Anwendungsschicht auf Computer # 1, die die zu übertragenden Daten (die normalerweise aus einer Kombination aus Textzeichen und Zahlen besteht) an die Codierungs-/Decodierungsebene sendet. Die Codierungs-/Decodierungsebene codiert die Daten in einen Datenstrom von Computerbytes. Auf der untersten Ebene, der Hardwareebene, konvertiert die Hardware die Datenbytes in einen seriellen Datenstrom von Einsen und Nullen, die über die Zeile an Computer 2 übertragen # werden. Die Hardwareschicht von Computer # 2 konvertiert die Einsen und Nullen zurück in Computerbytes und übergibt sie zur Decodierung an die Codierungs-/Decodierungsebene. Die Codierungs-/Decodierungsebene decodiert die Bytes wieder in ihr ursprüngliches Format und übergibt die Daten an die Anwendungsschicht.

Ein akzeptiertes Softwareentwurfsprinzip ist die Verwendung der Abstraktion, d. h. der Prozess der Beschreibung eines Problems oder Objekts im Hinblick auf seine allgemeinen Parameter, anstatt alle Details zu beschreiben, die zum Lösen des Problems erforderlich sind, oder das Beschreiben aller Details eines Objekts. Mithilfe der Abstraktion kann ein Designer ein Softwareobjekt angeben, das über bestimmte Qualitäten verfügt, ohne Bedenken zu haben, wie das Objekt tatsächlich im Softwarecode implementiert wird. Eine solche Vorgehensweise lässt die Implementierung geöffnet. Außerdem wird die Spezifikation vereinfacht, und es ist möglich, Axiomen über das Objekt anzugeben, die beim Implementieren des Objekts bestätigt werden können. Diese Axiomen können dann angenommen werden, wenn das Objekt in einem anderen Objekt auf höherer Ebene verwendet wird. Abstraktion ist das Kennzeichen der meisten softwarespezifikationen.

Die meisten Kommunikationsprotokolle umfassen ein gutes Maß an Abstraktion. Objekte auf höheren Ebenen werden abstrakt definiert und sollen mithilfe von Objekten auf niedrigeren Ebenen implementiert werden. Beispielsweise kann ein Dienst auf einer Ebene die Übertragung bestimmter abstrakter Objekte zwischen Computern erfordern. Eine niedrigere Ebene kann Codierungsregeln verwenden, um die abstrakten Objekte in Zeichenfolgen von Einsen und Nullen zu transformieren.

Eine gängige Methode zum Angeben abstrakter Objekte, die seriell übertragen werden sollen, ist die abstrakte Syntax notation One (ASN.1). ASN.1 ist in der CCITT-Empfehlung X.208definiert. Ein Satz von ASN.1-Regeln für die Darstellung von Objekten wie Zeichenfolgen von Einsen und Nullen wird als Distinguished Encoding Rules (DER) bezeichnet und in CCITT Recommendation X.509, Section 8.7 definiert. Dies sind die Codierungsmethoden, die derzeit von CryptoAPI verwendet werden.

Weitere Informationen zu Codierungs-/Decodierungsfunktionen finden Sie unter Object Encoding and Decoding Functions.