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.

688voto

Evan Anderson Points 140581

Les sous-réseaux IP existent pour permettre aux routeurs de choisir les destinations appropriées pour les paquets. Vous pouvez utiliser les sous-réseaux IP pour diviser des réseaux plus importants pour des raisons logiques (pare-feu, etc.) ou physiques (domaines de diffusion plus petits, etc.).

En clair, les routeurs IP utilisent vos sous-réseaux IP pour prendre des décisions de routage. Comprenez comment ces décisions fonctionnent, et vous pourrez comprendre comment planifier les sous-réseaux IP.

Compter jusqu'à 1

Si vous maîtrisez déjà la notation binaire (base 2), vous pouvez sauter cette section.

Pour ceux d'entre vous qui restent : Honte à vous de ne pas maîtriser la notation binaire !

Oui, c'est peut-être un peu dur. Il est vraiment, vraiment facile d'apprendre à compter en binaire, et d'apprendre des raccourcis pour convertir le binaire en décimal et inversement. Vous devriez vraiment savoir comment le faire.

Compter en binaire est très simple car il suffit de savoir compter jusqu'à 1 !

Pensez au "compteur kilométrique" d'une voiture, sauf que, contrairement à un compteur kilométrique traditionnel, chaque chiffre ne peut compter que de 0 à 1. Lorsque la voiture sort de l'usine, le compteur kilométrique indique "00000000".

Lorsque vous avez parcouru votre premier kilomètre, l'odomètre indique "00000001". Jusqu'ici, tout va bien.

Lorsque vous avez parcouru votre deuxième kilomètre, le premier chiffre de l'odomètre repasse à "0" (puisque sa valeur maximale est "1") et le deuxième chiffre de l'odomètre repasse à "1", ce qui donne "00000010". Cela ressemble au nombre 10 en notation décimale, mais c'est en fait 2 (le nombre de kilomètres parcourus par la voiture jusqu'à présent) en notation binaire.

Lorsque vous avez parcouru le troisième kilomètre, l'odomètre indique "00000011", puisque le premier chiffre de l'odomètre tourne à nouveau. Le nombre "11", en notation binaire, est identique au nombre décimal 3.

Enfin, après avoir parcouru le quatrième kilomètre, les deux chiffres (qui indiquaient "1" à la fin du troisième kilomètre) reviennent à la position zéro, et le troisième chiffre remonte à la position "1", ce qui donne "00000100". C'est la représentation binaire du nombre décimal 4.

Vous pouvez mémoriser tout ça si vous voulez, mais vous n'avez besoin que de comprendre comment le petit odomètre "roule" au fur et à mesure que le nombre qu'il compte augmente. C'est exactement le même fonctionnement que celui d'un odomètre décimal traditionnel, sauf que chaque chiffre ne peut être que "0" ou "1" sur notre "odomètre binaire" fictif.

Pour convertir un nombre décimal en binaire, vous pouvez faire avancer le compteur kilométrique, tic-tac par tic-tac, en comptant à haute voix jusqu'à ce que vous l'ayez fait tourner un nombre de fois égal au nombre décimal que vous voulez convertir en binaire. Ce qui est affiché sur l'odomètre après tout ce comptage et ce roulement serait la représentation binaire du nombre décimal auquel vous avez abouti.

Puisque vous comprenez comment le compteur kilométrique avance, vous comprendrez également comment il recule. Pour reconvertir en décimal un nombre binaire affiché sur le compteur kilométrique, vous pouvez faire reculer le compteur kilométrique d'un cran à la fois, en comptant à voix haute jusqu'à ce que le compteur affiche "00000000". Une fois le comptage et le recul terminés, le dernier chiffre que vous prononcerez à haute voix sera la représentation décimale du nombre binaire de départ du compteur.

La conversion de valeurs entre le binaire et le décimal de cette manière serait la suivante très fastidieux. Vous pourriez le faire, mais ce ne serait pas très efficace. Il est plus facile d'apprendre un petit algorithme pour le faire plus rapidement.

Une petite parenthèse : Chaque chiffre d'un nombre binaire est appelé un "bit". C'est le "b" de "binaire" et le "it" de "digit". Un bit est un b nary dig il .

La conversion d'un nombre binaire, comme par exemple "1101011", en décimal est un processus simple avec un petit algorithme très pratique.

Commencez par compter le nombre de bits dans le nombre binaire. Dans ce cas, il y en a 7. Faites 7 divisions sur une feuille de papier (dans votre esprit, dans un fichier texte, etc.) et commencez à les remplir de droite à gauche. Dans la case la plus à droite, entrez le chiffre "1", car nous commencerons toujours par "1". Dans l'emplacement suivant à gauche, entrez le double de la valeur de l'emplacement de droite (donc, "2" dans l'emplacement suivant, "4" dans l'emplacement suivant) et continuez jusqu'à ce que tous les emplacements soient remplis. (Vous finirez par mémoriser ces chiffres, qui sont des puissances de 2, à force de le faire. Je me débrouille bien jusqu'à 131 072 dans ma tête, mais j'ai généralement besoin d'une calculatrice ou de papier après cela).

Ainsi, vous devriez avoir les éléments suivants sur votre papier dans vos petites fentes.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

Transcrivez les bits du nombre binaire sous les fentes, comme ceci :

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

Maintenant, ajoutez quelques symboles et calculez la réponse au problème :

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

En faisant tous les calculs, vous devriez arriver à :

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

C'est ça. "1101011" en décimal est 107. C'est juste des étapes simples et des maths faciles.

La conversion du décimal en binaire est tout aussi facile et repose sur le même algorithme de base, exécuté en sens inverse.

Disons que nous voulons convertir le nombre 218 en binaire. En commençant à droite d'une feuille de papier, écrivez le nombre "1". Vers la gauche, doublez cette valeur (donc "2") et continuez à vous déplacer vers la gauche de la feuille en doublant la dernière valeur. Si le nombre que vous êtes sur le point d'écrire est supérieur au nombre converti, arrêtez d'écrire. Sinon, continuez à doubler le nombre précédent et à écrire. (Convertir un grand nombre, comme 34 157 216 092, en binaire en utilisant cet algorithme peut être un peu fastidieux mais c'est certainement possible).

Donc, vous devriez avoir sur votre papier :

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

Vous avez arrêté d'écrire les nombres à 128 parce que doubler 128, ce qui donnerait 256, serait plus grand que le nombre à convertir (218).

En commençant par le nombre le plus à gauche, écrivez "218" au-dessus du nombre (128) et demandez-vous : "218 est-il supérieur ou égal à 128 ?" Si la réponse est oui, rayez un "1" sous "128". Au-dessus de "64", écrivez le résultat de 218 moins 128 (90).

