# Réseaux

# Qu'est-ce qu'un réseau ?

Vous trouverez ici expliqué ce qu'est un réseau, et comment les ordinateurs communiquent entre eux. En un mot, ce qu'est Internet...

Ce cours résulte de la compilation d'articles parus dans le Hublot en 1999-2000.

## Des uns et des zéros

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).

### Unités de mesure

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.

## Code Morse, multimédia et centre de tri

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.

## Le soleil a rendez-vous avec la lune

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 :

- Un réseau par circuits permet de garantir un débit, une fois la connexion effectuée, alors que les paquets sont envoyés à la grâce de Dieu.
- Un réseau par circuits permet aussi de garantir un temps de réponse, paramètre souvent encore plus important que le débit. Quand on envoie un paquet, on ignore par où il va passer ou même s'il va vraiment arriver à destination.
- Un réseau par circuits doit être homogène : une fois la connexion établie, le chemin doit se comporter à l'identique sur toute sa longueur; sur un réseau par paquets, il est facile de construire des passerelles entre des liens de caractéristiques physiques différentes.
- Un réseau par circuits gâche de la bande passante (débit maximal de données);: quand deux personnes sont au téléphones mais ne parlent pas, la ligne est occupée.
- Un réseau par paquets est résistant aux pannes : en cas de coupure d'un site, les paquets peuvent être détournés sur une autre voie.
- Un réseau par paquets ne garantit rien sur l'intégrité des données : quand on envoie un message, on ne peut pas savoir combien de temps il va mettre pour arriver, ni s'il arrivera un jour, ou en un seul exemplaire; et s'il se perd, on n'est pas forcément prévenu.

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

## Le fil qui chante

Figure 2 : Réseau ethernet par câble coaxial

### Coder les 1 et les 0

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 :

- Modulation de fréquence : les 0 et les 1 sont codés par des sons de fréquences différentes (un aigu, un grave); la théorie montre que c'est une méthode qui résiste bien au bruit. C'est ce qu'on utilise sur les lignes téléphoniques, avec un modem*. On peut transmettre quelques centaines de milliers de bits par seconde ainsi; les modems sont limités à 56 000 bits par seconde pour d'autres raisons.
- Encodage RLL : un 0 est codé par un changement de polarité, un 1 par deux changements. On trouve cette méthode sur les réseaux à haut débit (chaque bit contient au moins un changement de polarité, ce qui permet de conserver la synchronisation entre l'émetteur et le récepteur, même lors d'une longue plage de 0). On peut monter à 100 millions de bits par seconde ainsi; on trouve cette méthode dans les réseaux locaux de type ethernet.
- Optique : les liens à très haut débit sont réalisés par fibre optique ou laser; les 0 et les 1 sont alors codés en RLL ou avec une méthode analogue. Pour des raisons de coût, seuls certains sites font usage de moyens optiques, et pour certaines liaisons seulement (l'université d'Évry utilise un laser pour relier deux immeubles éloignés de 800 mètres l'un de l'autre).

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.

### Exemples de réseaux

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.

### Réseau Ethernet

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)

## Internet dans tout ça

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.

### Un exemple à l'École

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.

### Routeurs et réseau

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

## Le plombier et le facteur

Nous voilà en position d'envoyer des paquets à travers le monde. Mais avec une fiabilité douteuse. On a principalement deux problèmes :

- On voudrait qu'une même station puisse tenir plusieurs conversations à la fois, sur des sujets différents. On a donc inventé des sous-adresses, des boîtes aux lettres différenciées, qu'on appelle les ports. Un port est un numéro entre 0 et 65 535; la plupart des services ont un port canonique (25 pour le courrier électronique, 80 pour le Web, etc) ;
- On voudrait un protocole permettant d'assurer l'intégrité des données (remise dans l'ordre, accusés de réception et ré-émission des paquets perdus, contrôle de flux), si possible intégré dans le système d'exploitation, pour que les applications puissent s'en servir sans se prendre la tête.

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.

### Les applications

La face visible d'Internet est formée par les applications. Nous allons en détailler quelques unes.

#### DNS (Domain Name Server)

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.

#### SMTP (Simple Mail Transfer Protocol)

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`.

#### FTP (File Transfer Protocol)

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).

#### NFS (Network File System)

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.

#### HTTP (HyperText Transfer Protocol)

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`

## Intervention divine

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:

### Ping-pong

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.

### Panne des DNS

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.

### Plantage du serveur NFS

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.

### Plantage du serveur NIS

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.

### Embouteillage

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.

## En savoir plus

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.

Auteur : Thomas Pornin. Dernière modification : le .