475 votes

Comment fonctionne le sous-réseau IPv4 ?

Il s'agit d'un Question canonique sur les sous-réseaux IPv4.

En rapport :

Comment fonctionne le sous-réseau et comment le faire ? à la main ou dans votre tête ? Quelqu'un peut-il expliquer le concept et donner plusieurs exemples ? Server Fault reçoit beaucoup de questions sur le sous-réseau, et nous pourrions donc utiliser une réponse pour les diriger vers Server Fault.

  • Si j'ai un réseau, comment puis-je savoir comment le diviser ?
  • Si on me donne un masque de réseau, comment puis-je savoir quelle est la portée du réseau pour réseau ?
  • Parfois, il y a une barre oblique suivie par un chiffre, quel est ce chiffre ?
  • Parfois, il y a un masque de sous-réseau, mais aussi un masque générique, ils semblent être la même chose mais ils sont différents ?
  • Quelqu'un a mentionné quelque chose à propos de la connaissance du binaire pour cela ?

1 votes

Cette réponse en deux parties explique tout ce que vous vouliez savoir sur le calcul des adresses IPv4, et plus encore.

0 votes

C'est tout simplement trop pour être absorbé sur un écran d'ordinateur. J'ai créé un PDF imprimable pour ceux qui veulent lire ceci sur un banc sous un arbre.

7voto

gbjbaanb Points 3822

Plages de réseaux : les réseaux sont toujours référencés par 2 nombres : un pour déterminer le réseau, et un autre pour déterminer quel ordinateur (ou hôte) se trouve sur ce réseau. Comme chaque adresse nertwork est longue de 32 bits, les deux nombres doivent tenir dans ces 32 bits.

La numérotation du réseau est importante, car c'est elle que l'ICANN attribue lorsque vous demandez une plage d'IP de réseau. Sans cela, personne ne serait capable de faire la différence entre mon réseau et celui d'AT&T. Ainsi, si ces numéros doivent être uniques, personne d'autre ne veut attribuer des numéros aux hôtes qui se trouvent sur mon réseau. D'où la division - la première partie est gérée par les responsables du réseau, la deuxième partie est à moi et je peux la donner aux machines que je veux.

Le numéro de réseau n'est pas fixé à un certain nombre de bits. Par exemple, si je n'avais que 200 machines à gérer moi-même, je serais parfaitement satisfait d'un numéro de réseau utilisant 24 bits, ce qui ne me laisserait que 8 bits pour moi-même - ce qui est suffisant pour 255 hôtes. Comme le numéro de réseau utilise 24 bits, nous pouvons en avoir beaucoup, ce qui signifie que beaucoup de personnes peuvent avoir leurs propres réseaux.

Dans le passé, on appelait cela un réseau de classe C. (La classe B utilisait 16 bits pour le numéro de réseau, et la classe A 8 bits, de sorte qu'il n'existe que quelques réseaux de classe A).

Aujourd'hui, cette convention de dénomination est tombée en désuétude. Elle a été remplacée par le concept appelé CIDR. Le CIDR place explicitement le nombre de bits de vos hôtes après la barre oblique. Ainsi, mon exemple ci-dessus (la classe C) est maintenant désigné comme un CIDR /24.

Cela nous donne un peu plus de flexibilité, mais si j'avais 300 hôtes à gérer, j'aurais besoin d'un réseau de classe B ! Maintenant, je peux simplement obtenir un CIDR /23, de sorte que j'ai 9 bits pour moi, et 23 bits pour le numéro de réseau. L'ICANN n'a peut-être pas prévu ce type de réseaux, mais si j'en ai un en interne, ou si je loue un réseau partiel à un fournisseur d'accès, cela facilite la gestion - d'autant plus que tous leurs clients peuvent recevoir un /29 (ce qui me laisse 3 bits ou un maximum de 8 machines), ce qui permet à davantage de personnes d'avoir leur propre petite part des adresses IP disponibles. Jusqu'à ce que nous ayons IPv6, c'est très important.


Cependant... bien que je sache qu'un CIDR /24 est l'équivalent de l'ancien réseau de classe C, qu'un /16 est de classe B et qu'un /8 est de classe A... Je suis toujours bloqué en essayant de calculer un /22 dans ma tête. Heureusement, il existe des outils qui le font pour moi :)

Cependant, si vous savez qu'un /24 comporte 8 bits pour les hôtes (et 24 bits pour le réseau), alors je sais qu'un /23 me donne un bit supplémentaire qui double le nombre d'hôtes.

0 votes

-1 Désolé, mais mentionner les classes en dehors d'une référence "historique" est inapproprié de nos jours. Elles ne sont pas "passées de mode", elles ont été officiellement dépréciées par la RFC 1519 en 1993. Elles sont très déroutantes et sont à l'origine de nombreuses idées fausses.

0 votes

Certaines implémentations des protocoles de routage dynamique résument les données le long des frontières de classe, il est donc utile de les connaître.

6voto

Jonathan J Points 594

