Freigeben über


Codierte und decodierte Daten

Um Daten über ein Kommunikationsmedium wie eine Telefonleitung zu senden, müssen die Daten serialisiert werden, d. h. in eine Zeichenfolge von Einsen und Nullen konvertiert werden, die seriell über die Leitung übertragen werden. Die Serialisierung muss so erfolgen, dass der Computer, der die Daten empfängt, die Daten wieder in sein ursprüngliches Format konvertieren kann. Die Serialisierung wird als Kommunikationsprotokoll bezeichnet und von Software- und 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 vorherige Abbildung zeigt die Anwendungsebene auf Computer #1, die die zu übertragenden Daten (die in der Regel aus einer Kombination von Textzeichen und Zahlen besteht) an die Codierungs-/Decodierungsebene sendet. Die Codierungs-/Decodierungsebene codiert die Daten in einen Datenstrom von Computerbytes. Auf der niedrigsten Ebene, der Hardwareebene, konvertiert die Hardware die Bytes der Daten in einen seriellen Datenstrom von Einsen und Nullen, der über die Linie an Computer #2 übertragen wird. Die Hardwareebene von Computer #2 konvertiert die Einsen und Nullen wieder in Computerbytes und übergibt sie zur Decodierung an die Codierungs-/Decodierungsebene. Die Codier-/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 in Bezug auf seine allgemeinen Parameter, anstatt alle Details zu beschreiben, die zum Lösen des Problems erforderlich sind, oder alle Details eines Objekts zu beschreiben. Mithilfe der Abstraktion kann ein Designer ein Softwareobjekt angeben, das bestimmte Qualitäten aufweist, ohne sich darum zu kümmern, wie das Objekt tatsächlich im Softwarecode implementiert wird. Eine solche Praxis lässt die Implementierung offen. Außerdem vereinfacht es die Spezifikation und ermöglicht die Angabe von Axiomen über das Objekt, die bei der Implementierung des Objekts nachgewiesen werden können. Diese Axiome können dann angenommen werden, wenn das Objekt in einem anderen Objekt auf höherer Ebene verwendet wird. Abstraktion ist das Markenzeichen der meisten zeitgenössischen Softwarespezifikationen.

Die meisten Kommunikationsprotokolle beinhalten eine große Abstraktion. Objekte auf höheren Ebenen werden abstrakt definiert und sollen mithilfe von Objekten auf niedrigeren Ebenen implementiert werden. Für instance erfordert ein Dienst auf einer Ebene möglicherweise die Übertragung bestimmter abstrakter Objekte zwischen Computern. Eine Ebene auf niedrigerer 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, wird als Abstract Syntax Notation One (ASN.1) bezeichnet. ASN.1 ist in der CCITT-Empfehlung X.208 definiert. Ein Satz von ASN.1-Regeln zum Darstellen solcher Objekte als Zeichenfolgen von Einsen und Nullen wird als Distinguished Encoding Rules (DER) bezeichnet und in der CCITT-Empfehlung X.509, Abschnitt 8.7 definiert. Dies sind die Codierungsmethoden, die derzeit von CryptoAPI verwendet werden.

Weitere Informationen zu Codierungs-/Decodierungsfunktionen finden Sie unter Objektcodierungs- und Decodierungsfunktionen.