Tout d'abord, il faut savoir que l'Internet Protocol version 4 repose sur un nombre fini d'adresses. Dans un réseau où il y a des centaines de machines, le plus simple pour savoir qui est qui, c'est simplement de tout numéroter (un peu comme le téléphone, on donne un numéro à chaque ligne). Comme la puissance des machines du début d'Internet (fin des années 70) est limitée et que le nombre de machines sur Internet à cette époque est limité (un ordinateur est cher, il y a donc peu d'ordinateur et ces derniers permettent en général de relier de multiples terminaux passifs), les créateurs d'Internet décident de coder le nombre de machines possibles sur le réseau sur 32bits, ce qui apparaît alors comme largement suffisant.
Calcul rapide, 32 bits, ça nous fait 2^32 adresses possibles soit 4 294 967 296 d'adresses, beaucoup plus qu'il n'en faut pour les quelques milliers d'ordinateurs de l'époque (et dans les faits, c'était suffisant jusqu'à il y a environ 10 ans). Une adresse IP est donc simplement un numéro dans le grand ensemble des numéros disponibles. Pour donner un exemple concret, l'adresse IP de ce serveur est 91.121.21.148 en représentation humainement lisible (4 chiffres de 0 à 255), ce qui correspond pour la machine au numéro 1 534 662 036. Au final, ce n'est qu'un numéro unique sur le réseau.
Maintenant qu'on sait comment on va numéroter les machines, ce serait bien qu'on arrive à décider qui va les numéroter pour éviter d'avoir des doublons (imaginer la situation si deux personnes avaient le même numéro de téléphone par exemple). On crée donc l'IANA qui est chargée de distribuer de très grandes plages d'adresses à des RIR, Regional Internet Registries, au nombre de un par « continent » :
- RIPE (Réseau IP Européens) pour l'Europe et le Moyen-Orient ;
- ARIN pour l'Amérique du Nord ;
- LACNIC pour l'Amérique du Sud ;
- APNIC pour l'Asie-Pacifique ;
- AfriNIC pour l'Afrique.
Les soucis ont commencé le jour où de nouveaux besoins sont apparus et notamment au niveau des réseaux privés. L'IANA a alors décidé de réserver des plages d'adresses pour d'autres usages que de les distribuer :
- Les 268 435 456 d'adresses de la plage 240.0.0.0/4 (allant donc de l'adresse 4 026 531 840 à l'adresse 4 294 967 295 la dernière adresse possible en IPv4) ont été réservées pour des usages futures qui ne sont jamais apparus ;
- Il y a de nouveau 268 435 456 d'adresses qui ont été réservé pour ceux qu'on appelle le multicast (et qui n'a jamais fonctionné sur Internet) ;
- Les plages d'adresses 10.0.0.0/8 (16 777 216 d'adresses), 192.168.0.0/16 (65 536) et 172.16.0.0/12 (1 048 576 d'adresses) sont réservées pour l'adressage privée (à l'intérieur des réseaux d'entreprises par exemple) ;
- Il y a un nombre incalculable d'adresses qui sont gaspillés pour les besoins du routage sur Internet (simplement parce qu'IPv4 « gâche » des adresses pour le découpage du réseau…);
- Et il y a des plages interdites, utilisées pour du test, etc…
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, la box 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://forum.nintendojo.fr sur ton ordi qui est en 192.168.1.15 par exemple, la box voit arriver un paquet qui dit :
Code : Tout sélectionner
Je suis 192.168.1.15 et je veux joindre 91.121.21.148
Code : Tout sélectionner
Je suis <IP publique de la box du forumeur joyeux> et je veux joindre 91.121.21.148
Code : Tout sélectionner
Je suis 91.121.21.148 et je veux joindre <IP publique de la box du forumeur joyeux>
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 sur le port 80 qu'elle avait rien demandé et que personne dans le réseau local avait rien demandé, elle le jète. 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 du Dojo, 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.
Merci de votre attention