En regardant "64", demandez-vous : "Est-ce que 90 est plus grand ou égal à 64 ?" C'est le cas, donc vous écrivez un "1" sous "64", puis vous soustrayez 64 de 90 et vous écrivez le résultat au-dessus de "32" (26).

Mais lorsque vous arrivez à "32", vous constatez que 32 n'est pas supérieur ou égal à 26. Dans ce cas, écrivez un "0" sous "32", copiez le nombre (26) de au-dessus de "32" à au-dessus de "16", puis continuez à vous poser la même question avec le reste des nombres.

Quand vous aurez fini, vous devriez avoir :

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

Les chiffres en haut de la page ne sont que des notes utilisées dans les calculs et ne signifient pas grand-chose pour nous. En bas, cependant, vous voyez un nombre binaire "11011010". Bien sûr, 218, converti en binaire, est "11011010".

En suivant ces procédures très simples, vous pouvez convertir des données binaires en décimales et inversement, sans calculatrice. Les mathématiques sont très simples et les règles peuvent être mémorisées avec un peu de pratique.

Fractionnement des adresses

Pensez au routage IP comme à la livraison de pizzas.

Lorsqu'on vous demande de livrer une pizza au "123 Main Street", il est très clair pour vous, en tant qu'humain, que vous voulez vous rendre au bâtiment numéroté "123" dans la rue appelée "Main Street". Il est facile de savoir que vous devez vous rendre dans le bloc 100 de Main Street, car le numéro du bâtiment se situe entre 100 et 199 et la plupart des blocs urbains sont numérotés en centaines. Vous "savez" simplement comment diviser l'adresse.

Les routeurs livrent des paquets, pas des pizzas. Leur travail est le même que celui d'un conducteur de pizza : Amener la cargaison (les paquets) aussi près que possible de la destination. Un routeur est connecté à deux sous-réseaux IP ou plus (pour être utile). Un routeur doit examiner les adresses IP de destination des paquets et décomposer ces adresses de destination en leurs composants "nom de rue" et "numéro de bâtiment", tout comme le livreur de pizza, afin de prendre des décisions concernant la livraison.

Chaque ordinateur (ou "hôte") d'un réseau IP est configuré avec une adresse IP et un masque de sous-réseau uniques. Cette adresse IP peut être divisée en un composant "numéro de bâtiment" (comme "123" dans l'exemple ci-dessus) appelé "ID hôte" et un composant "nom de rue" (comme "Rue Principale" dans l'exemple ci-dessus) appelé "ID réseau". Pour nos yeux humains, il est facile de voir où se trouvent le numéro de bâtiment et le nom de la rue dans "123 Main Street", mais il est plus difficile de voir cette division dans "10.13.216.41 avec un masque de sous-réseau de 255.255.192.0".

Les routeurs IP "savent simplement" comment décomposer les adresses IP en ces éléments pour prendre des décisions de routage. Comme la compréhension de l'acheminement des paquets IP repose sur la compréhension de ce processus, nous devons également savoir comment décomposer les adresses IP. Heureusement, il est assez facile d'extraire l'identifiant de l'hôte et l'identifiant du réseau d'une adresse IP et d'un masque de sous-réseau.

Commencez par écrire l'adresse IP en binaire (utilisez une calculatrice si vous n'avez pas encore appris à le faire dans votre tête, mais notez comment le faire - c'est vraiment, vraiment facile et cela impressionne le sexe opposé lors des soirées) :

      10.      13.     216.      41
00001010.00001101.11011000.00101001

Écrivez également le masque de sous-réseau en binaire :

     255.     255.     192.       0
11111111.11111111.11000000.00000000

En écrivant côte à côte, vous pouvez voir que le point du masque de sous-réseau où les "1" s'arrêtent "s'aligne" sur un point de l'adresse IP. C'est le point où l'ID du réseau et l'ID de l'hôte se séparent. Donc, dans ce cas :

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1s in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0s in subnet mask, remaining bits set to 0

Les routeurs utilisent le masque de sous-réseau pour "masquer" les bits couverts par des 1 dans l'adresse IP (en remplaçant les bits qui ne sont pas "masqués" par des 0) afin d'extraire l'ID du réseau :

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

De même, en utilisant le masque de sous-réseau pour "masquer" les bits couverts par des 0 dans l'adresse IP (en remplaçant les bits qui ne sont pas "masqués" par des 0), un routeur peut extraire l'ID de l'hôte :

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0s in subnet mask, remaining bits set to 0

Il n'est pas aussi facile pour nos yeux humains de voir la "rupture" entre l'ID du réseau et l'ID de l'hôte qu'entre le "numéro de l'immeuble" et le "nom de la rue" dans les adresses physiques lors de la livraison d'une pizza, mais l'effet final est le même.

Maintenant que vous pouvez diviser les adresses IP et les masques de sous-réseau en ID d'hôte et ID de réseau, vous pouvez router les IP comme le fait un routeur.

Plus de terminologie

Vous verrez des masques de sous-réseau écrits partout sur Internet et dans le reste de cette réponse sous la forme (IP/numéro). Cette notation est connue sous le nom de notation "Classless Inter-Domain Routing" (CIDR). "255.255.255.0" est composé de 24 bits avec des 1 au début, et il est plus rapide d'écrire cela sous la forme "/24" que sous la forme "255.255.255.0". Pour convertir un numéro CIDR (comme "/16") en un masque de sous-réseau décimal en points, il suffit d'écrire ce nombre de 1, de le diviser en groupes de 8 bits et de le convertir en décimal. (Un "/16" correspond à "255.255.0.0", par exemple).

À l'époque, les masques de sous-réseau n'étaient pas spécifiés, mais plutôt dérivés en examinant certains bits de l'adresse IP. Une adresse IP commençant par 0 - 127, par exemple, avait un masque de sous-réseau implicite de 255.0.0.0 (appelée adresse IP de "classe A").

Ces masques de sous-réseau implicites ne sont plus utilisés aujourd'hui et je ne recommande pas d'apprendre à les connaître, sauf si vous avez la malchance d'avoir affaire à un très vieil équipement ou à de vieux protocoles (comme RIPv1) qui ne supportent pas l'adressage IP sans classe. Je ne vais pas mentionner davantage ces "classes" d'adresses car elles sont inapplicables aujourd'hui et peuvent prêter à confusion.

Certains périphériques utilisent une notation appelée "masques de remplacement". Un "wildcard mask" n'est rien d'autre qu'un masque de sous-réseau avec tous les 0 là où il y aurait des 1, et les 1 là où il y aurait des 0. Le "wildcard mask" d'un /26 est :

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

Les "masques de remplacement" sont généralement utilisés pour faire correspondre les identifiants d'hôtes dans les listes de contrôle d'accès ou les règles de pare-feu. Nous n'en parlerons pas davantage ici.

Comment fonctionne un routeur

Comme je l'ai déjà dit, les routeurs IP ont un travail similaire à celui d'un livreur de pizza, en ce sens qu'ils doivent amener leur cargaison (paquets) à destination. Lorsqu'on lui présente un paquet destiné à l'adresse 192.168.10.2, un routeur IP doit déterminer laquelle de ses interfaces réseau est la plus à même de rapprocher ce paquet de sa destination.

Disons que vous êtes un routeur IP, et que vous avez des interfaces connectées à votre numéro :

  • Ethernet0 - 192.168.20.1, masque de sous-réseau /24
  • Ethernet1 - 192.168.10.1, masque de sous-réseau /24

Si vous recevez un paquet à livrer avec une adresse de destination de "192.168.10.2", il est assez facile de dire (avec vos yeux humains) que le paquet doit être envoyé par l'interface Ethernet1, car l'adresse de l'interface Ethernet1 correspond à l'adresse de destination du paquet. Tous les ordinateurs connectés à l'interface Ethernet1 auront des adresses IP commençant par "192.168.10.", car l'ID réseau de l'adresse IP attribuée à votre interface Ethernet1 est "192.168.10.0".

Pour un routeur, ce processus de sélection de route se fait en construisant une table de routage et en consultant cette table chaque fois qu'un paquet doit être livré. Une table de routage contient l'ID du réseau et les noms des interfaces de destination. Vous savez déjà comment obtenir un ID de réseau à partir d'une adresse IP et d'un masque de sous-réseau, vous êtes donc sur la bonne voie pour construire une table de routage. Voici notre table de routage pour ce routeur :

  • ID du réseau : 192.168.20.0 (11000000.10101000.00010100.00000000) - Masque de sous-réseau 24 bits - Interface Ethernet0
  • ID du réseau : 192.168.10.0 (11000000.10101000.00001010.00000000) - Masque de sous-réseau 24 bits - Interface Ethernet1

Pour notre paquet entrant destiné à "192.168.10.2", il nous suffit de convertir l'adresse de ce paquet en binaire (comme les humains -- le routeur l'obtient en binaire sur le fil pour commencer) et de tenter de la faire correspondre à chaque adresse de notre table de routage (jusqu'au nombre de bits du masque de sous-réseau) jusqu'à ce que nous trouvions une entrée.

  • Destination du paquet entrant : 11000000.10101000.00001010.00000010

En comparant ça aux entrées de notre table de routage :

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

L'entrée pour Ethernet0 correspond bien aux 19 premiers bits, mais ensuite elle ne correspond plus. Cela signifie qu'il ne s'agit pas de la bonne interface de destination. Vous pouvez voir que l'interface Ethernet1 correspond à 24 bits de l'adresse de destination. Ah, ha ! Le paquet est destiné à l'interface Ethernet1.

Dans un routeur réel, la table de routage est triée de telle sorte que les masques de sous-réseau les plus longs sont vérifiés en premier (c'est-à-dire les routes les plus spécifiques), et numériquement de telle sorte que dès qu'une correspondance est trouvée, le paquet peut être acheminé et aucune autre tentative de correspondance n'est nécessaire (ce qui signifie que 192.168.10.0 serait listé en premier et que 192.168.20.0 n'aurait jamais été vérifié). Ici, nous simplifions un peu les choses. Les structures de données et les algorithmes sophistiqués rendent les routeurs IP plus rapides, mais les algorithmes simples produisent les mêmes résultats.

Routes statiques

Jusqu'à présent, nous avons parlé de notre routeur hypothétique comme ayant des réseaux directement connectés à lui. Ce n'est évidemment pas ainsi que le monde fonctionne réellement. Dans l'analogie du chauffeur de pizza, il arrive que le chauffeur ne soit pas autorisé à entrer plus loin dans le bâtiment que la réception, et qu'il doive remettre la pizza à quelqu'un d'autre pour qu'elle soit livrée au destinataire final (suspendez votre incrédulité et soyez indulgent avec moi pendant que je développe mon analogie, s'il vous plaît).

