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 1s et de zéros transmises en série sur la ligne. La sérialisation doit être effectuée de telle sorte que l’ordinateur recevant les données puisse reconvertir les données dans son format d’origine. La façon dont la sérialisation est effectuée est appelée protocole de communication, et est contrôlée par le matériel de transmission de données et de logiciel. Il existe plusieurs niveaux auxquels les données sont converties. L’illustration suivante montre une vue considérablement simplifiée des couches de protocole de communication.
couches de protocole de communication
L’illustration précédente montre la couche d’application sur l’ordinateur #1 qui 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 d’un flux de 1s et de zéros transmis sur la ligne à l’ordinateur #2. La couche matérielle de l’ordinateur n°2 convertit les zéros et les zéros en octets d’ordinateur et les transmet à la couche d’encodage/décodage pour le décodage. Le décodage/décodage de la couche décode les octets dans leur format d’origine et transmet les données à la couche application.
Un principe de conception logicielle accepté consiste à utiliser abstraction, c’est-à-dire le processus de description d’un problème ou d’un objet en termes de 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 souci 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 peut être prouvé lorsque l’objet est implémenté. Ces axiomes peuvent ensuite être supposés lorsque l’objet est utilisé dans un autre objet de niveau supérieur. L’abstraction est la caractéristique des spécifications logicielles les plus contemporaines.
La plupart des protocoles de communication impliquent une bonne quantité d’abstraction. Les objets à couches supérieures sont définis abstraitement et sont destinés à être implémentés à l’aide d’objets à des couches inférieures. Par exemple, un service d’une couche peut nécessiter le transfert de certains objets abstraits entre ordinateurs. Une couche de niveau inférieur peut utiliser des règles d’encodage pour transformer les objets abstraits en chaînes d’une 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 de syntaxe abstraite one (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 d’un et des zéros est appelé règles d’encodage unique (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.