Kodade och avkodade data
Om du vill skicka data via ett kommunikationsmedium, till exempel en telefonlinje, måste data vara serialiserade– det vill: konverteras till en sträng med ettor och nollor som överförs seriellt över linjen. Serialisering måste göras på ett sådant sätt att den dator som tar emot data kan konvertera tillbaka data till sitt ursprungliga format. Hur serialisering utförs kallas för ett kommunikationsprotokolloch styrs av både programvara och maskinvara för dataöverföring. Det finns flera nivåer där data konverteras. Följande bild visar en mycket förenklad vy över kommunikationsprotokollskikt.
Föregående bild visar programlagret på dator nr 1 som skickar data som ska överföras (som vanligtvis består av en kombination av texttecken och siffror) till kodnings-/avkodningslagret. Kodnings-/avkodningslagret kodar data till en dataström med datorbyte. På den lägsta nivån, maskinvarulagret, konverterar maskinvaran byte av data till en seriell ström med ettor och nollor som överförs över linjen till Dator 2. Maskinvarulagret i Dator 2 konverterar tillbaka dem och nollor till datorbyte och skickar dem upp till kodnings-/avkodningsskiktet för avkodning. Kodnings-/avkodningslagret avkodar bytena tillbaka till sitt ursprungliga format och skickar data upp till programskiktet.
En accepterad princip för programvarudesign är att använda abstraktion, dvs. processen att beskriva ett problem eller objekt i termer av dess allmänna parametrar i stället för att beskriva all information som krävs för att lösa problemet eller beskriva all information om ett objekt. Med abstraktion kan en designer ange ett programvaruobjekt som har specifika egenskaper utan att bry sig om hur objektet faktiskt implementeras i programvarukoden. En sådan praxis lämnar genomförandet öppet. Det förenklar också specifikationen och gör det möjligt att ange axiom om objektet som kan bevisas när objektet implementeras. Dessa axiom kan sedan antas när objektet används i ett annat objekt på högre nivå. Abstraktion är kännetecknet för de flesta moderna programvaruspecifikationer.
De flesta kommunikationsprotokoll omfatta en hel del abstraktion. Objekt i högre lager definieras abstrakt och är avsedda att implementeras med hjälp av objekt i lägre lager. En tjänst på ett lager kan till exempel kräva överföring av vissa abstrakta objekt mellan datorer. Ett lager på lägre nivå kan använda kodningsregler för att omvandla abstrakta objekt till strängar med ettor och nollor.
En vanlig metod för att ange abstrakta objekt som ska överföras seriellt kallas abstrakt syntax notation One (ASN.1). ASN.1 definieras i CCITT-rekommendationen X.208. En uppsättning ASN.1-regler för att representera sådana objekt som strängar med ettor och nollor kallas Distinguished Encoding Rules (DER) och definieras i CCITT-rekommendationen X.509, avsnitt 8.7. Det här är kodningsmetoderna som för närvarande används av CryptoAPI.
Mer information om funktioner för kodning/avkodning finns i Objektkodning och Avkodningsfunktioner.