Commençons par appeler notre routeur des exemples précédents "Routeur A". Vous connaissez déjà la table de routage de RouterA comme :

  • ID du réseau : 192.168.20.0 (11000000.10101000.00010100.00000000) - masque de sous-réseau /24 - Interface RouterA-Ethernet0
  • ID du réseau : 192.168.10.0 (11000000.10101000.00001010.00000000) - masque de sous-réseau /24 - Interface RouterA-Ethernet1

Supposons qu'il y ait un autre routeur, "Routeur B", avec les adresses IP 192.168.10.254/24 et 192.168.30.1/24 assignées à ses interfaces Ethernet0 et Ethernet1. Il possède la table de routage suivante :

  • ID du réseau : 192.168.10.0 (11000000.10101000.00001010.00000000) - masque de sous-réseau /24 - Interface RouterB-Ethernet0
  • ID du réseau : 192.168.30.0 (11000000.10101000.00011110.00000000) - masque de sous-réseau /24 - Interface RouterB-Ethernet1

Dans un joli dessin ASCII, le réseau ressemble à ça :

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

Vous pouvez voir que le routeur B sait comment "accéder" à un réseau, 192.168.30.0/24, que le routeur A ne connaît pas.

Supposons qu'un PC avec l'adresse IP 192.168.20.13 attaché au réseau connecté à l'interface Ethernet0 du routeur A envoie un paquet au routeur A pour livraison. Notre paquet hypothétique est destiné à l'adresse IP 192.168.30.46, qui est un périphérique attaché au réseau connecté à l'interface Ethernet1 du routeur B.

Avec la table de routage présentée ci-dessus, aucune des entrées de la table de routage du routeur A ne correspond à la destination 192.168.30.46, le routeur A renverra donc le paquet au PC émetteur avec le message "Destination network unreachable".

Pour que le routeur A soit "conscient" de l'existence du réseau 192.168.30.0/24, nous ajoutons l'entrée suivante à la table de routage du routeur A :

  • ID du réseau : 192.168.30.0 (11000000.10101000.00011110.00000000) - masque de sous-réseau /24 - Accessible via 192.168.10.254

De cette façon, le routeur A a une entrée dans la table de routage qui correspond à la destination 192.168.30.46 de notre paquet d'exemple. Cette entrée de table de routage dit effectivement "Si vous recevez un paquet destiné à 192.168.30.0/24, envoyez-le à 192.168.10.254 car il sait comment le traiter". Il s'agit de l'action analogue à celle de "remettre la pizza à la réception" que j'ai mentionnée plus tôt - transmettre le paquet à quelqu'un d'autre qui sait comment le rapprocher de sa destination.

L'ajout d'une entrée dans une table de routage "à la main" est appelé "route statique".

