On a donc un problème. Et ce problème il est connu depuis qu'Internet est devenu accessible au grand public. On sait qu'on a pas assez d'adresses pour tout le monde. Mais on est malin et on a donc inventé le NAT (Network Address Translation = traduction d'adresses réseaux). Le principe, c'est que chaque ordinateur du réseau domestique ou du réseau d'entreprise a une adresse privée (qui ne marche donc pas sur Internet), mais connaît une machine qui a à la fois une adresse privée et une adresse publique (Freebox, Livebox, etc…).

Basiquement, quand une machine du réseau local veut aller joindre une machine d'Internet, le boîtier Internet va prendre en compte sa requête, effacer l'adresse de l'expéditeur pour la remplacer par son adresse publique et la transmettre sur Internet. Concrètement tu tapes http://blogdesinges.fr sur ton ordi qui est en 192.168.1.15 par exemple, la boîboîte voit arriver un paquet qui dit :

Je suis 192.168.1.15 et je veux joindre 91.121.21.148

Si la box envoit le paquet tel quel, ça ne peut pas marcher : Internet va lui dire que le paquet ne peut pas avoir pour expéditeur 192.168.1.15 parce que c'est une adresse privée (l'équivalent informatique d'un Dans Ton Cul). Donc la box, pas folle, remplace cette adresse par son adresse :

Je suis <IP publique de la box du joyeux lecteur> et je veux joindre 91.121.21.148

Et elle attend patiemment la réponse. Quand la réponse vient, elle a cette forme :

Je suis 91.121.21.148 et je veux joindre <IP publique de la box du joyeux lecteur>

Le symétrique de la précédente. Comme la box sait qu'elle a envoyé une requête, elle sait à quel ordinateur du réseau local ce paquet est destiné. Elle remplace donc simplement l'adresse du destinataire par l'adresse 192.168.1.15. Et le tour est joué, la page s'affiche. Bon évidemment, dans la pratique, c'est un tout petit peu plus compliqué que cela : chaque paquet suit effectivement ce cheminement là, mais il y a nettement plus de choses à faire pour afficher une simple page Web.

Le problème ici, c'est qu'on peut bien envoyer des requêtes pour recevoir des réponses. Mais on ne peut pas recevoir directement des requêtes. Si la box reçoit un truc et qu'elle n'avait rien demandé et que personne dans le réseau local n'avait rien demandé, elle le jette. Purement et simplement. C'est plus simple à imaginer avec un téléphone : tu peux appeler les gens et ils peuvent alors te parler, mais ils ne peuvent pas t'appeler. Si c'était le cas du serveur de Blog2Singes, ce serait extrêmement problématique parce qu'il serait incapable de répondre aux requêtes.

C'est le deuxième principal problème d'IPv4 : le NAT a permis de reculer le problème de quelques années, mais n'a rien réglé. Au contraire, il a fermé une partie du réseau et les concepteurs d'applications comme la VoIP et le P2P ont dû trouver des astuces de porc pour continuer de fonctionner malgré les barrières.

Donc la solution, c'est simplement IPv6 \o/

Ce coup-ci, il a été décidé qu'on allait coder les adresses sur 128 bits soit 340 282 366 920 938 463 463 374 607 431 768 211 456 d'adresses possibles ou 667 millions de milliards d'adresses IP par mm² de la surface terrestres (!). Donc là plus de souci : comme on a plus de pénurie, on peut donner des adresses à tout le monde (et même plusieurs centaines de millions de milliards d'adresses pour chaque connexion) et on a plus besoin de faire de la traduction d'adresses. Toutes les applications qui posaient problème ne posent donc plus de problème et on peut même envisager d'en faire des nouvelles qui peuvent utiliser toutes les particularités d'un réseau 100% connecté \o/

Les adresses IPv6 permettent de retrouver un monde où tous les ordinateurs peuvent se connecter entre et ou les box ne font plus que connecter vraiment les ordinateurs à Internet et pas bricoler au milieu pour que ça marche.

Ma conclusion sera : IPv6, c'est bien, mangez-en.