Internet

2011-06-15

Ce document est à l'origine une série de trois articles publiés le 15 juin 2011.

Internet Protocol

Processus d'échange

Un nœud peut-être un ordinateur, un routeur, un téléphone, ou n'importe quel appareil électronique capable d'agir sur le réseau. Un paquet est un fragment d'information, qui va pouvoir être acheminé d'un nœud à un autre grâce au protocole IP (Internet Protocol). Une adresse IP est un identifiant permettant d'identifier un nœud sur le réseau.

Supposons qu'Alice (IP : 10.0.0.2) veut envoyer un tel paquet à Bob (IP : 10.0.1.2). Elle commence par intégrer le paquet dans une trame IP, qui fonctionne comme une enveloppe : y sont indiqués l'adresse IP source (10.0.0.2) et l'adresse IP destination (10.0.1.2). Alice confie alors la trame IP à sa carte réseau, qui doit se débrouiller pour faire passer l'information.

La carte réseau est connectée à un réseau physique (par exemple, Wifi, ou câbles en Ethernet) sur lequel se trouvent d'autres nœuds. En particulier, 10.0.0.1 lui dit savoir contacter Bob. Le nœud en question lui donne son adresse MAC, qui correspond à l'identification, non pas du nœud, mais d'une de ses interfaces (par exemple : 00:12:34:56:78:90). La carte réseau va alors mettre la trame IP dans une nouvelle trame, en indiquant l'adresse MAC source (par exemple 00:09:87:65:43:21) et envoyer cette nouvelle trame sur le réseau.

Lorsque la carte réseau de 10.0.0.1 correspondante reçoit la trame qui lui est destinée, elle l'ouvre et récupère la trame IP. Le nœud 10.0.0.1 contacte à son tour l'interface réseau suivante, par exemple celle de 10.0.1.0 et ainsi-de-suite, jusqu'à ce que la trame IP atteigne 10.0.0.1.2, qui pourra la lire et récupérer le paquet.

Ports

L'ordinateur de Bob a donc reçu le paquet. Mais plusieurs applications tournent sur son ordinateur et celui-ci ne sait pas à laquelle les informations contenues dans le paquets étaient destinées.

C'est pourquoi une information supplémentaire figure dans la trame IP envoyée par la carte réseau d'Alice : le port. Ce nombre sur deux octets (de 0 à 65535) indique où le paquet doit être dirigé une fois parvenu sur l'ordinateur destinataire.

Attribution des adresses

Plutôt qu'un traitement à l'unité, les adresses IP peuvent être utilisées par bloc. Pour désigner un tel bloc d'adresses, on va indiquer le nombre de bits qui caractérisent une adresse du bloc. Les bits suivant n'influeront pas sur l'appartenance au bloc. Ainsi :

  • 10.0.1.0/24 désigne les adresses de 10.0.1.0 à 10.0.1.255
  • 2001:db8:0:85a3::ac1f:8001/64 désigne les adresses de 2001:db8:0:85a3:0000:0000:0000:0000 à 2001:db8:0:85a3:ffff:ffff:ffff:ffff