Si le routeur B veut livrer des paquets au réseau 192.168.20.0 avec le masque de sous-réseau 255.255.255.0, il aura également besoin d'une entrée dans sa table de routage :

  • ID du réseau : 192.168.20.0 (11000000.10101000.00010100.00000000) - masque de sous-réseau /24 - Accessible via : 192.168.10.1 (adresse IP du routeur A dans le réseau 192.168.10.0)

Cela créerait un chemin de livraison entre le réseau 192.168.30.0/24 et le réseau 192.168.20.0/24 à travers le réseau 192.168.10.0/24 entre ces routeurs.

Vous devez toujours vous assurer que les routeurs situés de part et d'autre d'un tel "réseau interstitiel" possèdent une entrée de table de routage pour le réseau "distant". Si le routeur B de notre exemple n'avait pas d'entrée dans la table de routage pour le réseau "distant" 192.168.20.0/24 attaché au routeur A, notre paquet hypothétique provenant du PC à 192.168.20.13 serait arrivera au périphérique de destination 192.168.30.46, mais toute réponse que 192.168.30.46 essaiera de renvoyer sera renvoyée par le routeur B comme "Réseau de destination inaccessible". Une communication unidirectionnelle n'est généralement pas souhaitable. Veillez toujours à penser au trafic circulant dans les deux des directions quand on pense à la communication dans les réseaux informatiques.

Vous pouvez tirer un grand profit des routes statiques. Les protocoles de routage dynamique tels que EIGRP, RIP, etc., ne sont rien de plus qu'un moyen pour les routeurs d'échanger des informations de routage entre eux qui pourraient, en fait, être configurées avec des routes statiques. Cependant, l'un des grands avantages de l'utilisation des protocoles de routage dynamique par rapport aux routes statiques est que les protocoles de routage dynamique peuvent dynamiquement ) et, en tant que tel, l'utilisation d'un protocole de routage dynamique peut aboutir à une configuration qui "contourne" les défaillances ou les goulets d'étranglement dans l'infrastructure du réseau. (Les protocoles de routage dynamique sont WAY en dehors de la portée de cette réponse, cependant).

Vous ne pouvez pas y arriver d'ici

Dans le cas de notre exemple de Routeur A, que se passe-t-il lorsqu'un paquet destiné à "172.16.31.92" arrive ?

En regardant la table de routage du routeur A, aucune interface de destination ou route statique ne correspond aux 24 premiers bits de 172.18.31.92 (qui est 10101100.00010010.00011111.01011100, soit dit en passant).

Comme nous le savons déjà, le routeur A renverrait le paquet à l'expéditeur via un message "Destination network unreachable".

Disons qu'il y a un autre routeur (Routeur C) situé à l'adresse "192.168.20.254". Le routeur C a une connexion à l'Internet !

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

Ce serait bien si le routeur A pouvait acheminer les paquets qui ne correspondent à aucune interface locale jusqu'au routeur C afin que ce dernier puisse les envoyer sur Internet. Entrez la route "passerelle par défaut".

Ajoutez une entrée à la fin de notre table de routage comme ceci :

  • ID du réseau : 0.0.0.0 (00000000.00000000.00000000.00000000) - masque de sous-réseau /0 - Routeur de destination : 192.168.20.254

Lorsque nous essayons de faire correspondre "172.16.31.92" à chaque entrée de la table de routage, nous tombons sur cette nouvelle entrée. C'est un peu déroutant, au début. Nous cherchons à faire correspondre les bits zéro de l'adresse de destination avec... attendez... quoi ? Faire correspondre les bits zéro ? Donc, nous ne cherchons pas de correspondance du tout. Cette entrée de la table de routage dit, en gros, "Si vous arrivez ici, plutôt que d'abandonner la livraison, envoyez le paquet au routeur à 192.168.20.254 et laissez-le s'en occuper".

192.168.20.254 est une destination nous DO savoir comment livrer un paquet à. Lorsque nous sommes confrontés à un paquet destiné à une destination pour laquelle nous n'avons pas d'entrée spécifique dans la table de routage, cette entrée "passerelle par défaut" correspondra toujours (puisqu'elle correspond aux bits zéro de l'adresse de destination) et nous donne un endroit "de dernier recours" où nous pouvons envoyer les paquets pour qu'ils soient livrés. Vous entendrez parfois la passerelle par défaut appelée "passerelle de dernier recours".

Pour qu'une route de passerelle par défaut soit efficace, elle doit faire référence à un routeur qui est joignable à l'aide des autres entrées de la table de routage. Si vous essayez de spécifier une passerelle par défaut de 192.168.50.254 dans le routeur A, par exemple, la livraison à une telle passerelle par défaut échouera. En effet, 192.168.50.254 n'est pas une adresse vers laquelle le routeur A sait livrer des paquets en utilisant l'une des autres routes de sa table de routage, et une telle adresse serait donc inefficace comme passerelle par défaut. Ceci peut être énoncé de manière concise : La passerelle par défaut doit être définie sur une adresse déjà atteignable en utilisant une autre route dans la table de routage.

Les routeurs réels stockent généralement la passerelle par défaut en tant que dernière route dans leur table de routage, de sorte qu'elle correspond aux paquets après qu'ils n'ont pas réussi à correspondre à toutes les autres entrées de la table.

Urbanisme et routage IP

Le découpage d'un sous-réseau IP en sous-réseaux IP plus petits s'apparente à la planification urbaine. Dans l'urbanisme, le zonage est utilisé pour s'adapter aux caractéristiques naturelles du paysage (rivières, lacs, etc.), pour influencer les flux de circulation entre les différentes parties de la ville et pour séparer les différents types d'utilisation des sols (industriels, résidentiels, etc.). Le sous-réseau IP est à peu près le même.