Bien que ce qui précède soit correct (désolé, TL;DR), le calcul des sous-réseaux cause encore beaucoup de soucis à de nombreux administrateurs de réseau. Il existe en fait un moyen très simple de calculer les sous-réseaux, vous pouvez faire la plupart des calculs de tête et il y a très peu de choses à mémoriser. Pour la plupart des applications, il n'est même pas nécessaire de comprendre la représentation binaire, bien que cela soit utile pour une compréhension complète du sous-réseau. Je ne parlerai ici que de l'IPv4 ; l'IPv6 n'entre pas dans le cadre de cette discussion.

Rappelez-vous ceci :

Il y a trois choses essentielles à retenir : tous les sous-réseaux sont basés sur des puissances de deux, et il y a deux nombres clés : 256 et 32. Nous y reviendrons plus tard.

Tout d'abord, examinons un tableau contenant des puissances de 2 :

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

Le calcul des puissances de 2 est facile : chaque augmentation entière de la puissance double le résultat. 1+1=2, 2+2=4, 4+4=8, 8+8=16, et ainsi de suite. Le nombre total d'adresses dans un sous-réseau doit toujours être une puissance de 2. .

Puisque chaque octet d'un sous-réseau IPv4 va jusqu'à 256, 256 est un chiffre très important et constitue la base du reste des mathématiques.

Dimensionnement du sous-réseau

Nous allons commencer par une question facile : "Combien d'adresses dans un sous-réseau si le masque est 255.255.255.248 ?" Nous allons ignorer les trois premiers octets pour l'instant et examiner le dernier. Voici comment c'est facile : soustrayez 248 de 256. 256 moins 248 égale 8. Il y a 8 adresses disponibles (y compris les adresses réseau et de diffusion). L'inverse fonctionne également : "Si je veux avoir un sous-réseau avec 16 adresses, quel sera le masque de sous-réseau ?" 256 moins 16 égale 240. Le masque de sous-réseau sera 255.255.255.240.

