Outre l'adresse IP, une machine doit aussi connaître le nombre de bits attribués à l'identification du sous-réseau et à l'identificateur de machine. Ces informations sont fournies par le masque de sous-réseau (netmask). Ce masque est un masque de 32 bits (pour IPv4) contenant soit des bits à 1 pour l'identification du réseau et des bits à 0 pour l'identification de machines.
Dans la première implémentation d'IP, un militaire (?!?) décida de couper en plusieurs classes :
Mais ce fut une très mauvaise idée, car beaucoup de réseaux étaient trop grands pour entrer dans la classe C mais trop petits pour la classe B. Donc il y eut, au début, un gaspillage important d'adresses IP et les tables de routage devenaient de plus en plus grandes. La solution est de pouvoir attribuer exactement le nombre de bits désirés.
Maintenant, il est possible de choisir le masque réseau que l'on désire pour configurer une infrastructure réseau. Mais pourquoi s'inquiéter des classes ? parceque lorqu'un subnet n'est pas défini, il teste sur la classe.