Il y a trois raisons principales pour lesquelles on peut sous-réserver un réseau :

  • Il se peut que vous souhaitiez communiquer sur différents supports de communication différents. Si vous avez une connexion WAN T1 entre deux bâtiments, des routeurs IP peuvent être placés aux extrémités de ces connexions pour faciliter la communication sur le T1. Les réseaux à chaque extrémité (et éventuellement le réseau "interstitiel" sur le T1 lui-même) seraient affectés à des sous-réseaux IP uniques afin que les routeurs puissent décider quel trafic doit être envoyé sur la ligne T1.

  • Dans un réseau Ethernet, vous pouvez utiliser le sous-réseau pour limiter la quantité de trafic de diffusion dans une partie donnée du réseau. Les protocoles de la couche application utilisent la capacité de diffusion d'Ethernet à des fins très utiles. Cependant, à mesure que le nombre d'hôtes sur le même réseau Ethernet augmente, le pourcentage de trafic de diffusion sur le fil (ou dans l'air, dans le cas d'un réseau Ethernet sans fil) peut augmenter au point de créer des problèmes pour la distribution du trafic non diffusé. (Autrefois, le trafic de diffusion pouvait submerger l'unité centrale des hôtes en les obligeant à examiner chaque paquet de diffusion. C'est moins probable aujourd'hui). Le trafic excessif sur Ethernet commuté peut également prendre la forme d'une "inondation de trames vers des destinations inconnues". Cette situation est causée par l'incapacité d'un commutateur Ethernet à garder la trace de chaque destination sur le réseau et c'est la raison pour laquelle les réseaux Ethernet commutés ne peuvent pas s'étendre à un nombre infini d'hôtes. L'effet de l'inondation de trames vers des destinations inconnues est similaire à l'effet d'un excès de trafic de diffusion, pour les besoins du sous-réseau.

  • Vous pouvez vouloir "contrôler" les types de trafic circulant entre différents groupes d'hôtes. Vous avez peut-être des périphériques de serveur d'impression et vous souhaitez que seuls les ordinateurs de serveur de mise en file d'attente d'impression autorisés puissent leur envoyer des travaux. En limitant le trafic autorisé à circuler vers le sous-réseau des périphériques de serveur d'impression, les utilisateurs ne peuvent pas configurer leurs PC pour parler directement aux périphériques de serveur d'impression afin de contourner la comptabilité d'impression. Vous pouvez placer les périphériques de serveur d'impression dans un sous-réseau qui leur est propre et créer une règle dans le routeur ou le pare-feu attaché à ce sous-réseau pour contrôler la liste des hôtes autorisés à envoyer du trafic aux périphériques de serveur d'impression. (Les routeurs et les pare-feu peuvent généralement prendre des décisions sur la façon de livrer ou non un paquet en se basant sur les adresses de source et de destination du paquet. Les pare-feu sont généralement une sous-espèce de routeur avec une personnalité obsessionnelle. Ils peuvent être très, très préoccupés par la charge utile des paquets, alors que les routeurs ne tiennent généralement pas compte des charges utiles et se contentent de livrer les paquets).

Lors de l'aménagement d'une ville, vous pouvez planifier l'intersection des rues et utiliser des rues à sens unique ou sans issue pour influencer les flux de circulation. Vous pouvez souhaiter que la rue principale soit longue de 30 pâtés de maisons et que chaque pâté de maisons comporte jusqu'à 99 bâtiments. Il est assez facile de planifier la numérotation des rues de façon à ce que chaque pâté de maisons de la rue principale ait une série de numéros de rue augmentant de 100 pour chaque pâté de maisons. Il est très facile de savoir quel doit être le "numéro de départ" de chaque bloc suivant.

Lors de la planification de sous-réseaux IP, il s'agit de construire le bon nombre de sous-réseaux (rues) avec le bon nombre d'identifiants d'hôtes disponibles (numéros de bâtiments) et d'utiliser des routeurs pour connecter les sous-réseaux les uns aux autres (intersections). Les règles relatives aux adresses de source et de destination autorisées spécifiées dans les routeurs permettent de contrôler davantage le flux de trafic. Les pare-feu peuvent agir comme des flics obsessionnels du trafic.

Dans le cadre de cette réponse, la construction de nos sous-réseaux est notre seule préoccupation majeure. Au lieu de travailler en décimal, comme pour l'urbanisme, on travaille en binaire pour décrire les limites de chaque sous-réseau.

Suite de l'article : Comment fonctionne le sous-réseau IPv4 ?

(Oui ... nous avons atteint la taille maximale d'une réponse (30000 caractères)).

0 votes

Je suis un peu plus binaire dans mon post. Peut-être combiner les deux ? +1 pour avoir fait le tien si vite.

17 votes

@Joseph : C'est un cours que j'ai donné trop souvent pour mon propre bien. >smile< Je regarderai votre section binaire. J'ai horreur d'enseigner les mathématiques (ce qui est vraiment ce qu'est la compréhension du binaire - compter en base 2) parce que je ne suis pas très doué pour cela.

1 votes

Je suis d'accord avec aharden en ce qui concerne la longueur - peut-être devrions-nous réfléchir à la façon dont cette question peut être divisée en sous-sujets plus faciles à gérer ?

150voto

Joseph Kern Points 9759

Suite de : Comment fonctionne le sous-réseau IPv4 ?

Votre FAI vous donne la gamme l'ID de réseau 192.168.40.0/24 (11000000.10101000.00101000.00000000). Vous savez que vous souhaitez utiliser un pare-feu / routeur pour limiter la communication entre les différentes parties de votre réseau (serveurs, ordinateurs clients, équipements réseau) et, à ce titre, vous souhaitez diviser ces différentes parties de votre réseau en sous-réseaux IP (entre lesquels le pare-feu / routeur peut ensuite router).

Vous avez :

  • 12 ordinateurs serveurs, mais vous pourriez obtenir jusqu'à 50% de plus
  • 9 interrupteurs
  • 97 ordinateurs clients, mais vous pourriez obtenir plus

Quelle est la meilleure façon de diviser 192.168.40.0/24 en ces morceaux ?

En raisonnant en puissances paires de deux, et en travaillant avec le plus grand nombre de dispositifs possibles, on peut arriver à une solution :

  • 18 ordinateurs serveurs - La prochaine puissance de deux la plus grande est 32
  • 9 interrupteurs - La prochaine plus grande puissance de deux est 16
  • 97 ordinateurs clients - La prochaine puissance de deux la plus grande est 128

Dans un sous-réseau IP donné, il y a deux adresses réservées qui ne peuvent pas être utilisées comme adresses IP de périphérique valides : l'adresse avec tous les zéros dans la partie ID de l'hôte et l'adresse avec tous les uns dans la partie ID de l'hôte. Ainsi, pour tout sous-réseau IP donné, le nombre d'adresses d'hôtes disponibles est égal à deux fois la puissance de la quantité de 32 moins le nombre de bits du masque de sous-réseau, moins 2. Ainsi, dans le cas de 192.168.40.0/24, nous pouvons voir que le masque de sous-réseau comporte 24 bits. Cela laisse 8 bits disponibles pour les ID d'hôtes. Nous savons que 2 à la 8e puissance est égal à 256 - ce qui signifie que 256 combinaisons possibles de bits tiennent dans un emplacement de 8 bits de large. Comme les combinaisons "11111111" et "00000000" de ces 8 bits ne sont pas autorisées pour les ID d'hôtes, il reste 254 hôtes possibles qui peuvent être assignés au réseau 192.168.40.0/24.

Sur ces 254 hôtes, il semble que nous puissions faire tenir les ordinateurs clients, les commutateurs et les ordinateurs serveurs dans cet espace, non ? Essayons.

Vous disposez de 8 bits de masque de sous-réseau pour "jouer avec" (les 8 bits restants de l'adresse IP 192.168.40.0/24 qui ne sont pas couverts par le masque de sous-réseau fourni par votre FAI). Nous devons trouver un moyen d'utiliser ces 8 bits pour créer un certain nombre d'identifiants réseau uniques pouvant accueillir les périphériques ci-dessus.

Commencez par le plus grand réseau - les ordinateurs clients. Vous savez que la puissance de deux supérieure suivante du nombre de périphériques possibles est 128. Le nombre 128, en binaire, est "10000000". Heureusement pour nous, il entre dans l'emplacement de 8 bits dont nous disposons (si ce n'était pas le cas, cela indiquerait que notre sous-réseau de départ est trop petit pour accueillir tous nos périphériques).

Prenons l'identifiant de notre réseau, tel qu'il est fourni par notre fournisseur d'accès, et ajoutons-y un seul bit de masque de sous-réseau, le divisant ainsi en deux réseaux :

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

Regardez ça jusqu'à ce que ça ait un sens. Nous avons augmenté le masque de sous-réseau d'un bit, ce qui fait que l'ID du réseau couvre un bit qui aurait été utilisé pour l'ID de l'hôte. Comme ce bit peut être soit zéro soit un, nous avons effectivement divisé notre réseau 192.168.40.0 en deux réseaux. La première adresse IP valide dans le réseau 192.168.40.0/25 sera la première ID d'hôte avec un "1" dans le bit le plus à droite :

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

Le premier hôte valide du réseau 192.168.40.128 sera, de même, le premier ID d'hôte avec un '1' dans le bit le plus à droite :

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

Le dernier hôte valide dans chaque réseau sera l'hôte ID avec chaque bit sauf le bit le plus à droite est à "1" :

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

Ainsi, nous avons créé un réseau suffisamment grand pour contenir nos ordinateurs clients, et un deuxième réseau que nous pouvons ensuite appliquer le même principe pour le diviser en réseaux encore plus petits. Prenons note :

  • Ordinateurs clients - 192.168.40.0/25 - IPs valides : 192.168.40.1 - 192.168.40.126

Maintenant, pour décomposer le second réseau pour nos serveurs et commutateurs, nous faisons la même chose.

Nous avons 12 ordinateurs serveurs, mais nous pourrions en acheter jusqu'à 6 de plus. Planifions sur 18, ce qui nous laisse la puissance de 2 la plus élevée suivante, soit 32. En binaire, 32 correspond à "100000", soit 6 bits. Il nous reste 7 bits de masque de sous-réseau dans 192.168.40.128/25, nous avons donc assez de bits pour continuer à "jouer". En ajoutant un bit supplémentaire de masque de sous-réseau, nous obtenons deux réseaux supplémentaires :

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

Nous avons donc divisé 192.168.40.128/25 en deux réseaux supplémentaires, chacun ayant 26 bits de masque de sous-réseau, soit un total de 62 ID d'hôtes possibles - 2 ^ (32 - 26) - 2.

Cela signifie que ces deux réseaux ont suffisamment d'adresses pour nos serveurs et nos commutateurs ! Prenons des notes :

  • Serveurs - 192.168.40.128/26 - IPs valides : 192.168.40.129 - 192.168.40.190
  • Commutateurs - 192.168.40.192/26 - IPs valides : 192.168.40.193 - 192.168.40.254

Cette technique s'appelle le masquage de sous-réseau à longueur variable (VLSM) et, si elle est correctement appliquée, elle permet aux "routeurs principaux" d'avoir des tables de routage plus petites (grâce à un processus appelé "résumé de route"). Dans le cas de notre FAI dans cet exemple, il peut être totalement inconscient de la façon dont nous avons sous-réservé 192.168.40.0/24. Si leur routeur reçoit un paquet destiné à 192.168.40.206 (l'un de nos commutateurs), il leur suffit de le transmettre à notre routeur (puisque 192.168.40.206 correspond à l'identifiant réseau et au masque de sous-réseau 192.168.40.0/24 dans la table de routage de leur routeur) et notre routeur l'acheminera vers sa destination. Cela permet de garder nos routes de sous-réseau en dehors de leurs tables de routage. (Je simplifie ici, mais vous comprenez l'idée).

Vous pouvez planifier des réseaux très étendus géographiquement de la même manière. Tant que vous faites une bonne "planification urbaine" en amont (en anticipant le nombre d'hôtes dans chaque sous-réseau avec une certaine précision et un regard vers l'avenir), vous pouvez créer une grande hiérarchie de routage qui, au niveau des routeurs principaux, se "résume" à un très petit nombre de routes. Comme nous l'avons vu plus haut, plus la table de routage d'un routeur contient de routes, plus son travail est lent. Concevoir un réseau IP avec VLSM et garder des tables de routage petites est une bonne chose.

L'irréalisme des exemples

Le monde fictif dans cette réponse est, évidemment, fictif. En général, il est possible de créer des sous-réseaux sur les réseaux Ethernet commutés modernes avec plus de 254 hôtes (en fonction du profil de trafic). Comme cela a été souligné dans les commentaires, l'utilisation de réseaux /24 entre les routeurs n'est pas compatible avec la vraie vie(tm). Cela donne de jolis exemples, mais c'est un gaspillage d'espace d'adressage. Typiquement, un /30 ou un /31 (cf. http://www.faqs.org/rfcs/rfc3021.html pour les détails sur le fonctionnement des /31 - ils dépassent certainement le cadre de cette réponse) le réseau est utilisé sur des liens qui sont strictement point à point entre deux routeurs.

0 votes

Petite erreur : Le code juste après "Le dernier hôte valide..." revient à l'appeler "le premier hôte valide". Je suppose que cela devrait toujours dire "dernier".

0 votes

@JoeCool1986 - Bien vu.

2 votes

Je vais upvoter cette réponse pour m'assurer que les deux réponses restent dans l'ordre.

79voto

Joseph Kern Points 9759

Sous-réseau

Le sous-réseau n'est pas difficile, mais il peut être intimidant. Commençons donc par l'étape la plus simple possible. Apprendre à compter en binaire.

Binaire

Le système binaire est un système de comptage en base 2. Il ne comprend que deux chiffres (1 et 0). Le comptage se déroule de cette manière.

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

Donc, si vous imaginez que chaque 1 est un support pour une valeur (toutes les valeurs binaires sont des puissances de deux).

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

Donc... 100000 = 32. Et 10000000 = 128. ET 1111111111 = 255.

Quand je dis "J'ai un masque de sous-réseau de 255.255.255.0", je veux vraiment dire "J'ai un masque de sous-réseau de 11111111.11111111.11111111.00000000". Nous utilisons les sous-réseaux comme raccourci.

Les points dans l'adresse, séparent tous les 8 chiffres binaires (un octet). C'est pourquoi l'IPv4 est connu comme un espace d'adressage de 32 bits (8*4).

Pourquoi un sous-réseau ?

Les adresses IPv4 (192.168.1.1) sont rares. Le sous-réseau nous donne un moyen d'augmenter le nombre de réseaux (ou d'hôtes) disponibles. Ceci pour des raisons administratives et des raisons techniques.

Chaque adresse IP est divisée en deux parties distinctes, le réseau et l'hôte. Par défaut, une adresse de classe C (192.168.1.1) utilise les trois premiers octets (192.168.1) pour la partie réseau de l'adresse et le quatrième octet (.1) pour la partie hôte.

Par défaut, une adresse IP et un masque de sous-réseau pour une adresse de classe C ressemblent à ceci

IP     192.168.1.1 
Subnet 255.255.255.0

En binaire, comme ceci

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Regardez à nouveau l'exemple binaire. Vous avez remarqué que j'ai dit que les trois premiers octets sont utilisés pour le réseau ? Vous avez remarqué que la partie réseau est composée de uns ? C'est ça, le sous-réseau. Développons.

Étant donné que j'ai un seul octet pour ma partie hôte (dans l'exemple ci-dessus). Je ne peux avoir QUE 256 hôtes (256 est la valeur maximale d'un octet, en comptant à partir de 0). Mais il y a une autre petite astuce : vous devez soustraire 2 adresses d'hôtes des adresses disponibles (actuellement 256). La première adresse de la plage sera pour le réseau (192.168.1.0) et la dernière adresse de la plage sera pour le broadcast (192.168.1.255). Vous disposez donc réellement de 254 adresses disponibles pour les hôtes d'un réseau.

Une étude de cas

Disons que je vous donne le papier suivant.

Create 4 networks with 192.168.1.0/24.

Jetons un coup d'oeil à ceci. Le /24 est appelé notation CIDR. Plutôt que de faire référence au 255.255.255.0, nous référençons simplement les bits dont nous avons besoin pour le réseau. Dans ce cas, nous avons besoin de 24 bits (3*8) pour une adresse de 32 bits. En écrivant cela en binaire

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

Ensuite, nous devons déterminer le nombre de sous-réseaux dont nous avons besoin. On dirait que c'est 4. Puisque nous devons créer plus de réseaux (actuellement, nous n'en avons qu'un seul), inversons quelques bits.

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

Maintenant que nous avons décidé d'un /26, commençons à allouer des hôtes. Un petit calcul simple :

32(bits) - 26(bits) = 6(bits) for host addresses.

Nous avons 6bits à allouer dans chaque réseau pour les hôtes. En se rappelant que nous devons soustraire 2 pour chaque réseau.

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

Maintenant, nous devons déterminer où vont les hôtes. Retour au binaire !

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

De cette façon, vous pouvez calculer l'ensemble du sous-réseau.

Cartes sauvages Un masque de type "wild card" est un masque de sous-réseau inversé.

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

Plus d'informations sur

Recherchez sur Google les termes "super-netting" et "VLSM (variable length subnet mask)", pour des sujets plus avancés.

Je vois maintenant que j'ai mis trop de temps à répondre ... soupir

1 votes

"Étant donné que j'ai un seul octet pour ma partie hôte (dans l'exemple ci-dessus). Je ne peux avoir QUE 255 hôtes (255 est la valeur maximale d'un octet). Mais il y a une autre petite astuce : vous devez soustraire 2 adresses d'hôtes de celles qui sont disponibles (actuellement 255). La première adresse de la plage sera pour le réseau (192.168.1.0) et la dernière adresse de la plage sera pour le broadcast (192.168.1.255). Vous disposez donc réellement de 253 adresses disponibles pour les hôtes d'un réseau"... Ceci est incorrect.

1 votes

Il existe 256 valeurs possibles pour l'octet : de 0 à 255, soit un total de 256. 256 -2 (adresses de réseau et de diffusion) = 254 adresses d'hôtes possibles.

0 votes

Oups. Merci ! :-) Je n'ai aucune idée de la façon dont j'ai réussi cet exploit.

