Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:centos:6:avance:l103 [2021/12/29 09:39] adminelearning:workbooks:centos:6:avance:l103 [2023/02/15 15:44] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
-**Version**: ~~LASTMOD~~ 
  
-======LCF305 Gestion des Données avec SQL======+Version : **2022.01** 
 + 
 +Dernière mise-à-jour : ~~LASTMOD~~ 
 + 
 +======LCF302 Comprendre le Réseau TCPv4======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-    * **LCF305 La Langage SQL** +  * **LCF302 Comprendre le Réseau TCPv4** 
-      * SQL +    * Contenu du Module 
-        * Chaînes de caractères +    * Comprendre les Réseaux 
-        * Nombres +      * Présentation des Réseaux 
-          * Nombres Entiers +      * Classification des Réseaux 
-          * Nombres Décimaux +        * Classification par Mode de Transmission 
-          * Nombres Négatifs +        * Classification par Topologie 
-        Valeurs NULL +          * La Topologie Physique 
-        Noms de Fichiers +          * La Topologie en Ligne 
-        Variables Utilisateurs +          * La Topologie en Bus 
-        * Commentaires +          La Topologie en Étoile 
-        * Commandes +          La Topologie en Anneau 
-          * SELECT +          La Topologie en Arbre 
-          * UPDATE +          * La Topologie Maillée 
-          * DELETE FROM +        * Classification par Étendue 
-          * DROP TABLE +        * Les Types de LAN 
-          * INSERT +          * Réseau à Serveur Dédié 
-          * ALTER +          * Réseau Poste-à-Poste 
-          * MATCH +      * Le Modèle Client/Serveur 
-        * Opérateurs +      * Modèles de Communication 
-          Mathématiques +        * Le modèle OSI 
-          Logiques +          * Les Couches 
-          Comparaison +          * Les Protocoles 
-        * Fonctions +          * Les Interfaces 
-          * Mathématiques +          * Protocol Data Units 
-          * Chaînes +          * Encapsulation et Désencapsulation 
-          * Dates +        * Spécification NDIS et le Modèle ODI 
-          * Contrôle +        Le modèle TCP/IP 
-          * Agrégation +      Les Raccordements 
-          * Autres +        Les Modes de Transmission 
-      Types de Champs +        * Les Câbles 
-        * Nombres entiers +          * Le Câble Coaxial 
-        * Nombres à virgule flottante +          * Le Câble Paire Torsadée 
-        * Dates et Heures +          * Catagories de Blindage 
-          Types de données TIMESTAMP +          * La Prise RJ45 
-        * Chaînes +          * Channel Link et Basic Link 
-        * TEXT et BLOB +          * La Fibre Optique 
-        * ENUM et SET +        Les Réseaux sans Fils 
-      Types de Moteurs de Stockage +        * Le Courant Porteur en Ligne 
-      Caractéristiques des Moteurs +      * Technologies 
-        * InnoDB +        * Ethernet 
-          Mécanisme Interne +        * Token-Ring 
-          Transactions +      Périphériques Réseaux Spéciaux 
-          Tablespace +        * Les Concentrateurs 
-          Multiversion Concurrency Control +        * Les Répéteurs 
-          Transaction Isolation Levels +        * Les Ponts 
-        MyISAM +          Le Pont de Base 
-          MyISAM FIXED +          Le Pont en Cascade 
-          MyISAM DYNAMIC +          * Le Pont en Dorsale 
-          MyISAM COMPRESSED +        * Les Commutateurs 
-          Particularités +        Les Routeurs 
-        Memory +        Les Passerelles 
-          Particularités +    Comprendre TCP Version 4 
-          En Pratique +      En-tête TCP 
-        * Archive +      En-tête UDP 
-          * Particularités +      Fragmentation et Ré-encapsulation 
-        CSV +      Adressage 
-        * FEDERATED +      Masques de sous-réseaux 
-        * NDB Cluster +      VLSM 
-        * Autres Moteurs Non Standards +      Ports et sockets 
-          XtraDB +      /etc/services 
-          Aria +      Résolution d'adresses Ethernet 
-      * Jointures +    Comprendre le Chiffrement 
-        * FULL JOIN +      * Introduction à la cryptologie 
-        * LEFT JOIN +        * Définitions 
-        * RIGHT JOIN +          * La Cryptographie 
-      * LAB #1 - Le Langage SQL+          Le Chiffrement par Substitution 
 +      * Algorithmes à clé secrète 
 +        * Le Chiffrement Symétrique 
 +      * Algorithmes à clef publique 
 +        * Le Chiffrement Asymétrique 
 +        * La Clef de Session 
 +      Fonctions de Hachage 
 +      Signature Numérique 
 +      * LAB #1 - Utilisation de GnuPG 
 +        * Présentation 
 +        * Installation 
 +        * Configuration 
 +        * Signer un message 
 +        * Chiffrer un message 
 +      * PKI 
 +        * Certificats X509
  
-=====SQL=====+=====Comprendre les Réseaux=====
  
-====Chaînes de caractères====+====Présentation des Réseaux====
  
-Les chaînes de caractères doivent être entourées de **'** ou de **"**.+La définition d'un réseau peut être résumé ainsi :
  
-//Exemples//+  * un ensemble d'**Equipements** (systèmes et périphériques) communiquant entre eux, 
 +  * une entité destinée au transport de données dans différents environnements.
  
-'Linux est incroyable'+Pour que la communication soit efficace, elle doit respecter les critères suivants :
  
-"Windows est ......."+  * présenter des informations compréhensibles par tous les participants, 
 +  * être compatible avec un maximum d'interlocuteurs différents (dans le cas d'un réseau, les interlocuteurs sont des équipements : imprimantes, ordinateurs, clients, serveurs, téléphones...), 
 +  * si l'interlocuteur n'est pas disponible, les informations ne doivent pas se perdre, 
 +  * permettre une réduction des coûts (par exinterconnexion à bas coût), 
 +  * permettre une productivité accrue (par exinterconnexion à haut débit), 
 +  * être sécurisée si les informations à transmettre sont dites sensibles, 
 +  * garantir l'**unicité** et de l'**universalité** de l'**accès à l'information**
  
-"Je lui dit : ""Je t'aime"""+On peut distinguer deux familles d'**Equipements** - les **Eléments Passifs** et les **Eléments Actifs**.
  
-====Nombres====+Les **Eléments Passifs** transmettent le signal d'un point à un autre :
  
-Il existe 3 types de nombres :+  * **Les Infrastructures ou Supports** - des câbles, de l'atmosphère ou des fibres optiques permettant de relier **physiquement** des équipements, 
 +  * **La Topologie** - l'architecture d'un réseau définissant les connexions entre les **Equipements** et, éventuellement, la hiérarchie entre eux.
  
-===Nombres Entiers===+Les **Eléments Actifs** sont des équipements qui consomment de l'énergie en traitant ou en interprétant le signal. Les **Equipements** sont classés selon leurs fonctions : 
 +  
 +  * **Equipement de Distribution Interne au Réseau** - Répartiteur (Hub, Switch, Commutateur etc.), Borne d'accès (Hotspot), Convertisseur de signal (Transciever), Amplificateur (Répéteur) ..., 
 +  * **Equipement d'Interconnexion de Réseaux** - Routeurs, Ponts ..., 
 +  * **Nœuds** et **Interfaces Réseaux** - postes informatiques, équipements en réseau ....
  
-Une séquence de chiffres **sans espaces**+Un **Nœud** est une extrémité de connexion qui peut être une intersection de plusieurs connexions ou de plusieurs **Equipements**.
  
-//Exemple//+Une **Interface Réseau** est une prise ou élément d'un **Equipement Actif** faisant la connexion vers d'autres **Equipements** réseaux et qui reçoit et émet des données.
  
-999256+<WRAP center round important> 
 +Dans le cas d'un mélange d'**Equipements** non-homogènes en termes de performances au sein du même réseau, c'est la loi du plus faible qui emporte. 
 +</WRAP>
  
-0+Tous les **Equipements** connectés au même support doivent respecter un ensemble de règles appelé une **Protocole de Communication**.
  
-===Nombres Décimaux===+Les **Protocoles de Communication** définissent de façon formelle et interopérable la manière dont les informations sont échangées entre les **Equipements**.
  
-Utilisent le **point** comme séparateur.+Des **Logiciels**, dédiés à la gestion de ces **Protocoles de Communication**, sont installés sur des **Equipements d'Interconnexion** afin de fournir des fonctions de contrôle permettant une communication entre les **Equipements**. 
  
-//Exemple//+Se basant sur des **Protocoles de Communication**, des **Services** fournissent des fonctionnalités accessibles aux utilisateurs ou d'autres programmes.
  
-120.54+L'ensemble des **Equipements**, **Logiciels** et **Protocoles de Communication** constitue l'**Architecture Réseau**.
  
-5566.8956e+12+====Classification des Réseaux====
  
-===Nombres Négatifs===+Les réseaux peuvent être classifiés de trois façon différentes :
  
-Sont précédés par le signe **-**.+  * par **Mode de Transmission**, 
 +  * par **Topologie**, 
 +  * par **Étendue**.
  
-//Exemple//+===Classification par Mode de Transmission===
  
--458+Il existe deux **Classes** de réseaux dans cette classification :
  
--147.36+  * les **Réseaux en Mode de Diffusion**, 
 +    * utilise un seul support de transmission, 
 +    * le message est envoyé sur tout le réseau à l'adresse d'**un** destinataire,
  
-====Valeurs NULL====+  * les **Réseaux en Mode Point à Point**, 
 +    * une seule liaison entre deux équipements, 
 +    * les nœuds permettent de choisir la route en fonction de l'adresse du destinataire, 
 +    * quand deux nœuds non directement connectés entre eux veulent communiquer ils le font par l'intermédiaire des autres noeuds du réseau.
  
-Une chaîne **sans données**. +===Classification par Topologie===
  
