ManuelDowek.book Page 197 Monday, July 9, 2012 4:58 PM Les réseaux C HAPITRE 16 AVANCÉ Les ordinateurs parlent aux ordinateurs. Dans ce chapitre, nous voyons comment les ordinateurs communiquent entre eux, et comment ces communications se composent pour faire fonctionner le réseau Internet. Ces mécanismes de communication de machine à machine s’appellent des protocoles. Les protocoles de la couche physique connectent les bus des ordinateurs. Les protocoles de la couche lien organisent un réseau local autour d’un serveur et repèrent les ordinateurs par l’adresse MAC de leur carte réseau. Les protocoles de la couche réseau organisent les réseaux locaux de proche en proche et repèrent les ordinateurs par leur adresse IP. Nous expliquons comment les informations sont acheminées au travers du réseau à l’aide de routeurs. © Groupe Eyrolles, 2012 Vinton Cerf (1943-) et Robert Kahn (1938-) ont inventé, au début des années 1970, le protocole de transmission de paquets de données IP (Internet Protocol) et le protocole de contrôle de flux de données TCP (Transmission Control Protocol). Il s’agit des deux principaux protocoles du réseau Internet. Ils donnent à ce réseau sa fiabilité, sa robustesse en cas de pannes ou de modifications et sa capacité à évoluer. Cela a valu à leurs auteurs le surnom de « pères d’Internet. » ManuelDowek.book Page 198 Monday, July 9, 2012 4:58 PM Troisième partie – Machines T Réseau Un réseau est un ensemble d’ordinateurs et de connexions qui permettent à chaque ordinateur de communiquer avec tous les autres, éventuellement en passant par des intermédiaires. Nous avons vu qu’un ordinateur pouvait se décrire à différentes échelles : les transistors s’assemblent en portes booléennes, qui s’assemblent à leur tour en composants – processeurs, mémoires, etc. – qui s’assemblent à leur tour en ordinateurs. Et nous pouvons continuer, car les ordinateurs s’assemblent à leur tour en réseaux de différentes tailles : des réseaux les plus simples, formés de deux ordinateurs reliés par un câble ou par radio, aux réseaux locaux connectant quelques ordinateurs entre eux – les ordinateurs d’un lycée par exemple –, qui s’assemblent à leur tour pour former le plus grand des réseaux : Internet, lequel relie presque tous les ordinateurs du monde. Les protocoles T Protocole Un protocole est un ensemble de règles qui régissent la transmission d’informations sur un réseau. Il existe de nombreux protocoles, chacun spécialisé dans une tâche bien précise. T Couche Une couche est un ensemble de protocoles qui effectuent des tâches de même niveau. On distingue cinq couches appelées couche application, couche transport, couche réseau, couche lien et couche physique. Si un programme PA, par exemple un logiciel de courrier électronique, exécuté sur un ordinateur A, veut communiquer des informations à un autre programme PB, exécuté sur un ordinateur B, il sous-traite cette tâche à un programme spécialisé QA, exécuté sur l’ordinateur A, qui met en œuvre un protocole. Ce programme QA dialogue, suivant les spécifications de ce protocole, avec un programme homologue QB exécuté sur l’ordinateur B, ce qui permet ainsi la communication entre les programmes PA et PB. En fait, le programme QA sous-traite, à son tour, certaines tâches moins sophistiquées à d’autres programmes mettant en œuvre d’autres protocoles, qui sous-traitent, de même, certaines tâches encore plus élémentaires à d’autres protocoles, etc. On peut ainsi classer les protocoles en couches hiérarchiques, par le niveau de sophistication des tâches qu’ils exécutent. Ainsi, les informations envoyées par le programme de courrier électronique sont d’abord confiées à un protocole de la couche application, qui les confie à un protocole de la couche transport, qui les confie à un protocole de la couche réseau, qui les confie à un protocole de la couche lien, qui les confie à un protocole de la couche physique, qui les transmet effectivement vers l’ordinateur B. Quand on confie une lettre à un facteur, on doit la mettre dans une enveloppe et ajouter sur l’enveloppe des informations supplémentaires : l’adresse du destinataire, sa propre adresse, une preuve de paiement, etc. De même, quand un protocole de la couche k+1 confie des informations à un protocole de la couche k, celui-ci ajoute à ces informations un entête Hk qui contient des informations, comme l’adresse de l’ordinateur destinataire, utilisées par le protocole de la couche k. On appelle cela l’encapsulation des informations. Quand les informations I confiées par la 198 © Groupe Eyrolles, 2012 ManuelDowek.book Page 199 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Système en couches, piles de protocoles. Encapsulation et décapsulation de l’information. couche application à la couche transport arrivent à un protocole de la couche physique, plusieurs en-têtes H4, H3, H2, H1 leur ont été ajoutés. Ces en-têtes sont supprimés à la réception : la couche k analyse puis supprime Hk avant de passer l’information à la couche k+1. On appelle cela la décapsulation des informations. ALLER PLUS LOIN Les normes Des normes régissent les rôles de chaque couche, leurs interactions et les spécifications de chaque protocole. Ces normes permettent au réseau Internet de fonctionner à l’échelle mondiale et assurent la modularité du système : il est possible de modifier les protocoles à l’œuvre au sein d’une couche, sans modifier les protocoles des autres couches, et le système continue à fonctionner dans son ensemble. Cette modularité est analogue au fait de pouvoir changer un composant matériel d’un ordinateur, par exemple sa carte graphique, sans devoir rien changer d’autre. Cette modularité est essentielle pour permettre au système d’évoluer. © Groupe Eyrolles, 2012 199 ManuelDowek.book Page 200 Monday, July 9, 2012 4:58 PM Troisième partie – Machines La communication bit par bit : les protocoles de la couche physique Commençons la présentation de ces protocoles par ceux de la couche physique. Un protocole de la couche physique doit réaliser une tâche extrêmement simple : communiquer des bits entre deux ordinateurs reliés par un câble ou par radio. Pour relier deux ordinateurs par un câble, et donc réaliser le réseau le plus simple qui soit, on pourrait prolonger le bus de l’un des ordinateurs, afin de le connecter au bus de l’autre. Ainsi, le processeur du premier ordinateur pourrait écrire, avec l’instruction STA, non seulement dans sa propre mémoire, mais aussi dans celle du second. Le processeur du second ordinateur pourrait alors charger, avec l’instruction LDA, la valeur écrite par celui du premier. La technique utilisée en réalité n’est pas beaucoup plus compliquée : le processeur du premier ordinateur envoie des informations par le bus vers l’un de ses périphériques, la carte réseau, qui les transmet par un câble – ou par un autre support physique, par exemple par radio – à la carte réseau du second ordinateur qui les transmet, par le bus, à son processeur. Transmission point à point Flashcode exprimant le nombre 5412082001000261 200 La transmission d’une carte réseau à l’autre met en œuvre un protocole, appelé protocole physique. Un exemple de protocole physique est la communication par codes-barres à deux dimensions, comme les pictogrammes Flashcode utilisés par les téléphones, où chaque bit est exprimé par un carré noir ou blanc. © Groupe Eyrolles, 2012 ManuelDowek.book Page 201 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Les protocoles physiques qui permettent à deux ordinateurs de communiquer par câble ou par radio ne sont pas très différents. Cependant, au lieu d’utiliser des carrés noirs et blancs, ils représentent les informations par des signaux électromagnétiques, par exemple des variations de longueur d’onde, de phase ou d’intensité d’une onde. Exercice 16.1 On utilise un lien physique peu fiable : à chaque fois que l’on transmet un 0 ou un 1, la probabilité que ce bit ne soit pas reconnaissable à l’arrivée est 3/10. Pour pallier ce manque de fiabilité, on utilise une forme de redondance (voir le chapitre 12) : quand l’ordinateur émetteur demande à sa carte réseau d’envoyer un 0, cette dernière envoie la suite de bits 0, 1, 0, 0, 1, qui est interprétée par la carte réseau de l’ordinateur récepteur comme un 0. De même, quand l’ordinateur émetteur demande à sa carte réseau d’envoyer un 1, elle envoie la suite de bits 1, 0, 1, 1, 0 qui est interprétée par la carte réseau de l’ordinateur récepteur comme un 1. � À partir de combien de bits erronés la suite de cinq bits envoyée n’est-elle plus discernable de l’autre suite ? � En déduire la probabilité qu’une suite de cinq bits envoyée ne soit pas reconnaissable à l’arrivée. � Quels sont les avantages et inconvénients de cette méthode ? SUJET D’EXPOSÉ Protocoles et codages Chercher sur le Web quels sont les protocoles utilisés dans les liaisons RS-232 d’une part, et dans les liaisons USB d’autre part. Quels sont les avantages d’USB par rapport à RS-232 ? Chercher de même ce que sont les codages Manchester d’une part et NRZI d’autre part. Quels sont les avantages du codage Manchester par rapport au codage NRZI ? Les réseaux locaux : les protocoles de la couche lien L’étape suivante consiste à construire un réseau local, c’est-à-dire formé de quelques machines connectées, par un protocole physique, à un ordinateur central : un serveur. Pour envoyer des informations à un autre ordinateur, chaque ordinateur passe par le serveur. De même qu’il était nécessaire de distinguer les différentes cases de la mémoire d’un ordinateur en donnant à chacune un nom, son adresse, il est nécessaire de distinguer les différents ordinateurs d’un réseau local en donnant à chacun un nom : son adresse MAC (Medium Access Control). Une adresse MAC est un mot de 48 bits que l’on écrit comme un sextuplet de nombres de deux chiffres en base seize, les seize chiffres s’écrivant 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f : par exemple 10:93:e9:0a:42:ac. Une adresse MAC unique est attribuée à chaque carte réseau au moment de sa fabrication. L’adresse MAC d’une carte réseau, périphérique d’un ordinateur, identifie ce dernier sur le réseau local. © Groupe Eyrolles, 2012 201 ManuelDowek.book Page 202 Monday, July 9, 2012 4:58 PM Troisième partie – Machines Réseau local Les protocoles grâce auxquels différents ordinateurs, connectés au même serveur, échangent des informations entre eux sont appelés des protocoles de la couche lien. Un protocole simple consiste, pour le serveur, à échanger des informations successivement avec chaque ordinateur du réseau. Ainsi, chaque ordinateur a un créneau de temps pré-établi qui lui est dédié périodiquement pour communiquer avec le serveur, durant lequel le protocole physique épelle bit à bit l’information à transmettre. Toutefois, les protocoles lien les plus utilisés, par exemple Ethernet et WiFi, utilisent un autre mécanisme qui autorise chaque ordinateur à envoyer des informations au serveur à n’importe quel moment – toujours via un protocole physique. Ce mécanisme évite de réserver un créneau pour un ordinateur qui n’a peut-être rien à communiquer au serveur. Cependant, quand plusieurs ordinateurs envoient des informations en même temps, les messages se brouillent – on dit qu’il y a une collision entre les messages – et le serveur n’en reçoit aucun. Pour résoudre ce problème, on utilise une forme de redondance : quand le serveur reçoit les informations envoyées par un ordinateur, il en accuse réception et tant qu’un ordinateur n’a pas reçu d’accusé de réception, il renvoie son message périodiquement. Pour minimiser les risques de nouvelles collisions, ce message est en général renvoyé après un délai de longueur aléatoire. Ce protocole est un exemple d’algorithme qui ne peut fonctionner sans aléa. T Paquet Un paquet est une suite de bits structurés selon un certain format, destinée à être échangée sur le réseau. 202 Le rôle des protocoles de la couche lien est également de définir le format des messages échangés : de même qu’un fichier PGM (voir le chapitre 9) n’est pas simplement une suite de pixels, mais contient aussi d’autres informations – la largeur et la hauteur de l’image, le nombre de niveaux de gris, etc. – et est structuré selon un certain format standard, © Groupe Eyrolles, 2012 ManuelDowek.book Page 203 Monday, July 9, 2012 4:58 PM 16 – Les réseaux les messages qui circulent sur les réseaux, les paquets, ne sont pas simplement formés des bits transmis, mais contiennent des informations additionnelles et sont structurés selon un format standard. Exercice 16.2 Un pictogramme n’est pas simplement une suite de carrés blancs et noirs, mais il contient aussi des informations qui permettent au téléphone d’en trouver les bords et l’orientation. Quelle est la partie du format de chacun de ces pictogrammes qui joue ce rôle ? En omettant ces délimiteurs et en admettant qu’un carré blanc code un 0 et qu’un carré noir code un 1, combien de pictogrammes différents existe-t-il dans chacun de ces formats ? Comment ce nombre se compare-t-il au nombre de pages existant sur le Web ? SAVOIR-FAIRE Trouver les adresses MAC des cartes réseau d’un ordinateur Ouvrir une fenêtre terminal. Utiliser la commande ifconfig sous Linux, ou ipconfig sous Windows. /all Exercice 16.3 (avec corrigé) Trouver les adresses MAC des cartes réseau de son ordinateur. Lorsqu’on tape la commande ifconfig ou ipconfig /all, différentes informations s’affichent, relatives à la connexion de son ordinateur au réseau. Ces informations sont généralement organisées en paragraphes qui correspondent à différentes cartes réseaux : par exemple un paragraphe qui correspond à la carte Ethernet qui gère la connexion par câble et un autre qui correspond à la carte WiFi qui gère la connexion par radio. On reconnaît dans chacun de ces paragraphes une adresse de la forme 10:93:e9:0a:42:ac : un sextuplet de nombres de deux chiffres en base seize. Il s’agit de l’adresse MAC de chacune de ces cartes. Exercice 16.4 Noter l’adresse MAC d’une carte réseau de son ordinateur. De quelle connexion réseau s’agit-il précisément ? WiFi ? Ethernet ? Autre ? Éteindre, puis rallumer l’ordinateur. L’adresse a-t-elle changé ? © Groupe Eyrolles, 2012 203 ManuelDowek.book Page 204 Monday, July 9, 2012 4:58 PM Troisième partie – Machines Le réseau global : les protocoles de la couche réseau POUR ALLER PLUS LOIN D’IPv4 à IPv6 Il n’y a donc que 232 adresses IPv4 possibles, soit un peu plus de quatre milliards : c’est peu quand on sait que le réseau Internet contient déjà trois milliards d’ordinateurs. Cette pénurie en adresses IP, due à l’imprévoyance des pionniers d’Internet, qui cherchaient seulement à connecter quelques dizaines d’ordinateurs sans anticiper le succès de leur réseau, explique que l’on cherche aujourd’hui à les remplacer par des adresses de 128 bits (IPv6). Utiliser un ordinateur central est possible pour un réseau de petite taille, mais cette méthode ne peut pas s’appliquer à un réseau formé de plusieurs milliards d’ordinateurs, comme Internet : d’une part, l’ordinateur central serait vite surchargé, d’autre part s’il tombait en panne, ou s’il était détruit, les communications sur la Terre entière seraient interrompues. C’est pour cela que l’on a inventé d’autres protocoles pour les réseaux de grande taille, appelés les protocoles réseau, qui fédèrent les réseaux locaux de proche en proche et utilisent les protocoles lien pour assurer les communications locales. Le plus utilisé des protocoles réseau est le protocole IP (Internet protocol). Avec le protocole IP, chaque machine a une adresse, appelée son adresse IP. Contrairement à l’adresse MAC, celle-ci n’est pas associée de manière durable à un ordinateur : quand un ordinateur est remplacé par un autre, le nouveau peut hériter de l’adresse IP de l’ancien. À l’inverse, si un ordinateur est déplacé d’un lieu à un autre, il change d’adresse IP. Les adresses IP classiques (IPv4) sont des mots de 32 bits écrits sous forme d’un quadruplet de nombres compris entre 0 et 255, par exemple 216.239.59.104. SAVOIR-FAIRE Trouver l’adresse IP attribuée à un ordinateur Ouvrir une fenêtre terminal. Utiliser la commande ifconfig sous Linux ou ipconfig all sous Windows. / Exercice 16.5 (avec corrigé) Trouver les adresses IPv4 attribuées à son ordinateur. Lorsqu’on tape la commande ifconfig ou ipconfig /all, différentes informations s’affichent, relatives à la connexion de son ordinateur au réseau. On reconnaît parmi ces informations des adresses de la forme 216.239.59.104 : un quadruplet de nombres compris entre 0 et 255. Il s’agit des adresses IPv4 attribuées à chacune des cartes réseaux de l’ordinateur. Exercice 16.6 Noter les adresses IP attribuées aux cartes réseau de son ordinateur. Éteindre, puis rallumer cet ordinateur. Ces adresses ont-elle changé ? 204 © Groupe Eyrolles, 2012 ManuelDowek.book Page 205 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Exercice 16.7 Soit un réseau connectant cinq ordinateurs : A, B, C, D et E. Est-il possible d’identifier chaque ordinateur de manière unique avec des adresses de 3 bits ? Décrire un tel plan d’adressage : attribuer une adresse à chaque ordinateur. Est-il également possible d’identifier chaque ordinateur de manière unique avec des adresses de 2 bits ? Exercice 16.8 Combien y a-t-il d’adresses IPv4 ? Combien y a-t-il d’adresses IPv6 ? Combien y a-t-il de numéros de téléphone en France ? Avec les protocoles réseau, la notion de serveur est remplacée par celle de routeur. Pour envoyer des informations à une machine dont l’adresse IP est X, un ordinateur commence par les envoyer au routeur auquel il est connecté. En fonction de l’adresse X, celui-ci l’envoie à un autre routeur, puis à un autre, etc. jusqu’à ce que les informations arrivent à destination. On appelle ce procédé le routage. T Routeur Un routeur est un ordinateur dont la seule fonction est d’acheminer des informations sur le réseau. Pour les distinguer des routeurs, on appelle les autres ordinateurs du réseau des hôtes. Les routeurs n’ayant pour fonction que de relayer les paquets en direction de leur destination, ils ne mettent en œuvre que des protocoles des couches physique, lien et réseau, contrairement aux hôtes qui, eux, mettent en œuvre des protocoles de toutes les couches. Réseau global. Routage de A à B en passant par les routeurs R1, R2, R3, R4, R5, R6, R7 et R8. La figure suivante illustre le routage d’informations d’un hôte à un autre, en passant par deux routeurs et trois câbles : en chemin, sur chaque machine les traitant, les informations transmises sont successivement encapsulées quand elles passent d’une couche à la couche inférieure, puis décapsulées quand elles passent d’une couche à une couche supérieure. © Groupe Eyrolles, 2012 205 ManuelDowek.book Page 206 Monday, July 9, 2012 4:58 PM Troisième partie – Machines Les protocoles à l’œuvre lors du routage. Chemin suivi par l’information à travers les couches sur chaque machine. On peut comparer le routage au système du courrier postal. Si, à Sydney, un Australien expédie une lettre à l’adresse « 2004, route des Lucioles, Valbonne, France », le facteur australien n’apporte pas cette lettre directement à son destinataire, contrairement à ce que faisaient les « facteurs » au XVIIe siècle : il la met dans un avion en direction de Hong-Kong ou de Los Angeles, où un autre facteur la met dans un avion en direction de Francfort ou de Paris, où un autre facteur la met dans un avion en direction de Nice, où un facteur l’apporte finalement en camionnette, au 2004 de la route des Lucioles, à Valbonne. Un routeur, qui reçoit des informations à envoyer à une adresse IP X, doit choisir le routeur suivant, en direction de X. De même que le facteur australien sait qu’une lettre pour Valbonne, ou plus généralement pour la France, peut passer par Hong-Kong, le routeur a un répertoire, appelé table de routage, qui indique que la première étape d’un chemin vers l’adresse X est le routeur dont l’adresse IP est B, auquel il est directement connecté. Il envoie donc ces informations vers le routeur B, qui consulte à son tour sa propre table de routage, et ainsi de suite jusqu’à arriver à l’ordinateur dont l’adresse est X. Comme dans un jeu de piste, on ne connaît pas le chemin à l’avance, mais, à chaque étape, on découvre la suivante. Pour construire et maintenir à jour leurs tables de routage, les routeurs utilisent un algorithme de routage, par exemple l’algorithme de BellmanFord : outre acheminer des informations d’un point à un autre, chaque routeur envoie périodiquement à chaque routeur auquel il est connecté directement par un protocole lien, la liste des adresses IP vers lesquelles il connaît un chemin, dont bien entendu sa propre adresse, et la longueur 206 © Groupe Eyrolles, 2012 ManuelDowek.book Page 207 Monday, July 9, 2012 4:58 PM 16 – Les réseaux de ce chemin. Grâce à cet algorithme et au fur et à mesure qu’il reçoit des listes, chaque routeur découvre peu à peu l’état du réseau et, ce faisant, les chemins les plus courts pour atteindre les destinations présentes dans le réseau. Ainsi, un routeur qui reçoit du routeur B l’information que B a reçu du routeur C l’information que C est directement connecté à l’ordinateur X, met à jour sa table de routage en mémorisant qu’un chemin pour accéder à l’ordinateur X, en passant par deux intermédiaires, commence par le routeur B. Cette mise à jour dynamique des tables de routage est ce qui donne sa souplesse au réseau Internet. Si par exemple le câble entre les routeurs B et C est détruit, les tables de routage se mettent graduellement à jour en découvrant d’autres chemins pour acheminer les informations vers la machine X. À l’origine, cette idée servait à donner une robustesse au réseau en temps de guerre : tant que deux points restaient connectés par un chemin dans le graphe des routeurs, il leur était possible de communiquer. Par la suite, on s’est rendu compte que cette souplesse était de toutes façons nécessaire dans un réseau de trois milliards d’ordinateurs, où il est inévitable que des ordinateurs soient en permanence ajoutés ou supprimés du réseau. Si les protocoles réseau sont très souples, ils sont en revanche peu fiables : quand un routeur est saturé par trop d’informations à transmettre, il en détruit tout simplement une partie. En outre, quand des informations ont été envoyées d’un routeur à un autre trop longtemps sans arriver à destination, elles sont également détruites. SAVOIR-FAIRE Déterminer le chemin suivi par l’information Dans une fenêtre terminal, la commande ping suivie d’un nom de domaine affiche l’adresse IP associée à ce nom de domaine. La commande traceroute sous Linux ou tracert sous Windows, suivie d’une adresse IP, affiche les routeurs d’un chemin menant de son ordinateur à celui dont l’adresse IP est indiquée. Exercice 16.9 (avec corrigé) Trouver un chemin entre son ordinateur et l’ordinateur associé au nom de domaine www.google.fr. Dans une fenêtre terminal, on tape la commande ping www.google.fr et une adresse IP s’affiche, par exemple 173.194.34.55. C’est l’adresse d’un ordinateur de Google. On tape ensuite la commande traceroute 173.194.34.55 ou tracert 173.194.34.55 et une liste s’affiche des routeurs qui forment un chemin entre sa machine et celle de Google. © Groupe Eyrolles, 2012 207 ManuelDowek.book Page 208 Monday, July 9, 2012 4:58 PM Troisième partie – Machines SAVOIR-FAIRE Déterminer l’adresse IP du serveur par lequel un ordinateur est connecté à Internet Dans une fenêtre terminal, la commande netstat -r sous Linux ou ipconfig /all sous Windows affiche différentes informations relatives à la connexion de son ordinateur au réseau, en particulier la passerelle par défaut (default gateway) qui est le routeur par lequel cet ordinateur est connecté à Internet. Exercice 16.10 (avec corrigé) Déterminer l’adresse IP du routeur par lequel son ordinateur est connecté à Internet. On tape la commande netstat -r ou ipconfig /all. Dans les informations affichées, on recherche la passerelle par défaut (default gateway) indiquée, qui est le routeur. Ce dernier est identifié soit directement par son adresse IP, soit par un nom de la forme gw.adalovelace.fr ; dans ce second cas, on peut trouver l’adresse IP associée à ce nom avec la commande ping. Exercice 16.11 Un algorithme de routage. On attribue à chaque élève une nouvelle adresse mail, par exemple [email protected], [email protected], etc. Chaque élève garde cette adresse secrète et il la marque sur une feuille de papier. Ces feuilles sont mélangées dans un chapeau et chacun tire une adresse en s’assurant qu’il ne tire pas la sienne propre. Chaque élève a uniquement le droit d’envoyer des courriers à l’adresse qu’il a tirée dans le chapeau et de répondre à l’envoyeur de tout courrier qu’il reçoit à son adresse . Chaque élève envoie un courrier à l’adresse qu’il a tirée, dans lequel il indique son propre nom. Par exemple, Alice enverrait : sujet : Hello corps du message : Alice (par -) Chaque élève construit une table de routage qui indique, pour chaque élève dont il a entendu parler, l’adresse de la personne par qui il en a entendu parler pour la première fois. Par exemple, la table de routage d’Alice peut avoir cette forme : Alice (par -) Djamel (par [email protected]) Frédérique (par [email protected]) Hector (par [email protected]) À chaque fois qu’un élève reçoit un message, il le lit, met à jour sa table de routage et y répond en copiant, dans le corps du message l’état de sa table de routage mise à jour. Alice enverrait par exemple : sujet : Hello corps du message : Alice (par -) 208 © Groupe Eyrolles, 2012 ManuelDowek.book Page 209 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Djamel (par [email protected]) Frédérique (par [email protected]) Hector (par [email protected]) Au bout d’une dizaine de minutes, on arrête d’envoyer et de répondre aux messages. On passe alors à la seconde phase de l’exercice : un élève essaie d’envoyer un véritable message à un autre élève. Pour cela, il envoie son message à l’adresse correspondant au nom de son destinataire dans sa table de routage. Par exemple : Alice envoie à l’adresse [email protected] le message suivant : Sujet : message pour Frédérique Corps du message : N’oublie pas de me rapporter l’exemplaire de Madame Bovary que je t’ai prêté il y a six mois. Merci. Alice. Si un élève autre que son destinataire reçoit ce message, il le renvoie à l’adresse correspondant au nom de son destinataire dans sa propre table de routage, et ainsi de suite jusqu’à ce que le message arrive à destination. À quelle condition un message arrive-t-il bien à son destinataire ? La régulation du réseau global : les protocoles de la couche transport Les programmes que l’on utilise tous les jours, par exemple les navigateurs web ou les programmes de gestion du courrier électronique, ne peuvent pas directement utiliser le protocole IP, principalement pour deux raisons : d’une part, le protocole IP ne permet de transférer d’un ordinateur à un autre que des informations de taille fixe : des paquets contenant au maximum 1 500 octets. D’autre part, comme on l’a vu, IP est un protocole peu fiable : dès qu’un serveur est surchargé, il détruit des informations qui n’arrivent donc pas à leur destinataire. On utilise donc un type supplémentaire de protocole : les protocoles de transport, dont le plus utilisé est le protocole TCP (Transmission Control Protocol). Les protocoles de transport utilisent les protocoles réseau pour acheminer des informations contenues dans des paquets IP, d’un bout à l’autre du réseau, et assurent que tout paquet IP envoyé est arrivé à bon port. Pour poursuivre la comparaison avec le service postal, si on attache une importance particulière à une lettre, on l’envoie en recommandé et on attend un accusé de réception, qui permet de savoir que sa lettre a bien été reçue. La couche transport s’assure que la communication a bien lieu de bout en bout, comme prévu. © Groupe Eyrolles, 2012 209 ManuelDowek.book Page 210 Monday, July 9, 2012 4:58 PM Troisième partie – Machines ALLER PLUS LOIN Le port Comme plusieurs programmes peuvent utiliser TCP en même temps et sur la même machine, TCP attribue à chacun d’eux un numéro : un port. Un numéro de port permet à TCP de distinguer les paquets correspondant aux différents programmes qui communiquent en même temps. Comme les protocoles de la couche lien, TCP utilise une forme de redondance pour fiabiliser les communications. Il utilise les protocoles réseaux pour envoyer des paquets IP d’un ordinateur à un autre et pour envoyer un accusé de réception du destinataire à l’expéditeur. Tant que l’accusé de réception n’arrive pas, le même paquet est renvoyé périodiquement. Si trop d’accusés de réception n’arrivent pas, TCP ralentit la cadence d’envoi des paquets pour s’adapter à une congestion éventuelle du réseau global, puis ré-accélère la cadence quand les accusés de réception arrivent. Une autre fonction de TCP est de découper les informations à transmettre en paquets de 1 500 octets. Par exemple, pour envoyer une page web de 10 000 octets, TCP découpe ces 10 000 octets en paquets plus petits, chacun de taille standard, et les envoie l’un après l’autre. À l’autre bout du réseau, quand tous ces paquets standards sont arrivés, TCP les remet dans l’ordre et ré-assemble leurs contenus pour reconstruire la page web. Exercice 16.12 Taper la commande ping www.google.fr dans une fenêtre terminal et observer ce qui se passe. En déduire la valeur d’un temps d’attente adéquat après lequel TCP devrait considérer que l’accusé de réception d’un paquet envoyé à www.google.fr est perdu. Quelle serait la conséquence d’utiliser un temps d’attente plus court ? Quelle serait la conséquence d’utiliser un temps d’attente plus long ? Exercice 16.13 On suppose que la durée à attendre entre l’envoi d’un paquet et la réception d’un accusé de réception pour ce paquet est 1 seconde en moyenne, et que les paquets peuvent chacun contenir jusqu’à 1 500 octets de données. On considère les deux configurations suivantes pour TCP. • Configuration A. TCP est configuré pour n’envoyer un nouveau paquet qu’après avoir reçu l’accusé de réception du paquet précédent. • Configuration B. TCP est autorisé à envoyer des grappes de 20 paquets à la suite et à accuser réception avec un seul accusé de réception pour toute la grappe, au lieu d’un accusé de réception pour chaque paquet. En conséquence, un paquet perdu entraîne l’absence d’accusé de réception pour la grappe à laquelle il appartient, et donc demande de renvoyer la grappe entière au lieu du seul paquet perdu. � Combien de temps faut-il au minimum pour envoyer 1 Mo à destination avec la configuration A ? Avec la configuration B ? Pour simplifier, on suppose que le temps passé à envoyer 20 paquets à la suite est négligeable par rapport à 1 seconde. � On suppose maintenant qu’en moyenne, 1% des paquets envoyés vers une destination se perdent en chemin. En moyenne, combien de paquets faudra-t-il faire transiter sur le réseau pour transférer le fichier de 1 Mo à destination avec la configuration A ? Avec la configuration B ? Pour simplifier, on considère qu’à la deuxième fois qu’on envoie un paquet, il arrive à destination à coup sûr, et qu’un accusé de réception envoyé arrive également à coup sûr. � Quels sont les avantages et inconvénients de la configuration B par rapport à la configuration A ? 210 © Groupe Eyrolles, 2012 ManuelDowek.book Page 211 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Exercice 16.14 Sachant que chaque paquet envoyé par TCP est identifié avec un numéro de séquence exprimé sur 4 octets, et en admettant que chaque paquet envoyé peut contenir 1 500 octets de données à transmettre, quelle est la taille maximum d’un fichier à transmettre à partir de laquelle TCP devrait réutiliser un numéro de séquence déjà utilisé au début de l’envoi de ce même fichier ? Même question si on décompte des 1 500 octets les informations de contrôle nécessaires au fonctionnement de chaque couche, par exemple 20 octets d’entête TCP, 24 octets d’en-tête IP et 34 octets d’en-têtes WiFi et couche physique. Exercice 16.15 Chercher sur le Web ce qu’est le protocole UDP. Quelles sont les différences entre UDP et TCP ? Quels sont les principaux avantages et inconvénients de chacun de ces protocoles ? Citer des exemples de programmes qui utilisent UDP, d’autres qui utilisent TCP, et expliquer ces choix. Programmes utilisant le réseau : la couche application Les protocoles des couches physique, lien, réseau et transport fournissent le socle d’Internet : ils permettent de transmettre de manière fiable des fichiers de toutes tailles, d’une machine à n’importe quelle autre machine connectée à Internet. En plus de ce socle, on distingue néanmoins un dernier type de protocoles, qui utilisent les services de la couche transport pour le compte de certains programmes que l’on utilise tous les jours, comme les navigateurs web ou les logiciels de courrier électronique. Il s’agit des protocoles d’application. Les logiciels de courrier électronique utilisent par exemple le protocole d’application SMTP (Simple Mail Transfer Protocol), les navigateurs web utilisent le protocole d’application HTTP (HyperText Transfer Protocol) etc. Un autre protocole d’application important est DNS (Domain Name System) qui, aux adresses IP, associe des noms de domaines comme www.moi.fr. SUJET D’EXPOSÉ DNS Présenter les principes de base de DNS. Quand un navigateur cherche à accéder à une page web située sur un autre ordinateur, il utilise DNS pour trouver l’adresse IP de l’ordinateur hôte sur lequel cette page web se trouve, puis le protocole HTTP pour demander cette page à l’ordinateur hôte. Si cette page est par exemple la page d’accueil d’un annuaire électronique, elle contiendra des champs à remplir, et c’est à nouveau le protocole HTTP qui acheminera les infor- © Groupe Eyrolles, 2012 211 ManuelDowek.book Page 212 Monday, July 9, 2012 4:58 PM Troisième partie – Machines mations renseignées vers l’ordinateur hôte, qui, en fonction de ces informations, renverra en général une autre page avec la réponse à la requête. Au bout du compte, pour transférer une page web d’un ordinateur à un autre, HTTP confie cette page web au protocole TCP, qui la découpe en paquets et confie chaque paquet au protocole IP, qui choisit un lien à utiliser en direction de la destination, puis confie chaque paquet au protocole de lien en vigueur sur ce dernier, par exemple WiFi, qui le confie enfin au protocole physique, qui gère l’acheminement des bits codant ces paquets à travers ce lien. Chaque protocole, à son niveau, contribue à la communication. Chaque protocole est simple ; c’est de leur interaction qui naît la complexité. Quelles lois s’appliquent sur Internet ? SUJET D’EXPOSÉ L’affaire LICRA contre Yahoo! Qu’est-ce que l’article R.645-1 du Code Pénal français ? Qu’est-ce que le premier amendement de la Constitution des États-Unis ? En quoi sont-ils contradictoires ? Chercher des documents sur l’affaire de la LICRA contre Yahoo!, relative à la vente aux enchères d’objets nazis sur Internet (de l’ordonnance du Tribunal de Grande Instance de Paris du 20 novembre 2000, jusqu’à la décision de la Cour Suprême des États-Unis du 30 mai 2006). Montrer en quoi cette affaire illustre le problème de l’application de législations différentes selon les pays pour la vente sur Internet. 212 Jusqu’au milieu du XXe siècle, quand un livre ou un journal était publié, il l’était dans un pays particulier et sa publication était régie par les lois de ce pays. Quand un objet était vendu, il l’était dans un pays particulier et cette vente était régie par les lois de ce pays. Ainsi, la publication de certains textes ou la vente de certains objets était autorisée dans certains pays, mais interdite dans d’autres. Parce que c’est un réseau mondial, Internet permet de publier, dans un pays, des textes qui peuvent être lus dans le monde entier et, de même, de vendre des objets qui peuvent être achetés dans le monde entier. Dès lors, quelle loi appliquer ? À cette question, qui est nouvelle, plusieurs réponses ont été imaginées, sans que personne ne sache encore laquelle s’imposera sur le long terme : • l’application des lois du pays dans lequel le texte est publié ou l’objet mis en vente, • l’application des lois du pays dans lequel le texte peut être lu ou l’objet acheté – ce qui obligerait, par exemple, un hébergeur de site web à bloquer l’accès à certains sites depuis certains pays, • ou l’émergence d’un minimum de règles universelles. © Groupe Eyrolles, 2012 ManuelDowek.book Page 213 Monday, July 9, 2012 4:58 PM 16 – Les réseaux Qui gouverne Internet ? Quelques règles d’organisation d’Internet doivent être universellement acceptées. Par exemple, pour que les ordinateurs du monde entier puissent communiquer, il est nécessaire qu’ils utilisent les mêmes protocoles et pour qu’il n’y ait pas de confusion entre les adresses IP, il faut que deux ordinateurs distincts n’aient jamais la même adresse. Internet n’est donc pas entièrement décentralisé : un petit nombre de décisions doivent être prises en commun. Ici, plusieurs modes d’organisation sont en concurrence, à nouveau sans que personne ne sache lequel s’imposera sur le long terme : • l’émergence d’organisations internationales régies par des traités entre États, • l’émergence d’organisations internationales informelles, dont la légitimité vient uniquement de la confiance qui leur est accordée, • l’émergence d’organisations propres aux pays où Internet est le plus développé (cette dernière solution ayant l’inconvénient d’augmenter les différences de développement d’Internet entre les pays). SUJET D’EXPOSÉ Que sont… • l’Internet Engineering Task Force (IETF), • l’Internet Corporation for Assigned Names and Numbers (ICANN), l’Internet Society (ISOC), le World Wide Web Consortium (W3C), le WhatWG, et l’Union Internationale des Télécoms (UIT) ? Quel est le rôle et quel est le statut de chacune de ces organisations ? • • • • ALLER PLUS LOIN Calculer dans les nuages (cloud computing) Au cours de l’histoire de l’informatique, des modes centralisatrices et décentralisatrices se sont succédées. Ainsi, jusqu’aux années 1970, les entreprises n’avaient qu’un seul ordinateur, auquel étaient connectés de nombreux terminaux, par exemple formés d’un clavier et d’un écran, qui permettaient à différentes personnes d’effectuer des calculs sur cet ordinateur. À partir des années 1980, ces terminaux ont été remplacés par des microordinateurs, connectés par un réseau à un serveur. Les calculs n’étaient alors plus effectués par un ordinateur central, mais par chacun de ces micro-ordinateurs. Depuis le milieu des années 2000, on voit apparaître un retour de la centralisation. Des entreprises, qui vendaient naguère des programmes à des clients qui les utilisaient pour effectuer des calculs sur leurs ordinateurs, proposent désormais à ces mêmes clients d’effectuer elles-mêmes ces calculs à leur place. Les clients ont juste besoin de communiquer leurs données à ces entreprises, qui font les calculs sur leurs propres ordinateurs et envoient le résultat de ces calculs à leurs clients. C’est ce qu’on appelle le calcul dans les nuages (cloud computing). Par exemple, au lieu d’installer un logiciel de courrier électronique sur son ordinateur et de l’utiliser pour envoyer des courriers, on peut, à chaque fois que l’on souhaite envoyer un courrier, se connecter à un ordinateur distant, en général au moyen d’une page web, et communiquer le texte de son courrier à cet ordinateur, © Groupe Eyrolles, 2012 qui se chargera de l’envoyer ; c’est l’idée du Webmail. De même, au lieu d’acheter un logiciel de comptabilité et de l’utiliser, une entreprise peut se connecter, à chaque fois qu’elle souhaite effectuer une opération comptable, à une machine distante qui effectue cette opération pour l’entreprise. L’ordinateur local ne sert plus qu’à communiquer des informations à cette machine distante, comme jadis les terminaux. Utiliser des programmes sur une machine distante simplifie beaucoup de choses. Il n’est plus nécessaire d’installer des logiciels sur son ordinateur, de les mettre à jour de temps en temps, etc. De plus, il devient possible d’envoyer un courrier depuis n’importe quel ordinateur : d’un web café de Bogota ou de Caracas, comme de son bureau. Pour une entreprise, cela permet de diminuer la taille du service informatique, puisqu’il lui suffit désormais d’avoir quelques ordinateurs reliés au réseau. Cependant, cette évolution présente aussi un risque de dépossession des utilisateurs de leur pouvoir : au lieu d’avoir ses programmes, ses courriers, ses photos, sa comptabilité, etc. sur son ordinateur, on préfère les confier à des entreprises et des ordinateurs distants. En outre, on a parfois une garantie assez faible de leur conservation sur le long terme, de son pouvoir de les effacer ou de son contrôle sur les usages que ces entreprises peuvent faire de ces données. 213 ManuelDowek.book Page 214 Monday, July 9, 2012 4:58 PM Troisième partie – Machines Ai-je bien compris ? • Qu’est-ce qu’un protocole ? Qu’est-ce qu’une couche ? • Quelles sont les cinq couches de protocoles dont sont composés les réseaux ? • Comment fabriquer un protocole fiable en utilisant un protocole peu fiable ? 214 © Groupe Eyrolles, 2012