35voto

Davide Gualano Points 804

Une brève leçon d'histoire : à l'origine, les adresses IPv4 unicast étaient divisées en 3 classes, chacune avec une longueur de masque "par défaut" associée (appelée masque de sous-réseau de classe).

  • Classe A : Tout ce qui se trouve dans la plage 1.0.0.0 -> 127.255.255.255. Masque de sous-réseau de classe 255.0.0.0 (/8 en notation CIDR)
  • Classe B : Tout ce qui se trouve dans la plage 128.0.0.0 -> 191.255.255.255. Masque de sous-réseau de la classe 255.255.0.0 (/16 en notation CIDR).
  • Classe C : Tout ce qui se trouve dans la plage 192.0.0.0 -> 223.255.255.255. Masque de sous-réseau de la classe 255.255.255.0 (/24 en notation CIDR).

L'idée était que des organisations de taille différente puissent se voir attribuer une classe d'adresse IP différente, afin d'utiliser efficacement l'espace des adresses IP.

Cependant, au fur et à mesure que les réseaux IP se développaient, il est devenu évident que cette approche avait ses problèmes. Pour n'en citer que trois :

Dans un monde de classes, tous les sous-réseaux avait pour avoir un masque de /8, /16, ou /24. Cela signifie que le plus petit sous-réseau pouvant être configuré était un /24, qui permettait 254 adresses d'hôtes (.0 et .255 étant respectivement réservés aux adresses de réseau et de diffusion). Cela représentait un énorme gaspillage, en particulier sur les liaisons point à point auxquelles seuls deux routeurs étaient attachés.