Pour éviter les conflits, les adresses IP sont attribuées par des autorités. La autorité maîtresse est l'IANA ; son rôle est de distribuer des blocs d'IP aux cinq Regional Internet Registries (RIPE-NCC, ARIN, APNIC, LACNIC et AfriNIC), qui font offices d'autorités secondaires, sur chaque continent. Ces RIR redistribuent à leur tour des blocs d'IP aux Local Internet Registries, comme les FAI (Fournisseur d'Accès Internet). Enfin, les LIR distribuent des adresses IP ou des blocs d'adresses IP aux utilisateurs finaux (les abonnés).

Transition vers IPv6

Limitations d'IPv4

À l'origine, IP prévoyait d'enregistrer l'identifiant des nœuds sur quatre octets, soit 32 bits. On représentait alors cet identifiant en donnant la valeur de chaque des quatre octets sous forme décimale et en séparant avec un point. Par exemple :

10.0.0.254

Seulement, cela ne laisse que 2^32, soit environ quatre milliards de combinaisons différentes. Dans les années 60 et 70, on ne pouvait pas prévoir la massification de l'usage d'Internet et un nombre aussi considérable semblait plus que suffisant pour un protocole à l'avenir encore incertain. Dans les années 80 et 90, Internet subit une croissance vertigineuse et le nombre d'adresses IP ne cesse de croître. La saturation des adresses IP commence à poindre...

Solutions temporaires

Pour repousser l'ultimatum, plusieurs moyens sont mis en œuvre. D'abord, les adresses IP changeantes. À l'époque des abonnements limités, les utilisateurs ne se connectent jamais tous en même temps. L'idée est donc d'attribuer une adresse IP à la connexion de l'abonné plutôt que de la lui réserver en permanence.

Avec le développement de l'informatique et les abonnements illimités, de plus en plus de machines cherchent à accéder au réseau. Puisqu'on ne peut pas se permettre de fournir plusieurs adresses IP par abonné, on ne va lui en fournir qu'une, qui devra servir pour tous ces appareils.

En fait, l'adresse IP est attribuée au modem-routeur de l'abonné. Celui-ci est alors chargé de créer un réseau local entre les machines de l'utilisateur. La « box » voit ainsi deux réseau : l'Internet mondial, appelé WAN pour Wide Area Network, et le réseau local de l'abonné appelé LAN (pour Local Area Nework). Des adresses IP valables uniquement en LAN sont attribuées à chacune des machines ; elles ne leur permettent pas d'accéder au reste d'Internet pour autant. En fait, elles vont utiliser un intermédiaire : le modem-routeur.

Imaginons que 202.14.28.1 soit l'IP fournie par mon FAI. Mon modem-routeur s'attribue cette IP en WAN. Du côté LAN, j'ai mon modem-routeur, donc, avec pour IP locale 10.0.0.1, et deux ordinateurs, 10.0.0.2 et 10.0.0.3. La configuration de mon ordinateur est très particulière :

Adresse IP : 10.0.0.2
Masque de sous-réseau : 255.255.255.0
Passerelle : 10.0.0.1

Si l'adresse IP fonctionne toujours sur le même principe, le NAT se rapporte à la notion de sous-réseau. En fait, mon LAN est un sous-réseau. Voyons à quoi sert le masque :

Je suis 10.0.0.2. 10.0.0.3 est sur le même réseau (LAN) que moi. En revanche, 202.14.28.2 se trouve de l'autre côté du modem-routeur (WAN). En fait, le masque de sous-réseau me permet de distinguer ce qui est dans mon réseau de ce qui ne l'est pas. 255.255.255.0 signifie qu'un nœud est sur mon réseau lorsque les trois premiers octets coïncident avec ma propre adresse IP.

Lorsque 10.0.0.2 communique avec 10.0.0.3, il n'y a pas de problème, puisque les adresses IP locales sont valables sur tout le LAN. En revanche, si 10.0.0.2 essaie de contacter 202.14.28.2, il doit envoyer une requête sur le WAN. C'est à ce moment qu'il contacte la passerelle et lui demande d'envoyer un paquet pour lui. En revanche, 202.14.28.2 ne peut pas voir 10.0.0.2, puisque cette adresse IP n'est valable que localement. Aussi, le modem-routeur doit-il s'assurer de pouvoir transférer la réponse au bon nœud. Cela est généralement effectué à l'aide des ports.

IPv6

Malgré tout, la pénurie était inévitable. Conçu dans les années 90 et finalisé en 1998, l'IPv6 doit combler les lacunes d'IPv4. Plutôt que de coder les adresses IP sur 32 bits, IPv6 les codes sur 128 bits, soit 16 octets. La longueur des IP est multiplié par quatre, mais le nombre de possibilités est multiplié par quatre-vingt milliards de milliards de milliards !

La représentation normalisée est également sensiblement différente. Plutôt que du décimal, on utilise de l'héxadécimal, plus adapté à la représentation de données binaires. La séparation est faite avec le signe deux-points et regroupe les octets deux par deux. Par exemple :

2001:0db8:0000:85a3:0000:0000:ac1f:8001

ou, sous forme plus compacte:

2001:db8:0:85a3::ac1f:8001

Le déploiement d'IPv6 prend du temps, non pas à cause des logiciels côté utilisateurs, mais parce que les routeurs en cœur du réseau doivent être mis à jour par les opérateurs.

DNS

Principe

Les machines peuvent communiquer entre elles grâce à IP. Cependant, leur adresse IP n'est pas un identifiant très facile à retenir. Pour éviter d'avoir à le faire, un système d'équivalence a été mis en place : le Domain Name System, capable d'associer à un identifiant facile à mémoriser (un nom de domaine) une adresse IP. Par exemple, on peut actuellement accéder au moteur de recherche de Google à l'adresse IPv4 suivante :

209.85.147.147

Ce n'est cependant pas facile à mémoriser. Et cette adresse pourrait très bien être modifiée. Plutôt que d'avoir à suivre le processus laborieux de tenir à jour son petit carnet d'adresses IP, il suffit de mémoriser www.google.com.. Pour accéder au site, il suffira de demander à qui correspond www.google.com. :

$ dig www.google.com. +short
74.125.230.244
...

Résolution

À la manière des IP, les noms de domaines sont gérés par un système d'autorité distribuée. Plutôt que des blocs, on va gérer des niveaux de domaines. Ainsi, l'ICANN attribue les TLD (Top Level Domains, ou domaines de premier niveau), c'est-à-dire des domaines comme :

  • net.
  • com.
  • fr.

À leur tour, les autorités chargées de gérer ces TLD peuvent attribuer des domaines de deuxième niveau. Par exemple :

  • wikipedia.org.
  • google.com.
  • france.fr.

À leur tour, ceux à qui sont confiés ces domaines peuvent créer des sous domaines, comme :

  • fr.wikipedia.org.
  • www.google.com.

Et ainsi de suite. Aussi, la résolution DNS part des TLD pour remonter jusqu'à la requête finale sur le domaine de plus haut niveau chez son possesseur.