En 1984, devant la limitation du modèle de classes, la RFC 917 (Internet subnets) crée le concept de sous-réseau. Ceci permet par exemple d'utiliser une adresse de Classe B comme 256 sous-réseaux de 254 ordinateurs au lieu d'un seul réseau de 65536 ordinateurs, sans toutefois remettre en question la notion de classe d'adresse.
Le masque de sous-réseau permet de déterminer les deux parties d'une adresse IP correspondant respectivement au numéro de réseau et au numéro de l'hôte.
Un masque a la même longueur qu'une adresse IP. Il est constitué d'une suite de chiffres 1 (éventuellement) suivie par une suite de chiffres 0 :
Pour calculer la partie sous-réseau d'une adresse IP, on effectue une opération ET logique bit à bit entre l'adresse et le masque. Pour calculer l'adresse de l'hôte, on effectue une opération ET bit à bit entre le complément à un du masque et l'adresse.
En IPv6, les sous-réseaux ont une taille fixe de /64, c'est-à-dire que 64 des 128 bits de l'adresse IPv6 sont réservés à la numérotation d'un hôte dans le sous-réseau.
Celle-ci pose problème, pour plusieurs raisons:
L'IANA, qui est depuis 2005, une division de l'ICANN, définit l'usage des différentes plages d'adresses IP, en segmentant l'espace en 256 blocs de taille /8 numérotés de 0/8 à 255/8.
Les adresses IP unicast sont distribuées par l'IANA aux registres Internet régionaux (RIR). Les RIR gèrent les ressources d'adressage IPv4 et IPv6 dans leur région. L'espace d'adressage unicast IPv4 est composé des blocs d'adresse /8 de 1/8 à 223/8. Chacun de ces blocs est soit réservé, assigné à un réseau final ou à un registre Internet régional (RIR) ou libre. En juin 2010, il reste 16 blocs unicast /8 libres.
En IPv6, le bloc 2000::/3 est réservé pour les adresses unicast globales. Des blocs /23 sont assignés aux RIR depuis 1999.
Il est possible d'interroger les bases de données des RIR pour savoir à qui est assigné une adresse IP grâce à la commande whois ou via les sites Web des RIR.
Les RIR se sont regroupés pour former la Number Resource Organization (NRO) afin de coordonner leurs activités ou projets communs et mieux défendre leurs intérêts auprès de l'ICANN (l'IANA), mais aussi auprès des organismes de normalisation (notamment l'IETF ou l'ISOC).
Certaines adresses sont réservées à un usage particulier (RFC 5735) :
Bloc | Usage | Référence |
---|---|---|
0.0.0.0/8 | ce réseau | RFC 1700 |
10.0.0.0/8 | Adresses privées | RFC 1918 |
127.0.0.0/8 | adresse de bouclage (localhost) | RFC 1122 |
169.254.0.0/16 | adresses locales autoconfigurées (APIPA) | RFC 3927 |
172.16.0.0/12 | Adresses privées | RFC 1918 |
192.0.0.0/24 | Réservé par l'IETF | RFC 5736 |
192.0.2.0/24 | Réseau de test TEST-NET-1 | RFC 5737 |
192.88.99.0/24 | 6to4 anycast | RFC 3068 |
192.168.0.0/16 | Adresses privées | RFC 1918 |
198.18.0.0/15 | Tests de performance | RFC 2544 |
198.51.100.0/24 | Réseau de test TEST-NET-2 | RFC 5737 |
203.0.113.0/24 | Réseau de test TEST-NET-3 | RFC 5737 |
224.0.0.0/4 | Multicast | RFC 3171 |
240.0.0.0/4 | Réservé à un usage ultérieur non précisé | RFC 1112 |
255.255.255.255/32 | broadcast limité | RFC 919 |
Ces adresses ne peuvent pas être routées sur Internet. Leur utilisation par un réseau privé est encouragé pour éviter de réutiliser les adresses publiques enregistrées.
Le recours à ces plages d'adresses pose cependant des problèmes lors de l'interconnexion de réseaux privés.
En IPv4, tout détenteur d'un numéro d'AS 16 bit peut utiliser un bloc de 256 adresses IP multicast, en 233.x.y.z où x et y sont les 2 octets du numéro d'AS (RFC 3180).
Les plages d'adresse IPv6 suivantes sont réservées (RFC 5156):
Bloc | Usage | Référence |
---|---|---|
::/128 | Adresse non spécifiée | RFC 4291 |
::1/128 | Adresse de bouclage | RFC 4291 |
::ffff:0:0/96 | Adresse IPv6 mappant IPv4 | RFC 4291 |
2000::/3 | Adresses unicast routables sur Internet | RFC 3587 |
2001::/32 | Teredo | RFC 4380 |
2001:2::/48 | Tests de performance | RFC 5180 |
2001:10::/28 | Orchid | RFC 4843 |
2001:db8::/32 | documentation | RFC 3849 |
2002::/16 | 6to4 | RFC 3056 |
fc00::/7 | Adresses locales uniques | RFC 4193 |
fe80::/10 | Adresses locales lien | RFC 4291 |
ff00::/8 | Adresses multicast | RFC 4291 |
En IPv6, les adresses locales de site fec0::/10 étaient réservées par la RFC 3513 pour le même usage privé, mais sont considérées comme obsolètes par la RFC 3879 pour privilégier l'adressage public et décourager le recours aux NAT. Elles sont remplacée par les adresses locales uniques fc00::/7 qui facilitent l'interconnexion de réseaux privés en utilisant un identifiant aléatorie de 40 bits.
En IPv6, les adresses fe80::/64 ne sont uniques que sur un lien. Un hôte peut donc disposer de plusieurs adresses identiques dans ce réseau sur des interfaces différentes. Pour lever une ambiguïté avec ces adresses de scope lien local, on devra donc préciser l'interface sur laquelle l'adresse est configurée. Sous les systèmes de type Unix, on ajoute à l'adresse le signe pourcent suivi du nom de l'interface (par exemple ff02::1%eth0), tandis que sous Windows on utilise le numéro de l'interface (ff02::1%11).
La popularité d'Internet aboutit à l'épuisement prévisible des blocs d'adresses IPv4 disponibles, ce qui menace le développement du réseau.
Pour remédier à ce problème ou repousser l'échéance, plusieurs techniques existent :