Même après l'assouplissement de cette restriction, les protocoles de routage antérieurs (par ex. RIPv1 ) n'a pas annoncé la longueur du masque associé à un préfixe IP. En l'absence d'un masque spécifique, il utilisait soit le masque d'une interface directement connectée dans le même réseau de classe, soit le masque de classe. Par exemple, si vous souhaitez utiliser le réseau 172.16.0.0 pour les liaisons inter-routeurs avec des masques /30, tous Les sous-réseaux de 172.16.0.0 à 172.16.255.255 devraient avoir un masque /30 (16384 sous-réseaux, chacun avec 2 IP utilisables).

Les tables de routage des routeurs Internet ont commencé à occuper de plus en plus de mémoire ; c'est ce qu'on appelle l'"explosion des tables de routage". Si un fournisseur disposait de 16 réseaux /24 contigus, par exemple, il devait annoncer les 16 préfixes, plutôt qu'un seul résumé couvrant toute la gamme.

Deux raffinements connexes nous a permis de dépasser les limites susmentionnées.

  1. Masques de sous-réseau de longueur variable (VLSM)
  2. CIDR (Classless inter domain routing)

VLSM désigne la capacité d'un protocole de routage à prendre en charge différents masques de sous-réseau au sein d'un même réseau de classe. Par exemple :

