Couche de présentation
Pile de protocoles | ||||||||||||||
|
||||||||||||||
Modèle Internet Modèle OSI |
La couche de présentation est la 6e couche du modèle OSI.
Sommaire |
[modifier] Définition OSI (ISO 7498-1)
La couche présentation est chargée du codage des données applicatives. Les couches 1 à 5 transportent des octets bruts sans se préoccuper de leur signification. Mais ce qui doit être transporté en pratique, c'est du texte, des nombres et parfois des structures de données arbitrairement complexes. Un protocole de routage par exemple doit transporter un graphe représentant au moins partiellement la topologie du réseau. Le rôle de la couche présentation est donc de convertir entre données applicatives manipulées par les programmes et chaînes d'octets effectivement transportées par le réseau.
[modifier] Exemples de couche de présentation
[modifier] Le monde ISO
Dans le monde ISO, la règle consiste à définir les données en ASN.1 (Abstract Syntax Notation) et à réaliser dans la couche de présentation le codage/décodage en BER ou DER.
[modifier] Le monde IP
Dans le monde IP, historiquement, la méthode canonique et implicite est de tout transformer en texte: codage des nombres entiers en décimal, non utilisation des flottants, utilisation de délimiteurs comme le guillemet ou la marque de fin de ligne (octets 13 et 10) avec des mécanismes d'échappements compliqués pour les cas où le délimiteur apparaît dans les données. Ces transformations sont spécifiées, et souvent répétées, pour chaque protocole applicatif, puisque le «modèle» IP ne contient pas de couche de présentation.
Cela ne résout le problème qu'à moitié puisque le codage des caractères en octets n'est pas défini. Soit on utilise le codage US-ASCII en ignorant les langues utilisant des caractères non ASCII (cf. par exemple le protocole SMTP (RFC 821 annexe A et RFC 822 section 3.3)), soit on ajoute parfois une déclaration de codage de caractères (cf. utilisation de MIME dans ESMTP et HTTP). Même dans le cas de HTTP, les URL sont décrites comme formées de caractères mais sans spécifier quels caractères sont autorisés. (Par exemple: la séquence d'échappement "%85" pour l'octet 133 est-elle valide ?)
Lorsque cela s'est avéré insuffisant au vu de la complexité de la structures des données à transporter, notamment pour le protocole applicatif "Remote Procedure Call" de Sun Microsystems, on a inventé XDR (External Data Representation) puis détourné XML de son utilisation originelle (orientée document plutôt que données).
On notera qu'aucune de ces représentations n'est un protocole proprement dit. Cela illustre le fait que s'il n'y a pas de négociation du mode de codage, tout mécanisme utilisé pour le stockage peut aussi faire office de fonction de présentation.