Vous trouverez ici expliqué ce qu'est un réseau, et comment les ordinateurs communiquent entre eux. En un mot, ce qu'est Internet...
Les ordinateurs n'ont que deux doigts, contrairement aux humains. Ils comptent et manipulent l'information uniquement sous la forme de 0 et de 1 ; c'est le choix fondamental, l'information minimale, qui s'exprime ainsi (vrai/faux, ouvert/fermé, oui/non, etc). Une telle information est appelée un bit. Comme un bit ne contient pas grand'chose, on groupe plusieurs bits pour qu'ils forment, ensemble, une information plus complexe.
Huit bits ensemble forment un octet. Chaque bit a une place particulière dans l'octet, ce qui permet de faire 256 combinaisons (28). Un octet est adapté pour coder un caractère occidental (il y a suffisamment de place pour les 26 lettres, avec les minuscules, les caractères accentués, les chiffres et quelques autres signes typographiques).
Les quantités de données traitables par les ordinateurs se
chiffrent désormais en millions et milliards d'octets. Les
informaticiens ont donc conçu des unités adaptées. Le
kilo-octet (Ko
) comporte 1024 octets
(210). (et non 1000 : 1000 est un nombre rond en base 10,
mais pas en base 2; en revanche, 1024 s'écrit 10000000000 en base 2).
Le méga-octet (Mo
) est constitué de 1024 Ko
(plus d'un million de caractères), et le giga-octet
(Go
) vaut 1024 Mo. On commence à parler de
téra-octet (To
) mais c'est encore un peu trop
cher.
Une image plein écran « pèse » environ 1 Mo, voire plus si on veut une grande palette de couleurs. Une simple disquette contient environ 1.44 Mo, et un CD-ROM 660 Mo. Un DVD-ROM pèse jusqu'à 17 Go (plus de 17 milliards de caractères). Pour donner une échelle de valeur, disons que la Bible, correctement encodée, tient en 1 Mo (un peu moins d'une disquette), et que l'Encyclopedia Universalis, avec schémas, photos et quelques animations, rentre dans un CD-ROM.
Stocker des informations est bel et bon ; mais il est tentant de pouvoir en échanger, sans quoi la sclérose guette. On peut transporter des disquettes, des CD-ROMs ou d'autres supports du même genre ; c'est assez efficace en termes de débit (exercice : calculer la quantité d'informations transportable dans une camionnette qui serait pleine de CD-ROMs — c'est tout simplement colossal) ; mais le temps de réponse est long, très long. Et puis, l'informaticien n'aime pas se lever de sa chaise s'il n'y est pas poussé par une nécessité impérieuse (aller prendre sa dose de Coca-Cola par exemple).
Donc, il s'agit de doter les ordinateurs de moyens de communication. Pour coder des 0 et des 1, certains protocoles adaptés sautent aux yeux : le code Morse par exemple. On transmet des «longs» et des «brefs». Le seul problème est que le débit n'est pas très satisfaisant : deux bons opérateurs peuvent s'échanger 3 bits par seconde, et une visio-conférence (de mauvaise qualité) en exige au moins 60 000. Même un téléphone portable, à la qualité de son douteuse, doit échanger 9 600 bits par seconde.
Néanmoins l'analogie est riche. En effet, en regardant de plus près, quand un message est envoyé en Morse par télégraphe, son texte est précédé du nom du destinataire : au XIXe siècle, il n'y avait pas de ligne directe de New-York à Los Angeles ; le message devait passer par différents opérateurs qui recevaient le message et le réexpédiaient immédiatement dans la bonne direction. Un message pour San Francisco prenait au début le même chemin. Ce principe de message, sautant de poste en poste, redirigé à chaque poste en fonction de sa destination, est le fondement d'Internet. C'est ce qu'on appelle un réseau par paquets, par opposition au téléphone, qui est un réseau par circuits.
Il existe deux types de réseaux : les réseaux par paquets et les réseaux par circuits. Le premier type est celui du Morse décrit dans le numéro précédent : chaque information est un message qui transite de centre de tri en centre de tri, suivant l'adresse du destinataire; personne ne s'occupe de l'intégralité de la transmission, et tout problème est par essence local.
Le deuxième type de réseau est celui du téléphone : un rendez-vous est pris entre les deux parties, une communication physique est établie jusqu'à ce que l'un des deux raccroche.
Ces deux types de réseaux ont des avantages et des inconvénients opposés. Essentiellement :
Actuellement, France Telecom utilise des réseaux par paquets pour toutes les communications nationales. En effet, les possibilités de réutilisation de la bande passante et de résistance aux pannes sont très appréciables; les caractéristiques habituelles en téléphonie (conversation continue, pas de perte de son) sont assurées par des protocoles de plus haut niveau, qui tentent de rétablir des garanties de débit, de corriger les erreurs, enfin bref de faire au mieux. C'est une émulation de réseau par circuits, par dessus un réseau par paquets (et, bizarrement, ça marche).
Figure 1 : Réseau par paquets
reliant A à B
Figure 2 : Réseau ethernet par câble
coaxial
Pour connecter deux ordinateurs, il faut tout d'abord pouvoir représenter les 0 et les 1 sur un médium adapté. Actuellement, on utilise principalement les méthodes suivantes :
Le bruit est ce qui s'oppose au signal ; par exemple, le cours du prof c'est le signal, les élèves qui chuchotent c'est le bruit. Au téléphone, le signal c'est la conversation, tandis que le bruit c'est la friture.
Le cas d'un modem ne pose pas de problème, car c'est une communication point à point sur une ligne réservée (aucun encombrement). En revanche, dans un réseau local, on veut connecter plusieurs machines, éventuellement beaucoup, et on ne désire pas tendre un câble pour chaque paire de machines. L'idée est donc de se partager un conducteur commun, ce qu'on appelle d'habitude un bus. Ensuite, il faut décider comment partager ce bus entre les différents ordinateurs connectés dessus.
En token-ring, un jeton (token) est transmis de station à station ; c'est le droit de parole. Chaque station ne peut conserver le jeton que pendant un temps maximal donné, mais peut le relâcher immédiatement si elle n'a rien à dire.
En ethernet, la méthode est plus simple qu'en token-ring : quand une station veut émettre un message, elle espionne le bus jusqu'au moment où il se libère (plus personne ne parle pendant un très court instant); elle prend alors la parole, d'autorité. Ce faisant, elle continue d'espionner le bus, pour voir si la communication passe bien; si elle est brouillée, c'est qu'une autre station a eu la même idée en même temps. Dans ce cas, la station (et l'autre aussi, car elle est également brouillée) s'arrête, attend un temps aléatoire, et recommence. Avec une bonne probabilité, l'autre station a attendu un temps aléatoire différent, et les deux messages partent sans brouillage. Après un certain nombre d'essais infructueux, avec des délais de plus en plus grands, le message est considéré comme n'ayant pas pu passer, c'est ce qu'on appelle une collision.
Bizarrement, l'ethernet est très efficace, et partage très correctement la bande passante, même quand le bus est chargé. Il a l'avantage d'être très décentralisé : aucune station n'a besoin de savoir qui, au juste, est présent sur le bus, et une station éteinte n'empêche pas la communication. Son défaut principal est l'absence de garantie de débit, chaque station se contentant de faire au mieux, au lieu de faire bien.
L'ethernet se pratiquait sur des câbles coaxiaux (façon câble d'antenne de télévision), passant par toutes les stations et terminés aux deux bouts par des résistances, avec une longueur maximale de 185 mètres (ou 550 mètres si on emploie du gros câble blindé, traditionnellement jaune). Cette méthode a l'inconvénient d'occasionner une coupure du câble quand on rajoute une nouvelle prise; et il n'est pas toujours facile de faire passer le même câble par toutes les stations, suivant leur disposition.
Maintenant, on établit des structures arborescentes : chaque station est reliée, par un câble personnel, à un hub, une sorte de multiprise amplifiée. Les hubs sont reliés entre eux via des câbles similaires ; chaque hub reproduit sur toutes les autres prises ce qu'il reçoit sur chacune d'elles. On peut brancher une nouvelle machine sans perturber le fonctionnement, et on peut plus facilement relier des machines distantes.
Figure 3 : Réseau ethernet arborescent (RJ45)
On a vu, dans la section précédente, comment relier ensemble deux stations pour qu'elles puissent s'échanger des données, pas forcément de façon fiable, et sans garantie de débit. Ces méthodes sont locales, et il convenait de passer à un réseau global. Ceci a été effectué grâce au réseau Internet, dérivé de l'Arpanet au cours des années 1970 (Arpanet était le réseau des militaires américains).
Le principe est le suivant : quand une station veut envoyer un message à une consoeur, elle commence par examiner ses branchements, pour voir si la destinatrice ne serait pas, par hasard, accessible directement. Dans ce cas, elle lui envoie le message par le moyen physique présent. Dans le cas contraire, elle envoie le message à une station dont elle sait qu'elle est plus qualifiée qu'elle pour résoudre ce problème. La station qualifiée est nommée routeur, ou aussi passerelle.
Pour savoir qui est contactable et comment, chaque station est munie
d'une adresse de 4 octets (chaque octet contenant un nombre entre 0 et
255). Ainsi, la station galion, en salle S, est dotée de l'adresse
129.199.129.10
. Ces adresses sont mondiales, et toutes
les adresses commençant par 129.199
sont réservées à
l'ENS.
Prenons l'exemple de galion, tentant d'envoyer un message (sous la forme d'un paquet IP, comme Internet Protocol) à aviso, en Infirmatique.
galion, d'adresse 129.199.129.10
, sait qu'elle est reliée
directement à toutes les stations dont l'adresse commence par
129.199.129
. Or, aviso a l'adresse
129.199.128.1
; galion, constatant cela, décide de
transmettre le paquet à sa passerelle, à savoir clipper
(129.199.129.1
, contactable par un lien ethernet direct
depuis galion). Puis galion se lave les mains de ce qui se passe
ensuite, ce n'est plus son affaire.
clipper ne peut pas non plus contacter aviso directement, mais il peut
parler sur un deuxième lien depuis son deuxième visage, clipper-gw
(129.199.1.22
). Sur ce lien, il peut contacter finn
(129.199.1.128
), qui est responsable des adresses en
129.199.128.
clipper transmet donc le paquet à finn, et
se désintéresse lui aussi de la question.
finn possède aussi deux visages, le second étant finn128
(129.199.128.254
), relié directement aux stations de
l'Infirmatique. finn peut donc communiquer directement avec aviso, et
lui envoie le paquet.
Donc, pour que tout se passe bien, il suffit que chaque station sache reconnaître les adresses contactables directement, et une passerelle pour les autres cas. Les routeurs, eux, doivent avoir une notion locale de la hiérarchie (clipper doit connaître finn, mais ce que finn doit faire pour contacter aviso ne le regarde pas).
Il est même possible de reconstruire ces informations à la volée : clipper peut tout envoyer sur la machine par défaut (renater), qui lui signalera à chaque fois qu'il existe une route plus directe ne passant pas par lui; clipper s'en rappellera pendant quelques minutes. Ce mécanisme, dit de routage dynamique, est un peu délicat à mettre en place, aussi on s'en sert avec parcimonie (il est aisé d'obtenir, à la suite d'un malentendu, une partie de ping-pong, où deux stations considèrent, pour un paquet donné, que l'autre station est la passerelle à utiliser).
Et voilà, ceci est Internet : des stations qui s'échangent des paquets (d'une taille maximale de 65.536 octets, mais souvent plus petits, de l'ordre de 1.500 octets). Normalement, un paquet n'a pas à effectuer plus de 30 sauts pour faire le trajet d'une station à une autre. Les paquets peuvent être fractionnés et recombinés au gré des routeurs, afin de s'adapter aux spécificités locales de la liaison.
Le chemin entre deux stations n'est pas forcément unique ; ceci permet une tolérance aux pannes ou une adaptation aux embouteillages. Notamment, les communications à grande échelle sont alors résistantes aux attaques nucléaires (c'est ce qui plaisait aux militaires américains). Une conséquence de ce fait est que deux paquets successifs ne suivent pas forcément le même chemin; ils peuvent notamment arriver dans le désordre, et certains peuvent être dupliqués (quand une passerelle cherche à savoir, via un protocole approprié, si un paquet est arrivé, et, ne voyant rien venir, en émet un autre, alors que le premier était simplement parti par un chemin détourné).
Figure 4 : Une partie du routage
à l'ENS
Nous voilà en position d'envoyer des paquets à travers le monde. Mais avec une fiabilité douteuse. On a principalement deux problèmes :
Deux protocoles ont donc été créés (un protocole est aux données ce que le langage est à une conversation : c'est le « règlement »). Le premier, UDP (User Datagram Protocol) est une surcouche triviale (couche supplémentaire reproduisant la structure sous-jacente) d'IP : on envoie des paquets, sans garantie, d'une taille maximale de 8 192 octets (pour les données; il y a aussi un entête donnant entre autres l'adresse et le port de destination).
TCP (Transmission Control Protocol) est une mécanique complexe qui assure une sémantique de connexion: un tuyau bidirectionnel, fiable, au flux contrôlé afin de ne pas provoquer d'embouteillage, est établi entre deux stations, sur un certain port.
TCP est le plus utilisé. UDP est utilisé pour certains protocoles où l'ordre d'arrivée des données n'est pas important, ou quand les données sont rapidement obsolètes. Par exemple, dans le cas de NFS (partage de disques par réseau), l'ordre des requêtes n'est pas primordial; quand on fait du téléphone par Internet, si un paquet se perd, autant l'oublier: sa doublure arriverait trop tard pour s'intégrer dans le flux sonore.
La face visible d'Internet est formée par les applications. Nous allons en détailler quelques unes.
Cette application est chargée de faire la correspondance entre les
adresses numériques, et les noms de stations, noms qui sont destinés
aux humains. Ainsi, c'est le système des DNS qui permet à toute
station dans le monde de savoir que clipper.ens.fr
répond
à l'adresse 129.199.129.1
. Chaque site doit disposer d'un
DNS, connaissant les machines locales, et pouvant interroger les
autres DNS. Les DNS communiquent par paquets UDP sur le port 53.
Par connexion TCP sur le port 25, ce protocole permet d'échanger des
courriers électroniques. De façon similaire au transport des paquets
IP, un courrier peut effectuer quelques sauts (à chaque fois sous la
forme d'une connexion TCP) entre serveurs de mails avant d'arriver à
destination. Par exemple, à l'ENS, tout courrier sortant passe par
nef.ens.fr
.
Ce protocole de transfert de fichiers utilise deux connexions TCP, sur les ports 20 et 21 (celle sur le port 20 sert aux données, celle sur le port 21 transporte les commandes).
Créé par Sun Microsystems, ce protocole de partage de disques permet, à l'ENS, de pouvoir manipuler ses fichiers quelle que soit la station qu'on utilise. Alors qu'il est souvent décrié, ses versions modernes sont fort acceptables, pourvu que le réseau sous-jacent soit rapide. Il utilise des paquets UDP, sur le port 2049.
C'est le coeur du World Wide Web, qui n'est qu'une application d'Internet, récente de surcroît (1990). Par connexion TCP sur le port 80 du serveur Web, le client obtient le contenu d'une page (normalement en langage HTML) et divers autres types de fichiers (notamment les images). Une adresse Web (URL) commence par le mot-clé http, indiquant le protocole utilisé, puis contient le nom du serveur Web, puis enfin le nom du fichier (avec éventuellement des répertoires et des sous-répertoires) sur ce serveur.
Figure 5 : Consultation de
http://www.ens.fr/index.html
Bizarrement, tout cet édifice aux proportions bibliques fonctionne la plupart du temps. Néanmoins, quand une rupture générale de la Force arrive, on peut se retrouver avec beaucoup de problèmes, tous différents. Voici quelques spécimens:
Deux routeurs se renvoient des paquets, chacun ayant décidé que Le Bon
Chemin passe par l'autre. Cela se diagnostique avec la commande Unix
traceroute
. Solution : maudire Renater (le fournisseur d'accès
Internet de l'ENS, grand spécialiste du tennis de table) et attendre
que les routeurs oublient d'être stupides.
Les DNS forment une structure hiérarchique qui a tendance à s'écrouler
d'un coup. Dans ces conditions, tout semble figé, sauf si on utilise
directement les adresses numériques; mais il est difficile de retenir
par coeur 4 milliards d'adresses... Le diagnostic : la commande
host
sur un hôte connu (www.google.com
par
exemple) bloque et ne répond pas.
Votre station est bloquée, des messages « NFS server not responding, still trying » apparaissent. C'est typique du serveur NFS (celui qui possède, physiquement, les disques partagés) qui a pris des vacances. Il faut attendre le reboot du serveur. NFS étant bien fait, cela débloquera les machines sans conséquence funeste pour les opérations en cours.
NIS, alias les Pages Jaunes, est le protocole permettant de partager les mots de passe entre les stations. Pour l'utilisateur final, les conséquences sont semblables à un plantage NFS : il faut attendre le retour du serveur NIS. Une fois qu'il est revenu, tout remarche, rien n'a été perdu.
Une partie du réseau est à genoux. La plupart des paquets s'égarent, tout va lentement, c'est horrible. Pas de solution, sinon espérer que de nouvelles lignes seront bientôt mises en place, pester contre ces milliers de crétins qui ne pensent qu'à récupérer les dernières photos de Pamela Anderson, et revenir se connecter à une heure plus adaptée (pour les États-Unis, la bonne heure est 6 heures du matin : les Américains sont couchés, les Européens pas encore levés).
Il existe beaucoup d'autres pannes possibles, plus ésotériques. Elles sont la cause de certaines de ces discussions d'informaticiens que personne ne comprend, mais qui semblent les amuser follement.
Le cours d'Architecture et Systèmes comprend une partie animée par Jacques Beigbeder, qui décrit, entre autres, le fonctionnement du réseau.
Les gens motivés se référeront aux RFC (Request For Comments). Ce sont les documents de référence ; on les trouve là : http://www.ietf.org/rfc.html
Le protocole IP est décrit dans la RFC 791.