192.168.1.0/24

Pourrait être divisé en :

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

Ce qui permettait une utilisation beaucoup plus efficace de l'espace d'adressage ; les sous-réseaux pouvaient être dimensionnés correctement en fonction du nombre d'hôtes/routeurs qui y seraient rattachés.

CIDR reprend le VLSM et l'étend dans l'autre sens ; en plus de diviser un réseau de classe unique en sous-réseaux plus petits, CIDR permet l'agrégation de plusieurs réseaux de classe en un seul résumé. Par exemple, les réseaux de classe B (/16) suivants :

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

Peut être agrégée/résumée avec un seul préfixe :

172.16.0.0/14

En termes de sous-réseau : un masque de sous-réseau est long de 32 bits. La longueur du masque indique combien de bits identifient la partie réseau de l'adresse. Par exemple :

10.1.1.0/24
  • Le masque de sous-réseau de la classe est /8
  • Le masque de sous-réseau réel est /24
  • 16 bits (24-8) ont été "empruntés" pour l'utilisation du sous-réseau.

Cela signifie que, en supposant que l'ensemble du réseau 10.0.0.0/8 est divisé en sous-réseaux /24, il y aura 65536 (2 ^ 16) sous-réseaux dans cette plage. (En supposant que la plate-forme que vous utilisez supporte les numéros de sous-réseau de 0 et 255. Voir ip subnet-zero de Cisco).

Il reste 8 bits dans la "partie hôte" de l'adresse. Cela signifie qu'il y a 256 adresses IP disponibles (2 ^ 8), dont 2 sont réservées (10.1.1.0 est l'adresse réseau, 10.1.1.255 est l'adresse de diffusion dirigée du sous-réseau). Il reste donc 254 adresses IP utilisables sur ce sous-réseau. ((2^8) - 2)

5 votes

Il y avait en fait 5 classes.

6 votes

C'est vrai, mais avons-nous vraiment besoin d'entrer dans le multicast et l'adressage réservé de classe E pour une question d'introduction au sous-réseau ?)

3 votes

Tu as amené l'histoire dans une question d'introduction... Et tu l'as laissée incomplète. Je ne sais pas ce qui est le pire.

10voto

isomorphismes Points 139

Je poserai et répondrai à quelques questions connexes en cours de route :

  • Pourquoi voyez-vous 255.255.255.0 si souvent ?
  • Pourquoi 192.168.0.1 ?
  • Pourquoi 127.0.0.1 ?

Pourquoi des nombres aussi bizarres - 255, 192, 168, 127 ?


Décimal pointé 8+8+8+8 bits

Les adresses internet comme 194.60.38.10 utiliser notation décimale en points pour diviser 32 bits en 8+8+8+8 bits. Le décimal pointé signifie convertir † Chaque nombre est converti en binaire, puis est complété à gauche par 0 's.

Par exemple .60. → 60=32+16+8+4 → 111100.00111100. .

Donc 194.60.38.10 est décimal pointé pour l'adresse 4×8=32-bit 11000010.00111100.00100110.00001010 puisque 38 → 100110 , 10 → 1010 et ainsi de suite. Le chiffre 194 requiert les 8 bits ; les autres sont complétés.

padded

Si vous pensez à 255, 192 et 127 en binaire 8 bits, vous comprendrez plus facilement pourquoi certains nombres décimaux sont si courants :

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

Ces nombres décimaux représentent des blocs de 8 bits visuellement pratiques comme , , et . Ainsi, vous n'avez jamais vu 256=2 à cause de la limite de 8 bits, et 127=128-1=2-1 est le retournement de bit d'une puissance de deux - et les puissances de deux sont 10………00000 en binaire.

  • 168 = 10101000

Masques de sous-réseau : Ce qui est à moi est à moi + Ce qui est à toi est à toi.

Masques de sous-réseau puis décomposer chaque adresse internet 32 bits en un identifiant réseau et un identifiant hôte. Alors que les adresses Internet peuvent comporter n'importe quel mélange de 1 et de 0, les masques de sous-réseau ne commencent que par des 1 et ne se terminent que par des 0.

||| IP
||| subnet

Le fait de noircir les 8+8+8=24 bits et de blanchir les 8 derniers bits est une façon de diviser l'IP ||| en deux morceaux :

||          network
                              host

Si le propriétaire du sous-réseau (disons OmniCorp ) voulait plus d'IP internes, il pouvait acheter plus (disons 8+8=16 bits) du côté droit du réseau, comme ceci :

||| IP
||| subnet
                     network
                     host

Il est clair qu'il existe un compromis dans l'espace d'adressage de 32 bits = 2³² = 4 294 967 296 options : si vous achetez plus d'identifiants de réseau (côté gauche), votre réseau interne a plus d'identifiants d'hôte (côté droit) à attribuer.

Les personnes bon marché ont donc un masque de sous-réseau de

255.255.255.0 = |||.

Même les personnes les moins chères ont

255.255.255.128 = |||

ou 255.255.255.192 = |||.

Selon le folklore, ce n'est pas vraiment Roger Miller, mais un administrateur système de bas étage avec un masque 255.255.255.254 qui a initialement écrit Le roi de la route en remplaçant "Je n'ai pas de grand sous-réseau" par "Je n'ai pas de cigarettes".

I smoke my cigarettes down to the butt

(Pourquoi les masques des humbles sont-ils remplis de tant de chiffres ? Parce que, comme le narrateur de Miller, les masques de sous-réseau comptent toutes les choses que vous Ne le fais pas. ont.)


Que signifie la barre oblique après une adresse IP ? (par exemple, 194.60.38.10/24)

Puisque les masques de sous-réseau (qui séparent les "leurs" des "nôtres") commencent toujours par 1 Et comme nous détestons encore plus faire la somme des puissances de deux que de calculer les puissances de deux, quelqu'un a inventé le CIDR (la barre oblique après une adresse IP).

194.60.38.10/24 signifie "le sous-masque a 24 uns, puis le reste sont des zéros", donc

||| avec 8+8+8 bits appartenant à "eux" et 8 bits appartenant à "nous".

Inverser l'hymne du clochard ci-dessus,

  • /31 est l'auteur-compositeur
  • /24 est de classe moyenne ( 255.255.255.0 = |||
  • /16 est riche.
  • /8 est super riche.
  • /1 o /0 serait l'IANA ou quelque chose comme ça.

† Utilisation bc -l; obase=10; 60 par exemple.

1 votes

Quel rapport avec la réponse ont les images qui s'y trouvent ? Est-ce que c'est juste pour se concentrer sur la réponse :)

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