Maintenant, si nous voulons étendre notre réseau au-delà de 256 adresses (historiquement, une "classe C"), cela devient un tout petit peu plus compliqué : si notre dernier octet est 0 et notre troisième octet est, disons, 240, (255.255.240.0), nous faisons le calcul sur le troisième octet et trouvons qu'il y aurait 16 adresses. Nous multiplions donc 16 par 256 (le nombre d'adresses dans le dernier octet) pour obtenir 4 096. Si les deux derniers octets sont tous deux égaux à 0 (ex. 255.240.0.0), nous prenons le résultat de la soustraction du deuxième octet (nous dirons que c'est à nouveau 16), nous multiplions par 256 (adresses du troisième octet), nous multiplions à nouveau par 256 (adresses du dernier octet) pour obtenir 1 048 576 adresses. C'est aussi simple que cela ! (OK, l'inverse est un peu plus difficile. Si nous voulons un sous-réseau avec 1 048 576 adresses, nous devrons diviser ce nombre par 256 plusieurs fois pour obtenir un nombre que nous pourrons soustraire de 256).

Adresse du réseau

Maintenant que nous savons comment calculer le masque de sous-réseau, comment déterminer l'adresse réseau ? C'est simple : il s'agit toujours d'un multiple du nombre d'adresses de notre sous-réseau. Ainsi, si notre sous-réseau compte 16 adresses, les adresses réseau possibles seront 0, 16, 32, 48, 64, et ainsi de suite jusqu'à 240. (Notez que 0 est un multiple valide de n'importe quel nombre, car tout nombre multiplié par 0 est égal à 0).

Et, bien sûr, l'adresse de diffusion sera la dernière adresse de l'étendue. Ainsi, si nous avons 16 adresses dans notre sous-réseau et que nous avons choisi une adresse réseau de 10.3.54.64, l'adresse de diffusion sera (64+16-1=79) 10.3.54.79.

Notation CIDR

Que pensez-vous de la notation CIDR ? Comment la traduire à partir d'un masque de sous-réseau de type IPv4 ?

Vous vous souvenez de nos pouvoirs de deux ? Eh bien, maintenant nous avons un autre nombre clé à retenir en plus de 256 : 32. Rappelez-vous, la notation CIDR décrit le nombre de bits significatifs dans l'adresse IPv4, et il y a 32 bits dans une adresse IPv4, 8 pour chaque octet. Donc, si nous avons un masque de sous-réseau de 255.255.255.240, cela représente 16 adresses. Si nous regardons notre tableau de "puissances de 2" ci-dessus, nous voyons que 16 est deux à la quatrième puissance (2^4). Nous soustrayons donc cette puissance -- 4 -- de 32 et obtenons 28. Notre notation CIDR pour un masque de sous-réseau de 255.255.255.240, notre notation CIDR est /28.

Et si l'on nous donne un CIDR de /28, nous soustrayons ce (28) de 32 pour obtenir 4 ; nous élevons 2 à cette (4ème) puissance (2^4) pour obtenir 16 ; puis nous soustrayons ce (16) de 256 pour obtenir 240 ; ou 255.255.255.240.

0 votes

Merci, mais je ne comprends toujours pas comment le PC utilise le masque de sous-réseau. Lorsqu'une application sur un PC veut envoyer des données, elle les encapsule dans un paquet. Le masque de sous-réseau détermine-t-il la manière dont un paquet est encapsulé ? Par exemple, si le PC voulait envoyer un paquet sur le réseau local, il utiliserait une trame Ethernet. fr.wikipedia.org/wiki/Ethernet_frame et s'il voulait sortir du réseau, utiliserait-il un paquet tcp ? fr.wikipedia.org/wiki/ ?

0 votes

En fait, je ne sais pas comment un ordinateur détermine où envoyer ses données. Le réseau Ethernet est comme un bus, il va partout. L'envoi d'un paquet par la prise Ethernet d'un ordinateur est un événement générique ; par conséquent, le paquet lui-même doit déterminer qui lui répond. Un paquet destiné à être capté par un périphérique local (commutateur ou autre ordinateur sur le réseau) doit avoir un aspect différent de celui d'un paquet destiné à être capté par un routeur.

0 votes

Cela se passe sur une couche inférieure au TCP. Chaque appareil a une adresse matérielle (MAC) qui est associée à une adresse IP dans la table ARP de chaque appareil. Cette table est construite par découverte. Lorsqu'un paquet est destiné à un hôte du réseau local, il est étiqueté avec le MAC du périphérique de destination. Lorsqu'un paquet est destiné à un hôte distant, il est étiqueté avec le MAC du routeur sur le réseau local. Lorsqu'il passe par le routeur, le MAC est dépouillé puis étiqueté avec le MAC du routeur du prochain saut. Le sous-réseau définit simplement l'étendue du réseau local. (C'est la version simple <500 caractères).

3voto

forumulator Points 141

Je pense également qu'il faudrait au moins mentionner les NATs, car ils sont très couramment utilisés dans les réseaux modernes à la place des sous-réseaux, en raison de l'épuisement des adresses IPv4, entre autres. (De plus, lorsque j'ai appris à connaître les sous-réseaux, j'étais très confus quant à la façon dont le sous-réseau est lié aux réseaux créés par les routeurs WiFi).

La traduction d'adresses réseau (NAT) est une technique (couramment) utilisée pour créer des réseaux privés en faisant correspondre un espace d'adresses (IP:Port) à un autre. Cette technique est principalement utilisée pour créer un réseau privé de plusieurs adresses IP privées derrière une adresse publique, par exemple, dans les routeurs Wifi, par des organisations (comme une université ou une société), ou parfois par des FAI.

La traduction réelle de l'adresse est effectuée de manière transparente dans les nœuds capables de NAT, généralement des routeurs. Il peut prendre plusieurs formes : cône complet, adresse restreinte, port restreint, etc. ou un mélange de ces éléments, ce qui détermine comment les connexions à travers le nœud peuvent être initiées.

Tous les détails peuvent être trouvés sur Wikipedia Mais, par exemple, considérons un routeur Wifi auquel sont connectés deux appareils. L'IP publique du routeur est 10.9.20.21/24 et les IP des appareils (IP privés) sont les suivants A: 192.168.0.2 , B: 192.168.0.3 et celui du routeur est R: 192.168.0.1 . Ainsi, si A veut se connecter au serveur S: 10.9.24.5/24 (qui est en fait sur un sous-réseau différent de celui du routeur ici) :

  1. A envoie un paquet IP à R (qui serait la passerelle par défaut) avec l'IP source 192.168.0.2 , port src (say) 14567 et l'IP de destination : 10.9.24.5 (Bien que le port soit en fait une partie de l'en-tête TCP).
  2. Le routeur (qui est capable de NAT) mappe le port 14567 à l'appareil A et change la source du paquet IP en 10.9.20.21 (qui est l'IP publique du routeur). Cela s'oppose au sous-réseau décrit ci-dessus, où les paquets IP ne sont en fait jamais modifiés .
  3. S reçoit la série de paquets TCP (avec l'IP src) : 10.9.20.21 , src Port : 14567 ) et envoyer des paquets de réponse avec ces valeurs dans les champs de destination.
  4. R vérifie le port de destination, qui est 14567 et transmet le paquet à A .
  5. A reçoit le paquet de réponse.

Dans la situation ci-dessus, si B a essayé d'ouvrir une connexion sur le même port source ( 14567 ), il serait mappé sur un port différent par R (et le port dans le paquet sortant a changé) avant d'être envoyé à S . C'est-à-dire qu'il y aurait également une traduction des ports au lieu de la seule IP.

Deux choses à noter ici :

  1. En raison de cette traduction d'adresse, il est souvent impossible d'établir une connexion avec les appareils du réseau privé sans utiliser des techniques spéciales.
  2. La restriction sur le nombre total de connexions TCP d'un même dispositif vers un serveur (65536 = 2^16) s'applique maintenant collectivement à tous les dispositifs derrière le NAT, dans la forme de NAT utilisée ci-dessus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X