# Sous-réseau

Un sous-réseau est une subdivision logique d'un réseau de taille plus importante. Le masque de sous-réseau permet de distinguer la partie de l'adresse commune à tous les appareils du sous-réseau et celle qui varie d'un appareil à l'autre. Un sous-réseau correspond typiquement à un réseau local sous-jacent.
Historiquement, on appelle également sous-réseau chacun des réseaux connectés à Internet.
La subdivision d'un réseau en sous-réseaux permet de limiter la propagation des broadcast, ceux-ci restant limités au réseau local et leur gestion étant coûteuse en bande passante et en ressource au niveau des commutateurs réseau. Les routeurs sont utilisés pour la communication entre les machines appartenant à des sous-réseaux différents.

## Masque de sous-réseau

Les adresses IP sont composées de deux parties : le sous-réseau et l'hôte.
On considérait autrefois que l'adresse du réseau était définie par sa classe, et obtenue en appliquant l'opérateur booléen ET bit à bit entre le masque par défaut associé et l'adresse IP. La notion de classe est cependant considérée comme désuète depuis l'avènement du routage sans classe. Ni les protocoles de routages actuels (BGP, OSPF, IS-IS), ni les RIR n'en tiennent compte dans l'assignation des adresses IP publiques.
Un masque de sous-réseau (désigné par subnet mask, netmask ou address mask en anglais) est un masque distinguant les bits d'une adresse IPv4 utilisés pour identifier le sous-réseau de ceux utilisés pour identifier l'hôte. L'adresse du sous-réseau est obtenue en appliquant l'opérateur ET binaire entre l'adresse IP et le masque de sous-réseau. L'adresse de l'hôte à l'intérieur du sous-réseau est quant à elle obtenue en appliquant l'opérateur ET entre l'adresse IP et le complément à un du masque.

## IPv4

