Données encodées et décodées
Pour envoyer des données sur un support de communication tel qu’une ligne téléphonique, les données doivent être sérialisées, c’est-à-dire converties en une chaîne de un et de zéros transmis en série sur la ligne. La sérialisation doit être effectuée de telle sorte que l’ordinateur qui reçoit les données puisse reconverti les données dans leur format d’origine. La façon dont la sérialisation est effectuée est appelée protocole de communication et est contrôlée à la fois par le logiciel et le matériel de transmission de données. Les données sont converties à plusieurs niveaux. L’illustration suivante montre une vue considérablement simplifiée des couches de protocole de communication.
L’illustration précédente montre que la couche application sur l’ordinateur n°1 envoie les données à transmettre (qui se compose généralement d’une combinaison de caractères textuels et de nombres) à la couche encode/décodage. La couche encode/décodage encode les données dans un flux d’octets d’ordinateur. Au niveau le plus bas, la couche matérielle, le matériel convertit les octets de données en un flux série de un et de zéros transmis sur la ligne à l’ordinateur n°2. La couche matérielle de l’ordinateur n° 2 reconvertit les zéros en octets de l’ordinateur et les transmet à la couche encode/décodage pour le décodage. La couche d’encodage/décodage recode les octets dans leur format d’origine et transmet les données à la couche application.
Un principe de conception logicielle accepté consiste à utiliser l’abstraction, c’est-à-dire le processus de description d’un problème ou d’un objet en termes de ses paramètres généraux plutôt que de décrire tous les détails nécessaires pour résoudre le problème, ou de décrire tous les détails d’un objet. À l’aide de l’abstraction, un concepteur peut spécifier un objet logiciel qui a des qualités spécifiques sans se soucier de la façon dont l’objet est réellement implémenté dans le code logiciel. Une telle pratique laisse l’implémentation ouverte. Il simplifie également la spécification et permet d’indiquer des axiomes sur l’objet qui peuvent être prouvés lors de l’implémentation de l’objet. Ces axiomes peuvent ensuite être supposés lorsque l’objet est employé dans un autre objet de niveau supérieur. L’abstraction est la caractéristique de la plupart des spécifications logicielles contemporaines.
La plupart des protocoles de communication impliquent une bonne partie de l’abstraction. Les objets des couches supérieures sont définis de manière abstraite et sont destinés à être implémentés à l’aide d’objets au niveau des couches inférieures. Par instance, un service à une couche peut nécessiter le transfert de certains objets abstraits entre des ordinateurs. Une couche de niveau inférieur peut utiliser des règles d’encodage pour transformer les objets abstraits en chaînes de un et de zéros.
Une méthode courante de spécification d’objets abstraits destinés à être transmis en série est appelée Notation syntaxique abstraite 1 (ASN.1). ASN.1 est défini dans la recommandation CCITT X.208. Un ensemble de règles ASN.1 pour représenter des objets tels que des chaînes de un et de zéros est appelé Distinguished Encoding Rules (DER) et est défini dans la recommandation CCITT X.509, section 8.7. Il s’agit des méthodes d’encodage actuellement utilisées par CryptoAPI.
Pour plus d’informations sur l’encodage/décodage des fonctions, consultez Fonctions d’encodage et de décodage d’objets.