En 1992, la RFC 1338 (Supernetting: an Address Assignment and Aggregation Strategy) propose d'abolir la notion de classe qui n'était plus adaptée à la taille d'Internet.
Le Classless Inter-Domain Routing (CIDR), est mis au point en 1993 afin de diminuer la taille de la table de routage contenue dans les routeurs. Ce but est atteint en agrégeant plusieurs entrées de cette table en une seule.
La distinction entre les adresses de classe A, B ou C a été ainsi rendue obsolète, de sorte que la totalité de l'espace d'adressage unicast puisse être gérée comme une collection unique de sous-réseaux indépendamment de la notion de classe. Le masque de sous-réseau ne peut plus être déduit de l'adresse IP elle-même, les protocoles de routage compatibles avec CIDR, dits classless, doivent donc accompagner les adresses du masque correspondant. C'est le cas de Border Gateway Protocol dans sa version 4, utilisé sur Internet (RFC 1654 A Border Gateway Protocol 4, 1994), OSPF, EIGRP ou RIPv2. Les registres Internet régionaux (RIR) adaptent leur politique d'attribution des adresses en conséquence de ce changement.
L'utilisation de masque de longueur variable (Variable-Length Subnet Mask, VLSM) permet le découpage de l'espace d'adressage en blocs de taille variable, permettant une utilisation plus efficace de l'espace d'adressage.
Un fournisseur d'accès internet peut ainsi se voir allouer un bloc /19 (soit 8192 adresses) et créer de sous-réseaux de taille variable en fonction des besoins à l'intérieur de celui-ci : de /30 pour des liens points-à-point à /24 pour un réseau local de 200 ordinateurs. Seul le bloc /19 sera visible pour les réseaux extérieurs, ce qui réalise l'agrégation et l'efficacité dans l'utilisation des adresses.
En 1984, devant la limitation du modèle de classes, la RFC 917 (Internet subnets) crée le concept de sous-réseau qui introduit un niveau hiérarchique supplémentaire entre le numéro de réseau et le numéro d'hôte. 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. Ceci permet plus de flexibilité et d'efficacité dans l'attribution des adresses.
Exemple de sous-réseau dans un réseau de classe A :
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| Réseau | Sous-réseau | Hôte | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le masque de sous-réseau permet de déterminer les deux parties d'une adresse IP correspondant respectivement au numéro de sous-réseau et au numéro de l'hôte. Il est obtenu en mettant à 1 les bits du sous-réseau et à 0 les bits de l'hôte. Le masque 255.255.255.0 correspond par exemple à un sous-réseau de 24 bits. Bien que les sous-réseaux sont encore fréquemment définis aux frontières d'octet, les réseaux 24 bits étant les plus courants, d'autres masques sont désormais possibles.
Deux adresses IP appartiennent au même sous-réseau si elles ont en commun les bits du sous-réseau. Pour déterminer si la machine de destination appartient au même sous-réseau, un hôte utilise l'opération ET binaire entre l'adresses IP et le masque de sous-réseau, et fait de même avec l'adresse destination. Si le résultat est identique, alors la destination est dans le même sous-réseau.