En IPv4, les masques de sous-réseau utilisent la même représentation que celles des adresses. Une adresse IPv4 est codée sur 4 octets, soit 32 bits (représentés en notation décimale à point). Un masque de sous-réseau possède lui aussi 4 octets. Bien que la norme IPv4 n'interdise pas que la partie significative du masque contienne des bits à 0, on utilise en pratique des masques constitués (sous leur forme binaire) d'une suite de 1 suivis d'une suite de 0, il y a donc 32 masques réseau possibles.
Autrement dit, il suffit pour obtenir l'adresse du sous-réseau de conserver les bits de l'adresse IPv4 là où les bits du masque sont à 1 (un certain nombre de bits en partant de la gauche de l'adresse). La partie numéro d'hôte est, elle, contenue dans les bits qui restent (les plus à droite).
Une forme plus courte est connue sous le nom de « notation CIDR » (Classless Inter-Domain Routing). Elle donne le numéro du réseau suivi par une barre oblique (ou slash, « / ») et le nombre de bits à 1 dans la notation binaire du masque de sous-réseau. Le masque 255.255.224.0, équivalent en binaire à 11111111.11111111.11100000.00000000, sera donc représenté par /19 (19 bits à la valeur 1, suivis de 13 bits 0).
La notation 91.198.174.2/19 désigne donc l'adresse IP 91.198.174.2 avec le masque 255.255.224.0, et signifie que les 19 premiers bits de l'adresse sont dédiés à l'adresse du sous-réseau, et le reste à l'adresse de l'ordinateur hôte à l'intérieur du sous-réseau.
Deux adresses IP appartiennent à un même sous-réseau si elles ont en commun les bits du masque de sous-réseau.
Subdiviser un réseau en sous-réseaux consiste (entre autres) à rajouter des bits 1 au masque de réseau, afin de former un masque de sous-réseau. À partir de la connaissance de l'adresse IPv4 et du masque de sous-réseau il est possible de calculer le nombre d'interfaces que l'on peut numéroter à l'intérieur de chaque sous-réseau. En notant b$_{NID}$ le nombre de bits à 1 dans le masque de réseau et b$_{SID}$ le nombre de bits à 1 supplémentaires dans le masque de sous-réseau, le nombre de sous-réseaux possibles est donné par 2$^{bSID}$, et le nombre d'hôtes par sous-réseau est 2$^{bHID}$-2, deux adresses de ce sous-réseau étant réservées au sous-réseau lui-même et au broadcast et ne pouvant pas être utilisées pour numéroter une interface.
/32 désigne un réseau qui ne comporte qu'une seule adresse IPv4, c'est-à-dire une adresse IPv4 individuelle.
Le masque /31 était autrefois considéré comme inutilisable, car ce réseau ne comporte que deux adresses, dont l'adresse du sous-réseau et l'adresse de broadcast. Pour numéroter des adresses de liens point à point, on utilisait donc des /30, soit quatre adresses dont deux utilisables pour adresser des interfaces. Le RFC 3021 permet cependant d'utiliser plus efficacement l'espace d'adressage en permettant le /31 (il n'y a dans ce cas pas d'adresse de broadcast et l'adresse du sous-réseau est utilisée pour numéroter une interface).
Pour tenir compte des 2 dernières valeurs correspondant aux masques /31 et /32 et qui font exception à la formule 2$^{32-s}$-2, nous pouvons avoir recours à la Fonction de Heaviside, notée H(x), qui introduit une fonction seuil à la valeur s=30.
La formule de calcul du nombre d'hôtes de sous-réseau devient donc 2$^{32-s}$-2*H(30-s) et s'applique ainsi à tous les calculs de la dernière colonne du tableau ci-dessous.
Liste des masques de sous-réseaux :
| CIDR | bits disponibles | Masque de sous-réseau | Nombre d'hôtes par sous-réseau |
| /1 | 31 | 128.0.0.0 | 2$^{31}$-2 = 2 147 483 646 |
| /2 | 30 | 192.0.0.0 | 2$^{30}$-2 = 1 073 741 822 |
| /3 | 29 | 224.0.0.0 | 2$^{29}$-2 = 536 870 910 |
| /4 | 28 | 240.0.0.0 | 2$^{28}$-2 = 268 435 454 |
| /5 | 27 | 248.0.0.0 | 2$^{27}$-2 = 134 217 726 |
| /6 | 26 | 252.0.0.0 | 2$^{26}$-2 = 67 108 862 |
| /7 | 25 | 254.0.0.0 | 2$^{25}$-2 = 33 554 430 |
| /8 | 24 | 255.0.0.0 | 2$^{24}$-2 = 16 777 214 |
| /9 | 23 | 255.128.0.0 | 2$^{23}$-2 = 8 388 606 |
| /10 | 22 | 255.192.0.0 | 2$^{22}$-2 = 4 194 302 |
| /11 | 21 | 255.224.0.0 | 2$^{21}$-2 = 2 097 150 |
| /12 | 20 | 255.240.0.0 | 2$^{20}$-2 = 1 048 574 |
| /13 | 19 | 255.248.0.0 | 2$^{19}$-2 = 524 286 |
| /14 | 18 | 255.252.0.0 | 2$^{18}$-2 = 262 142 |
| /15 | 17 | 255.254.0.0 | 2$^{17}$-2 = 131 070 |
| /16 | 16 | 255.255.0.0 | 2$^{16}$-2 = 65 534 |
| /17 | 15 | 255.255.128.0 | 2$^{15}$-2 = 32 766 |
| /18 | 14 | 255.255.192.0 | 2$^{14}$-2 = 16 382 |
| /19 | 13 | 255.255.224.0 | 2$^{13}$-2 = 8 190 |
| /20 | 12 | 255.255.240.0 | 2$^{12}$-2 = 4 094 |
| /21 | 11 | 255.255.248.0 | 2$^{11}$-2 = 2 046 |
| /22 | 10 | 255.255.252.0 | 2$^{10}$-2 = 1 022 |
| /23 | 9 | 255.255.254.0 | 2$^9$-2 = 510 |
| /24 | 8 | 255.255.255.0 | 2$^8$-2 = 254 |
| /25 | 7 | 255.255.255.128 | 2$^7$-2 = 126 |
| /26 | 6 | 255.255.255.192 | 2$^6$-2 = 62 |
| /27 | 5 | 255.255.255.224 | 2$^5$-2 = 30 |
| /28 | 4 | 255.255.255.240 | 2$^4$-2 = 14 |
| /29 | 3 | 255.255.255.248 | 2$^3$-2 = 6 |
| /30 | 2 | 255.255.255.252 | 2$^2$-2 = 2 |
| /31 | 1 | 255.255.255.254 | 2$^1$-0 =2 |
| /32 | 0 | 255.255.255.255 | 2$^0$-0 =1 |

## IPv6

En IPv6 on utilise généralement la notation CIDR pour représenter un masque. En IPv6, les préfixes peuvent être plus grands qu’en IPv4, et il est recommandé aux opérateurs d’assigner au moins un /56 à chaque abonné (par exemple, un /48). /128 désigne un réseau qui ne comprend qu’une seule adresse IPv6.
Les adresses de lien local (fe80::/10) utilisent un masque fixe de 64 bits (fe80::/64)

## Masque de sous-réseau variable

On parle de masque de sous-réseau variable (variable-length subnet mask, VLSM) quand un réseau est divisé en sous-réseaux dont la taille n'est pas identique, ceci permet une meilleure utilisation des adresses disponibles. Les protocoles de routage BGP, OSPF, IS-IS, EIGRP et RIPv2 supportent le VLSM car ils indiquent toujours un masque réseau associé à une route annoncée. Le masque variable permet de connaitre les autres masques pour devenir un réseau local.

## Sous-réseau zéro

Le sous-réseau zéro était considéré comme un sous-réseau non standard par le RFC 950, bien qu'utilisable. La pratique de réserver le sous-réseau 0 et le sous réseau 1 est cependant considérée comme obsolète depuis le RFC 1878. Il s'agit du premier sous-réseau d'un réseau. Par exemple, le sous-réseau 1.0.0.0 avec 255.255.0.0 comme masque de sous-réseau. Le problème avec ce sous-réseau est que l'adresse unicast pour le sous-réseau est la même que l'adresse unicast pour le réseau de classe A complet. Ce problème n'est plus d'actualité puisque cette réserve n'avait été conservée que pour rester compatible avec de vieux matériels ne sachant pas gérer le CIDR.