{"id":100,"date":"2017-04-22T17:07:46","date_gmt":"2017-04-22T15:07:46","guid":{"rendered":"http:\/\/www.gatoux.com\/?page_id=100"},"modified":"2017-04-25T11:06:21","modified_gmt":"2017-04-25T09:06:21","slug":"la-couche-presentation","status":"publish","type":"page","link":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/la-couche-presentation\/","title":{"rendered":"La couche Pr\u00e9sentation"},"content":{"rendered":"<h2>R\u00f4le<\/h2>\n<p><strong><span style=\"color: #ff0000;\">Assure l&rsquo;adaptation des donn\u00e9es entre les syst\u00e8mes h\u00e9t\u00e9rog\u00e9nes &#8211; G\u00e9re la repr\u00e9sentation des donn\u00e9es.<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-192 alignright\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/S1P13I2.gif\" alt=\"\" width=\"328\" height=\"176\" \/><\/span><\/strong><\/p>\n<p>Le mod\u00e8le OSI est con\u00e7u pour faciliter l&rsquo;interconnexion de syst\u00e8mes ouverts ! Mais ces syst\u00e8mes sont bien souvent h\u00e9t\u00e9rog\u00e8nes, ils utilisent d&rsquo;ailleurs bien souvent des mod\u00e8les de repr\u00e9sentation des donn\u00e9es qui sont diff\u00e9rents. Par exemple les uns utiliseront un codage EBCDIC (notamment chez IBM) et d&rsquo;autre un codage ASCII (notamment en UNIX) pour r\u00e9aliser le codage d&rsquo;une grille de caract\u00e8re !<\/p>\n<p>Pour certains syst\u00e8mes il faudra de plus impl\u00e9menter un syst\u00e8me de cryptage des donn\u00e9es (notamment dans le cas des applications de traitements bancaires ou m\u00eame pour le T\u00e9l\u00e9commerce sur Internet !).<\/p>\n<p>La couche pr\u00e9sentation assure ces fonctions.<\/p>\n<p>L&rsquo;unit\u00e9 de donn\u00e9es du protocole est appel\u00e9e la <strong>PPDU<\/strong> (Presentation Protocol Data Unit). Cette PPDU est bien s\u00fbr, en principe, encapsul\u00e9e dans la SPDU du niveau 5.<\/p>\n<h2>Fonctions<\/h2>\n<p><span style=\"color: #ff0000;\"><strong><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-193 alignleft\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/S1P13I3.gif\" alt=\"\" width=\"139\" height=\"79\" \/>1 &#8211; N\u00e9gociation de syntaxe de transfert<\/strong> <\/span><\/p>\n<p>Imaginons trois Internautes : un anglais, un fran\u00e7ais et un grec (pourquoi pas ?). Un soir ils se rencontrent sur un \u00ab\u00a0chat-room\u00a0\u00bb (pour faire dans l&rsquo;air du temps !). Aucun d&rsquo;entre-eux ne sait parler la langue de l&rsquo;autre, et pourtant ils aimeraient communiquer !<\/p>\n<p><strong>Premi\u00e8re solution<\/strong> : L&rsquo;anglais, peu avare, t\u00e9l\u00e9phone \u00e0 une boite d&rsquo;int\u00e9rim et commande deux traducteurs. Lorsqu&rsquo;il veut parler au fran\u00e7ais il active son traducteur fran\u00e7ais, lorsqu&rsquo;il veut parler au grec, il active son traducteur grec ! Vous imaginez sans peine la joie de l&rsquo;agence d&rsquo;int\u00e9rim lorsque l&rsquo;anglais d\u00e9cide de converser avec des autochtones de dix nations diff\u00e9rentes !<\/p>\n<p><strong>Deuxi\u00e8me solution<\/strong> : Le fran\u00e7ais, plus avis\u00e9 (bien s\u00fbr) dans ses d\u00e9penses (plus avare quoi !), d\u00e9cide de n&rsquo;engager qu&rsquo;un seul traducteur ! Il dit : \u00ab\u00a0Moi je veux un traducteur en Esp\u00e9ranto ! Il traduira mon bon fran\u00e7ais des chaumi\u00e8res en un pur Esp\u00e9ranto que les autres devront comprendre et eux-m\u00eames traduire dans leur dialecte incompr\u00e9hensible !\u00a0\u00bb. Avis\u00e9, le fran\u00e7ais, a ainsi r\u00e9parti les co\u00fbts de traduction sur les diff\u00e9rents communicants ! De plus quiconque voudra participer \u00e0 la discussion devra se procurer un seul traducteur Esp\u00e9ranto (le cours du traducteur Esp\u00e9ranto est \u00e0 la hausse &#8230; M\u00e9tier d&rsquo;avenir !).<\/p>\n<p><strong>Troisi\u00e8me solution<\/strong> : Le grec, cherche toujours ! (Ce que je peux \u00eatre m\u00e9chant quelques fois !).<\/p>\n<p>Le mod\u00e8le OSI propose d&rsquo;appliquer la solution 2, mais laisse aussi toute latitude pour se rabattre sur la premi\u00e8re solution &#8230; Je m&rsquo;explique :<\/p>\n<p><strong>Dans le cas 1<\/strong>, deux entit\u00e9s ne parlant pas le m\u00eame langage, pourront tenter de n\u00e9gocier l&rsquo;utilisation d&rsquo;un langage commun. Par exemple, si A parle nativement en A, et B parle nativement en B. A dit \u00e0 B : \u00a0\u00bb Moi je sais parler en A et C. Et toi ? \u00ab\u00a0, B r\u00e9pond : \u00a0\u00bb Moi je parle en A et B. Parlons donc en A, OK ?\u00a0\u00bb. A r\u00e9pond : \u00ab\u00a0OK\u00a0\u00bb. <strong>N\u00e9gociation termin\u00e9e<\/strong> !<\/p>\n<p>La couche pr\u00e9sentation propose, par son protocole, la n\u00e9gociation de langages de transfert.<\/p>\n<p><strong>Dans le cas 2<\/strong>, deux entit\u00e9s ne parlant pas le m\u00eame langage pourront n\u00e9gocier une syntaxe de transfert commune. Par exemple, si A parle nativement en A, mais dispose d&rsquo;une couche pr\u00e9sentation proposant un langage C, et B parle nativement en B mais dispose \u00e9galement d&rsquo;une couche pr\u00e9sentation proposant un langage C. A dit \u00e0 B : \u00a0\u00bb Moi je sais parler en A etC. Et toi ? \u00ab\u00a0, B r\u00e9pond : \u00a0\u00bb Moi je parle en C et B, on parle donc en C, OK ?\u00a0\u00bb, A r\u00e9pond : \u00ab\u00a0OK\u00a0\u00bb. <strong>N\u00e9gociation termin\u00e9e<\/strong> !<\/p>\n<p>On remarque ici que le langage choisi n&rsquo;est aucun des deux langages natifs. C&rsquo;est un choix de langage de transfert ! A va traduire sa syntaxe A en C, l&rsquo;\u00e9mettre, B en r\u00e9ception traduit C en B, et le tour est jou\u00e9 ! Enfin presque &#8230;<\/p>\n<p><strong><span style=\"color: #ff0000;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-194 alignleft\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/S1P13I4.gif\" alt=\"\" width=\"224\" height=\"126\" \/>2 &#8211; Une syntaxe de transfert \u00e0 toute \u00e9preuve<\/span><\/strong><\/p>\n<p>Le paragraphe pr\u00e9c\u00e9dent pr\u00e9sente les n\u00e9gociations de mani\u00e8re idyllique ! En effet, on peut facilement imaginer que pour certains mots il n&rsquo;y ait pas d&rsquo;\u00e9quivalent d&rsquo;un langage \u00e0 un autre ! Ainsi certains caract\u00e8res de la grille EBCDIC qui est cod\u00e9e sur 8 bits, sont intraduisibles en ASCII qui est cod\u00e9 sur 7 bits ! (256 possibilit\u00e9s en EBCDI, contre 128 en ASCII !).<\/p>\n<p>Mon anglais me l&rsquo;interdit, mais je suis s\u00fbr que les anglophobes (non, ce n&rsquo;est pas une faute !), que vous \u00eates sauront trouver des exemples de non correspondance entre Fran\u00e7ais et Anglais (\u00e0 part le mot : Mouton !).<\/p>\n<p>R\u00e9sultat, si l&rsquo;on veut \u00eatre s\u00fbr de pouvoir acheminer toutes les informations de mani\u00e8re transparente, il faudra d\u00e9nicher une syntaxe de transfert capable d&rsquo;acheminer \u00e0 peu pr\u00e8s n&rsquo;importe quel type de donn\u00e9es !! Et l\u00e0 &#8230; OSI est arriv\u00e9 !<\/p>\n<p><strong>ASN 1<\/strong> (Abstract Syntax Notation Number One), vous connaissez ? C&rsquo;est un langage de type <strong>LTV<\/strong> (Longueur, Type, Valeur : \u00e0 vos souhaits !) qui permet de d\u00e9crire \u00e0 peu pr\u00e8s n&rsquo;importe quels types de donn\u00e9es, et donc se pr\u00e9sente comme leader pour le transport d&rsquo;informations h\u00e9t\u00e9roclites !<\/p>\n<p>D\u00e9fini par la norme ISO 8824, il permet de d\u00e9crire une variable (ou une donn\u00e9e) par son type (bool\u00e9en, entier, r\u00e9el, binaire, octet long, s\u00e9quence, cha\u00eene de caract\u00e8re, etc&#8230;), sa valeur (a, 1, 125, bobo, tartuffe, NON, OUI, AND, etc ..) et sa longeur (1 bit, un octet, un mot, etc ..).<\/p>\n<p>Plus fort ! L&rsquo;ASN 1 est \u00e9galement utilis\u00e9 comme langage de description de programmation. Les requ\u00eates SNMP pour l&rsquo;adressage des objets dans les MIBs (<em>attention, ici je m&rsquo;adresse aux experts, d\u00e9sol\u00e9s pour les autres !<\/em>), sont aussi d\u00e9crits en ASN 1.<\/p>\n<h2>Remarques<\/h2>\n<p>En r\u00e9sum\u00e9, la couche Pr\u00e9sentation autorise entre-autres :<\/p>\n<ul>\n<li>La n\u00e9gociation de syntaxes de transfert<\/li>\n<li>La conversion de syntaxes locales en syntaxes de transfert<\/li>\n<li>L&rsquo;utilisation d&rsquo;une syntaxe de transfert normalis\u00e9e (ASN 1)<\/li>\n<li>La cryptage des informations \u00e0 des fins s\u00e9curitaires.<\/li>\n<\/ul>\n<p>Je n&rsquo;ai dans ce chapitre, pas franchement parl\u00e9 des m\u00e9thodes de cryptages, pour au moins deux raisons :<\/p>\n<ul>\n<li>Je dispose d&rsquo;assez peu d&rsquo;informations sur le sujet.<\/li>\n<li>La presse se fait suffisamment l&rsquo;\u00e9cho du probl\u00e8me actuellement (je te le code sur combien ton message ? Deux ou 64 bits ? Qu&rsquo;est-ce qu&rsquo;il va dire le gouvernement ? Tu crois qu&rsquo;il arrivera \u00e0 d\u00e9coder mes messages, pour que je sois autoris\u00e9 \u00e0 coder sur 32 bits ?)<\/li>\n<\/ul>\n<p>Le chapitre suivant vous pr\u00e9sente donc tr\u00e8s sommairement la couche Application.<\/p>\n<h5 align=\"center\"><a href=\"http:\/\/www.gatoux.com\/index.php\/la-couche-session\/\">Page Pr\u00e9c\u00e9dente <\/a>| <a href=\"http:\/\/www.gatoux.com\/index.php\/la-couche-application\/\">Page Suivante<\/a><\/h5>\n","protected":false},"excerpt":{"rendered":"<p>R\u00f4le Assure l&rsquo;adaptation des donn\u00e9es entre les syst\u00e8mes h\u00e9t\u00e9rog\u00e9nes &#8211; G\u00e9re la repr\u00e9sentation des donn\u00e9es. Le mod\u00e8le OSI est con\u00e7u pour faciliter l&rsquo;interconnexion de syst\u00e8mes ouverts ! Mais ces syst\u00e8mes sont bien souvent h\u00e9t\u00e9rog\u00e8nes, ils utilisent d&rsquo;ailleurs bien souvent des mod\u00e8les de repr\u00e9sentation des donn\u00e9es qui sont diff\u00e9rents. Par exemple les uns utiliseront un codage\u2026 <span class=\"read-more\"><a href=\"https:\/\/racine.gatoux.com\/lmdr\/index.php\/la-couche-presentation\/\">Lire la suite &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":13,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"class_list":["post-100","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":3,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/100\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/100\/revisions\/330"}],"wp:attachment":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/media?parent=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}