-<note warning+<WRAP center round important
-N'est pas la même chose qu'une chaîne **vide** ou un **0** dans le cas d'un nombre.+La **Topologie Physique** d'un réseau décrit l'organisation de ce dernier en termes de câblage. La **Topologie Logique** d'un réseau décrit comment les données circulent sur le réseau. En effet c'est le choix des concentrateurs ainsi que les connections des câbles qui déterminent la topologie logique. 
 +</WRAP> 
 + 
 +==La Topologie Physique== 
 + 
 +Il existe 6 topologies physiques de réseau : 
 +  
 +  * La Topologie en Ligne, 
 +  * La Topologie en Bus, 
 +  * La Topologie en Etoile, 
 +  * La Topologie en Anneau, 
 +  * La Topologie en Arbre, 
 +  * La Topologie Maillée. 
 + 
 +==La Topologie en Ligne== 
 + 
 +Tous les nœuds sont connectés à un seul support. L'inconvénient de cette topologie est que dans le cas d'une défaillance d'une station, le réseau se trouve coupé en deux sous-réseaux. 
 + 
 +==La Topologie en Bus== 
 + 
 +Tous les nœuds sont connectés à un seul support (un câble BNC en T) avec des bouchons à chaque extrémité. La longueur du bus est limitée à **185m**. Le nombre de stations de travail est limité à **30**. Les Stations sont reliées au Bus par des 'T'. Les bouchons sont des terminateurs qui sont des résistances de **50 Ohms**.  
 +Quand le support tombe en panne, le réseau ne fonctionne plus. Quand une station tombe en panne, elle ne perturbe pas le fonctionnement de l'ensemble du réseau. Les Stations étant reliés à un suel support, ce type de topologie necessite un **Protocole d'Accès** pour gérer le tour de parole des Stations afin d'éviter des conflits. 
 + 
 +{{:solaris:sol2:bus.png|}} 
 + 
 +==La Topologie en Étoile== 
 + 
 +Chaque nœud est connecté à un périphérique central appelé un **Hub** (**Concentrateur**) ou un **Switch** (**Commutateur**). Un Hub ou un Switch est prévu pour 4, 8, 16, 32 ... stations. En cas d'un réseau d'un plus grand nombre de stations, plusieurs Hubs ou Switches sont connectés ensemble. Quand une station tombe en panne, elle ne perturbe pas le fonctionnement de l'ensemble du réseau. Le point faible de cette topologie est l'équipement central. 
 + 
 +{{:solaris:sol2:etoile.png|}} 
 + 
 +==La Topologie en Anneau== 
 + 
 +Chaque nœud est relié directement à ses deux voisins dans une topologie logique de cercle ininterrompu et une topologie physique en étoile car les stations sont reliées à un type de hub spécial, appelé un **Multistation Access Unit** (MAU). 
 + 
 +{{:solaris:sol2:ring.png|}} 
 + 
 +Les stations sont reliées à la MAU par un câble 'IBM' munie d'une prise **AUI** du côté de la carte et une prise **Hermaphrodite** du coté de la MAU. Les données sont échangées dans un sens unidirectionnel. Une trame, appelée un **jeton**, circule en permanence. Si l'anneau est brisé, l'ensemble du réseau s'arrête. Pour cette raison, il est courant de voir deux anneaux contre-rotatifs. 
 + 
 +==La Topologie en Arbre== 
 + 
 +La Topologie en Arbre est utilisée dans un réseau hierarchique où le sommet, aussi appelé la **racine**, est connecté à plusieurs noeuds de niveau inférieur. Ces neouds peuvent à leur tour être connectés à d'autres noeuds inférieurs. L'ensemble forme une arborescence. Le point faible de cette topologie est sa racine. En cas de défaillance, le réseau est coupé en deux. 
 + 
 +==La Topologie Maillée== 
 + 
 +Cette Topologie est utilisée pour des grands réseaux de distribution tels Internet ou le WIFI. Chaque noeud à tous les autres via des liaisons point à point. Le nombre de liaisons devient très rapidement important en cas d'un grand nombre de noeuds. Par exemple dans le cas de 100 Stations (N), le nombre de liaisons est obtenu par la formule suivante : 
 + 
 +  N(N-1)/2 = 100(100-1)/2 = 4 950 
 + 
 +<WRAP center round important> 
 +La **Topologie Physique** la plus répandue est la **Topologie en Etoile**. 
 +</WRAP> 
 + 
 +===Classification par Etendue=== 
 + 
 +La classification par étendue nous fournit 4 réseaux principaux : 
 + 
 +^ Nom ^ Description ^ Traduction ^ Taille Approximative (M) | 
 +| PAN | Personal Area Network | Réseau Personnel | 1 -10 | 
 +| LAN | Local Area Network | Réseau Local Entreprise (RLE) | 5 - 1 200 | 
 +| MAN | Métropolitain Area Network | Réseau Urbain | 900 - 100 000 | 
 +| WAN | Wide Area Network | Réseau Long Distance (RLD) | 50 000 et au delà | 
 + 
 +Cependant, d'autres classification existent : 
 + 
 +| CAN | Campus Area Network | Réseau de Campus | 
 +| GAN | Global Area Network | Réseau Global | 
 +| TAN | Tiny Area Network | Réseau Minuscule | 
 +| FAN | Family Area Network | Réseau Familial | 
 +| SAN | Storage Area Network | Réseau de Stockage | 
 + 
 +<WRAP center round important> 
 +Etant donné que les WANs sont gérés par des opérateurs de télécommunications qui doivent demander une licence à l'état mais que les LANs ont été historiquement mis en oeuvre dans les entreprises, ces derniers sont en majorité issus du monde informatique.  
 +</WRAP> 
 + 
 +===Les Types de LAN=== 
 + 
 +Il existe deux types de LAN : 
 +  
 +  * le réseau à serveur dédié, 
 +  * le réseau poste à poste. 
 + 
 +==Réseau à Serveur Dédié== 
 + 
 +Le réseau à serveur dédié est caractérisé par le fait que toutes les ressources ( imprimantes, applications, lecteurs etc. ) sont gérées par le serveur. Les autres micro-ordinateurs ne jouent le rôle de client.  
 + 
 +Des exemples des systèmes d'exploitation du réseau à serveur dédié sont :  
 + 
 +  * Windows NT Server, 
 +  * Windows 2000 Server, 
 +  * Windows 2003 Server, 
 +  * Windows 2008 Server, 
 +  * Linux, 
 +  * Unix.  
 + 
 +{{:solaris:sol2:serveur_dedie.png|}} 
 + 
 +==Réseau Poste-à-Poste== 
 + 
 +Le réseau poste à poste est caractérisé par le fait que tous les ordinateurs peuvent jouer le rôle de client et de serveur : 
 + 
 +  * Windows 95, 
 +  * Windows 98, 
 +  * Windows NT Workstation. 
 + 
 +{{:solaris:sol2:poste_a_poste.png|}} 
 + 
 +====Le Modèle Client/Serveur==== 
 + 
 +Le modèle Client/Serveur est une des modalités des architectures informatiques distribuées. Dans ce modèle un serveur est tout **Logiciel** fournissant un **Service**.  
 +  
 +Le serveur est aussi : 
 + 
 +  * passif, c'est-à-dire en attente permenante d'une demande, appelée une requête d'un client, 
 +  * capable de traiter plusieurs requêtes simultanément en utilisant le **multi-threading**, 
 +  * garant de l'intégrité globale. 
 + 
 +Le client est, par contre **actif**, étant à l'origine des requêtes. 
 + 
 +Il existe trois types de modèle client/serveur : 
 +  
 +  * **Plat** - tous les clients communiques avec un seul serveur, 
 +  * **Hiérarchique** - les clients n'ont de contact qu'avec les serveurs de plus haut niveau qu'eux, 
 +  * **Peer-to-Peer** - les équipements sont à la fois client **et** serveur en même temps. 
 + 
 +====Modèles de Communication==== 
 + 
 +Les réseaux sont bâtis sur des technologies et des modèles. Le modèle **théorique** le plus important est le modèle **O**pen **S**ystem **Interconnection** créé par l'**I**nternational **Organization** for **S**tandardization tandis que le modèle pratique le plus important est le modèle **TCP/IP**. 
 + 
 +=== Le modèle OSI === 
 + 
 +Le modèle OSI qui a été proposé par l'ISO est devenu le standard en termes de modèle pour décrire l'échange de données entre ordinateurs. Cette norme se repose sur sept couches, de la une - la Couche Physique, à la sept - la Couche d'Application, appelés des services. La communication entre les différentes couches est synchronisée entre le poste émetteur et le poste récepteur grâce à ce que l'on appelle un protocole. 
 + 
 +Ce modèle repose sur trois termes : 
 + 
 +  * Les **Couches**, 
 +  * Les **Protocoles**, 
 +  * Les **Interfaces**. 
 + 
 +==Les Couches== 
 + 
 +Des sept couches : 
 + 
 +  * Les couches 1 à 3 sont les **Couches Basses** orientées **Transmission**, 
 +  * La couche 4 est la **Couche Charnière** entre les **Couches Basses** et les **Couches Hautes**, 
 +  * Les couches 5 à 7 sont les **Couches Hautes** orientées **Traitement**. 
 + 
 +La couche du même niveau du système **A** parle avec son homologue du système **B**. 
 + 
 +  * **La Couche Physique** ( Couche 1 ) est responsable : 
 +    * du transfert de données binaires sur le câble physique ou virtuel 
 +    * de la définition de tout aspect physique allant du connecteur jusqu'au câble en passant par la carte réseau, y compris l'organisation même du réseau 
 +    * de la définition des tensions électriques sur le câble pour obtenir le et le 1 binaires 
 + 
 +  * **La Couche de Liaison** ( Couche 2 ) est responsable : 
 +    * de la réception des données de la couche physique 
 +    * de l'organisation des données en fragments, appelés des trames qui ont un format différent selon s'il s'agit d'un réseau basé sur la technologie Ethernet ou la technologie Token-Ring 
 +    * de la préparation, émission et réception des trames 
 +    * de la gestion de l'accès au réseau 
 +    * de la communication nœud à nœud 
 +    * de la gestion des erreurs 
 +      * avant la transmission, le nœud émetteur calcule un code appelé un CRC et l'incorpore dans les données envoyées 
 +      * le nœud récepteur recalcule un CRC en fonction du contenu de la trame reçue et le compare à celui incorporé avec l'envoi 
 +      * en cas de deux CRC identique, le nœud récepteur envoie un accusé de réception au nœud émetteur 
 +    * de la réception de l'accusé de réception 
 +    * éventuellement de le ré-émission des données 
 +    * En prenant ce modèle, l'IEEE ( Institute of Electrical and Eletronics Engineers ) l'a étendu avec le Modèle IEEE ( 802 ).  
 +        *Dans ce modèle la Couche de Liaison est divisée en deux sous-couches importantes : 
 +           * La **Sous-Couche LLC** ( Logical Link Control ) qui : 
 +             * gère les accusés de réception 
 +             * gère le flux de trames 
 +           * La **Sous-Couche MAC** ( Media Access Control ) qui : 
 +             * gère la méthode d'accès au réseau 
 +             * le CSMA/CD dans un réseau basé sur la technologie Ethernet 
 +             * l'accès au jeton dans un réseau basé sur la technologie Token-Ring 
 +             * gère les erreurs 
 + 
 +    * **La Couche de Réseau** ( Couche 3 ) est responsable de la gestion de la bonne distribution des différentes informations aux bonnes adresses en : 
 +      * identifiant le chemin à emprunter d'un nœud donné à un autre 
 +      * appliquant une conversion des adresses logiques ( des noms ) en adresses physiques 
 +      * ajoutant des information adressage aux envois 
 +      * détectant des paquets trop volumineux avant l'envoi et en les divisant en trames de données de tailles autorisées 
 + 
 +    * **La Couche de Transport** ( Couche 4 ) est responsable de veiller à ce que les données soient envoyées correctement en : 
 +      * constituant des paquets de données corrects 
 +      * les envoyant dans le bon ordre 
 +      * vérifiant que les données sont traités dans le même ordre que l'ordre d'émission 
 +      * permettant à un processus sur un nœud de communiquer avec un autre nœud et d'échanger des messages avec lui 
 + 
 +    * **La Couche de Session** ( Couche 5 ) est responsable : 
 +      * de l'établissement, du maintien, et de la mise à fin de la communication entre deux noeuds distants, c'est-à-dire, de la session 
 +      * de la conversation entre deux processus de vérification de la réception des messages envoyés en séquences, c'est-à-dire, le point de contrôle 
 + 
 +      * de la sécurité lors de l'ouverture de la session, c'est-à-dire, les droits d'utilisateurs etc. 
 + 
 +    * **La Couche de Présentation** ( Couche 6 ) est responsable : 
 +      * du formatage et de la mise en forme des données 
 +      * des conversions de données telles le cryptage/décryptage 
 + 
 +    * **La Couche d'Application** ( Couche 7 ) est responsable : 
 +      * du dialogue homme/machine via des messages affichés 
 +      * du partage des ressources 
 +      * de la messagerie 
 + 
 +==Les Protocoles== 
 + 
 +Un **protocole** est un langage commun utilisé par dexu entités en communication pour pouvoir se comprendre. La nature du Protocole dépends directement de la nature de la communication. Cette bature dépend du **paradigme** de communication que l'application nécessite. Le paradigme est un modèle abstrait d'un problème ou d'une situation. Dans le paradigme de la diffusion, l'émetteur envoie dans informations au récepteur sans se soucier de ce que le récepteur va en faire. C'est la responsabilité du récepteur de comprendre et d'utiliser les informations. 
 + 
 +==Les Interfaces== 
 + 
 +Chaque couche rend des **services** à la couche immédiatement supérieure et utilise les services de la couche immédiatement inférieure. L'ensemble des services s'appelle une **Interface**. Les services sont composés de **S**ervice **D**ata **U**nits et sont disponibles par un **S**service **A**ccess **P**oint. 
 + 
 +==Protocol Data Units== 
 + 
 + L'**Unité de Données** ou //Protocol Data Unit// pour chaque couche comporte un nom spécifique : 
 + 
 +  * **Application Protocol Data Units** pour la couche **Application**, 
 +  * **Présentation Protocol Data Units** pour la couche **Présentation**, 
 +  * **Session Protocol Data Units** pour la couche **Session**, 
 +  * **Transport Protocol Data Units** pour la couche **Transport**. 
 + 
 +Or, pour les **Couches Basses** on parle de : 
 + 
 +  * **Paquets** pour la couche **Réseau**, 
 +  * **Trames** pour la couche **Liaison**, 
 +  * **Bits** pouyr la couche **Physique**. 
 + 
 +==Encapsulation et Désencapsulation== 
 + 
 +Lorque les données sont communiqueés par le système A au système B, celles-ci commencent au niveau de la couche d'Application. Le couche d'Application ajoute une en-tête à l'unité de données qui contient des **informations de contrôle du protocole**. Au passage de chaque couche, celle-ci ajoute sa propre en-tête. De cette façon, lors de sa descente vers la couche physique, les données et l'entête de la couche supérieure sont encapulsulées : 
 + 
 +^ Couche Système A ^ Encapsulation ^ 
 +| Application | Application Header (AH) + Unité de Données (UD) | 
 +| Présentation | Présentation Header (PH) + AH + UD | 
 +| Session | Session Header (SH) + PH + AH + UD | 
 +| Transport | Transport Header (TH) + SH + PH + AH + UD | 
 +| Réseau | Network Header (NH) + TH + SH + PH + AH + UD | 
 +| Liaison | Liaison Header (DH) + NH + TH + SH + PH + AH + UD | 
 + 
 +Lors de son voyage de la couche Physique vers la couche Application dans le système B, les en-têtes sont supprimées par chaque couche correspondante. On parle alors de **désencapsulation** : 
 + 
 +^ Couche Système B ^ Encapsulation ^ 
 +| Liaison | Liaison Header (DH) + NH + TH + SH + PH + AH + UD | 
 +| Réseau | Network Header (NH) + TH + SH + PH + AH + UD | 
 +| Transport | Transport Header (TH) + SH + PH + AH + UD | 
 +| Session | Session Header (SH) + PH + AH + UD | 
 +| Présentation | Présentation Header (PH) + AH + UD | 
 +| Application | Application Header (AH) + Unité de Données (UD) | 
 + 
 +=== Spécification NDIS et le Modèle ODI === 
 + 
 +<note tip> 
 +**[[https://www.i2tch.com/net/m11schema2.html|Cliquez ici pour ouvrir le schéma Simplifié du Modèle OSI incluant la spécification NDIS]]**
 </note> </note>
  
-====Noms de Fichiers====+La spécification NDIS ( Network Driver Interface Specification ) a été introduite conjointement par les sociétés Microsoft et 3Com. 
 +Cette spécification ainsi que son homologue, le modèle ODI ( Open Datalink Interface ) introduit conjointement par les sociétés Novell et Apple à la même époque, définit des standards pour les pilotes de cartes réseau afin qu'ils puissent être indépendants des protocoles utilisées et les systèmes d'exploitation sur les machines. Des deux 'standards', la spécification NDIS est le plus répandu, intervenant a niveau de la sous-couche MAC et l a couche de liaison. Elle spécifie :
  
-Les noms de bases, tables et colonnes :+        * l'interface pilote-matériel 
 +        * l'interface pilote-protocole 
 +        * l'interface pilote - système d'exploitation
  
-  * peuvent contenir jusqu'à 64 caractères +=== Le modèle TCP/IP ===
-  * peuvent commencer par un chiffre +
-  * ne peuvent pas contenir **que** de chiffres +
-  * ne peuvent pas contenir un **/**, une **\** ou un **point**+
  
-Les alias :+<note tip> 
 +**[[https://www.i2tch.com/net/m11schema4.html|Cliquez ici pour voir le modèle OSI incluant la suite des protocoles et services TCP/IP]]** 
 +</note>
  
-  * peuvent contenir jusqu'à 255 caractères +La suite des protocoles TCP/IP ( Transmission Control Protocol / Internet Protocol ) est issu de la DOD ( Dept. Américain de la Défense ) et le travail de l'ARPA ( Advanced Research Project Agency ).  
-  * peuvent contenir un **/**, une **\** ou un **point** +
-   +
-====Variables Utilisateurs====+
  
-Les variables n'ont pas besoin d'être **initialisées**. Elles sont automatiquement crées avec la valeur **NULL**.+    * La suite des protocoles TCP/IP 
 +      * a été introduite en 1974 
 +      * a été utilisée dans l'ARPAnet en 1975 
 +      * permet la communication entre des réseaux à base de systèmes d'exploitation, architectures et technologies différents 
 +      * est très proche du modèle OSI en termes d'architecture et se place au niveau de la couche d'Application jusqu'à la couche Réseau. 
 +      * est, en réalité, une suite de protocoles et de services : 
 +        * **IP** ( Internet Protocol ) 
 +          * le protocole IP s'intègre dans la couche Réseau du modèle OSI en assurant la communication entre les systèmes. Bien qu'il puisse découper des messages en fragments ou datagrammes et les reconstituer dans le bon ordre à l'arrivée, il ne garantit pas la réception. 
 +        * **ICMP** ( Internet Control Message Protocol ) 
 +          * le protocole ICMP produit des messages de contrôle aidant à synchroniser le réseau. Un exemple de ceci est la commande ping. 
 +        * **TCP** ( Transmission Control Protocol ) 
 +          * le protocole TCP se trouve au niveau de la couche de Transport du modèle OSI et s'occupe de la transmission des données entre noeuds. 
 +        * **UDP** ( User Datagram Protocol ) 
 +          * le protocole UDP n'est pas orienté connexion. Il est utilisé pour la transmission rapide de messages entre nœuds sans garantir leur acheminement. 
 +        * **Telnet** 
 +          * le protocole Telnet est utilisé pour établir une connexion de terminal à distance. Il se trouve dans la couche d'Application du modèle OSI. 
 +        * **Ftp** ( File Transfer Protocol ) 
 +          * le protocole ftp est utilisé pour le transfert de fichiersIl se trouve dans la couche d'Application du modèle OSI. 
 +        * **SMTP** ( Simple Message Transfer Protocol ) 
 +          * le service SMTP est utilisé pour le transfert de courrier électronique. Il se trouve dans la couche d'Application du modèle OSI. 
 +        * **DNS** ( Domain Name Service ) 
 +          * le service DNS est utilisé pour le résolution de noms en adresses IP. Il se trouve dans la couche d'Application du modèle OSI. 
 +        * **SNMP** ( Simple Network Management Protocol ) 
 +          * le protocole SNMP est composé d'un agent et un gestionnaire. L'agent SNMP collecte des informations sur les périphériques, les configurations et les performances tandis que le gestionnaire SNMP reçois ses informations et réagit en conséquence. 
 +        * **NFS** ( Network File System ) 
 +          * le NFS a été mis au point par Sun Microsystems 
 +          * le NFS génère un lien virtuel entre les lecteurs et les disques durs permettant de monter dans un disque virtuel local un disque distant  
 +        * et aussi POP3, NNTP, IMAP etc ...
  
-====Commentaires====+<note tip> 
 +**[[https://www.i2tch.com/net/m11schema5.html|Cliquez ici pour voir les modèles TCP/IP et OSI]]** 
 +</note>
  
-Les commentaires **d'une ligne** sont précédés par le caractère **#** ou **- -**.+Le modèle TCP/IP est composé de 4 couches :
  
-Les commentaires sous plusieurs lignes sont entourés comme suit :+  * La couche d'Accès Réseau 
 +    * Cette couche spécifie la forme sous laquelle les données doivent être acheminées, quelque soit le type de réseau utilisé. 
 +  * La couche Internet 
 +    * Cette couche est chargée de fournir le paquet de données. 
 +  * La couche de Transport 
 +    * Cette couche assure l'acheminement des données et se charge des mécanismes permettant de connaître l'état de la transmission. 
 +  * La couche d'Application 
 +    * Cette couche englobe les applications standards de réseau telles ftp, telnet, ssh, etc..
  
-<code> +Les noms des Unités de Données sont différents selon le protocole utilisé et la couche du modèle TCP/IP :
-/+
-Ceci est +
-un commentaire +
-sur +
-plusieurs lignes +
-*/ +
-</code>+
  
-====Commandes====+^ Couche  ^ TCP ^ UDP ^ 
 +| Application | Stream | Message | 
 +| Transport | Segment | Packet| 
 +| Internet | Datagram| Datagram | 
 +| Réseau | Frame | Frame | 
  
-===SELECT===+====Les Raccordements====
  
-Obtenir un ensemble de données à partir d'une ou de plusieurs tables.+===Les Modes de Transmission===
  
-**Syntaxe**+On peut distinguer 3 modes de transmission :
  
-<code> +  * La **Liaison Simplex**, 
-SELECT [table.][colonne]|expression [AS nom][,[table.[colonne] +    * Les données ne circulent que dans un **seul** sens de l'émetteur ver le récepteur, 
-FROM nom-table [nom_table ...] +    * La liaison nécessite deux canaux de transmissions
-[WHERE condition [AND|OR condition ...] +  * La **Liaison Half-Duplex** aussi appelée la **Liaison à l'Alternat** ou encore la **Liaison Semi-Duplex**
-[GROUP BY [table.][colonne],[table].[colonne] ...] +    * Les données circulent dans un sens ou l'autre mais jamais dans les deux sens en même tempsChaque extrémité émet donc à son tour, 
-[ORDER BY [table.][colonne][Description],[table].[colonne] ...] +    * La liaison permet d'avoir une liaison bi-directionnelle qui utilise la totalité de la banse passante
-</code>+  * La **Liaison Full-Duplex** dans les deux sens en **même** tempsChaque extrémité peut émettre et recevoir simultanément, 
 +    * La liaison est caractérisée par une bande passante divisée par deux pour chaque sens des émissions.
  
-//Exemples//+===Les Câbles===
  
-  SELECT nom, prenom FROM familles ORDER BY nom+==Le Câble Coaxial==
  
-  SELECT nomprenom FROM familles GROUP BY ville+En partant de l'extérieurle câble coaxial est composé :
  
-===UPDATE===+  * d'une **Gaine** en caoutchouc, PVC ou Téflon pour protéger le câble, 
 +  * d'un **Blindage** en métal pour diminuer le bruit du aux parasites, 
 +  * d'un **Isolant** (diélectrique) pour éviter le contact entre le blindage et l'âme et ainsi éviter des courts-circuits, 
 +  * d'un **Âme** en cuivre ou torsadés pour transporter les données.
  
-Mettre à jour des données dans une table.+Avantages :
  
-**Syntaxe**+  * **Peux coûteux**, 
 +  * Facilement **manipulable**, 
 +  * Peut être utilisé pour de **longues distances**, 
 +  * A un débit de 10 Mbit/s dans un LAN et 100 Mbit/s dans un WAN.
  
-<code> +Inconvénients :
-UPDATE [LOW_PRIORITY][IGNORE] nom_table +
-SET colonne = expression +
-WHERE expression +
-ORDER BY expression +
-LIMIT valeur +
-</code>+
  
-^ Directive ^ Description ^ +  * Fragile, 
-| LOW_PRIORITY | L'opération se fera quand la table n'est pas utilisée par un client | +  * Instable, 
-| IGNORE | La mise à jour continue malgré des problèmes éventuels rencontrésLes enregistrements posant problème ne seront PAS mis à jour |+  * Vulnérable aux interférences, 
 +  * Half-Duplex.
  
-//Exemples//+==Le Câble Paire Torsadée==
  
-  UPDATE familles SET Adresse2='*******', nb_enfants=2;+Ce câble existe sous deux formes selon son utilisation :
  
-  UPDATE familles SET nb_enfants=8 ORDER BY Nom LIMIT 3;+  * **Monobrin** pour du câblage **horizontal** (**Capillaire**), 
 +    * chaque fil est composé d'un seul conducteur en cuivre, 
 +    * la distance ne doit pas dépassée 90m.
  
-===DELETE FROM===+  * **Multibrin** pour des **cordons de brassage** : 
 +    * chaque fil est composé de plusieurs brins en cuivre, 
 +    * câble souple.
  
-Supprimer des enregistrements d'une table.+Avantages :
  
-**Syntaxe**+  Un débit de 10 Mbit/s à 10 GBit/s, 
 +  A une bande passante plus large, 
 +  Pas d'interruption par coupure du câble, 
 +  Permet le **câblage universel** (téléphonie, fax, données ...), 
 +  * Full-Duplex.
  
-<code> +Inconvénients :
-DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM nom_table +
-       [WHERE where_definition] +
-       [ORDER BY ...] +
-       [LIMIT row_count] +
-</code>+
  
-//Exemple//+  * Nombre de câbles > câble coaxial, 
 +  * Plus cher, 
 +  * Plus encombrant dans les gaines techniques.
  
-  DELETE FROM familles WHERE Nom Durant;+== Catagories de Blindage==
  
-===DROP TABLE===+Il existe trois catagories de blindage :
  
-**Syntaxe**+  * **Twisted** ou Torsadé, 
 +  * **Foiled** ou Entouré, 
 +  * **Shielded** ou Avec Ecran.
  
-<code> +De ce fait, il existe 5 catagories de câbles Paire Torsadée :
-DROP DATABASE [IF EXISTS] db_name +
-</code>+
  
-Supprimer une table d'une base de données.+Nom anglais ^ Appelation Ancienne ^ Nouvelle Appelation ^  
 +|  Unshielded Twisted Pair | UTP | U/UTP | 
 +|  Foiled Twisted Pair | FTP | F/UTP | 
 +|  Shield Twisted Pair | STP | S/UTP | 
 +|  Shield Foiled Twisted Pair | SFTP | SF/UTP | 
 +|  Shield Shield Twisted Pair | S/STP | SS/STP3 |
  
-//Exemple//+Ces catégories donnent lieu à des **Classes** :
  
-  DROP TABLE Test;+^ Classe ^ Débit ^ Nombre de Paires Torsadées ^ Connecteur ^ Commentaires ^ 
 +| 3 | 10 Mbit/s | 4 | RJ11 | | Téléphonie Analogique et Numérique  
 +| 4 | 16 Mbit/s | 4 | S/O | Non-utilisée de nos jours | 
 +| 5 | 100 Mbit/s | 4 | RJ45 | Obsolète | 
 +| 5e/D | 1 Gbit/s sur 100m | 4 | RJ45 | S/O |  
 +| 6/E | 2.5 Gbit/s sur 100m ou 10 Gbit/s sur 25m à 55m | 4 | Idéal pour PoE | 
 +| 7/F | 10 Gbit/s sur 100m | 4 | GG45 ou Tera | Paires individuellement et collectivement blindées. Problème de compatibilité avec les classes precédentes due au connecteur. |
  
-===INSERT===+==La Prise RJ45==
  
-**Syntaxe**+Une prise RJ45 comporte 8 broches. Un câble peut être **droit** quand la broche 1 d'une extremité est connectée à la broche 1 de la prise RJ45 à l'autre extrémité, la broche 2 d'une extremité est connectée à la broche 2 de la prise RJ45 à l'autre extrémité et ainsi de suite ou bien **croisé** quand le brochage est inversé.
  
-<code> +Les câbles croisés sont utilisés lors du branchement de deux équipements identiques (PC à PC, Hub à Hub, Routeur à Routeur). 
-INSERT [LOW_PRIORITY] | [DELAYED] [IGNORE] +
-[INTO] nom_table [(nom_colonne ...)] +
-VALUES ((expression | DEFAULT) ...) , (...) +
-</code>+
  
-ou+==Channel Link et Basic Link==
  
-<code> +Le **Channel Link** ou **Canal** est l'ensemble du **Basic Link** ou **Lien** de base et les cordons de brassage et de raccordement des équipements qui sont limités en distance à 10m
-INSERT [LOW_PRIORITY] | [DELAYED] [IGNORE] +
-[INTO] nom_table [(nom_colonne ...)] +
-SELECT ... +
-</code>+
  
-^ Directive ^ Description ^ +Le **Basic Link** est le lien entre la prise RJ45 murale et la baie de brassage. Il est limité à 90m en classe 5D.
-| LOW_PRIORITY | L'opération se fera quand la table n'est pas utilisée par un client | +
-| DELAYED | Permet à un client d'utiliser la table sans attendre la fin de l'opération | +
-| IGNORE | La mise à jour continue malgré des problèmes éventuels rencontrésLes enregistrements posant problème ne seront PAS mis à jour |+
  
 +===La Fibre Optique===
  
-**INSERT VALUES**+La **Fibre Optique** est un fil de **Silice** permettant le transfert de la lumière. De ce fait elle est caractérisée par :
  
-Insérer des valeurs dans une table.+  * des meilleures performances que le cuivre, 
 +  * de plus de communications simultanément, 
 +  * de la capacité de relier de plus grandes distances, 
 +  * une insensibilité aux perturbations, 
 +  * une résistance à la corrosion.
  
-//Exemple//+Qui plus est, elle ne produit aucune perturbation.
  
-  INSERT INTO familles (Nom, Prenom) VALUES ('Smith', 'John');+Elle est composée :
  
-**INSERT SELECT**+  d'un coeur de 10, de 50/125 ou de 62.50 micron, 
 +  d'une gaine de 125 micron, 
 +  d'une protection de 230 micron.
  
-Insérer des valeurs en provenance d'une autre table dans la table cible.+Il existe deux types de fibres, la **Fibre Monomode** et la **Fibre Multimodes**.
  
-//Exemple//+La Fibre Monomode :
  
-  INSERT INTO familles (Prenom) SELECT enfants.prenom FROM enfants;+  * a un coeur de 8 à 10 Microns, 
 +  * est divisée en sous-catégories de distance, 
 +    * 10 Km, 
 +    * 15 Km,  
 +    * 20 Km, 
 +    * 50 Km, 
 +    * 80 Km, 
 +    * 100 Km.
  
-===ALTER===+La Fibre Multimode :
  
-Ajoutersupprimer ou modifier une colonneindex ou nom de table.+  * a un coeur de 62,50 micron ou de 50/125 micron avec une gaine orange, 
 +  * permet plusieurs trajets lumineux appelés **modes** en même temps en Full Duplex, 
 +  * est utilisée pour de bas débits ou de courtes distances, 
 +    * 2 Km pour 100 Mbit/s, 
 +    * 500 m pour 1 Gbit/s.
  
 +===Les Réseaux sans Fils===
  
-**ALTER ADD**+Les réseaux sans fils sans basés sur une liaison qui utilise des ondes radio-électriques (radio et infra-rouges).
  
-^ Commande ^ Description ^ +Il existe des technologies différentes en fonction de la fréquence utilisée et de la portée des transmissions :
-| ADD [COLUMN] | Ajouter un champ | +
-| ADD INDEX | Ajouter un index  | +
-| ADD PRIMARY KEY | Ajouter une clef primaire | +
-| ADD UNIQUE | Ajouter un index unique +
-| ADD FULLTEXT | Ajouter une recherche texte entier | +
-  +
-//Exemples//+
  
-  ALTER TABLE familles ADD Sports VARCHAR(50) NOT NULL;+  * Réseaux Personnels sans Fils - Bluetooth, HomeRF, 
 +  * Réseaux Locaux sans Fils - LiFI, WiFI, 
 +  * Réseaux Métropolitains sans Fil - wImax, 
 +  * Réseaux Etendus sans Fils - GSM, GPRS, UMTS.
  
-  ALTER TABLE familles ADD INDEX (Sports);+Les principales ondes utilisées pour la transmission des données sont :
  
 +  * Ondes GSM  - Ondes Hertziennes repeosant sur des micro-ondes à basse fréquence avec une portée d'une dizaine de kilomètres,
 +  * Ondes Wi-Fi - Ondes Hertziennes reposant sur des micro-ondes à haute fréquence avec une portée de 20 à 50 mètres,
 +  * Ondes Satellitaires - Ondes Hertziennes longues portées.
  
-**ALTER CHANGE**+===Le Courant Porteur en Ligne===
  
-Permet de modifier le nom ou le type d'une colonne.+Le CPL utilise le réseau électrique domestique, le réseau moyenne et basse tension pour transmettre des informations numériques.
  
-//Exemple//+Le CPL superpose un signal à plus haute fréquence au signal électrique.
  
-  ALTER TABLE familles CHANGE PrenomPere Prenom_Pere VARCHAR(45) NOT NULL;+Seuls donc, les fils conducteurs transportent les signaux CPL.
  
-**ALTER DROP**+Le coupleur intégré en entrée des boîtiers CPL élimine les composants basses fréquences pour isoler le signal CPL.
  
-^ Commande ^ Description ^ +Le CPL utilise la phase électrique et le neutre. De ce fait, une installation triphasée fournit 3 réseaux CPL différents.
-| DROP [COLUMN] | Supprimer un champ | +
-| DROP INDEX | Supprimer un index  | +
-| DROP PRIMARY KEY | Supprimer une clef primaire |+
  
-//Exemple//+Le signal CPL ne s'arrête pas necéssairement aux limites de l'installation électrique. En effet en cas de compteurs non-numériques le signal les traversent.
  
-  ALTER TABLE familles DROP Sports;+Les normes CPL sont :
  
-**ALTER KEYS**+^ Norme ^ Débit Théorique ^ Débit Pratique ^ Temps pour copier 1 Go ^ 
 +| Homeplug 1.01 | 14 Mbps | 5.4 Mbps | 25m 20s | 
 +| Homeplug 1.1 | 85 Mbps | 12 Mbps | 11m 20s | 
 +| PréUPA 200 | 200 Mbps | 30 Mbps | 4m 30s |
  
-Permet de désactiver la clef primaire momentanément.+===Technologies===
  
-//Exemples//+Il existe plusieurs technologies de réseau : 
  
-  ALTER TABLE familles DISABLE KEYS;+  * Ethernet, 
 +  * Token-Ring, 
 +  * ARCnet, 
 +  * etc..
  
-  ALTER TABLE familles ENABLE KEYS;+Nous détaillerons ici les deux technologies les plus répandues, à savoir Ethernet et Token-Ring.
  
 +==Ethernet==
  
-**ALTER RENAME**+La technologie Ethernet se repose sur :
  
-Permet de renommer une table.+  * une topologie logique de bus, 
 +  * une topologie physique de bus ou étoile.
  
-//Exemple//+L'accès au bus utilise le **CSMA/CD**, Carrier Sense Multiple Access Collision Detection (Accès Multiple à Détection de Porteuse Détection de Collisions). 
  
-  ALTER TABLE enfants RENAME familles_enfants;+Il faut noter que :
  
 +  * les données sont transmises à chaque nœud - c'est la méthode d'**accès multiple**,
 +  * chaque nœud qui veut émettre écoute le réseau - c'est la **détection de porteuse**,
 +  * quand le réseau est silencieux une trame est émise dans laquelle se trouvent les données ainsi que l'adresse du destinataire,
 +  * le système est dit donc **aléatoire** ou **non-déterministe**,
 +  * quand deux nœuds émettent en même temps, il y a **collision de données**,
 +  * les deux nœuds vont donc cesser d'émettre, se mettant en attente jusqu'à ce qu'ils commencent à émettre de nouveau.
  
-**ALTER ORDER BY**+==Token-Ring==
  
-Permet de reclasser physiquement une table.+La technologie Token-Ring se repose sur :
  
-//Exemple//+  * une topologie logique en anneau, 
 +  * une topologie physique en étoile.
  
-  ALTER TABLE familles ORDER BY Prenom_Pere;+Token-Ring se traduit par **Anneau à Jeton**. Il n'est pas aussi répandu que l'Ethernet pour des raisons de coûts. En effet le rajout d'un nœud en Token-Ring peut coûter jusqu'à **4 fois plus cher qu'en Ethernet**.
  
 +Il faut noter que :
  
-===MATCH===+  * les données sont transmises dans le réseau par un système appelé **méthode de passage de jeton**, 
 +  * le jeton est une **trame numérique vide** de données qui tourne en permanence dans l'anneau, 
 +  * quand un nœud souhaite émettre, il saisit le jeton, y dépose des données avec l'adresse du destinataire et ensuite laisse poursuivre son chemin jusqu'à sa destination, 
 +  * pendant son voyage, aucun autre nœud ne peut émettre, 
 +  * une fois arrivé à sa destination, le jeton dépose ses données et retourne à l'émetteur pour confirmer la livraison, 
 +  * ce système est appelé **déterministe**.
  
-Permet la recherche d'un mot, d'une phrase ou d'une expression sur un **texte entier**+L'intérêt de la technologie Token-Ring se trouve dans le fait :
  
-//Exemple//+  * qu'il **évite des collisions**, 
 +  * qu'il est **possible de déterminer avec exactitude le temps que prenne l'acheminement des données**.
  
-  SELECT * FROM familles WHERE MATCH (Commentaire) AGAINST ('fleuve');+La technologie Token-Ring est donc idéale, voire obligatoire, dans des installations où chaque nœud doit disposer d'une opportunité à intervalle fixe d'émettre des données.
  
-====Opérateurs====+====Périphériques Réseaux Spéciaux====
  
-===Mathémathiques===+En plus du câblage, les périphériques de réseau spéciaux sont des éléments primordiaux tant au niveau de la topologie physique que la topologie logique.
  
-^ Nom ^ Description ^ +Les périphériques de réseau spéciaux sont :
-| + | Addition | +
-| - | Soustraction +
-| * | Multiplication | +
-| / | Division +
-| () | Le calcul entre parenthèses est effectué en priorité |+
  
-===Logiques===+  * les Concentrateurs ou //Hubs//, 
 +  * les Répéteurs ou //Repeaters//, 
 +  * les Ponts ou //Bridges//, 
 +  * les Commutateurs ou //Switches//, 
 +  * les Routeurs ou //Routers//, 
 +  * les Passerelles ou //Gateways//.
  
-^ Nom ^ Description ^ +L'objectif ici est de vous permettre de comprendre le rôle de chaque périphérique.
-| ! | NON | +
-| %%||%% | OU  | +
-| && | ET | +
-| XOR | XOR exclusif  |+
  
 +===Les Concentrateurs===
  
-===Comparaison===+Les Concentrateurs permettent une connectivité entre les nœuds en topologie en étoile. Selon leur configuration, la topologie logique peut être en étoile, en bus ou en anneau. Il existe de multiples types de Concentrateurs allant du plus simple au Concentrateur intelligent.
  
-^ Nom ^ Description ^ +  * **Le Concentrateur Simple**  
-| = | Egal | +    * est une boîte de raccordement centrale, 
-| != ou <>| Non égal  | +    * joue le rôle de récepteur et du réémetteur des signaux sans accélération ni gestion de ceux-ci, 
-| < | Inférieur | +    * est un périphérique utilisé pour des groupes de travail.
-| < = | Inférieur ou égal  | +
-| > | Supérieur | +
-| > =| Supérieur ou égal  | +
-| < = > | Egal gérant la nullité | +
-| IS NULL | Nullité +
-| IS NOT NULL | Non nullité  |+
  
-====Fonctions====+  * **Le Concentrateur Évolué**  
 +    * est un Concentrateur simple qui offre en plus l'amplification des signaux, la gestion du type de topologie logique grâce à des capacités d'être configurés à l'aide d'un logiciel ainsi que l'homogénéisation du réseau en offrant des ports pour un câblage différent. Par exemple, 8 ports en paire torsadée non-blindée et un port BNC.
  
-===Mathémathiques===+  * **Le Concentrateur Intelligent** 
 +    * est un Concentrateur évolué qui offre en plus la détection automatique des pannes, la connectique avec un Pont ou un Routeur ainsi que le diagnostic et la génération de rapports.
  
-^ Nom ^ Description ^ +===Les Répéteurs===
-| ABS(nbr) | Valeur absolue de nbr| +
-| SIGN(nbr)| -1 0 ou 1 en fonctionne du signe de nbr  | +
-| MOD(nbr1, nbr2) | Indique le reste de la division de nbr1 par nbr2 | +
-| FLOOR(nbr) | Indique le plus grande nombre entier inférieur à nbr | +
-| CEILING(nbr) | Indique la plus petite valeur entière supérieure à nbr | +
-| ROUND(nbr)| Indique l'arrondi entier le plus proche de nbr | +
-| ROUND(nbr,D) | Indique l'arrondi à D décimales plus plus proche de nbr | +
-| EXP(nbr) | Indique l'exponentielle de nbr  | +
-| POW(nbr,nbr2) | indique nbr à la puissance nbr2  | +
-| SQRT(nbr) | Indique la racine carrée de nbr | +
-| PI()| Indique la valeur de PI  | +
-| COS(nbr) | Indique le cosinus de nbr | +
-| ACOS(nbr) | Indique l'arc cosinus de nbr | +
-| SIN(nbr) | Indique le sinus de nbr  | +
-| ASIN(nbr) | Indique l'arc sinus de nbr | +
-| TAN(nbr)| Indique le tangent de nbr  | +
-| ATAN(nbr) | Indique l'arc tangent de nbr | +
-| COT(nbr) | Indique la cotangente de nbr  | +
-| RAND() | Indique une valeur en virgule flottante entre 0 et 1.0 | +
-| RAND(nbr) | Indique une valeur en virgule flottante entre 0 et 1.0. La valeur de nbr indique la limite haute | +
-| LEAST(nbr1, nbr2 ...)| Indique le plus petit des nombres nbr1 à nbrX  | +
-| GREATEST(nbr1, nbr2 ...) | Indique le plus grand des nombres nbr1 à nbrX | +
-| DEGREES(nbr) | Convertit nbr de gradiants vers degrés | +
-| RADIANS(nbr) | Convertit nbr de degrés vers gradiants | +
-| TRUNCATE(nbr,D) | Indique nbr tronqué à D décimales  |+
  
-===Chaînes===+Un Répéteur est un périphérique réseau simple. Il est utilisé pour amplifier le signal quand :
  
-^ Nom ^ Description ^ +  * la longueur du câble dépasse la limite autorisée, 
-| LIKE | Effectue une comparaison en fonction d'un motif  +  le câble passe par une zone ou les interférences sont importantes.
-| NOT LIKE | L'inverse de LIKE  | +
-| _ | Remplace un caractère dans le motif d'une chaîne   | +
-| % | Remplace un ou plusieurs caractère(s) dans le motif d'une chaîne +
-| \ | Caractère d'échappement +
-| BINARY| Rend la comparaison avec un motif sensible à la casse  | +
-| STRCMP(chaîne1, chaîne2) | Compare deux chaînesRetourne -1 si chaîne 1 < chaîne 2. Retourne 0 si chaîne 1 = chaîne 2. Retourne 1 si chaîne 1 > chaîne 2.  | +
-| MATCH | Utilisé pour des recherches de texte intégral   | +
-| UPPER('chaîne') | Transforme les minuscules en majuscules   | +
-| LOWER('chaîne') | Transforme les majuscules en majuscules  |+
  
-===Dates===+Éventuellement, et uniquement dans le cas où le Répéteur serait muni d'une telle fonction, celui-ci peut être utiliser pour connecter deux réseaux ayant un câblage différent.
  
-^ Nom ^ Description ^ +===Les Ponts===
-| NOW() | Retourne la date au format 'AAAA-MM-JJ HH:MM:SS' +
-| DATE_FORMAT(date,format)| Retourne la date selon le format spécifié   | +
-| DAYOFWEEK(date) | Retourne un chiffre qui représente le jour de la semaine ( 1 pour dimanche, 7 pour samedi )  | +
-| WEEKDAY(date) | Retourne un chiffre qui représente le jour de la semaine ( 7 pour dimanche, 0 pour lundi )  | +
-| DAYOFMONTH(date) | Retourne un chiffre de 1 à 31   | +
-| DAYOFYEAR(date)| Retourne un chiffre de 1 à 366   | +
-| MONTH(date) | Retourne un chiffre de 1 à 12   | +
-| DAYNAME(date) | Retourne le nom du jour ( lundi, mardi ... )   | +
-| MONTHNAME(date) | Retourne le nom du mois   | +
-| QUARTER(date) | Retourne un chiffre de 1 à 4 ( 1 premier trimestre de l'année )  | +
-| WEEK(date [,depart] | Retourne une valeur de 1 à 52. La valeur de //depart// peut être 0 ou 1. Dans le cas de 0, le dimanche est considéré comme le premier jour de la semaine. Dans le cas de 1, c'est le lundi.   | +
-| YEAR(date) | Retourne un chiffre de 1000 à 9999  | +
-| HOUR(date) | Retourne l'heure +
-| MINUTE(date) | Retourne les minutes   | +
-| SECOND(date) | Retourne les secondes +
-| TO_DAYS(date)| Retourne le nombre de jours écoulés depuis le début de l'an 0   | +
-| FROM_DAYS(date) | Retourne la date à partir d'un nombre de jours écoulés depuis le début de l'an 0  | +
-| CURDATE() | Retourne la date courante au format AAAA-MM-JJ +
-| CURRENT_DATE() | Retourne la date courante au format AAAA-MM-JJ +
-| CURTIME()| Retourne la date courante au format HH:MM:SS +
-| CURRENT_TIME() | Retourne la date courante au format HH:MM:SS +
-| UNIX_TIMESTAMP([date]) | Retourne le nombre de secondes depuis la date 1970-01-01 00:00:00 +
-| FROM_UNIXTIME(unix_timestamp[,format]) | Retourne la date en fonction d'un nombre de secondes depuis la date 1970-01-01 00:00:00  |+
  
-==Motifs==+Un Pont est **Répéteur intelligent**. Outre sa capacité d'amplifier les signaux, le Pont analyse le trafic qui passe par lui et met à jour une liste d'adresses des cartes réseau, appelée **une table de routage**, n'autorisant que les transmissions destinées à d'autres segments du réseau. 
  
-^ Nom ^ Description ^ Exemple ^ +Les **diffusions** sont néanmoins autorisées.
-| %M | Le mois  | janvier +
-| %W | Le jour de la semaine  | lundi  | +
-| %D | La date du mois  | 1st  | +
-| %Y | L'année  | 2009  | +
-| %y | L'année  | 09  | +
-| %a | L'abréviation du jour  | lun  | +
-| %d | Le jour du mois  | 01  | +
-| %m | Le numéro du mois  | 01  | +
-| %b | L'abréviation du mois  | lun  | +
-| %j | Le jour de l'année  | 031  | +
-| %H | L'heure  | 00  | +
-| %h | L'heure  | 12  | +
-| %i | Les minutes  | 05  | +
-| %r | L'heure au format américain  | 11:01:00 PM   | +
-| %T | L'heure au format 24 heures  | 23:01:00   | +
-| %S | Les secondes  | 06  | +
-| %p | AM ou PM  | PM  | +
-| %w | Le numéro du jour de la semaine  | 0 //(=dimanche)//   | +
-| %U | Le numéro de la semaine avec le début de la semaine étant un dimanche  | 03  | +
-| %u | Le numéro de la semaine avec le début de la semaine étant un lundi  | 02  |+
  
-Par exemple :+Comme un Pont doit être intelligent, on utilise souvent un micro-ordinateur comme Pont. Forcément équipé de 2 cartes réseau, le Pont peut également jouer le rôle de serveur de fichiers.
  
-<code> +Le Pont sert donc à isoler des segments du réseau pour des raisons de :
-mysql> select DATE_FORMAT(now(), '%W %d %M %Y'); +
-+-----------------------------------+ +
-| DATE_FORMAT(now(), '%W %d %M %Y') | +
-+-----------------------------------+ +
-| Friday 19 October 2012            | +
-+-----------------------------------+ +
-1 row in set (0.00 sec)+
  
-mysql>  +  * **sécurité** afin d'éviter à ce que des données sensibles soient propagées sur tout le réseau, 
-</code>+  * **performance** afin qu'une partie du réseau trop chargée ralentisse le réseau entier, 
 +  * **fiabilité** afin par exemple qu'une carte en panne ne gène pas le reste du réseau avec une diffusion.
  
-===Contrôle===+Il existe trois types de configuration de Ponts
  
-^ Nom ^ Description ^ +==Le Pont de Base==
-| IF(exp1, exp2, exp3) | Si exp1 est vrai, exp2 est retournée sinon exp3 est retournée +
-| IFNULL(exp1,exp2)| Si exp1 est NULL, exp2 est retournée sinon exp1 est retournée   | +
-| NULLIF(exp1,exp2) | Si exp1 exp2, NULL est retournée sinon exp1 est retournée +
-| CASE value WHEN comp1 THEN res1 [WHEN comp2 THEN res2][ELSE elseres] END | La fonction compare //value// à comp1 ( comp2 ... ). Si une égalité est trouvée, res1 ( res2 ... ) est retournée. Si aucune égalité n'est trouvée, elseres est retournée  |+
  
-===Agrégation===+Le Pont de Base est utilisé très rarement pour isoler deux segments.
  
-^ Nom ^ Description ^ +;#;{{:solaris:sol2:pont1.png|}};#;
-| AVG(colonne) | Moyenne de la colonne +
-| COUNT(items)| Le nombre de valeurs non nulles de la colonne   | +
-| MIN(colonne) | Valeur minimum de la colonne +
-| MAX(colonne) | Valeur maximum de la colonne +
-| STD(colonne) | Écart type des valeurs de la colonne +
-| SUM(colonne) | Somme des valeurs de la colonne +
-| BIT_OR(colonne) | Ou logique effectué sur les valeurs de la colonne | +
-| BIT_AND(colonne) | ET logique effectué sur les valeurs de la colonne   |+
  
-===Autres===+==Le Pont en Cascade==
  
-^ Nom ^ Description ^ +Le Pont en Cascade est à éviter car les données en provenance d'un segment doivent passer par plusieurs Ponts. Ceci a pour conséquence de ralentir la transmission des données, voire même de créer un trafic superflu en cas de rémission par le nœud
-| CAST(expression) CONVERT(expression) | Convertit l'expression vers le type demandé - //BINARY, DATE, DATETIME, SIGNED, TIME, UNSIGNED// | +
-| LAST_INSERT_ID()| Retourne la valeur d'une colonne //AUTO_INCREMENT// lors du dernier //insertion//   | +
-| VERSION() | La version du serveur %%MySQL%% +
-| CONNECTION_ID() | L'identifiant du thread de la connexion courante   | +
-| DATABASE() | La base de données courante   | +
-| USER() | L'utilisateur courant   | +
-| PASSWORD(chaîne) | Encrypte un mot de passe  | +
-| ENCRYPT(chaîne, [,force]) | Encrypte un mot de passe avec la fonction //crypt// d'Unix   | +
-| ENCODE(chaîne,mdp) | Encode la chaîne avec le mot de passe //mdp// +
-| DECODE(chaîne,mdp) | Décode la chaîne avec le mot de passe //mdp// +
-| MD5(chaîne) | Retourne une chaîne encodée à la norme MD5  | +
-| SHA1() | Retourne une chaîne encodée à la norme SHA1   |+
  
 +;#;{{:solaris:sol2:pont2.png|}};#;
  
-=====Types de Champs=====+==Le Pont en Dorsale==
  
-====Nombres entiers====+Le Pont en Dorsale coûte plus chère que la configuration précédente car il faut un nombre de Ponts équivalent au nombre de segments + 1. Par contre elle réduit les problèmes précédemment cités puisque les données ne transitent que par deux Ponts.
  
-^ Type ^ Intervalle ^ Taille en octets ^ Description ^ +;#;{{:solaris:sol2:pont3.png|}};#;
-| TINYINT[(M)]  | -127 à 128 | 1 | Entiers très courts +
-| TINYINT[(M)] UNSIGNED  | 0 à 255 | 1 | Entiers très courts +
-| SMALLINT[(M)]  | -32 768 à 32 767 | 2 | Entiers courts +
-| SMALLINT[(M)] UNSIGNED  | 0 à 65 535 | 2 | Entiers courts +
-| MEDIUMINT[(M)]  | - 8 388 608 à 8 388 607 | 3 | Entiers de taille moyenne +
-| MEDIUMINT[(M)] UNSIGNED  | 0 16 777 215 | 3 | Entiers de taille moyenne +
-| INT[(M)]  | -2<sup>31</sup> à 2<sup>31</sup> - 1 | 4 | Entiers +
-| INT[(M)] UNSIGNED  | 0 à 2<sup>32</sup> - 1 | 4 | Entiers +
-| INTEGER[(M)]  | - | - | Synonyme de INT  | +
-| BIGINT[(M)]  | -2<sup>63</sup> à 2<sup>63</sup> - 1 | 8 | Entiers larges +
-| BIGINT[(M)] UNSIGNED  | 0 à 2<sup>64</sup> - 1 | 8 | Entiers larges  |+
  
 +===Les Commutateurs===
  
-====Nombres à virgule flottante====+Un Commutateur peut être considéré comme un Concentrateur intelligent et un Pont. Ils sont gérés souvent par des logiciels. La topologie physique d'un réseau commuté est en étoile. Par contre la topologie logique est spéciale, elle s'appelle une topologie commutée.
  
-^ Type ^ Intervalle ^ Taille en octets ^ Description ^ +Lors de la communication de données entre deux nœuds, le Commutateur ouvre une connexion temporaire virtuelle en fermant les autres ports. De cette façon la bande passante totale est disponible pour cette transmission et les risques de collision sont minimisés.
-| FLOAT(precision)  | Varie selon //precision// | Varie | < =24 pour un nombre en simple précision ou >24 et < =53 pour un nombre ne double précision +
-| FLOAT[(M,D)]  | + ou - 1.175494351E-38 à + ou - 3.402823466E+38 | 4 | Simple précision +
-| DOUBLE[(M,D)]  | + ou - 1.7976931348623157E+308 à + ou - 2.2250738585072014E-308 | 8 | Double précision +
-| DOUBLEPRECISION[(M,D)]  | - | - | Synonyme de DOUBLE[(M,D)] +
-| REAL[(M,D)]  | - | - | Synonyme de DOUBLE[(M,D)] +
-| DECIMAL[(M[,D])]  | Varie | M +2 | Nombre à virgule flottante +
-| NUMERIC  | - | - | Synonyme de DECIMAL  |+
  
-====Dates et Heures====+Certains Commutateurs haut de gamme sont équipés d'un système anti-catastrophe qui leur permet d'isoler une partie d'un réseau en panne afin que les autres parties puissent continuer à fonctionner sans problème.
  
-^ Type ^ Intervalle ^ +===Les Routeurs===
-| DATE  | 1000-01-01 à 9999-12-31 | +
-| TIME  | -838:59:59 à 838:59:59 | +
-| DATETIME  | 1000-01-01 00:00:00 à 9999-12-31 23:59:59 | +
-| TIMESTAMP[(M)]  | Voir tableau ci-dessous | +
-| YEAR[(2)]  | 70 à 69 (1970 à 2069) | +
-| YEAR[(4)]  | 1901 à 2155 |+
  
-===Types de données TIMESTAMP===+Un Routeur est un Pont sophistiqué capable : 
  
-^ Type ^ Affichage ^ +  * d'assurer l'interconnexion entre des segments, 
-| TIMESTAMP  | YYYYMMDDHHMMSS  | +  * de filtrer le trafic, 
-| TIMESTAMP(14)  | YYYYMMDDHHMMSS  | +  * d’isoler une partie du réseau, 
-| TIMESTAMP(12)  | YYMMDDHHMMSS +  * d’ explorer les informations d'adressage pour trouver le chemin le plus approprié et le plus rentable pour la transmission des données.
-| TIMESTAMP(10)  | YYMMDDHHMM +
-| TIMESTAMP(8)  | YYYYMMDD +
-| TIMESTAMP(6)  | YYMMDD +
-| TIMESTAMP(4)  | YYMM  | +
-| TIMESTAMP(2)  | YY  |+
  
-====Chaînes====+Les Routeurs utilisent une table de routage pour stocker les informations sur : 
 +  
 +  * les adresses du réseau, 
 +  * les solutions de connexion vers d'autres réseaux, 
 +  * l'efficacité des différentes routes.
  
-^ Type ^ Longeur ^ Description ^ +Il existe deux types de Routeur :
-| CHAR(M)  | 1 à 255 | Chaîne de longueur fixe où M varie entre 1 et 255 | +
-| VARCHAR(M) | 1 à 255 | Chaîne de longueur variable où M varie entre 1 et 255 |+
  
-====TEXT et BLOB====+  * le **Routeur Statique**  
 +    * la table de routage est éditer manuellement, 
 +    * les routes empruntées pour la transmission des données sont toujours les mêmes, 
 +    * il n'y a pas de recherche d'efficacité.
  
-  * **TEXT**, +  * le **Routeur Dynamique**  
-    * TEXT respecte la casse des données, +    * découvre automatiquement les routes à emprunter dans un réseau.
-  * **BLOB** (Binary Large OBject), +
-    * BLOB permet de stocker toute information binaire telle une image ou un son.+
  
-^ Type ^ Longueur Maximale en caractères ^ Description ^ +===Les Passerelles===
-| TINYBLOB  | 255 | Objet binaire court  | +
-| TINYTEXT  | 255 | Texte court  | +
-| BLOB  | 65 535 | Objet binaire de taille normale +
-| TEXT  | 65 535 | Texte de taille normale +
-| MEDIUM BLOB  | 16 777 215 | Objet binaire de taille moyenne | +
-| MEDIUM TEXT  | 16 777 215 | Texte de taille moyenne | +
-| LONG BLOB  | 4 294 967 295 | Objet binaire de grande taille | +
-| LONG TEXT  | 4 294 967 295 | Texte de grande taille |+
  
-====ENUM et SET====+Ce périphérique, souvent un logiciel, sert à faire une conversion de données :
  
-  * **ENUM**+  * entre deux technologies différentes ( Ethernet - Token-Ring )
-    permet de prendre une valeur ou NULL parmi une liste de valeurs prédéfinies à la création de la colonne+  entre deux protocoles différents
-  * **SET** +  * entre des formats de données différents.
-    * permet de prendre un maximum de 64 valeurs ou NULL parmi une liste de valeurs prédéfinies à la création de la colonne,+
  
-^ Type ^ Maximum des valeurs dans l'ensemble ^ Description ^ +=====Comprendre TCP Version 4=====
-| ENUM('valeur1','valeur2',...)  | 65 535 | Les valeurs de ce type ne peuvent contenir qu'une seule des valeurs de la liste ou NULL  | +
-| SET('valeur1','valeur2',...) | 64 | Les valeurs de ce type ne peuvent contenir un ensemble des valeurs de la liste ou NULL   |+
  
-=====Types de Moteurs de Stockage=====+==== En-tête TCP ====
  
-Le type de moteur est spécifié lors de la création de la table. Le moteur d'une table existant peut être modifié avec la commande **ALTER TABLE**. Les différents types **principaux** sont résumés ci-après :+L'en-tête TCP est codée sur 4 octets soit 32 bits 
  
-Type de Moteur  Description +1er octet ^ 2ème octet ^ 3ème octet 4 ème octet 
-%%InnoDB%% Le format par défaut. Supportent les transactions  sécurisées avec **[[http://www.manuelphp.com/mysql/commit.php|COMMIT]]** et **[[http://www.manuelphp.com/mysql/commit.php|ROLLBACK]]**. Permet de verrouiller des enregistrements un-à-un au lieu de la table entière. +  Port source   ||   Port destination   || 
-%%MyISAM%% Données stockées dans un fichier .MYD. Index stockés dans un fichier .MYI. Structure da la table stockée dans un fichier .frm | +  Numéro de séquence   |||| 
-MEMORY Anciennement connues sous le nom HEAP. Les données sont stockées en mémoire tandis que la structure de la table est stockée sur disque dans un fichier .frm. Ne supportent pas les champs TEXT, BLOB. Ne supportent pas l'attribut AUTO_INCREMENT. Utilisé pour augmenter la vitesse de traitement d'une requête. +|   Numéro d'acquittement   |||
-ARCHIVE Ne supportent que des requêtes de lecture et d'insertion. Utilisé pour stocker des données des journaux d'application. Structure stockée dans un fichier .frm. Données stockées dans un fichier .ARZ. Métadonnées sont stockées dans un fichier .ARM +  Offset  |  Flags  |  Fenêtre   || 
-CSV Données sont stockées dans un fichier texte au format CSV. Utilisé pour échanger des données avec d'autres applications. Structure stockée dans un fichier .frm. Données stockées dans un fichier .CSV. + Checksum  ||  Pointeur Urgent  || 
-FEDERATED Ne stocke pas de données. Extrait des données de tables en provenance de bases sur des serveurs distants. |+ Options  |||  Padding 
 +|  Données  ||||
  
-Bien que possible techniquement, il n'est pas préférable d'utiliser des types de moteurs différents dans la même base de données car ceci complique la tâche d'optimisation, augmente le nombre de buffers et de caches et complexifie le travail de l'administrateur.+Vous noterez que les numéros de ports sont codés sur 16 bits. Cette information nous permet de calculer le nombres de ports maximum en IPv4, soit 2<sup>16</sup> ports ou 65 535.
  
-Le choix d'un moteur de stockage se fait en fonction de l'adéquation entre les besoins et les caractéristiques suivants :+L'**Offset** contient la taille de l'en-tête.
  
-^ Moteur ^ Verrous ^ Transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** ^ **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** ^ Clef Etrangère ^ Données sur Disque ^ Sauvegarde à Chaud ^ **[[http://www.manuelphp.com/mysql/commit.php|COMMIT]]** ^ **[[http://www.manuelphp.com/mysql/commit.php|ROLLBACK]]** ^ Crash Recovery ^ +Les **Flags** sont :
-| InnoDB | Enregistrement | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | +
-| MyISAM | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| Memory | Table | Non | Non | Non | Non | Non | Non | Non | Non | +
-| Archive | Enregistrement | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| CSV | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| Federated | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| NDB Cluster | Enregistrement | Oui | Non | Oui | Oui | Oui | Oui | Oui | Oui |+
  
-=====Caractéristiques des Moteurs=====+  * URG - Si la valeur est 1 le pointeur urgent est utilisé. Le numéro de séquence et le pointeur urgent indique un octet spécifique. 
 +  * ACK - Si la valeur est 1, le paquet est un accusé de réception 
 +  * PSH - Si la valeur est 1, les données sont immédiatement présentées à l'application 
 +  * RST - Si la valeur est 1, la communication comporte un problème et la connexion est réinitialisée 
 +  * SYN - Si la valeur est 1, le paquet est un paquet de synchronisation 
 +  * FIN - Si la valeur est 1, le paquet indique la fin de la connexion
  
-====InnoDB====+La **Fenêtre** est codée sur 16 bits. La Fenêtre est une donnée liée au fonctionnement d'expédition de données appelé le **sliding window** ou la **fenêtre glissante**. Puisque il serait impossible, pour des raisons de performance, d'attendre l'accusé de réception de chaque paquet envoyé, l'expéditeur envoie des paquets par groupe. La taille de cette groupe s'appelle la Fenêtre. Dans le cas d'un problème de réception d'une partie de la Fenêtre, toute la Fenêtre est ré-expédiée.
  
-Le moteur InnoDB est le moteur par défaut de MySQL depuis la version 5.5Les principaux caractéristiques du moteur %%InnoDB%% sont :+Le **Checksum** est une façon de calculer si le paquet est complet.
  
-  Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +Le **Padding** est un champ pouvant être rempli de valeurs nulles de façon à ce que la taille de l'en-tête soit un multiple de 32
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, +
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente un mécanisme de restauration automatique en utilisant des journaux de transactions **ib_logfile*** ou ***** est **0**, **1**, **2** etc, +
-  * La structure de la table est stockée dans un fichier .frm, +
-  * Il supporte l'utilisation de clefs étrangères, +
-  * Il peut être sauvegardé à chaud, +
-  * Il est recommandé pour des applications avec beaucoup d'écritures. +
  
-===Mécanisme Interne===+==== En-tête UDP ====
  
-{{ free:innodb.png }}+L'en-tête UDP est codée sur 4 octets soit 32 bits 
  
-Les transactions en cours sont stockées en mémoire dans le **buffer des journaux de transactions** (//log_buffer//). La taille du buffer est fixée par la valeur de l'option **innodb_log_buffer_size**. Chaque seconde les informations dans le buffer sont écrites sur disque dans l'un des deux journaux des transactions **ib_logfile0** ou **ib_logfile1**. Le nombre de journaux des transactions est fixé par la valeur de l'option **innodb_log_files_in_group**. La taille des logs ib_logfile*, aussi appelés le **Redo log**, est fixée par l'option **innodb_log_file_size** mais ne peut pas dépasser 512 Go. Le buffer est aussi écrit sur disque lors de chaque **commit** (validation) sauf si ce mécanisme a été modifié par la valeur de l'option **innodb_flush_log_at_trx_commit**.+^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
 +|   Port source   ||   Port destination   || 
 +|   longueur   ||   Checksum   || 
 +|  Données  ||||
  
-Une partie des données ainsi que les index sont stockés en mémoire dans le **buffer pool**.  La taille du buffer est fixée par la valeur de l'option **innodb_buffer_pool_size**. Il faut éviter que la taille de cette mémoire tampon dépasse les 80 % de la RAM du serveur. Chaque seconde, les informations dans le buffer sont écrites sur disque dans le tablespace. L'emplacement du tablespace est fixé par la valeur de l'option **innodb_data_file_path**.+L'en-tête UDP a une longueur de 8 octets.
  
-===Transactions===+==== Fragmentation et Ré-encapsulation ====
  
-Le moteur Innodb est transactionnel. Ceci implique que le moteur collectionne des requêtes jusqu'à la commande **COMMIT**. A ce moment le moteur applique les modifications à toutes les tables concernées **en même temps**. Soit toutes les modifications réussissent, soit il y a un **ROLLBACK**. Par défautMySQL utilise un autocommit avec le moteur InnodbCeci implique qu'à la fin de chaque requête SQL, le serveur voit un commit virtuel.+La taille limite d'un paquet TCP, l'en-tête comprise, ne peut pas dépasser **65 535 octets**. Cependant chaque réseau est qualifié par son MTU ( Maximum Tranfer Unit ). Cette valeur est la taille maximum d'un paquet autorisée. L'unité est en **octets**. Pour un réseau Ethernet sa valeur est de 1 500. Quand un paquet doit être expédié sur un réseau ayant un MTU inférieur à sa propre taille, le paquet doit être **fractionné**. A la sortie du réseau, le paquet est reconstituéCette reconstitution s'appelle **ré-encapsulation**.
  
-Il est possible de modifier ce comportement automatique en utilisant la commande **BEGIN**. Par exemple :+==== Adressage ====
  
-<file> +L'adressage IP requière que chaque périphérique sur le réseau possède une adresse IP unique de 4 octets, soit 32 bits au format XXX.XXX.XXX.XXX De cette façon le nombre total d'adresses est de 2<sup>32</sup= 4.3 Milliards.
-mysql> BEGIN; +
-mysql> INSERT INTO table (colonne) VALUES (value); +
-mysql> COMMIT; +
-</file>+
  
-Si la dernière commande est remplacée par la commande ROLLBACK la modification apportée par la requête INSERT INTO sera effacée :+Les adresses IP sont divisées en 5 classes, de A à E. Les 4 octets des classes A à C sont divisés en deux, une partie qui s'appelle le **Net ID** qui identifie le réseau et une partie qui s'appelle le **Host ID** qui identifie le hôte  :
  
-<file> +^     ^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
-mysql> BEGIN; +|  A  |   Net ID     Host ID   ||| 
-mysql> INSERT INTO table (colonne) VALUES (value); +|  B  |   Net ID    ||   Host ID   || 
-mysql> ROLLBACK; +|  C  |   Net ID    |||   Host ID   | 
-</file>+|  D  |   Multicast  |||| 
 +|  E  |   Réservé  ||||
  
-===Tablespace===+L'attribution d'une classe dépend du nombre de hôtes à connecter. Chaque classe est identifié par un **Class ID** composé de 1 à 3 bits :
  
-Depuis la version 5.6.de MySQL, il existe l'option **innodb_file_per_table**Si cette option est **0**, Innodb se comporte comme les versions précédentes, à savoir les données et les index de toutes les tables sont centralisées dans la **Tablespace**, c'est-à-dire, dans le fichier **ibdata** par défaut. Avec une valeur de **1**, les données et index de chaque table sont stockées dans un fichier individuel ayant une extension **.ibd** se trouvant dans le répertoire du schéma à côté du fichier de définition de la structure, le **.frm**.+^  Classe  ^  Bits ID Classe  ^  Valeur ID Classe  ^  Bits ID Réseau  ^  Nbde Réseaux  ^  Bits ID hôtes  ^  Nbd'adresses  ^  Octet de Départ 
 +|  A  |  1  |  0  |  7  |  2<sup>7</sup>=128  |  24  |  2<sup>24</sup>=16 777 216  |  1 - 126  | 
 +|  B  |  2  |  10  |  14  |  2<sup>14</sup>=16 834  |  16  |  2<sup>16</sup>=65 535  |  128 - 191  | 
 +|  C  |  3  |  110  |  21  |  2<sup>21</sup>=2 097 152  |  8  |  2<sup>8</sup>=256  |  192 - 223  | 
 +  
 +Le réseau 127. est réservé. Il s'appelle le **loopback** et identifie la machine locale.
  
-Cette modification permet le stockage des fichiers .ibd sur un autre espace de stockage physique. De cette façonil est possible d'utiliser des espaces de stockage très rapides.+Dans chaque classecertaines adresses sont réservées pour un usage privé :
  
-Malgré l'utilisation des fichiers .ibd, il est toujours necéssaire d'avoir le fichier **ibdata** car ce dernier stocke le **dictionnaire des données** qui est une copie de tous les fichiers .frm ainsi que les Redo logsLes Redo logs journalisent toute requête de modification des objets.+^  Classe  ^  IP de Départ  ^  IP de Fin  ^ 
 +|  A  |  10.0.0.0  |  10.255.255.255 
 +|  B  |  172.16.0.0  |  172.31.255.255 
 +|  C  |  192.168.0.0  |  192.168.255.255  |
  
-<note warning> +Il existe des adresses particulières ne pouvant pas être utilisées pour identifier un hôte :
-Malgré l'utilisation des fichiers **.ibd**, il n'est pas possible de manipuler les fichiers dans un gestionnaire de fichiers. Ne les déplacez pas, ne les copiez pas sous peine de perdre des données. +
-</note> +
  
-<note important> +^  Adresse Particulière  ^  Description  ^ 
-La quantité de mémoire libre dans un fichier *.ibd ou dans la Tablespace est indiquée par la sortie de la commande **SHOW TABLE STATUS**Cette valeur est en pages et chaque page vaut 16 KoBien que vous puissiez libérer de l'espace mémoire utilisée dans la Tablespace en passant la valeur de l'option **innodb_file_per_table** de **0** à **1** et en saisissant la commande **ALTER TABLE table ENGINE=InnoDB** pour chaque table, la taille du fichier ibdata ne diminuera pasLa seule façon de réduire la taille de ce fichier est d'exporter la base de données avec mysqldump puis de recréer la base de données à partir du dump. +|  169.254.0.0 à 169.254.255.255  |  Automatic Private IP Addressing de Microsoft 
-</note>+|  Hôte du réseau courant  |  Tous les bits du Net ID sont à 0  | 
 +|  Adresse de réseau  |  Tous les bits du Host ID sont à 0  | 
 +|  Adresse de diffusion  |  Tous les bits du Host ID sont à 1  |
  
-===Multiversion Concurrency Control===+L'adresse de réseau identifie le **segment** du réseau entier tandis que l'adresse de diffusion identifie tous les hôtes sur le segment de réseau.
  
-Chaque table Innodb contient deux colonnes cachées :+Afin de mieux comprendre l'adresse de réseau et l'adresse de diffusion, prenons le cas de l'adresse 192.168.10.1 en classe C :
  
-  * le numéro de transaction - **txn#**, +^    ^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
-  * un pointeur vers la version précédente de la ligne qui se trouve dans le Undo log. Ce pointeur s'appelle le **Pointeur ROLLBACK**.+^    ^  Net ID  ^^^  Host ID  ^ 
 +|  Adresse IP  |   192     168    10  |  1  | 
 +|  Binaire  |   11000000     10101000    000001010  |  00000001 
 +|  Calcul de l'adresse de réseau  ||||| 
 +|  Binaire  |   11000000     10101000    000001010  |  **00000000**  | 
 + Adresse réseau  |   192     168    10  |  0  | 
 +|  Calcul de l'adresse de diffusion  ||||| 
 +|  Binaire  |   11000000     10101000    000001010  |  **11111111**  | 
 +|  Adresse de diffusion |   192     168    10  |  255  |
  
-Quand une ligne est modifiée, l'ancienne version de la ligne y compris son numéro de transaction est copiée dans le Undo log. La nouvelle version de la ligne y compris son numéro de transaction est copiée dans la Tablespace ou dans le fichier .ibd. Le pointeur de la nouvelle ligne identifie l'ancienne ligne dans le Undo log. Ce processus s'appelle le **MVCC** (//Multiversion Concurrency Control//).+==== Masques de sous-réseaux ====
  
-===Transaction Isolation Levels===+Tout comme l'adresse IP, le masque de sous-réseau compte 4 octets ou 32 bits. Les masques de sous-réseaux permettent d'identifer le Net ID et le Host ID :
  
-Créez la base de données **nombres** :+^  Classe  ^  Masque  ^  Notation CIDR  ^ 
 +|  A  |  255.0.0.0  |  /8  | 
 +|  B  |  255.255.0.0  |  /16  | 
 +|  C  |  255.255.255.0  |  /24  |
  
-<code> +Le terme **CIDR** veut dire **Classless %%InterDomain%% Routing**. Le terme Notation CIDR correspond au nombre de bits d'une valeur de dans le masque de sous-réseau.
-mysql> CREATE DATABASE `Nombres` ; +
-Query OK, row affected (0.01 sec)+
  
-mysql> USE Nombres; +Quand un hôte souhaite émettre il procède d'abord à l'identification de sa propre adresse réseau par un calcul AND (ET) appliqué à sa propre adresse et son masque de sous-réseau qui stipule :
-Database changed+
  
-mysql> CREATE TABLE english (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Number VARCHAR(10)); +  * 1 x 1 = 1 
-Query OK, rows affected (0.08 sec)+  x 1 = 0 
 +  * 1 x 0 = 0 
 +  * 0 x 0 = 0
  
-mysql> INSERT INTO english (Number) VALUES ('One'); +Prenons le cas de l'adresse IP 192.168.10.ayant un masque de 255.255.255.0 :
-Query OK, row affected (0.01 sec)+
  
-mysql> INSERT INTO english (Number) VALUES ('Two'); +^    ^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
-Query OK, row affected (0.01 sec)+|  Adresse IP  |   192     168    10  |   | 
 +|  Binaire  |   11000000     10101000    00001010  |  00000001 
 +|  Masque de sous-réseau  ||||| 
 +|  Binaire  |   11111111     11111111    11111111 |  00000000 
 +|  Calcul AND  |   11000000     10101000    00001010 |  00000000 
 +|  Adresse réseau  |   192     168    10  |   |
  
-mysql> INSERT INTO english (Number) VALUES ('Three'); 
-Query OK, 1 row affected (0.01 sec) 
  
-mysql> SELECT FROM english; +Cet hôte essaie de communiquer avec un hôte ayant une adresse IP de 192.168.10.10. Il procède donc au même calcul en appliquant **son propre masque de sous-réseau** à l'adresse IP de l'hôte destinataire :
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | One    | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.00 sec)+
  
-mysql>  +^    ^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
-</code>+|  Adresse IP  |   192     168    10  |  10  | 
 +|  Binaire  |   11000000     10101000    00001010  |  00001010 
 +|  Masque de sous-réseau  ||||| 
 +|  Binaire  |   11111111     11111111    11111111 |  00000000 
 +|  Calcul AND  |   11000000     10101000    00001010 |  00000000 
 +|  Adresse réseau  |   192     168    10  |  0  |
  
-==Read Uncomitted==+Puisque l'adresse réseau est identique dans les deux cas, l'hôte émetteur présume que l'hôte de destination se trouve sur son réseau et envoie les paquets directement sur le réseau sans s'adresser à sa passerelle par défaut.
  
-Mettez à jour l'enregistrement 1 sans faire de COMMIT ou de ROLLBACK :+L'hôte émetteur essaie maintenant de communiquer avec avec un hôte ayant une adresse IP de 192.168.2.1. Il procède donc au même calcul en appliquant **son propre masque de sous-réseau** à l'adresse IP de l'hôte destinataire :
  
-<code> +^    ^ 1er octet ^ 2ème octet ^ 3ème octet ^ 4 ème octet ^ 
-mysql> BEGIN; +|  Adresse IP  |   192     168    2  |  1  | 
-Query OK, 0 rows affected (0.00 sec)+|  Binaire  |   11000000     10101000    00000010  |  00000001 
 +|  Masque de sous-réseau  ||||| 
 +|  Binaire  |   11111111     11111111    11111111 |  00000000 
 +|  Calcul AND  |   11000000     10101000    00000010 |  00000000 
 +|  Adresse réseau  |   192     168    2  |   |
  
-mysql> UPDATE english SET Number = "Un" WHERE id = 1; +Dans ce casl'hôte émetteur constate que le réseau de destination 192.168.2.n'est pas identique à son propre réseau 192.168.10.0. Il adresse donc les paquets à la passerelle par défaut.
-Query OK1 row affected (0.04 sec) +
-Rows matched: 1  Changed: 1  Warnings: 0+
  
-mysql> SELECT * FROM english; +==== VLSM ====
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | Un     | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.00 sec)+
  
-mysql>  +Puisque le stock de réseaux disponibles sous IPv4 est presque épuisé, une solution a du être trouvée pour créer des sous-réseaux en attendant l'introduction de l'IPv6. Cette solution s'appelle le VLSM ou Variable Length Subnet Masks. Le VLSM exprime les masques de sous-réseaux au format CIDR. 
-</code>+
  
-Ouvrez une autre terminalconnectez-vous à mysql et visualisez la modification :+Son principe est simple. Afin de créer des réseaux différents à partir d'une adresse réseau d'une classe donnéeil convient de réduire le nombre d'hôtes. De cette façon les bits 'libérés' du Host ID peuvent être utilisés pour identifier les sous-réseaux.
  
-<code> +Pour illustrer ceci, prenons l'exemple d'un réseau 192.168.1.0. Sur ce réseau, nous pouvons mettre 2<sup>8</sup>-2 soit 254 hôtes entre 192.168.1.1 au 192.168.1.254.
-[root@node01 ~]# mysql +
-Welcome to the MySQL monitor Commands end with ; or \g. +
-Your MySQL connection id is 3 +
-Server version: 5.5.33-cll-lve MySQL Community Server (GPL) by Atomicorp+
  
-Copyright (c) 20002013, Oracle and/or its affiliates. All rights reserved.+Supposons que nous souhaiterions diviser notre réseau en 2 sous-réseaux. Pour coder 2 sous-réseauxil faut que l'on libère 2 bits du Host IDLes deux bits libérés auront les valeurs binaires suivantes :
  
-Oracle is a registered trademark of Oracle Corporation and/or its +  * 00 
-affiliates. Other names may be trademarks of their respective +  * 01 
-owners.+  * 10 
 +  * 11
  
-Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.+Les valeurs binaires du quatrième octet de nos adresses de sous-réseaux seront donc :
  
-mysql> USE Nombres; +  * 192.168.1.00XXXXXX 
-Reading table information for completion of table and column names +  * 192.168.1.01XXXXXX 
-You can turn off this feature to get a quicker startup with -A+  * 192.168.1.10XXXXXX 
 +  * 192.168.1.11XXXXXX
  
-Database changed+où les XXXXXX représentent les bits que nous réservons pour décrire les hôtes dans chacun des sous-réseaux.
  
-mysql> SELECT * FROM english; +Nous ne pouvons pas utiliser les deux sous-réseaux suivants :
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | One    | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec)+
  
-mysql>  +  * 192.168.1.00XXXXXX 
-</code>+  * 192.168.1.11XXXXXX
  
-<note important> +car ceux-ci correspondent aux débuts de l'adresse réseau 192.168.1.0 et de l'adresse de diffusion 192.168.1.255.
-Notez que le deuxième client voit l'ancienne valeur de l'enregistrement 1. Ceci est parce que la base de données a suivi le Pointeur ROLLBACK vers le Undo log pour afficher la valeur de la colonneNotez que **MVCC** ne bloque pas la lecture malgré le fait qu'il y a une transaction en cours ! +
-</note>+
  
-Pour voir la valeur dans la Tablespace, il faut modifier la valeur de l'option TRANSACTION ISOLATION LEVEL :+Nous pouvons utiliser les deux sous-réseaux suivants :
  
-<code> +  * 192.168.1.01XXXXXX 
-mysql> SET TRANSACTION ISOLATION LEVEL read uncommitted; +  * 192.168.1.10XXXXXX
-Query OK, 0 rows affected (0.00 sec)+
  
-mysql> SELECT * FROM english; +Pour le premier sous-réseau l'adresse réseau et l'adresse de diffusion sont :
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | Un     | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec)+
  
-mysql>  +|  Sous-réseau #1  |   192     168    1 |  01XXXXXX  | 
-</code>+|  Calcul de l'adresse de réseau  ||||| 
 +|  Binaire  |   11000000     10101000    00000001  |  01**000000** | 
 +|  Adresse réseau  |   192     168    1  |  **64** 
 +|  Calcul de l'adresse de diffusion  ||||| 
 +|  Binaire  |   11000000     10101000    00000001  |  01**111111** 
 +|  Adresse de diffusion |   192     168    1  |  **127**  |
  
-<note warning> +  * L'adresse CIDR du réseau est donc 192.168.1.64/26 car le Net ID est codé sur 24+2 bits.
-Dans ce mode, le client voit une donnée fictive car il n'y a pas encore eu de COMMIT ! +
-</note>+
  
-==Read Comitted==+  * Le masque de sous-réseau est donc le 11111111.11111111.11111111.11000000 ou le 255.255.255.192
  
-Dans ce mode de fonctionnement InnoDB suit les Pointeurs ROLLBACK jusqu'à il trouve la dernière version ayant subi un COMMIT :+  * Nous pouvons avoir 2<sup>6</sup>-2 soit 62 hôtes.
  
-<code> +  * La plage valide d'adresses IP est de 192.168.1.65 à 192.168.1.126
-mysql> SET TRANSACTION ISOLATION LEVEL read committed; +
-Query OK, 0 rows affected (0.00 sec)+
  
-mysql> SELECT * FROM english; +Pour le deuxième sous-réseau l'adresse réseau et l'adresse de diffusion sont :
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | One    | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec)+
  
-mysql>  +|  Sous-réseau #2  |   192     168    1 |  10XXXXXX  | 
-</code>+|  Calcul de l'adresse de réseau  ||||| 
 +|  Binaire  |   11000000     10101000    00000001  |  10**000000** | 
 +|  Adresse réseau  |   192     168    1  |  **128** 
 +|  Calcul de l'adresse de diffusion  ||||| 
 +|  Binaire  |   11000000     10101000    00000001  |  10**111111** 
 +|  Adresse de diffusion |   192     168    1  |  **191**  |
  
-Retournez au premier terminal :+  * L'adresse CIDR du réseau est donc 192.168.1.128/26 car le Net ID est codé sur 24+2 bits.
  
-<code> +  * Le masque de sous-réseau est donc le 11111111.11111111.11111111.11000000 ou le 255.255.255.192
-mysql> COMMIT; +
-Query OK, 0 rows affected (0.01 sec)+
  
-mysql +  * Nous pouvons avoir 2<sup>6</sup>-2 soit 62 hôtes. 
-</code>+ 
 +  * La plage valide d'adresses IP est de 192.168.1.129 à 192.168.1.190 
 + 
 + 
 +La valeur qui sépare les sous-réseaux est 64. Cette valeur comporte le nom **incrément**. 
 + 
 +==== Ports et sockets ==== 
 + 
 +Afin que les données arrivent aux applications que les attendent, TCP utilise des numéros de ports sur la couche transport. Le numéros de ports sont divisés en trois groupes : 
 + 
 +  * **Well Known Ports** 
 +    * De 1 à 1023 
 +  * **Registered Ports** 
 +    * De 1024 à 49151 
 +  * **Dynamic** et/ou **Private Ports** 
 +    * De 49152 à 65535 
 + 
 +Le couple **numéro IP:numéro de port** s'appelle un **socket**. 
 + 
 +==== /etc/services ====
  
-Retournez au deuxième terminal :+Les ports les plus utilisés sont détaillés dans le fichier **/etc/services** :
  
 <code> <code>
-<mysql> SELECT * FROM english; +[root@centos7 ~]# more /etc/services 
-+----+--------+ +# /etc/services: 
-| id | Number | +# $Id: services,v 1.55 2013/04/14 ovasik Exp $ 
-+----+--------+ +# 
-|  1 | Un     | +# Network services, Internet style 
-|  2 | Two    | +# IANA services version: last updated 2013-04-10 
-|  3 | Three  | +# 
-+----+--------+ +# Note that it is presently the policy of IANA to assign a single well-known 
-3 rows in set (0.00 sec)+# port number for both TCP and UDP; hence, most entries here have two entries 
 +# even if the protocol doesn't support UDP operations. 
 +# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports 
 +# are included, only the more common ones. 
 +
 +# The latest IANA port assignments can be gotten from 
 +#       http://www.iana.org/assignments/port-numbers 
 +# The Well Known Ports are those from through 1023. 
 +# The Registered Ports are those from 1024 through 49151 
 +# The Dynamic and/or Private Ports are those from 49152 through 65535 
 +
 +# Each line describes one service, and is of the form: 
 +
 +# service-name  port/protocol  [aliases ...]   [# comment]
  
-mysql> +tcpmux          1/tcp                           # TCP port service multiplexer 
 +tcpmux          1/udp                           # TCP port service multiplexer 
 +rje             5/tcp                           # Remote Job Entry 
 +rje             5/udp                           # Remote Job Entry 
 +echo            7/tcp 
 +echo            7/udp 
 +discard         9/tcp           sink null 
 +discard         9/udp           sink null 
 +systat          11/tcp          users 
 +systat          11/udp          users 
 +daytime         13/tcp 
 +--More--(0%)
 </code> </code>
  
-====MyISAM====+Notez que les ports sont listés par deux :
  
-L'architecture du moteur %%MyISAM%% est plus simple que le moteur %%InnoDB%%. Les principaux caractéristiques du moteur %%MyISAM%% sont :+  * le port TCP 
 +  * le port UDP
  
-  * Il n'est pas transactionnel, +La liste la plus complète peut être consultée à l'adresse suivante **https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml**.
-  Il implémente un verrou au niveau table, +
-  Il n'y a pas de recouvrement automatique des données lors d'un crash, +
-  * La structure de la table est stockée dans un fichier .frm, +
-  * Les données sont stockées dans un fichier .MYD tandis que les index sont stockés dans un fichier .MYI, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il peut être compressé, +
-  Il supporte les index plain text (fulltext), +
-  Il est recommandé pour des applications avec beaucoup de lectures +
  
-Il existe trois types de moteurs %%MyISAM%% : FIXED DYNAMIC et COMPRESSED :+Pour connaitre la liste des sockets ouverts sur l'ordinateursaisissez la commande suivante :
  
-=== MyISAM FIXED===+<code> 
 +[root@centos7 ~]# netstat -an | more 
 +Active Internet connections (servers and established) 
 +Proto Recv-Q Send-Q Local Address           Foreign Address         State       
 +tcp        0      0 0.0.0.0:22              0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:7127          0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:631           0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:25            0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:52284         0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:49669         0.0.0.0:              LISTEN      
 +tcp        0      0 127.0.0.1:52284         127.0.0.1:46641         ESTABLISHED 
 +tcp        0      0 10.0.2.15:22            10.0.2.2:47261          ESTABLISHED 
 +tcp        0      0 127.0.0.1:46641         127.0.0.1:52284         ESTABLISHED 
 +tcp6            0 :::22                   :::                   LISTEN      
 +tcp6            0 ::1:631                 :::                   LISTEN      
 +udp        0      0 10.0.2.15:49309         10.0.2.3:53             ESTABLISHED 
 +udp        0      0 0.0.0.0:42155           0.0.0.0:                          
 +udp        0      0 0.0.0.0:5353            0.0.0.0:                          
 +udp        0      0 127.0.0.1:323           0.0.0.0:                          
 +udp        0      0 0.0.0.0:68              0.0.0.0:                          
 +udp        0      0 0.0.0.0:14451           0.0.0.0:                          
 +udp        0      0 10.0.2.15:37244         212.83.184.186:123      ESTABLISHED 
 +udp6            0 ::1:323                 :::                               
 +udp6            0 :::35912                :::*                                
 +raw6            0 :::58                   :::                   7           
 +Active UNIX domain sockets (servers and established) 
 +Proto RefCnt Flags       Type       State         I-Node   Path 
 +unix  2      [ ACC ]     STREAM     LISTENING     20224    public/pickup 
 +unix  2      [ ACC ]     STREAM     LISTENING     20228    public/cleanup 
 +unix  2      [ ACC ]     STREAM     LISTENING     20231    public/qmgr 
 +unix  2      [ ACC ]     STREAM     LISTENING     11278    /run/lvm/lvmpolld.socket 
 +unix  2      [ ACC ]     STREAM     LISTENING     13838    /var/run/dbus/system_bus_s 
 +ocket 
 +unix  2      [ ACC ]     STREAM     LISTENING     20253    public/flush 
 +unix  2      [ ACC ]     STREAM     LISTENING     20268    public/showq 
 +--More-- 
 +</code>
  
-Une table est FIXED si elle ne contient aucun champ de type VARCHAR, VARBINARY, TEXT ou BLOB ou si la valeur de l'option **row_format** est FIXED ( row_format=FIXED ). Tous les enregistrements sont de la même taille. De ce faitles tables sont plus rapides et plus robustes que les tables dynamiques mais elles prennent plus d'espace disque. Les données de la table ne peuvent pas être fragmentées. Une table devient FIXED quand la valeur de l'option **row_format** est FIXED ( row_format=FIXED ) :+Pour connaitre la liste des applications ayant ouvert un port sur l'ordinateursaisissez la commande suivante :
  
 <code> <code>
-mysql> SHOW TABLE STATUS LIKE 'db' \G; +[root@centos7 ~]# netstat -anp | more 
-*************************** 1. row **************************+Active Internet connections (servers and established) 
-           Namedb +Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
-         EngineMyISAM +tcp        0      0 0.0.0.0:22              0.0.0.0:              LISTEN      855/sshd             
-        Version: 10 +tcp        0      0 127.0.0.1:7127          0.0.0.0:              LISTEN      3275/Remote Access   
-     Row_formatFixed +tcp        0      0 127.0.0.1:631           0.0.0.0:              LISTEN      854/cupsd            
-           Rows2 +tcp        0      0 127.0.0.1:25            0.0.0.0:              LISTEN      2214/master          
- Avg_row_length440 +tcp        0      0 127.0.0.1:52284         0.0.0.0:              LISTEN      3389/Remote Access   
-    Data_length880 +tcp        0      0 127.0.0.1:49669         0.0.0.0:              LISTEN      3275/Remote Access   
-Max_data_length123848989752688639 +tcp        0      0 127.0.0.1:52284         127.0.0.1:46641         ESTABLISHED 3389/Remote Access   
-   Index_length5120 +tcp        0      0 10.0.2.15:22            10.0.2.2:47261          ESTABLISHED 4557/sshd: trainee   
-      Data_free: 0 +tcp        0      1 10.0.2.15:55144         86.241.135.118:443      SYN_SENT    3275/Remote Access   
- Auto_incrementNULL +tcp        0      0 127.0.0.1:46641         127.0.0.1:52284         ESTABLISHED 3275/Remote Access   
-    Create_time2014-01-22 15:28:03 +tcp6            0 :::22                   :::                   LISTEN      855/sshd             
-    Update_time2014-01-22 15:28:04 +tcp6            0 ::1:631                 :::                   LISTEN      854/cupsd            
-     Check_time2014-01-22 15:28:04 +udp        0      0 0.0.0.0:42155           0.0.0.0:                          525/avahi-daemon: 
-      Collationutf8_bin +udp        0      0 0.0.0.0:5353            0.0.0.0:                          525/avahi-daemon: 
-       ChecksumNULL +udp        0      0 127.0.0.1:323           0.0.0.0:                          556/chronyd          
- Create_options +udp        0      0 0.0.0.0:68              0.0.0.0:                          4501/dhclient        
-        CommentDatabase privileges +udp        0      0 0.0.0.0:14451           0.0.0.0:                          4501/dhclient        
-1 row in set (0.01 sec)+udp        0      0 10.0.2.15:37244         212.83.184.186:123      ESTABLISHED 556/chronyd          
 +udp6            0 ::1:323                 :::*                                556/chronyd          
 +udp6            :::35912                :::*                                4501/dhclient        
 +raw6       0      0 :::58                   :::                   7           653/NetworkManager   
 +Active UNIX domain sockets (servers and established) 
 +Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path 
 +unix  2      [ ACC ]     STREAM     LISTENING     20224    2214/master          public/pickup 
 +unix  2      [ ACC ]     STREAM     LISTENING     20228    2214/master          public/cleanup 
 +unix  2      [ ACC ]     STREAM     LISTENING     20231    2214/master          public/qmgr 
 +unix  2      [ ACC ]     STREAM     LISTENING     11278    1/systemd            /run/lvm/lvmpolld.socket 
 +unix  2      [ ACC ]     STREAM     LISTENING     13838    1/systemd            /var/run/dbus/system_bus_socket 
 +unix  2      [ ACC ]     STREAM     LISTENING     20253    2214/master          public/flush 
 +unix  2      [ ACC ]     STREAM     LISTENING     20268    2214/master          public/showq 
 +unix  2      [ ACC ]     STREAM     LISTENING     13859    1/systemd            /var/run/rpcbind.sock 
 +--More-- 
 +</code>
  
-ERROR:  +==== Résolution d'adresses Ethernet ====
-No query specified+
  
-mysql+Chaque protocole peut être encapsulé dans une **trame** Ethernet. Lorsque la trame doit être transportée de l'expéditeur au destinataire, ce premier doit connaitre l'adresse Ethernet du dernier. L'adresse Ethernet est aussi appelée l'adresse **Physique** ou l'adresse **MAC**. 
 + 
 +Pour connaître l'adresse Ethernet du destinataire, l'expéditeur fait appel au protocol **ARP**. Les informations reçues sont stockées dans une table. Pour visualiser ces informations, il convient d'utiliser la commande suivante : 
 + 
 +<code> 
 +[root@centos7 ~]# arp -a 
 +? (10.0.2.3) at 52:54:00:12:35:03 [ether] on enp0s3 
 +gateway (10.0.2.2) at 52:54:00:12:35:02 [ether] on enp0s3
 </code> </code>
  
-=== MyISAM DYNAMIC ===+===Options de la commande===
  
-Une table est DYNAMIC si elle contient au moins un champ de type VARCHAR, VARBINARY, TEXT ou BLOB ou la valeur de l'option **row_format** est DYNAMIC ( row_format=DYNAMIC ). Les données de la table peuvent être fragmentées. Dans ce cas, l'utilisation de la commande OPTIMIZE TABLE ou **myisamchk** est nécessaire :+Les options de cette commande sont :
  
 <code> <code>
-mysql> SHOW TABLE STATUS LIKE 'proc' \G; +[root@centos7 ~]# arp --help 
-*************************** 1. row *************************** +Usage
-           Nameproc +  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>            <-Display ARP cache 
-         Engine: MyISAM +  arp [-v]          [-i <if>] -d  <host> [pub]               <-Delete ARP entry 
-        Version: 10 +  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>           <-Add entry from file 
-     Row_format: Dynamic +  arp [-v]   [<HW>] [-i <if>-s  <host> <hwaddr> [temp]            <-Add entry 
-           Rows: 0 +  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub          <-''-
- Avg_row_length:+
-    Data_length:+
-Max_data_length: 281474976710655 +
-   Index_length: 2048 +
-      Data_free: 0 +
- Auto_increment: NULL +
-    Create_time: 2014-01-22 15:28:04 +
-    Update_time: 2014-01-22 15:28:04 +
-     Check_time: NULL +
-      Collation: utf8_general_ci +
-       Checksum: NULL +
- Create_options:  +
-        Comment: Stored Procedures +
-1 row in set (0.01 sec)+
  
-ERROR:  +        -a                       display (all) hosts in alternative (BSD) style 
-No query specified+        -e                       display (all) hosts in default (Linux) style 
 +        -s, --set                set a new ARP entry 
 +        -d, --delete             delete a specified entry 
 +        -v, --verbose            be verbose 
 +        -n, --numeric            don't resolve names 
 +        -i, --device             specify network interface (e.g. eth0) 
 +        -D, --use-device         read <hwaddr> from given device 
 +        -A, -p, --protocol       specify protocol family 
 +        -f, --file               read new entries from file or from /etc/ethers
  
-mysql+  <HW>=Use '-H <hw>' to specify hardware address type. Default: ether 
 +  List of possible hardware types (which support ARP): 
 +    ash (Ash) ether (Ethernet) ax25 (AMPR AX.25)  
 +    netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet)  
 +    dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI)  
 +    irda (IrLAP) x25 (generic X.25) infiniband (InfiniBand)  
 +    eui64 (Generic EUI-64) 
 </code> </code>
  
-===MyISAM COMPRESSED=== 
  
-Après avoir arrêté le serveur, la compression est obtenue en utilisant la commande **myisampack** suivi de la commande **myisamchk -rq**. Le décompression est obtenue en utilisant la commande **myisamchk --unpack**. La compression peut atteindre les 70% maximum. Une fois compressée les requêtes UPDATE, DELETE et INSERT ne peuvent pas être utilisées :+=====Comprendre le Chiffrement=====
  
-<code> +====Introduction à la cryptologie====
-[root@centos ~]# myisampack /var/lib/mysql/mysql/help_keyword.MYI +
-Compressing /var/lib/mysql/mysql/help_keyword.MYD: (467 records) +
-- Calculating statistics +
-- Compressing file +
-95.21%      +
-Remember to run myisamchk -rq on compressed tables+
  
-[root@centos ~]# myisamchk -rq /var/lib/mysql/mysql/help_keyword.MYI +===Définitions===
-- check record delete-chain +
-- recovering (with sort) MyISAM-table '/var/lib/mysql/mysql/help_keyword.MYI' +
-Data records: 467 +
-- Fixing index 1 +
-- Fixing index 2+
  
-[root@centos ~]# myisamchk --unpack /var/lib/mysql/mysql/help_keyword.MYI +  * **La Cryptologie** 
-- recovering (with sortMyISAM-table '/var/lib/mysql/mysql/help_keyword.MYI' +    * La science qui étudie les aspects scientifiques de ces techniques, c'est-à-dire qu'elle englobe la cryptographie et la cryptanalyse.  
-Data records: 467 +  * **La Cryptanalyse** 
-Fixing index 1 +    * Lorsque la clef de déchiffrement n'est pas connue de l'attaquant on parle alors de cryptanalyse ou cryptoanalyse (on entend souvent aussi le terme plus familier de cassage). 
-Fixing index 2 +  * **La Cryptographie** 
-</code>+    * Un terme générique désignant l'ensemble des techniques permettant de chiffrer des messages, c'est-à-dire permettant de les rendre inintelligibles sans une action spécifique. Les verbes crypter et chiffrer sont utilisés. 
 +  * **Le Décryptement ou Décryptage** 
 +    * Est le fait d'essayer de déchiffrer illégitimement le message (que la clé de déchiffrement soit connue ou non de l'attaquant).
  
-===Particularités===+{{ :redhat:lx04:crypto1.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement. }}
  
-  * Le moteur MyISAM est particulièrement portable car il suffit de copier les fichiers *.frm, *.MYD et *.MYI pour obtenir une sauvegarde physique, +==La Cryptographie==
-  * Le nombre d'enregistrements est stocké dans la table, +
-  * Les index non-uniques peuvent être désactivés momentanément, +
-  * Il est possible d'avoir des INSERT et SELECT simultanés en utilisant l'option **concurrent_insert**. +
  
 +La cryptographie apporte quatre points clefs: 
  
-====Memory====+  * La confidentialité 
 +    * consiste à rendre l'information inintelligible à d'autres personnes que les acteurs de la transaction. 
 +  * L'intégrité 
 +    * consiste à déterminer si les données n'ont pas été altérées durant la communication (de manière fortuite ou intentionnelle). 
 +  * L'authentification 
 +    * consiste à assurer l'identité d'un utilisateur. 
 +  * La non-répudiation 
 +    * est la garantie qu'aucun des correspondants ne pourra nier la transaction. 
  
-Les principaux caractéristiques du moteur Memory sont :+La cryptographie est basée sur l'arithmétique. Il s'agit, dans le cas d'un texte, de transformer les lettres qui composent le message en une succession de chiffres (sous forme de bits dans le cas de l'informatique), puis ensuite de faire des calculs sur ces chiffres pour:
  
-  * Il n'est pas transactionnel, +  * Procéder au chiffrement 
-  * Il implémente un verrou au niveau table, +    Le résultat de cette modification (le message chiffré) est appelé cryptogramme (Ciphertext) par opposition au message initialappelé message en clair (Plaintext) 
-  Il n'y a pas de recouvrement automatique des données lors d'un crash, +  * Procéder au déchiffrement
-  * La structure de la table est stockée dans un fichier .frm+
-  * Les données sont stockées dans la mémoire, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il est recommandé pour des applications ayant besoin de la vitesse.  +
  
-===Particularités===+Le chiffrement se fait à l'aide d'une clef de chiffrement. Le déchiffrement nécessite  une clef de déchiffrement.
  
-  * La consommation de la mémoire est fixée par les options **MAX_ROWS** et **max_heap_table_size**, +On distingue deux types de clefs:
-  * Le moteur peut implémenter soit l'algorithme **HASH** pour les index pour augmenter la performance pour les recherches d'égalité soit l'algorithme **BTREE** pour les index pour augmenter la performance pour les recherches d'inégalité, +
-  * Au démarrage du serveur les tables sont évidement vides. Il est possible de les pré-remplir grâce à des instructions SQL contenues dans un fichier référencé par l'option **init-file**.+
  
 +  * Les clés symétriques: 
 +    * des clés utilisées pour le chiffrement ainsi que pour le déchiffrement. On parle alors de chiffrement symétrique ou de chiffrement à clé secrète.
 +  * Les clés asymétriques: 
 +    * des clés utilisées dans le cas du chiffrement asymétrique (aussi appelé chiffrement à clé publique). Dans ce cas, une clé différente est utilisée pour le chiffrement et pour le déchiffrement.
  
-===En Pratique===+==Le Chiffrement par Substitution== 
 +  
 +Le chiffrement par substitution consiste à remplacer dans un message une ou plusieurs entités (généralement des lettres) par une ou plusieurs autres entités. On distingue généralement plusieurs types de cryptosystèmes par substitution :
  
-Créez une table au format MEMORY en utilisant les données de la tables famille issue de la base carnetadresses :+  * La substitution **monoalphabétique** 
 +    * consiste à remplacer chaque lettre du message par une autre lettre de l'alphabet 
 +  * La substitution **polyalphabétique**  
 +    * consiste à utiliser une suite de chiffres monoalphabétique réutilisée périodiquement 
 +  * La substitution **homophonique**  
 +    * permet de faire correspondre à chaque lettre du message en clair un ensemble possible d'autres caractères 
 +  * La substitution de **polygrammes**   
 +    * consiste à substituer un groupe de caractères (polygramme) dans le message par un autre groupe de caractères
  
-  mysql> CREATE TABLE tempfamilles TYPE=MEMORY SELECT * FROM familles ;+====Algorithmes à clé secrète====
  
-Visualisez les enregistrements de la table tempfamilles :+===Le Chiffrement Symétrique===
  
-  mysql> SELECT FROM tempfamilles;+Ce système est aussi appelé le système à **Clef Secrète** ou à **clef privée**.
  
-Supprimez la table tempfamilles :+Ce système consiste à effectuer une opération de chiffrement par algorithme mais comporte un inconvénient, à savoir qu'il nécessite un canal sécurisé pour la transmission de la clef de chiffrement/déchiffrement.
  
-  mysql > DROP TABLE tempfamilles;+{{:redhat:lx04:crypto2.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}}
  
-====Archive====+<WRAP center round important> 
 +Le système de Méthode du Masque Jetable (One Time Pad) fût mis au point dans les années 1920. Il utilisait une clef générée aléatoirement à usage unique. 
 +</WRAP>
  
-Les principaux caractéristiques du moteur Archive sont :+Les algorithmes de chiffrement symétrique couramment utilisés en informatique sont:
  
-  * Il n'est pas transactionnel, +  * **[[wpfr>Data_Encryption_Standard|Data Encryption Standard]]** (DES)
-  Il implémente un verrou au niveau enregistrement, +  * **[[wpfr>Triple_DES|Triple DES]]** (3DES)
-  Il n'y a pas de recouvrement automatique des données lors d'un crash+  * **[[wpfr>RC2]]**,  
-  * Les données sont stockées en les compressant+  * **[[wpfr>Blowfish|Blowfish]]**
-  * Il ne supporte pas de clefs étrangères+  * **[[wpfr>International_Data_Encryption_Algorithm|International Data Encryption Algorithm]]** (IDEA)
-  * Il ne peut pas être sauvegardé à chaud+  * **[[wpfr>Standard_de_chiffrement_avancé|Advanced Encryption Standard]]** (AES).
-  * Il ne supporte pas d'Index+
-  * Il est recommandé pour réduire l'espace disque utilisé par les tables+
  
-===Particularités===+====Algorithmes à clef publique====
  
-  * Le moteur ne permet que des requêtes INSERT et SELECT.+===Le Chiffrement Asymétrique===
  
 +Ce système est aussi appelé **Système à Clef Publique**.
  
-====CSV====+Ce système consiste à avoir deux clefs appelées des **bi-clefs**:
  
-Les principaux caractéristiques du moteur CSV sont :+  * Une clef **publique** pour le chiffrement 
 +  * Une clef **secrète** ou **privée** pour le déchiffrement
  
-  * Il n'est pas transactionnel, +{{:redhat:lx04:crypto3.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative CommonsVous pouvez copiermodifier des copies de l'imagedans les conditions fixées par la licence, tant que cette note apparaît clairement.}}
-  * Il implémente un verrou au niveau table, +
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +
-  * La structure de la table est stockée dans un fichier .frm, +
-  * Les données sont séparées par des **;** et stockées dans un fichier .CSV tandis que les informations concernant l'état de la table ainsi que le nombre d'enregistrements sont stockées dans un fichier .CSM, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il ne supporte pas d'Index, +
-  * Il est recommandé pour des tables ayant besoin d'être manipulées par des logiciels tiers+
  
-====FEDERATED====+  * L'utilisateur A (celui qui déchiffre) choisit une clef privée.  
 +  * A partir de cette clef il génère plusieurs clefs publiques grâce à un algorithme. 
 +  * L'utilisateur B (celui qui chiffre) choisit une des clefs publiques à travers un canal non-sécurisé pour chiffrer les données à l'attention de l'utilisateur A.
  
-Les principaux caractéristiques du moteur FEDERATED sont :+Ce système est basé sur ce que l'on appelle une **fonction à trappe à sens unique** ou **one-way trap door**.
  
-  * Il n'est pas transactionnel, +Il existe toutefois un problème – s'assurer que la clef publique récupérée est bien celle qui correspond au destinataire !
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il ne supporte pas d'Index, +
-  * Il supporte des requêtes SELECT, INSERT, UPDATE, DELETE, TRUNCATE et DROP TABLE, +
-  * Il n'utilise pas le cache de requêtes, +
-  * Il est utilisé pour accéder à des données localisées sur un serveur **MySQL** distant.+
  
-====NDB Cluster====+Les algorithmes de chiffrement asymétrique couramment utilisés en informatique sont:
  
-Le moteur NDB Cluster est le moteur de MySQL Cluster. Les principaux caractéristiques du moteur NDB Cluster sont :+  * **[[wpfr>Digital_Signature_Algorithm|Digital Signature Algorithm]]** (DSA) 
 +  * **[[wpfr>Rivest_Shamir_Adleman|Rivest, Shamir, Adleman]]** (RSA)
  
-  * Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +===La Clef de Session===
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, +
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente la réplication synchrone, +
-  * Il implémente le basculement automatique sur un autre nœud en cas de panne et la synchronisation automatique du nœud à son démarrage, +
-  * Il peut être sauvegardé à chaud, +
-  * Il permet le dimensionnement des requêtes de lecture et d'écriture, +
-  * Il utilise l'architecture **Shared Nothing** où les nœuds ne partagent pas un disque de données, +
-  * Il implémente l’absence du **[[http://fr.wikipedia.org/wiki/SPOF|SPOF]]** (//Single Point Of Failure//). +
  
 +Ce système est un compromis entre le système symétrique et le système asymétrique. Il permet l'envoie de données chiffrées à l'aide d'un algorithme de chiffrement symétrique par un canal non-sécurisé et a été mis au point pour palier au problème de lenteur de déchiffrement du système asymétrique.
  
-====Autres Moteurs Non Standards====+{{:redhat:lx04:crypto4.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}}
  
-===XtraDB===+Ce système fonctionne de la façon suivante :
  
-**[[http://www.percona.com/software/percona-xtradb|XtraDB]]** est le moteur de la société **Percona**. Il est basé sur InnoDB et a pour but d'être plus performantLes principaux caractéristiques du moteur XtraDB sont :+  L'utilisateur A chiffre une clef privée générée aléatoirement, appelée une « clef de session », en utilisant une des clefs publiques de l'utilisateur B. 
 +  L'utilisateur A chiffre les données avec la clef de session. 
 +  L'utilisateur B déchiffre la clef de session en utilisant sa propre clef privée. 
 +  * L'utilisateur B déchiffre les données en utilisant la clef de session.
  
-  * Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +====Fonctions de Hachage====
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, +
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente un mécanisme de restauration automatique, +
-  * Il supporte l'utilisation de clefs étrangères, +
-  * Il peut être sauvegarder à chaud, +
-  * Le moteur peut implémenter soit l'algorithme **HASH** pour les index pour augmenter la performance pour les recherches d'égalité soit l'algorithme **B+TREE** pour les index pour augmenter la performance pour les recherches d'inégalité.+
  
-===Aria===+La fonction de **hachage**, aussi appelée une fonction de **condensation**, est à **sens unique** (one way function). Il « condense » un message en clair et produit un haché unique.
  
-**[[https://mariadb.com/kb/en/aria/|Aria]]** est le moteur de **Michael Widenius**Il a été créé pour être un alternatif au moteur MyISAMLes principaux caractéristiques du moteur Aria sont :+{{:redhat:lx04:crypto5.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative CommonsVous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}}
  
-  * En version 2.0, il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +Les deux algorithmes de hachage utilisés sont
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente un mécanisme de restauration automatique.+
  
 +  * **[[wpfr>MD5|Message Digest 5]]** (MD5) 
 +  * **[[wpfr>SHA-1|Secure Hash Algorithm]]** (SHA)
  
-=====Jointures=====+Lors de son envoie, le message est accompagné de son haché et il est donc possible de garantir son intégrité:
  
-Les jointures permettent de créer un lien entre deux tablesLe champ utilisé pour la jointure dans la première table est souvent la **clef primaire**Le champs utilisé dans la deuxième table est appelé le **clef étrangère**. La clef primaire et la clef étrangère doivent être du même **type**.+{{:redhat:lx04:crypto6.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative CommonsVous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}} 
 +  
 +  la réception du message, le destinataire ou l’utilisateur B calcule le haché du message reçu et le compare avec le haché accompagnant le document.  
 +  Si le message ou le haché a été falsifié durant la communication, les deux empreintes ne correspondront pas
  
-Dans le cas où on utilise un champs autre que la clef primaire pour assurer la jointurecet autre champs doit être **indexé**.+<WRAP center round important> 
 +Ce système permet de vérifier que l'empreinte correspond bien au message reçumais ne permet pas de prouver que le message a bien été envoyé par l’utilisateur A. 
 +</WRAP>
  
-====FULL JOIN====+====Signature Numérique====
  
-Ce type de jointure permet de renvoyer uniquement les enregistrements des **deux** tables 1 et 2 ayant une correspondance :+Pour garantir l'authentification du message l‘utilisateur A va chiffrer ou **signer** le haché à l'aide de sa clé privée. Le haché signé est appelé un **sceau**.
  
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1table2 WHERE table1.clefprimaire = table2.clefetrangere;+{{:redhat:lx04:crypto7.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copiermodifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}} 
 + 
 +  * L’utilisateur A envoie le sceau au destinataire. 
 +  * A la réception du message L’utilisateur B déchiffre le sceau avec la clé publique de l’utilisateur A. 
 +  * Il compare le haché obtenu au haché reçu en pièce jointe.
    
-ou+Ce mécanisme de création de sceau est appelé **scellement**.
  
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1 JOIN table2 WHERE table1.clefprimaire = table2.clefetrangere;+Ce mécanisme est identique au procédé utilisé par SSH lors d'une connexion 
  
-====LEFT JOIN====+====Utilisation de GnuPG====
  
-Ce type de jointure permet de renvoyer les enregistrements de la première table qui ont une correspondance dans la deuxième table. La syntaxe est la suivante :+===Présentation===
  
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1 LEFT JOIN table2 ON table1.clefprimaire = table2.clefetrangere;+**GNU Privacy Guard** permet aux utilisateurs de transférer des messages chiffrés et/ou signés.
  
-Le résultat de cette requête est l'affichage de **tous** les enregistrements de la **table 1** avec ou sans les enregistrements correspondants de la **table 2**. Dans le cas où la table 2 ne contient pas d'enregistrement correspondant un un enregistrement de la table 1, la valeur retournée est **NULL**. Cette information nous permet de rechercher uniquement les enregistrements dans la table1 n'ayant **pas** d'enregistrements dans la table 2 :+===Installation===
  
-  mysql> SELECT table1.champ1table2.champ1 FROM table1 LEFT JOIN table2 ON table1.clefprimaire = table2.clefetrangere WHERE table2.clefetrangere IS NULL;+Sous RHEL/CentOS 7le paquet gnupg est installé par défaut :
  
-====RIGHT JOIN====+<code> 
 +[root@centos7 ~]# whereis gpg 
 +gpg: /usr/bin/gpg /usr/share/man/man1/gpg.1.gz 
 +</code>
  
-Ce type de jointure est l'inverse d'un LEFT JOIN.+===Configuration===
  
-=====LAB #1 - Le Langage SQL=====+Pour initialiser %%GnuPG%%, saisissez la commande suivante :
  
-Créez maintenant la base de données **%%CarnetAdresses%%** :+<code> 
 +[root@centos7 ~]# gpg 
 +gpg: directory `/root/.gnupg' created 
 +gpg: new configuration file `/root/.gnupg/gpg.conf' created 
 +gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run 
 +gpg: keyring `/root/.gnupg/secring.gpg' created 
 +gpg: keyring `/root/.gnupg/pubring.gpg' created 
 +gpg: Go ahead and type your message ... 
 +^C 
 +gpg: signal Interrupt caught ... exiting 
 +</code> 
 + 
 +Pour générer les clefs, saisissez la commande suivante :
  
 <code> <code>
-mysql> CREATE DATABASE `CarnetAdresses` +[root@centos7 ~]# gpg --gen-key 
-Query OK, 1 row affected (0.00 sec)+gpg (GnuPG) 2.0.22Copyright (C) 2013 Free Software Foundation, Inc. 
 +This is free software: you are free to change and redistribute it. 
 +There is NO WARRANTYto the extent permitted by law. 
 + 
 +Please select what kind of key you want: 
 +   (1) RSA and RSA (default) 
 +   (2) DSA and Elgamal 
 +   (3) DSA (sign only) 
 +   (4) RSA (sign only) 
 +Your selection? 1 
 +RSA keys may be between 1024 and 4096 bits long. 
 +What keysize do you want? (2048)  
 +Requested keysize is 2048 bits 
 +Please specify how long the key should be valid. 
 +         = key does not expire 
 +      <n>  = key expires in n days 
 +      <n>w = key expires in n weeks 
 +      <n>m = key expires in n months 
 +      <n>y = key expires in n years 
 +Key is valid for? (0)  
 +Key does not expire at all 
 +Is this correct? (y/N) y 
 + 
 +GnuPG needs to construct a user ID to identify your key. 
 + 
 +Real name: I2TCH 
 +Email address: infos@i2tch.eu 
 +Comment: Test Key 
 +You selected this USER-ID: 
 +    "I2TCH (Test Key<infos@i2tch.eu>" 
 + 
 +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
 +You need a Passphrase to protect your secret key. 
 + 
 +We need to generate a lot of random bytes. It is a good idea to perform 
 +some other action (type on the keyboard, move the mouse, utilize the 
 +disks) during the prime generation; this gives the random number 
 +generator a better chance to gain enough entropy. 
 +We need to generate a lot of random bytes. It is a good idea to perform 
 +some other action (type on the keyboard, move the mouse, utilize the 
 +disks) during the prime generation; this gives the random number 
 +generator a better chance to gain enough entropy. 
 +gpg: /root/.gnupg/trustdb.gpg: trustdb created 
 +gpg: key F6A5B400 marked as ultimately trusted 
 +public and secret key created and signed.
  
-mysql+gpg: checking the trustdb 
 +gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model 
 +gpg: depth: 0  valid:    signed:    trust: 0-, 0q, 0n, 0m, 0f, 1u 
 +pub   2048R/F6A5B400 2016-08-10 
 +      Key fingerprint = CA95 0CB9 859B 2F80 B8AF  8C07 5365 C618 F6A5 B400 
 +uid                  I2TCH (Test Key) <infos@i2tch.eu> 
 +sub   2048R/700F1CD5 2016-08-10
 </code> </code>
  
-Créez ensuite deux tables **familles** et **enfants** dans la base **CarnetAdresses** :+La liste de clefs peut être visualisée avec la commande suivante :
  
 <code> <code>
-mysql> USE CarnetAdresses ; +[root@centos7 ~]# gpg --list-keys 
-Database changed +/root/.gnupg/pubring.gpg 
-mysql+------------------------ 
 +pub   2048R/F6A5B400 2016-08-10 
 +uid                  I2TCH (Test Key) <infos@i2tch.eu> 
 +sub   2048R/700F1CD5 2016-08-10
 </code> </code>
 +
 +<WRAP center round important>
 +Pour importer la clef d'un correspondant dans sa trousse de clefs il convient d'utiliser la commande suivante :
 +
 +  # gpg --import la-clef.asc
 +</WRAP>
 +
 +Pour exporter sa clef publique, il convient d'utiliser la commande suivante :
  
 <code> <code>
-mysql> CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR(40), +[root@centos7 ~]# gpg --export --armor I2TCH ~/I2TCH.asc 
-    -> PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), +[root@centos7 ~]# cat I2TCH.asc  
-    -> CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40)); +-----BEGIN PGP PUBLIC KEY BLOCK----- 
-Query OK, 0 rows affected (0.03 sec)+Version: GnuPG v2.0.22 (GNU/Linux)
  
-mysql> +mQENBFeqtJkBCACgQWXgjwnOMvsI1KDgyCRrg3MZmjcvU9SBh+lEEEWfqY7MKXjs 
 +PsXN/MHjQIWSptVe0OjVQhQWDicIEiVQ6nxV+jqx5Q9fqxmjsOrzIQFadsF5LS/
 +LR9KcXdBoSORGXMIsRKMzfS6oyK3yi5jM65P6jpH6PnyaX1PvlgjASh7F8OGoU8y 
 +46WW/nW4DEN3MsX2FBtwY6aMcD5+Nvb8tJrQGz/DCrd045DRAR15mA8SVPPHSRMY 
 +v3UzxXeRKxF/NDlecGubP1xfvvqkg/+hxUuybAc6MBhDQKvwL/ZpCoBlUCiouFPA 
 +T9bYfagX2LHVBanY/mtIVhYDygtdc37hovEzABEBAAG0IUkyVENIIChUZXN0IEtl 
 +eSkgPGluZm9zQGkydGNoLmV1PokBOQQTAQIAIwUCV6q0mQIbAwcLCQgHAwIBBhUI 
 +AgkKCwQWAgMBAh4BAheAAAoJEFNlxhj2pbQAYW8H/iEg51IkqWYFSDBDWUljK3Sv 
 +vvVGdQhqc7UptgYyqCWfegngdBH+2ScB8kbM8QVGX8kJ+xT4SeiV/VJdN6sHIkHV 
 +sHBj5x77E5QVaU2Oz0cOlvg9cyGuQ5Y5sBN0MYEp7Q+mHpCTFhaCj8zwQ1/ZHdlK 
 +Qk/8nNk/k2A94BJCwyQqITRWlOTYj0JGzgZV8yU5ROISsk+L6Pi4IHJw0+ZXlPXv 
 +b0bG4p4mEmnhzZcfJ3runLJlCNrMRrWvBkkkGK/djuXDIR7HStQQlreSPG/m1JRF 
 +hP/SARssyIWxyABSYOjR214jVLhC/pQvnbuVguYJoR6tdYqiui7oq+HBHXkP5pe5 
 +AQ0EV6q0mQEIAOSMChRKnaZgOLzh0FN7jCJT8z8xqj1Qze8F4Vz6nS+X0Rk38lQt 
 +ICRSMJFm6CzyPbQamAAIPshT256brXF0jPp9vpirJn/bPsiT+rtu0dl5QyWJqcc/ 
 +fE+/HaMVOuQ9HrplxV/heBqyPSA8BCppbAMti8i2DK7pNqe1JJ7CRxG0nakDSEgK 
 +QbyrGjZYm0q2c9zb9QSbzxg/aKX2D9dlHUpNl4dhJ231d0OhBMQoW6psJjIrzfHd 
 +dpgAYycgennv7Ik8+CIOjgb+Gl5AewLYCMFKCx/mV6/UkzXhmWw/o/POKsRFQJM+ 
 +glXAr6ddQRhk6L482R3qkWTlQHx62KAr7BMAEQEAAYkBHwQYAQIACQUCV6q0mQIb 
 +DAAKCRBTZcYY9qW0AF60B/9tpW1Bq8GyDN6kpj+of/b8xu37A4v6Ws43feuT7cNc 
 +EuCi+EB6wyQ3dGSgQ9BUrO2KbF0OtjYxak3FWrFkmoFucvraxC2xQZuoqN+Qtydf 
 +utmC6V4dCOsp3NWkuCBlUN4axI+m2M2tgTn06iDDkW0ZTISxMqapHjzIi43ufJrD 
 +1RBPjl8BBvxSqcceZsybqNre8u9xka2fXW8xMTJr14xeYITd/YJbJ5UkpU0xmzJz 
 +hR6B8Nji4yDplTZJtz8yJ+vOlg4p7TBN6O/BCvf83q9DfmhtlE8sYsoQ1dHhPNPR 
 +VjdGSFRo2huGFd2KNCleilRVI3xcnrR9S7ziRJu9KG9H 
 +=9R5l 
 +-----END PGP PUBLIC KEY BLOCK-----
 </code> </code>
  
-Pour plus de facilité, copiez simplement la requête et collez-la dans votre terminal :+Cette clef peut ensuite être jointe à des messages électroniques ou bien déposée sur un serveur de clefs tel http://www.keyserver.net.
  
-<file text familles> +===Signer un message===
-CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR(40), PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40)); +
-</file>+
  
-<code> +Créez maintenant un message à signer :
-mysql> CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, +
-    -> Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille)); +
-Query OK, 0 rows affected (0.01 sec)+
  
-mysql+<code> 
 +[root@centos7 ~]# vi ~/message.txt 
 +[root@centos7 ~]# cat ~/message.txt 
 +This is a test message for gpg
 </code> </code>
  
-Pour plus de facilitécopiez simplement la requête et collez-la dans votre terminal :+Pour signer ce message en format binaireil convient d'utiliser la commande suivante :
  
-<file text enfants+<code
-CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille)); +[root@centos7 ~]# gpg --default-key I2TCH --detach-sign message.txt
-</file>+
  
-Utilisez ensuite la commande SHOW pour visualiser le résultat de chaque instruction, par exemple :+You need a passphrase to unlock the secret key for 
 +user: "I2TCH (Test Key) <infos@i2tch.eu>" 
 +2048-bit RSA key, ID F6A5B400, created 2016-08-10 
 + 
 +[root@centos7 ~]# ls -l | grep message 
 +-rw-r--r--. 1 root    root          31 Aug 10 07:14 message.txt 
 +-rw-r--r--. 1 root    root         287 Aug 10 07:16 message.txt.sig 
 + 
 +[root@centos7 ~]# cat message.txt.sig 
 +�W��� 
 + Se����,�|�D=���X�@N�����|�k!�M[���yһ��p�������}(C$����Y��d:��E�і^-��W{Տ� 
 +��2�;��`yj��9��]�b�{��`��ב���������|*�%��R[root@centos7 ~]# ��rt������;�_S9z���HK���Hq�!�G�$��2�=Scc= 
 +</code> 
 + 
 +Pour signer ce message en format ascii, il convient d'utiliser la commande suivante :
  
 <code> <code>
-mysql> SHOW DATABASES; +[root@centos7 ~]# gpg --default-key I2TCH --armor --detach-sign message.txt
-+--------------------+ +
-| Database           | +
-+--------------------+ +
-| information_schema | +
-| CarnetAdresses     | +
-| mysql              | +
-| test               | +
-+--------------------+ +
-4 rows in set (0.00 sec)+
  
-mysql +You need a passphrase to unlock the secret key for 
 +user: "I2TCH (Test Key) <infos@i2tch.eu>
 +2048-bit RSA key, ID F6A5B400, created 2016-08-10 
 + 
 +[root@centos7 ~]# ls -l | grep message 
 +-rw-r--r--. 1 root    root          31 Aug 10 07:14 message.txt 
 +-rw-r--r--. 1 root    root         490 Aug 10 07:17 message.txt.asc 
 +-rw-r--r--. 1 root    root         287 Aug 10 07:16 message.txt.sig 
 + 
 +[root@centos7 ~]# cat message.txt.asc 
 +-----BEGIN PGP SIGNATURE----- 
 +Version: GnuPG v2.0.22 (GNU/Linux) 
 + 
 +iQEcBAABAgAGBQJXqrkDAAoJEFNlxhj2pbQATwoH/0oAm1YkXH3cfnlZef+qAc3X 
 +AfFZz8lfwSlrBYwgDA/vd98tJNLv8VxYLRu02JcRBHqjV/LYqfCACoLKyYWCUzT/ 
 +NZiOPZDVaEpOx1vLIbmBxGclfFtbvSiZj/eBrReE2tAnnTBSTPLH58kPAMEmVgM6 
 +Io8BPSnZvOlNhYQrPsGd046SLPRu8hTozwtB47Do6B6RazzpGLG7zOD1JZP56eD7 
 +oo3+1HxYdv4arVgjb/bfyCNtvyPyQm+sTZPYL3vfAjkHfBQAaoAVSPRKRLgUMPD0 
 +xrlhOU0PhK1+0pF8nVf/jt+SgCiGU8Jg1zEKCqSBuIT2Acs/kZIMo75Qo9zE2C4= 
 +=rO70 
 +-----END PGP SIGNATURE-----
 </code> </code>
 +
 +Pour vérifier la signature d'un message signé en mode ascii, il convient d'utiliser la commande :
  
 <code> <code>
-mysql> SHOW TABLES FROM CarnetAdresses; +[root@centos7 ~]# gpg --verify message.txt.asc 
-+--------------------------+ +gpg: Signature made Wed 10 Aug 2016 07:43:49 CEST using RSA key ID F6A5B400 
-| Tables_in_CarnetAdresses | +gpg: Good signature from "I2TCH (Test Key) <infos@i2tch.eu>" 
-+--------------------------+ +</code>
-| Enfants                  | +
-| familles                 | +
-+--------------------------+ +
-2 rows in set (0.00 sec)+
  
-mysql+<WRAP center round important> 
 +Pour vérifier la signature d'un message signé en mode ascii et produit en dehors du message lui-même, il convient d'utiliser la commande : 
 + 
 +  # gpg --verify message.txt.asc message.txt 
 +</WRAP> 
 + 
 +Pour signer ce message **dans le message lui-même** en format ascii, il convient d'utiliser la commande suivante : 
 + 
 +<code> 
 +[root@centos7 ~]# gpg --default-key I2TCH --clearsign message.txt 
 + 
 +You need a passphrase to unlock the secret key for 
 +user: "I2TCH (Test Key) <infos@i2tch.eu>" 
 +2048-bit RSA key, ID F6A5B400, created 2016-08-10 
 + 
 +File `message.txt.asc' exists. Overwrite? (y/N) y 
 + 
 +[root@centos7 ~]# ls -l | grep message 
 +-rw-r--r--. 1 root    root          31 Aug 10 07:14 message.txt 
 +-rw-r--r--. 1 root    root         568 Aug 10 07:43 message.txt.asc 
 +-rw-r--r--. 1 root    root         287 Aug 10 07:16 message.txt.sig 
 + 
 +[root@centos7 ~]# cat message.txt.asc 
 +-----BEGIN PGP SIGNED MESSAGE----- 
 +Hash: SHA1 
 + 
 +This is a test message for gpg 
 +-----BEGIN PGP SIGNATURE----- 
 +Version: GnuPG v2.0.22 (GNU/Linux) 
 + 
 +iQEcBAEBAgAGBQJXqr8VAAoJEFNlxhj2pbQAQ3cH+wemHfA6SoMOakxzno0iJ5ry 
 +yROrwTm2clnEbN2zJ7rWzwRT6YtPU4mFgDyjL6G7TzOU5o9AI1dfm2iZ3kdJKmgQ 
 +ug1F9SfhtGjltnPB46keYnzthaHNzwLwNJtv2pgxcfhO9gbFWH4FCjMRAGm9S4Hl 
 +okF/xKVVoQzK/n/OyelUJJ6GzfNnoS75bv1WbFlie2+KlTs1MEZGZK4HiZKeXUM5 
 +8Z4wPBKy3AlcQlZdW9rScbyHjAeyQ/yFR8Bnax6m1MK7fJv3XoaDgRegENrGwvRN 
 +YHV7kmFU3X/ew8l85FW3q1URjKxAZLqzYRXjNRoFs67yZYTNGqcZvP3BWlefpTw= 
 +=JTVm 
 +-----END PGP SIGNATURE-----
 </code> </code>
 +
 +===Chiffrer un message===
 +
 +Pour chiffrer un message, il faut disposer de la clef publique du destinataire du message. Ce dernier utilisera ensuite sa clef privée pour déchiffrer le message. Il convient de préciser le destinataire du message, ou plus précisément la clef publique à utiliser, lors d'un chiffrement :
 +
 +    gpg --recipient <destinataire> --encrypt <message>
 +
 +  * //<destinataire>// représente toute information permettant de distinguer sans ambigüité une clef publique dans votre trousseau. Cette information peut-être le nom ou l'adresse email associé à la clef publique que vous voulez utiliser, 
 +  * //<message>// représente le message à chiffrer.
 +
 +Par exemple pour chiffrer un message en mode binaire, il convient de saisir la commande suivante :
  
 <code> <code>
-mysql> SHOW COLUMNS FROM familles FROM CarnetAdresses; +[root@centos7 ~]# gpg --recipient I2TCH --encrypt message.txt 
-+-------------+-------------+------+-----+---------+----------------+ + 
-| Field       | Type        | Null | Key | Default | Extra          | +[root@centos7 ~]# ls -l | grep message 
-+-------------+-------------+------+-----+---------+----------------+ +-rw-r--r--. 1 root    root          31 Aug 10 07:14 message.txt 
-| CodeFamille | bigint(20)  | NO   | PRI | NULL    | auto_increment | +-rw-r--r--. 1 root    root         568 Aug 10 07:43 message.txt.asc 
-| Nom         | varchar(40) | YES  |     | NULL    |                | +-rw-r--r--. 1 root    root         368 Aug 10 07:47 message.txt.gpg 
-| PrenomPere  | varchar(40) | YES  |     | NULL    |                | +-rw-r--r--. 1 root    root         287 Aug 10 07:16 message.txt.sig
-| PrenomMere  | varchar(40) | YES  |     | NULL    |                | +
-| Adresse1    | varchar(40) | YES  |     | NULL    |                | +
-| Adresse2    | varchar(40) | YES  |     | NULL    |                | +
-| CodePostal  | varchar(5)  | YES  |     | NULL    |                | +
-| Ville       | varchar(40) | YES  |     | NULL    |                | +
-| ProfPere    | varchar(40) | YES  |     | NULL    |                | +
-| ProfMere    | varchar(40) | YES  |     | NULL    |                | +
-+-------------+-------------+------+-----+---------+----------------+ +
-10 rows in set (0.00 sec)+
  
-mysql> +[root@centos7 ~]# cat message.txt.gpg 
 +� 
 +  �q3p����?�j* 
 +���X��VL��_~7���_*�u���BD��R��҃E�%��!�j����X�$��aԼ�F0[�)\N܂��$&�S�1���i�c����Pt��ȉH#��9���lRe���MvX9Wi�K�h��ěWΚ�S5�i�H��U���/"�c~,��Mm����`���(��_�E��|Q�5;��e��L"�cLQ�+��/fhrS�E��F��3���&������Pk�*��$H��5طR]���rM�����Mt9*͊
 </code> </code>
 +
 +Et pour chiffrer un message en mode ascii, il convient de saisir la commande suivante :
  
 <code> <code>
-mysql> SHOW INDEX FROM familles; +[root@centos7 ~]# gpg --recipient I2TCH --armor --encrypt message.txt 
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ +File `message.txt.asc' exists. Overwrite? (y/Ny
-| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ +
-| familles |          0 | PRIMARY  |            1 | CodeFamille | A                   0 |     NULL | NULL        | BTREE      |         | +
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ +
-1 row in set (0.00 sec)+
  
-mysql> +[root@centos7 ~]# ls -l | grep message 
 +-rw-r--r--. 1 root    root          31 Aug 10 07:14 message.txt 
 +-rw-r--r--. 1 root    root         596 Aug 10 07:49 message.txt.asc 
 +-rw-r--r--. 1 root    root         368 Aug 10 07:47 message.txt.gpg 
 +-rw-r--r--. 1 root    root         287 Aug 10 07:16 message.txt.sig 
 + 
 +[root@centos7 ~]# cat message.txt.asc 
 +-----BEGIN PGP MESSAGE----- 
 +Version: GnuPG v2.0.22 (GNU/Linux) 
 + 
 +hQEMA8ZxMwBwDxzVAQf/TAyZ0QI5NKvhQTQC5bAuALrxIXnX0t7yL5ARJ1A4qeE9 
 +vzKPBj7IJHANmW5t9Is+zq1fjdmNVBl7rDw9fLEHGXVARhWlyhMUPHdw2XPSE+VT 
 +0Vzg89w/g5G6eirmKsvDDZq3jm3c/k1w0BrAH6nowAsNuQwoesDr2fazOYVZH+OA 
 +BHr8aslUp06VEOC7dy9gXy7o0Q5Ycb94uM7wC/ByqP2a4sJG10MMUxdSw7vk53/
 +qdiIw0oCdhxNcirjSer3ZzHmqeSeQp6Sl424WuV1VZLnQXvmm084h3Z73kfBbeQc 
 +BJfGqDWIv0pNb/5hn+LOdYn+8JZFguKu+H6ah//ogtJeAbg4kocR6zQzdMp1m8lY 
 +p3h4HgfllK85X+WCQBcTgVaY7t0FHEkfQTrF3oYJI5kkRRnBvHKsKSN1fltKauBc 
 +tmT2G6lZTHO+YRUItKjlAti21hVuRw1gUierqy97Rg== 
 +=NeW+ 
 +-----END PGP MESSAGE-----
 </code> </code>
 +
 +Pour décrypter un message il convient d'utiliser la commande suivante :
  
 <code> <code>
-mysql> SHOW TABLE STATUS FROM CarnetAdresses; +[root@centos7 ~]# gpg --decrypt message.txt.asc
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation         | Checksum | Create_options | Comment | +
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-| Enfants  | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |           NULL | 2014-01-27 10:46:10 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         | +
-| familles | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |              1 | 2014-01-27 10:45:39 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         | +
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-2 rows in set (0.00 sec)+
  
-mysql+You need a passphrase to unlock the secret key for 
 +user: "I2TCH (Test Key) <infos@i2tch.eu>
 +2048-bit RSA key, ID 700F1CD5, created 2016-08-10 (main key ID F6A5B400) 
 + 
 +gpg: encrypted with 2048-bit RSA key, ID 700F1CD5, created 2016-08-10 
 +      "I2TCH (Test Key) <infos@i2tch.eu>" 
 +This is a test message for gpg
 </code> </code>
  
-Créez les enregistrements dans la table **familles** :+====PKI====
  
-<file text data> +On appelle **[[wpfr>Public_Key_Infrastructure|PKI]]** (Public Key Infrastuctureou en français **infrastructure à clé publique (ICP)**parfois **infrastructure de gestion de clés (IGC)**l’ensemble des solutions techniques basées sur la cryptographie à clé publique.
-INSERT INTO familles (Nom PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durant', 'Jacques', 'Jane', '23 rue Dutor','','92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tortua', 'Benoît', 'Carole', '7 rue Verget','', '75005', 'Paris', 'Cadre', 'Cadre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMereVALUES ('Portier', 'Pierre', 'Elisabeth', '5 rue Toulet','', '92200', 'Neuilly', 'Dentiste',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Renault', 'Damien', 'Anne', '2 rue Ragon','', '75007', 'Paris', 'Comptable', 'Enseignante'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet', 'Jean','','','','','','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Rodier', 'Gérard', 'Aurélie', '6 rue Agien', '', '77000', 'Fontainebleau', 'Professeur',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Dupont2', 'Bruno', 'Odile', '12 rue Sébastien','', '75008', 'PARIS', 'Electricien', 'Comptable'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durand2', 'Jacques', 'Jane', '23 rue Dutor','', '92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darmon2', 'Bruno', 'Béatrice', '2 rue Nicolo','', '13008', 'Marseille', 'Cadre', 'Peintre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet2', 'Jean', '','' ,'' ,'' ,'','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte2', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen2', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); +
-</file>+
  
 +Les cryptosystèmes à clés publiques permettent de s'affranchir de la nécessité d'avoir recours systématiquement à un canal sécurisé pour s'échanger les clés. En revanche, la publication de la clé publique à grande échelle doit se faire en toute confiance pour assurer que :
  
-Saisissez maintenant chacune des commandes suivantes et expliquez le résultat obtenu. Les instructions sont numérotées pour faciliter vos prises de notes.+    * La clé publique est bien celle de son propriétaire ; 
 +    * Le propriétaire de la clé est digne de confiance ; 
 +    * La clé est toujours valide
  
-| 1 | ALTER TABLE Enfants ADD INDEX (Prenom); | +Ainsi, il est nécessaire d'associer au bi-clé (ensemble clé publique / clé privéeun certificat délivré par un **tiers de confiance** : l'infrastructure de gestion de clés.
-| 2 | ALTER TABLE Enfants DROP INDEX Prenom; | +
-| 3 | ALTER TABLE Enfants ADD %%TelPort%% VARCHAR(50) NOT NULL; | +
-| 4 | ALTER TABLE Enfants CHANGE %%TelPort%% %%TelPort%% VARCHAR( 22 ) NOT NULL; | +
-| 5 | ALTER TABLE Enfants ADD Test VARCHAR( 40 ) NOT NULL; | +
-| 6 | ALTER TABLE Enfants DROP Test; | +
-| 7 | SELECT FROM familles; | +
-| 8 | SELECT FROM familles LIMIT 8,12; |+
  
-<note tip> +Le tiers de confiance est une entité appelée communément autorité de certification (ou en anglais Certification authorityabrégé CA) chargée d'assurer la véracité des informations contenues dans le certificat de clé publique et de sa validité.
-**LIMIT** - Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1). +
-</note>+
  
 +Pour ce faire, l'autorité signe le certificat de clé publique à l'aide de sa propre clé en utilisant le principe de signature numérique.
  
-| 9 | UPDATE familles SET Adresse1 = '120 rue de Vaugirard', %%CodePostal%% = '75015', Ville = 'PARIS' WHERE Nom = 'DARDUET' AND %%PrenomPere%% = 'Jean' LIMIT 1; | +Le rôle de l'infrastructure de clés publiques est multiple et couvre notamment les champs suivants :
-| 10 | DELETE FROM familles WHERE Nom = 'DURANT' AND %%PrenomPere%% = 'Jacques';+
-| 11 | DELETE FROM familles WHERE Ville = 'Neuilly';+
-| 12 | SELECT * FROM familles LIMIT 8,12; | +
-| 13 | SELECT nom, %%PrenomPere%% FROM familles; | +
-| 14 | SELECT Nom AS 'Nom de famille', %%PrenomPere%% AS 'Prenom du Père' FROM familles; | +
-| 15 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Georges', 'M', '14');+
-| 16 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; |+
  
-<note> +    * enregistrer des demandes de clés en vérifiant l'identité des demandeurs ; 
-Créez la colonne **familles.nb_enfants**. +    générer les paires de clés (clé privée / clé publique) ; 
-</note>+    garantir la confidentialité des clés privées correspondant aux clés publiques ; 
 +    certifier l'association entre chaque utilisateurs et sa clé publique ; 
 +    révoquer des clés (en cas de perte par son propriétaire, d'expiration de sa date de validité ou de compromission)
  
-| 17 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '2'; | +Une infrastructure à clé publique est en règle générale composée de trois entités distinctes : 
-| 18 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '4'; | + 
-| 19 | UPDATE familles SET nb_enfants = '3WHERE %%CodeFamille%% = '5';+    * L'autorité d'enregistrement (AE ou RA pour Recording authority), chargée des formalité administratives telles que la vérification de l'identité des demandeursle suivi et la gestion des demandes, etc.) ; 
-| 20 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '6';+    * L'autorité de certification (AC ou CA pour Certification Authority), chargée des tâches techniques de création de certificats. L'autorité de certification est ainsi chargée de la signature des demandes de certificat (CSR pour Certificate Signing Requestparfois appelées PKCS#10nom du format correspondant). L'autorité de certification a également pour mission la signature des listes de révocations (CRL pour Certificate Revocation List) ; 
-| 21 | UPDATE familles SET nb_enfants = '4' WHERE %%CodeFamille%% = '8';+    * L'Autorité de dépôt (Repositorydont la mission est de conserver en sécurité les certificats
-| 22 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '9'; |  + 
-| 23 | UPDATE familles SET nb_enfants = '3' WHERE %%CodeFamille%% = '11';+===Certificats X509=== 
-| 24 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '12';+ 
-| 25 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '14';+Pour palier aux problèmes liés à des clefs publiques piratées, un système de certificats a été mis en place. 
-| 26 | SELECT SUM(nb_enfantsFROM familles; | + 
-| 27 | SELECT MIN(nb_enfants) AS 'Nb enfants minimum'MAX(nb_enfants) AS 'Nb enfants maximum', AVG(nb_enfantsAS 'Nb enfants moyen' FROM familles| +Le certificat permet d’associer la clef publique à une entité ou une personne. Les certificats sont délivrés par des Organismes de Certification. 
-| 28 | SELECT nom FROM familles WHERE ville = 'Paris';+ 
-| 29 | SELECT nom FROM familles WHERE ville = 'Paris' OR ville = 'Neuilly';+Les certificats sont des fichiers divisés en deux parties :  
-| 30 | ALTER TABLE Enfants DROP PRIMARY KEY; | + 
-| 31 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%VALUES ('Alex', 'F', '12');+  * La partie contenant les informations  
-| 32 | INSERT INTO Enfants (PrenomSexe%%CodeFamille%%VALUES ('Mila', 'F', '2'); | +  * La partie contenant la signature de l'autorité de certification 
-| 33 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Amandine', 'F', '5');+ 
-| 34 | SELECT  familles.Nom , Enfants.Prenom FROM familles, Enfants WHERE Enfants.%%CodeFamille%% = familles.%%CodeFamille%% ); | +La structure des certificats est normalisée par le standard **[[wpfr>X.509|X.509]]** de l’**[[wpfr>UIT|Union internationale des télécommunications]]**.  
-| 35 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; | + 
-| 36 | SELECT ville, min(nb_enfants) as 'Nb enfants minimum', max(nb_enfants) as ' Nb enfants maximum', avg(nb_enfants) as 'Nb enfants moyen' from familles GROUP BY Ville; | +Elle contient :  
-| 37 | SELECT * FROM familles ORDER BY nom; | + 
-| 38 | SELECT * FROM familles GROUP BY ville, Nom; | +  * Le nom de l'autorité de certification  
-| 39 | %%UPDATE familles SET Adresse2 '-';%% | +  * Le nom du propriétaire du certificat  
-| 40 | %%UPDATE familles SET Adresse2 '___',nb_enfants=2;%% | +  * La date de validité du certificat  
-| 41 | UPDATE familles SET nb_enfants=4 WHERE Ville 'Paris';+  * L'algorithme de chiffrement utilisé  
-| 42 | UPDATE familles SET nb_enfants=7 LIMIT 4; | +  * La clé publique du propriétaire  
-| 43 | UPDATE familles SET nb_enfants=8 ORDER BY Nom LIMIT 3; | + 
-| 44 | DELETE FROM familles WHERE Nom = 'Dupont'; | +Le Certificat est signé par l'autorité de certification: 
-| 45 | CREATE TABLE loisirs( Nom VARCHAR( 30 ) NOT NULL ); | + 
-| 46 | DROP TABLE loisirs; | +{{:redhat:lx04:crypto8.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copiermodifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}} 
-| 47 | INSERT INTO familles (Nom, %%PrenomPere%%) VALUES ('Alouet','Jean'),('Rahtmi','Patrick'); | + 
-| 48 | INSERT INTO familles (%%PrenomPere%%) SELECT Enfants.prenom FROM Enfants; | +La vérification se passe ainsi: 
-| 49 | ALTER TABLE familles ADD Sports VARCHAR(50) NOT NULL; | + 
-| 50 | ALTER TABLE familles ADD INDEX (Sports); | +{{:redhat:lx04:crypto9.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.netest mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'imagedans les conditions fixées par la licence, tant que cette note apparaît clairement.}}
-| 51 | ALTER TABLE familles ADD INDEX (%%PrenomPere%%), ADD %%EmailPere%% VARCHAR( 50 ) NOT NULL; | +
-| 52 | ALTER TABLE familles CHANGE %%PrenomPere%% Prenom_Pere VARCHAR( 45 ) NOT NULL; | +
-53 | ALTER TABLE familles DROP Sports; +
-| 54 | ALTER TABLE familles DROP INDEX %%PrenomPere%%; | +
-| 55 | ALTER TABLE familles DISABLE KEYS; | +
-| 56 | ALTER TABLE Enfants RENAME familles_enfants; | +
-| 57 | ALTER TABLE familles ORDER BY Prenom_Pere; | +
-| 58 | ALTER TABLE familles ADD Commentaire LONGTEXT NOT NULL ; | +
-| 59 | ALTER TABLE familles ADD FULLTEXT (Commentaire); | +
-| 60 | UPDATE familles SET Commentaire = 'La vie est un long fleuve tranquilleWHERE %%CodeFamille%% = '11'; | +
-61 | UPDATE familles SET Commentaire = 'Pariscapitale de la France est traversée par un fleuveWHERE %%CodeFamille%% ='4';+
-| 62 | UPDATE familles SET Commentaire = 'Le ruisseau se jette dans la rivière qui se jette dans le FLEUVE' WHERE %%CodeFamille%% = '6'; | +
-63 | SELECT * FROM familles WHERE MATCH (CommentaireAGAINST ('fleuve');+
-| 64 | SELECT NomCommentaire FROM familles WHERE  MATCH (Commentaire) AGAINST ('-capitale+fleuve'IN BOOLEAN MODE); |+
  
 ----- -----
-<html> + 
-<div align="center"> +Copyright © 2023 Hugh Norris.
-Copyright © 2020 Hugh Norris. +
-</html>+
Menu