Plat Net

Avec cet article, et ces nouveaux personnages que sont Argos et la Chèvre (Amalthée bien entendu), j'entame une série consacrée à l'informatique (mais qui, j'espère, ne m'empêchera pas de continuer pendant le même temps à vous raconter les péripéties d'Achille et de la Tortue). Si j'en ressens la nécessité, c'est que je me rends compte à quel point certaines personnes, y compris des ingénieurs, peuvent avoir une idée vague ou même fausse du fonctionnement d'une technologie à présent indispensable. C'est ainsi qu'on utilise le mot ``Internet'' pour parler du World Wide Web, qu'on croit qu'une interface graphique et la gestion de la souris ont a voir avec un système d'exploitation, qu'on s'imagine qu'un PC doit utiliser Microsoft Windows ou vice versa, qu'on ignore ce que signifient ``TCP/IP'', ``BSD'', ``BIND'' ou ``RFC'', ou encore qu'on n'a jamais entendu parler de Ken Thompson, Richard Stallman, Vinton Cerf et Donald Knuth. Voici donc une modeste tentative pour réparer ces erreurs et combler ces lacunes. En commençant avec celles qui concernent le réseau Internet.

Cet article est dédié à la mémoire de Jonathan B. Postel, le Maîtres des Nombres de l'Internet, décédé le 16 octobre 1998.

Argos est assis devant un ordinateur, et visionne avec des yeux pleins d'envie un document de présentation de l'École Polytechnique. La Chèvre vient le rejoindre

La Chèvre (ton naïf) : Mais c'est très joli ce que tu regardes là, Argos. Qu'est-ce que c'est ?

Argos (tout fier) : Ça s'appelle l'Internet.

La Chèvre (sur un ton de plus en plus naïf) : Vraiment ? Qu'est-ce que c'est Internet ? Et comment fais-tu pour voir des choses comme ça ?

Argos : Eh bien Internet c'est tout un tas de documents disséminés à travers le monde, et auxquels on peut accéder par un ordinateur relié à un modem, comme le mien, et grâce à un programme très compliqué appelé Internetscape Exploravigator que des gens très gentils me donnent gratuitement. Grâce à ça je peux me connecter au monde entier. Ici j'ai tapé polytechnique.fr pour accéder au site Internet de l'École Polytechnique. Mais si je clique avec la souris sur les mots soulignés en bleu et qu'on appelle les liens hypertexte, je peux accéder à d'autres endroits. C'est ce qu'on appelle naviguer sur l'Internet, et on dit aussi ``surfer''.

La Chèvre (théâtrale) : Ââââhhhh... Que cela est beau !

Argos (douché) : Quand tu dis ça, ça veut dire que j'ai dit quelque chose de bête. Qu'est-ce qui ne va pas ?

La Chèvre (sévère) : C'est un peu comme si je t'avais demandé ce que c'est que l'imprimerie et que tu m'avais répondu que c'était des romans. Les romans font certes partie des livres imprimés, mais il y a beaucoup d'autre chose. Et si je te demande comment marche l'imprimerie, je ne te demande pas comment on fait pour lire un roman.

Argos (vexé) : Ah bon ? Alors explique moi ce que c'est que l'Internet.

La Chèvre : Ce sont des ordinateurs connectés ensemble. L'Internet, c'est quelque chose qui a commencé comme un méta-réseau, qui reliait ensemble différents réseaux ; maintenant, l'Internet est lui-même un réseau, et un réseau mondial.

Argos (hausse les épaules) : Oui, ça, j'aurais pu te le dire.

La Chèvre : Mais ce n'est pas tout. Ce qui est important, ce n'est pas seulement qu'il y a des ordinateurs reliés ensemble, mais aussi que ces ordinateurs sont capables d'utiliser ces connexions pour échanger des informations.

Argos : Tu ne crois pas que tu deviens un peu jésuite, là, Amalthée ? Ou bien ce que tu dis est tellement profond que je n'en vois pas le fond, ou bien c'est passablement évident...

La Chèvre (l'ignorant) : Internet, ce n'est pas juste un réseau, c'est aussi un certain nombre de conventions, que l'on appelle la suite de protocoles, qui précisent comment les ordinateurs doivent parler entre eux. Cette suite de protocoles est parfois appelée, de manière quelque peu abusive, ``TCP/IP'', du nom de deux des plus importants protocoles. Les protocoles sont organisés en quatre niveaux, ou couches. Chaque couche utilise la couche située immédiatement en-dessous, et offre un service à la couche immédiatement au-dessus.

Argos : Parce que tu crois que c'est plus clair maintenant ?

La Chèvre : Si ça ne l'est pas, ça le deviendra. La couche la plus basse est la ``couche de liens''. Au-dessus se trouve la ``couche réseau''. Puis, encore au-dessus, la ``couche de transport''. Enfin, la dernière couche s'appelle la ``couche applicative''.

Argos : Écoute, je ne comprends strictement rien à ce que tu racontes.

La Chèvre : Commençons par quelque chose de simple, alors. Chaque ordinateur relié à l'Internet, et il y en a des millions, est identifié par un numéro appelé numéro IP, un peu comme un numéro de téléphone. Un numéro IP se compose de quatre nombres, chacun entre 0 et 255, séparés par des points. Par exemple, le numéro IP de l'ordinateur auquel tu es connecté en ce moment est 129.104.34.2. Évidemment, tu n'as pas envie de retenir des choses comme ça, alors les ordinateurs ont aussi des noms, comme ici www.polytechnique.fr, mais ça, j'y viendrai plus tard. La vraie donnée fondamentale, c'est le numéro IP.

Argos : Et mon ordinateur à moi, il a aussi un numéro IP ?

La Chèvre : Bien entendu. Aucun ordinateur ne peut parler sur l'Internet s'il n'a pas un numéro IP. Quand tu fais une connexion par modem comme ici, ton numéro IP t'est attribué au moment de la connexion par ton ``provider'', et il pourra varier d'une connexion à l'autre. C'est ce qu'on appelle un numéro IP temporaire.

Argos : Et dans ta description de l'Internet en couches, où se situent les numéros IP ?

La Chèvre : C'est au niveau de la couche réseau. La couche réseau est habitée par un protocole appelé IP, ou ``Internet Protocol''. La fonction de la couche réseau est d'accepter des petites quantités de données, appellées datagrammes, que l'on compare souvent à des cartes postales, et de les envoyer d'un certain ordinateur vers un autre, éventuellement en passant par un certain nombre d'ordinateurs intermédiaires. Un datagramme IP comprend essentiellement un numéro IP d'origine, un numéro IP de destination, et des informations transportées. La liste des ordinateurs qu'un datagramme IP traverse entre sa source et sa destination, est appelé son chemin (ou, pour reprendre le terme anglais, sa route).

Argos : Mais comment est-ce que mon ordinateur sait par quel chemin il faut envoyer un datagramme IP vers sa destination ?

La Chèvre : Ton ordinateur ne sait pas. De même que quand tu mets une carte postale dans une boîte aux lettres tu ne sais pas comment elle arrivera à sa destination. Tout ce que tu sais c'est qu'il faut la mettre dans la boîte et que d'autres gens se chargeront d'elle après ça. De même, ton ordinateur, il sait simplement que le datagramme doit partir par le modem. C'est le cas le plus simple d'un processus appelé routage. Car ici il n'y a qu'une interface, et c'est une interface point-à-point.

Argos (commence à perdre pied) : Eh ? Interface ? Point à point ?

La Chèvre : Une interface (réseau), c'est un terme générique pour désigner un dispositif reliant l'ordinateur à un autre ou à des autres. Cela peut être un modem, c'est-à-dire un dispositif MODulateur DÉModulateur utilisant les lignes téléphoniques. Ou bien cela peut être un éthernet, c'est-à-dire un cable coaxial ou torsadé auquel sont reliés un petit nombre d'ordinateurs. Mais il y a toutes sortes d'autres interfaces possibles. Une interface comme un modem ou une ligne série est dite point-à-point car elle relie exactement deux ordinateurs, un à chaque bout. Tandis qu'un éthernet est une interface diffusée. Un ordinateur peut être relié à plusieurs interfaces réseau, et dans ce cas on va souvent lui demander de servir de pont (``bridge'') entre les deux. C'est alors un routeur. Les ordinateurs qui ne sont pas des routeurs sont des hôtes.

Argos : Bon, et finalement, qui est-ce qui décide comment mon datagramme IP arrive entre mon ordinateur et sa destination ?

La Chèvre : Personne ne décide. C'est quelque chose qui se fait dynamiquement. Tout ordinateur relié au réseau possède une table de routage : celle-ci attribue à chaque plage d'adresses IP une interface par laquelle le datagramme doit passer. Quand un ordinateur reçoît un datagramme IP, que ce soit de lui-même (i.e. de la couche supérieure, la couche de transport), ou bien de l'extérieur, il lit l'adresse IP de destination et consulte la table de routage pour savoir quoi en faire, c'est-à-dire par quelle interface envoyer le datagramme. La différence entre un routeur et un hôte, c'est qu'un routeur retransmet dans la bonne direction les datagrammes qui lui sont envoyés, tandis qu'un hôte n'accepte que les datagrammes dont il est la source ou bien la destination. Dans le cas de ton ordinateur, le routage est très simple : il n'y a qu'une interface de type point-à-point, donc tout datagramme dont ton ordinateur n'est pas la destination est envoyé par cette interface. Dans le cas d'un hôte relié à un éthernet, c'est presque aussi simple : si le numéro IP de destination est le numéro IP de l'ordinateur, il le prend ; si c'est le numéro IP d'un ordinateur sur le même éthernet (ce qui se voit en regardant en général les trois premiers nombres du numéro IP, qui seront les mêmes pour un éthernet donné), alors l'ordinateur envoie le datagramme sur l'éthernet à l'ordinateur de destination ; sinon, il envoie aussi le datagramme sur l'éthernet, mais en l'adressant à un routeur qui se trouve sur l'éthernet. Et c'est ce routeur qui se chargera de la suite. Les routeurs, naturellement, ont des tables de routage plus compliquées. Mais pas forcément immenses non plus : souvent, il n'y a que deux ou trois interfaces, et il faut simplement regarder le début du numéro IP pour savoir dans laquelle envoyer le datagramme. Pour un routeur de haut niveau, par exemple continental ou intercontinental, les choses sont nettement plus compliquées, et ils utilisent même des protocoles de routage dynamique, ce qui signifie que le routeur modifie ses propres tables de routage en fonction de la congestion des chemin, des dysfonctionnements occasionnels d'autres routeurs (de façon à les éviter), etc. Dans tous les cas, c'est la couche réseau qui détermine la direction à suivre, mais c'est la couche de lien, au niveau de telle ou telle interface, qui fait vraiment l'envoi du datagramme.

Argos (épuisé) : Ouf ! Comme c'est compliqué. Et mes datagrammes traversent combien de routeurs comme ça, avant d'arriver à leur destination ?

La Chèvre : Ça dépend de leur destination, naturellement. En général il faut compter une dizaine de ``sauts'' pour un point dans le pays, et une trentaine pour un point à l'étranger. Le programme traceroute permet de découvrir la route suivie pour aller à un ordinateur donné. Il se base sur le principe du ``Time To Live'' (TTL) : un datagramme IP porte un TTL en lui, qui indique combien de routeurs il a le droit de traverser au maximum. Le datagramme est émis en général avec un TTL de 64, et chaque routeur qu'il traverse diminue cette valeur de 1. Lorsque le TTL atteint 0, le datagramme est détruit, et un autre datagramme, de contrôle, est renvoyé vers l'expéditeur pour lui signaler le problème. Ceci a pour but d'éviter des boucles infinies pouvant se produite par erreur au cours du routage. Le programme traceroute envoie des datagrammes avec des TTL de plus en plus grands, et voit quel routeur lui renvoie une erreur à chaque étape. Ainsi, il sait quels routeurs sont traversés par le datagramme.

Argos : Et la couche de liens dans tout ça ?

La Chèvre : Ben Elle Relie Uniquement des ordinateurs connectés à une même interface. Par exemple pour un éthernet la couche de lien prend les datagrammes qui lui sont communiqués par la couche réseau et les ``encapsule'' dans une trame éthernet. C'est-à-dire qu'elle rajoute un en-tête aux datagrammes, contenant notamment l'adresse éthernet physique de l'ordinateur source et de l'ordinateur destination. Cette adresse physique est différente de l'adresse IP ; c'est une adresse gravée dans la carte éthernet. En tout cas, une trame éthernet, c'est-à-dire une quantité fondamentale d'information, envoyée en un seul bloc sur le cable éthernet, a une longueur utile de 1500 octets au maximum (sans compter les en-têtes). Ce qui signifie que si un datagramme IP est plus long que cette limite fatidique, appelé le MTU (Maximal Transfer Unit) de la couche de liens, la couche réseau devra diviser le datagramme en morceaux ; ce processus s'appelle la fragmentation IP.

Argos : Ainsi, la couche réseau prend mes données, y rajoute un en-tête, un peu à la manière d'une enveloppe postale, et appelle le résultat un datagramme. La couche de liens fait la même chose à nouveau, et appelle ça une trame.

La Chèvre : C'est exactement ça - du moins dans le cas d'un éthernet. Le principe de l'organisation en couches c'est que chaque couche prend les données de la couche située au-dessus d'elle, y rajoute des en-têtes ou des choses comme ça, et les transmet à la couche au-dessous. Mais contrairement à ce que tu sembles penser, ce doublement du travail n'est pas inutile. Le protocole IP te donne l'impression que tout l'internet n'est qu'un seul gigantesque réseau à la manière d'un éthernet, alors qu'en fait il s'agit de millions d'interfaces assemblées les unes avec les autres grâce aux routeurs. D'autre part on n'envoie pas directement les datagrammes IP sur l'éthernet mais on rajoute une couche de liens, parce que celle-ci permet à différents protocoles concurrents à IP (par exemple IPX) de cohabiter sur le même éthernet.

Argos : Soit. Mais alors à quoi correspondent les deux couches dont tu n'as pas encore parlé ? J'espère que ce ne sont pas encore des nouvelles façons de définir l'adresse.

La Chèvre : Rassure-toi. Au niveau de la couche de transport cohabitent essentiellement deux protocoles, les protocoles UDP et TCP. Le premier est très simple. Il rajoute peu de choses au datagramme IP : seulement des numéros de ports, un numéro de port source et un numéro de port destination. Pour reprendre l'analogie postale, le protocole IP ne définit que les adresses, tandis que le protocole UDP rajoute la précision de la personne habitant à une adresse donnée, à la fois pour l'émetteur et pour le récepteur. C'est-à-dire que plusieurs programmes, sur un même ordinateur, vont parfois vouloir communiquer en même temps. Pour ne pas que tout se mélange, UDP crée sur chaque ordinateur 65536 ports différents, pouvant être utilisés en émission et en réception. Un programme désirant communiquer va devoir demander l'affectation d'un numéro de port. Si le programme est un serveur, il va demander un numéro de port précis, pour que tout le monde sache comment le joindre. En revanche, si le programme est un client, il va demander n'importe quel port, parce que c'est lui qui va chercher à joindre un serveur, et le serveur verra bien quel numéro de port le client a, et répondra vers ce même port. À cette subtilité près apportée par les ports, le protocole UDP n'est qu'une surcouche très mince du protocole IP.

Argos : Et quand j'utilise Internetscape Exploravigator, est-ce que c'est par le protocole UDP ou TCP que mes données passent ?

La Chèvre : Par TCP. Le protocole TCP est beaucoup plus complexe qu'UDP. Il reprend aussi le principe des ports, avec le même découpage en 65536 ports. Mais de surcroît il invente la notion de connexion, et la notion de fiabilité.

Argos : Il invente ces notions ? Tu ne crois pas que tu exagères.

La Chèvre : Ce que je veux dire, c'est que TCP apparaît de manière très différente d'UDP ou IP. Un datagramme, c'est un peu comme une carte postale. Tu peux envoyer une carte postale n'importe quand, à n'importe qui (même si envoyer une carte postale à un inconnu peut être bizarre). Très souvent la carte postale arrive à destination, mais si ça ne se produit pas tu n'as pas de garantie et tu n'en es même pas prévenu (contrairement à une lettre recommandée). D'autre part, deux cartes postales envoyées successivement à la même personne peuvent fort bien arriver dans le désordre. Au contraire, TCP offre un service semblable à celui d'une ligne téléphonique. Tout d'abord, pour échanger des données par TCP, il faut d'abord établir une connexion. Une fois que celle-ci est établie, les applications ont l'impression qu'elles échangent des données de manière continue, par un tube de communication. Les données arrivent dans l'ordre dans lequel elles sont émise. Et toutes les données lues sont correctes et correspondent bien aux données émises. TCP garantit l'absence de perte des données - si des données sont vraiment perdues alors la connexion est rompue.

Argos : Mais alors TCP ne se situe pas au-dessus d'IP ?

La Chèvre : Si. TCP fournit ce service fiable en utilisant la couche IP, pourtant peu fiable et de nature très différente. Le flux de données reçu de l'application, le protocole TCP le découpe en segments, et envoie chaque segment dans un datagramme IP (après y avoir rajouté des données d'en-tête comme des numéros de ports et des numéros de séquence). À l'autre bout, le module TCP de l'ordinateur récepteur va réassembler les segments TCP pour reproduire un flux continu. S'il manque des segments, il va attendre pour vérifier qu'ils n'arrivent pas un peu en retard, et, sinon, va expédier des demandes de retransmission. Au contraire, lorsque les segments arrivent correctement, le destinataire envoie des accusés de reception à l'émetteur. Toutefois, l'émetteur n'attend pas la réception de chaque accusé de réception avant d'envoyer le segment suivant, mais au contraire il envoie quelques segments d'avance, de sorte que les accusés de réception sont toujours un peu en retard sur les émissions. C'est ce qu'on appelle la ``fenêtre coulissante'' de TCP. En tout cas, TCP est un protocole très complexe, donc nécessairement plus lent qu'UDP (en particulier par le nombre d'accusés réception qui sont requis), mais fort pratique pour les programmes qui peuvent alors oublier complètement le réseau et écrire dans un ``socket'' TCP (c'est-à-dire une connexion établie, définie de façon unique par l'adresse et le numéro de port à l'origine et à la destination) exactement comme il écrirait dans un fichier ou sur une imprimante.

Argos : Tu t'égares. Il te reste à décrire la couche applicative.

La Chèvre : La couche applicative est remplie par de nombreux protocoles. Essentiellement tous les usages possibles du réseau sont des protocoles de la coucle applicative. La plupart fonctionnent au-dessus de TCP, quoique certains peuvent aussi fonctionner au-dessus d'UDP. Il y a le protocole FTP (``File Transfer Protocol'') pour le transfert des fichiers, le protocole telnet pour les connexions à distances, le protocole NNTP (``Network News Transfer Protocol'') pour les groupes de discussions d'Usenet, le protocole SMTP (``Simple Mail Transfer Protocol'') pour les échanges de courrier électronique, le protocole X11 de la gestion des graphismes à distance sous Unix, et encore quantité d'autres. Le plus important pour toi est sans doute le protocole HTTP ou ``HyperText Transfer Protocol'' qui fonctionne au-dessus de TCP, en utilisant dans l'immense majorité des cas le port 80 à la destination. C'est ce protocole qui transporte ce qu'on appelle le World Wide Web, ou la ``toile mondiale'', et que les ignorants appellent tout simplement ``Internet''...

Argos : Merci pour les ignorants ! C'est à ça que correspond le http:// au début des adresses ?

La Chèvre : Oui. Les adresses en question sont appelées des URL (``Uniform Resource Locator''). Elles servent à indiquer des adresses sur le World Wide Web ou ailleurs. La première partie indique le protocole à utiliser (http pour le world wide web proprement dit, ftp pour les transferts de fichiers, ou encore news, gopher, telnet, mailto). Ensuite vient le nom (ou numéro IP) de l'ordinateur auquel on se connecte, éventuellement suivi de deux points et d'un numéro de port TCP, et enfin vient le répertoire d'accès, qui est essentiellement la demande transmise au protocole HTTP. Le navigateur que tu utilises va ensuite transformer cette URL en requête HTTP, qui commence par GET, indiquant qu'il veut charger la page, et le serveur HTTP de l'autre côté va renvoyer la page avec un petit en-tête HTTP. Tout ceci se fait par le protocole TCP. Maintenant, les principaux navigateurs permettent de ne plus taper le http:// initial, parce que c'est trop fatigant. Et même le www. au début du nom de la machine peut souvent être omis.

Argos : Ainsi, ce www. correspond à un nom d'ordinateur et pas un nom de protocole ?

La Chèvre : Exact. De plus en plus de gens ont baptisé leurs ordinateurs dédiés au World Wide Web par un nom commençant par www., et c'est donc devenu un standard de fait. Mais stricto sensu, le www. désigne bien un nom d'ordinateur. D'ailleurs je ne t'ai pas encore dit comment les noms étaient organisés sur l'Internet.

Argos : En effet.

La Chèvre : Ils sont organisés suivant une hiérarchie de domaines. Par exemple, www.polytechnique.fr est un ordinateur appelé www dans le domaine polytechnique qui appartient au domaine fr, lui-même dans le domaine racine. La conversion entre nom d'ordinateur et numéro IP (ou la conversion inverse) se fait par un protocole appelé DNS (``Domain Name Service'' - en fait, ``DOMAIN'' à son tour signifie ``Distributed Operating Multi Access Interactive Network'', mais à ce stade tout le monde l'a oublié), qui tourne au-dessus d'UDP ou TCP (port 53). Le principe est que chaque domaine de la hiérarchie de noms a un certain nombre d'ordinateurs appelés nameservers (serveurs de noms) qui sont capables de répondre aux questions concernant d'une part les numéros IP des ordinateurs du domaine, et d'autre part les numéros IP des nameservers de tous les sous-domaines. Chaque domaine a au moins un nameserver primaire, qui est l'autorité pour les noms du domaine, et des nameservers secondaires, qui recopient les informations contenues dans le nameserver primaire et peuvent le suppléer en cas de défaillance. Pour résoudre un nom tel que www.polytechnique.fr, ton ordinateur va donc commencer par interroger les nameservers du niveau racine, en particulier a.root-servers.net (adresse IP 198.41.0.4), pour savoir qui est le nameserver du domaine fr ; ensuite il va interroger les nameservers du domaine fr, en particulier ns2.nic.fr (adresse IP 192.93.0.4), pour savoir qui est le nameserver du domaine polytechnique.fr ; enfin, il va interroger ces nameservers, en particulier haddock.polytechnique.fr (adresse IP 192.48.98.11), pour savoir qui est l'ordinateur www.polytechnique.fr, et la réponse est 129.104.34.2. Cela fait beaucoup de requêtes, donc pour économiser le réseau on utilise des caches, c'est-à-dire que les ordinateurs gardent les informations de noms en mémoire pendant un certain temps pour éviter de reposer les mêmes questions sans arrêt. Le logiciel qui fait tout ça est un logiciel libre développé à l'Université de Californie à Berkeley, et qui s'appelle BIND (``Berkeley Internet Name Domain''). Certains systèmes d'exploitation (on ne servira pas de noms, hé, hé) ne sont pas capables d'utiliser BIND et ils reposent alors complètement sur un nameserver externe qui répondra à toutes leurs questions sur tous les domaines (tous les providers proposent un tel nameserver lors d'une connexion). En ce qui concerne la conversion du numéro IP en nom, ou DNS lookup inverse, on a inventé un domaine fictif, le domaine in-addr.arpa, dont les noms sont des adresses IP inversées, par exemple 2.34.104.129.in-addr.arpa, et qui a ses propres nameservers, capables cette fois de donner le vrai nom. En fait, les choses sont un peu compliquées par le fait qu'un ordinateur peut avoir plusieurs noms (mais il y en a toujours un ``canonique''), et aussi plusieurs numéros IP.

