Codierte und decodierte Daten
Um Daten über ein Kommunikationsmedium wie z. B. eine Telefonleitung zu senden, müssen die Daten serialisiertwerden, d. h. in eine Zeichenfolge von Zeichenfolgen und Nullen, die serial über die Linie übertragen werden. Serialisierung muss so erfolgen, dass der Computer, der die Daten empfängt, die Daten wieder in das ursprüngliche Format konvertieren kann. Wie die Serialisierung erreicht wird, wird als Kommunikationsprotokollbezeichnet und von Software- und Datenübertragungshardware gesteuert. Es gibt mehrere Ebenen, auf denen die Daten konvertiert werden. Die folgende Abbildung zeigt eine deutlich vereinfachte Ansicht der Kommunikationsprotokollebenen.
Die vorangehende Abbildung zeigt die Anwendungsschicht auf Computer Nr. 1, die die zu übertragenden Daten sendet (die in der Regel aus einer Kombination aus Textzeichen und Zahlen besteht) an die Codierungs-/Decodierungsebene. Die Codierungs-/Decodierungsebene codiert die Daten in einen Datenstrom von Computerbytes. Auf der niedrigsten Ebene konvertiert die Hardwareschicht die Bytes der Daten in einen seriellen Datenstrom und Nullen, die über die Zeile an Computer #2 übertragen werden. Die Hardwareebene von Computer #2 konvertiert die Und Nullen wieder in Computerbytes und übergibt sie zur Decodierungsschicht an die Codierungs-/Decodierungsebene. Die codierte/decodierte Ebene decodiert die Bytes wieder in ihr ursprüngliches Format und übergibt die Daten an die Anwendungsebene.
Ein akzeptiertes Softwaredesignprinzip besteht darin, Abstraktionzu verwenden, d. h. den 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 bedenken zu müssen, wie das Objekt tatsächlich im Softwarecode implementiert wird. Eine solche Praxis lässt die Implementierung offen. Es vereinfacht auch die Spezifikation und ermöglicht es, Axiomen über das Objekt anzugeben, die beim Implementieren des Objekts nachgewiesen 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 aktuellsten Softwarespezifikationen.
Die meisten Kommunikationsprotokolle eine gute Abstraktion erfordern. Objekte auf höheren Ebenen werden abstrakt definiert und sollen mithilfe von Objekten auf niedrigeren Ebenen implementiert werden. Beispielsweise muss ein Dienst auf einer Ebene bestimmte abstrakte Objekte zwischen Computern übertragen. Eine ebene untere Ebene kann Codierungsregeln verwenden, um die abstrakten Objekte in Zeichenfolgen von Zeichenfolgen und Nullen zu transformieren.
Eine gängige Methode zum Angeben abstrakter Objekte, die serial übertragen werden sollen, wird abstrakte Syntaxnotation One (ASN.1) bezeichnet. ASN.1 wird in der CCITT-Empfehlung X.208definiert. Eine Reihe von ASN.1-Regeln für die Darstellung solcher Objekte wie Zeichenfolgen 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 Codier-/Decodierungsfunktionen finden Sie unter Object Encoding and Decoding Functions.