Argos : Ouf ! Je vois que l'Internet est beaucoup plus compliqué que je ne l'avais imaginé d'abord.

La Chèvre : Et encore ! Je n'ai pas parlé de la manière dont les adresses IP sont réparties, avec des adresses de moins en moins chic de la classe A à la classe C. Je n'ai pas parlé de la nouvelle version d'IP, IPv6 (ou IPng, ``IP Next Generation'') qui doit multiplier par quatre la taille des adresses IP. Je n'ai pas décrit l'organisation physique du réseau planétaire et l'emplacement géographique de ses différents centres nerveux (San Francisco ; Chicago ; Pennsauken, New Jersey près de Philadelphie ; MAE-East à Washington, DC ; MAE-West à San Jose ; et d'autres). Je n'ai pas mentionné le langage dans lequel la plupart des pages du World Wide Web sont écrites, le langage HTML (``HyperText Markup Language''). Et finalement j'ai à peine parlé des ordinateurs eux-mêmes...

Argos (effrayé) : Pour les ordinateurs, ce sera plus tard. Mais dis-moi, qui décide toutes ces choses pour le réseau Internet ? Qui invente tous ces protocoles ?

La Chèvre : Diverses personnes. Mais les standards sont tous organisés et coordonnés par l'IESG (``Internet Engineering Steering Group''), qui publie des documents appelés les RFC (``Requests For Comments''), les documents officiels de l'Internet. Tout le monde peut soumettre une RFC mais seules celles soumises lar l'IESG ont force de loi, et constituent des standards de l'Internet. C'est ainsi que la RFC2400 décrit les protocoles officiels, que la RFC1700 énumère tous les ``nombres assignés'' du réseau (comme les numéros de ports), que la RFC1122 décrit ce qu'on doit attendre d'un ordinateur connecté à l'Internet, et la RFC1009 pour un routeur, que la RFC0791 décrit le protocole IP, la RFC0768 le protocole UDP, la RFC0793 le protocole TCP, et ainsi de suite. On a parfois des surprises, comme la RFC1149 qui décrit la manière de faire transporter des datagrammes IP à des pigeons voyageurs (qui sont une couche de liens envisageable). Les RFC depuis leur origine étaient éditées par Jon Postel, qui était aussi IANA (``Internet Assigned Numbers Authority''), le Maître des Nombres, et accessoirement l'inventeur de nombreux protocoles. Il est mort le 16 octobre 1998, et la RFC2468, écrite par Vinton Cerf, le père de l'internet et ami de Postel, fait son apologie.