Comment fonctionne le sous-réseau IPv4?


439

Ceci est une question canonique sur les sous-réseaux IPv4.

Apparenté, relié, connexe:

Comment fonctionne le sous-réseau et comment le faites-vous à la main ou dans votre tête? Quelqu'un peut-il expliquer à la fois conceptuellement et avec plusieurs exemples? Défaut de serveur génère de nombreuses questions de devoirs de sous-réseau. Nous pourrions donc utiliser une réponse pour les diriger sur le défaut de serveur lui-même.

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

Cette réponse en deux parties explique tout ce que vous vouliez savoir sur le calcul d'adresse IPv4, et plus encore.
Ron Maupin

Réponses:


648

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

En termes simples, toutefois, les routeurs IP utilisent vos sous-réseaux IP pour prendre des décisions de routage. Comprenez comment fonctionnent ces décisions et comprenez comment planifier des sous-réseaux IP.

Compter jusqu'à 1

Si vous parlez couramment la notation binaire (base 2), vous pouvez ignorer cette section.

Pour ceux qui restent: honte de ne pas parler couramment la notation binaire!

Ouais, c'est peut-être un peu dur. Il est vraiment très facile d'apprendre à compter en binaire et d'apprendre des raccourcis pour convertir des fichiers binaires en nombres décimaux et inverses. Vous devriez vraiment savoir comment le faire.

Compter en binaire est si simple parce qu'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 1 à 0. Lorsque la voiture est sortie d'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 du compteur kilométrique revient à "0" (car sa valeur maximale est "1") et le deuxième chiffre du compteur kilométrique passe à "1", ce qui permet de lire le compteur kilométrique " 00000010 ". Cela ressemble au numéro 10 en notation décimale, mais en fait à 2 (le nombre de miles parcourus jusqu'à présent) en notation binaire.

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

Enfin, lorsque vous avez parcouru votre 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 à la position "1", ce qui nous donne " 00000100 ". C'est la représentation binaire du nombre décimal 4.

Vous pouvez mémoriser tout cela si vous voulez, mais vous devez vraiment comprendre comment le petit compteur kilométrique "bascule" à mesure que le nombre qu'il compte augmente. Cela correspond exactement au fonctionnement d'un compteur kilométrique décimal traditionnel, sauf que chaque chiffre ne peut être que "0" ou "1" sur notre "compteur kilométrique binaire" fictif.

Pour convertir un nombre décimal en binaire, vous pouvez avancer le compteur kilométrique, cochez, cochez-la en comptant à voix haute jusqu'à ce que vous l'ayez converti un nombre de fois égal au nombre décimal que vous souhaitez convertir en binaire. Tout ce qui est affiché sur le compteur kilométrique après tout ce que la comptabilisation et le roulement serait la représentation binaire du nombre décimal que vous avez compté jusqu'à.

Puisque vous comprenez comment le compteur kilométrique avance, vous comprenez également comment il revient en arrière. Pour convertir en décimale un nombre binaire affiché sur l'odomètre, vous pouvez le reculer d'une case à la fois, en comptant à voix haute jusqu'à ce que l'odomètre indique "00000000". Lorsque tout ce calcul et cette opération sont terminés, le dernier chiffre que vous dites à voix haute serait la représentation décimale du nombre binaire avec lequel le compteur kilométrique a commencé.

Convertir les valeurs entre les nombres binaires et décimaux de cette façon serait très fastidieux. Vous pouvez le faire, mais ce ne serait pas très efficace. Il est plus facile d'apprendre un petit algorithme pour le faire plus rapidement.

Un petit aparté: chaque chiffre d'un nombre binaire est appelé "bit". C'est "b" de "binaire" et "it" de "digit". Un bit est un chiffre binaire.

Convertir un nombre binaire comme, par exemple, "1101011" en décimal est un processus simple avec un petit algorithme 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 l'emplacement le plus à droite, entrez le nombre "1", car nous commencerons toujours par "1". Dans l'emplacement suivant à gauche, entrez le double de la valeur dans l'emplacement situé à droite ("2" dans le prochain, "4" dans le prochain) et continuez jusqu'à ce que tous les emplacements soient pleins. (Vous finirez par mémoriser ces nombres, qui sont les puissances de 2, car vous le faites de plus en plus. Je vais bien jusqu'à 131 072 dans ma tête mais j'ai généralement besoin d'une calculatrice ou d'un papier après cela).

Donc, vous devriez avoir ce qui suit sur votre papier dans vos petites fentes.

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

Transcrivez les bits du nombre binaire sous les slots, comme suit:

 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 trouver:

 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

Ça y est. "1101011" en décimal est 107. Il ne s'agit que d'étapes simples et de calculs simples.

La conversion de nombres décimaux en fichiers binaires est tout aussi simple. Il s'agit du même algorithme de base, exécuté à l'envers.

Disons que nous voulons convertir le nombre 218 en binaire. En commençant à droite d'une feuille de papier, écrivez le nombre "1". À gauche, doublez cette valeur (donc "2") et continuez de vous déplacer vers la gauche du papier en doublant la dernière valeur. Si le nombre que vous êtes sur le point d'écrire est supérieur au nombre en cours de conversion, 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 des nombres à 128 car doubler 128, ce qui vous donnerait 256, serait plus grand que le nombre en cours de conversion (218).

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

En regardant "64", demandez-vous: "90 est-il supérieur ou égal à 64?" Donc, vous écrivez un "1" en dessous de "64", puis soustrayez 64 à 90 et écrivez ce qui précède "32" (26).

Lorsque vous arrivez à "32", cependant, vous trouvez que 32 n'est pas supérieur ou égal à 26. Dans ce cas, écrivez un "0" sous "32", copiez le nombre (26) de ci-dessus 32 "vers le haut" 16 "et continuez ensuite à vous poser la même question avec le reste des chiffres.

Lorsque vous avez terminé, 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 nombres en haut ne sont que des notes utilisées dans le calcul et ne signifient pas grand chose pour nous. En bas, cependant, vous voyez un nombre binaire "11011010". Effectivement, 218, converti en binaire, est "11011010".

En suivant ces procédures très simples, vous pouvez convertir des fichiers binaires en nombres décimaux et inversement sans calculatrice. Le calcul est très simple et les règles peuvent être mémorisées avec un peu de pratique.

Fractionner des adresses

Pensez au routage IP comme à la livraison de pizzas.

Lorsque vous êtes invité à livrer une pizza à "123 Main Street", il est très clair pour vous, en tant qu'être humain, que vous souhaitez vous rendre au bâtiment numéroté "123" dans la rue nommée "Main Street". Il est facile de savoir que vous devez vous rendre aux 100 pâtés de maisons de la rue principale car le numéro de bâtiment est compris entre 100 et 199 et la plupart des pâtés de maisons sont numérotés par centaines. Vous "savez juste" comment diviser l'adresse.

Les routeurs livrent des paquets, pas des pizzas. Leur travail est le même que celui d’un chauffeur de pizza: obtenir le chargement (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 répartir ces adresses en composants "Nom de rue" et "Numéro de bâtiment", comme le pilote de pizza, pour prendre des décisions en matière de 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 d'immeuble" (comme "123" dans l'exemple ci-dessus) appelé "ID hôte" et un composant "nom de rue" (comme "Main Street" dans l'exemple ci-dessus) appelé "identifiant réseau". Pour nos yeux humains, il est facile de voir où se trouvent le numéro du 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 juste" comment diviser les adresses IP en ces composants pour prendre des décisions de routage. Étant donné que la compréhension du processus de routage des paquets IP dépend de la compréhension de ce processus, nous devons également savoir comment décomposer les adresses IP. Heureusement, il est assez facile d'extraire l'ID hôte et l'ID 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 bien comment le faire - c’est vraiment très facile et impressionne le sexe opposé à des soirées):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

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

     255.     255.     192.       0
11111111.11111111.11000000.00000000

Écrit côte à côte, vous pouvez voir que le point dans le masque de sous-réseau où le "" arrêt "du" 1 "s'aligne" sur un point de l'adresse IP. C'est le point que l'ID de réseau et l'ID d'hôte se sont séparés. 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 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's 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) pour extraire l'ID de 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 d'hôte:

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

Il n’est pas aussi facile pour nos yeux humains de voir la "coupure" entre l’ID réseau et l’ID hôte, mais entre le "numéro de bâtiment" et le "nom de rue" dans les adresses physiques lors de la livraison de pizzas, mais l’effet ultime 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 acheminer l'IP exactement comme le fait un routeur.

Plus de terminologie

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

À l'époque, les masques de sous-réseau n'étaient pas spécifiés, mais étaient dérivés de l'examen de 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é adresse IP "de classe A").

Ces masques de sous-réseau implicites ne sont pas utilisés aujourd'hui et je ne recommande plus de les apprendre à moins que vous n'ayez le malheur de vous servir d'anciens équipements ou d'anciens protocoles (comme RIPv1) qui ne prennent pas en charge l'adressage IP sans classe. Je ne vais pas mentionner davantage ces "classes" d'adresses, car elles sont aujourd'hui inapplicables et peuvent prêter à confusion.

Certains appareils utilisent une notation appelée "masques génériques". Un "masque générique" n'est rien d'autre qu'un masque de sous-réseau avec tous les 0 où il y aurait des 1 et les 1 où il y aurait des 0. Le "masque générique" de a / 26 est:

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

En général, les "masques génériques" utilisés pour faire correspondre les ID d'hôte dans les listes de contrôle d'accès ou les règles de pare-feu. Nous n'en discuterons plus ici.

Comment fonctionne un routeur

Comme je l'ai déjà dit, les routeurs IP ont un travail similaire à celui d'un livreur de pizzas en ce sens qu'ils doivent acheminer leur cargaison (paquets) à sa destination. Lorsqu'il se voit présenter un paquet destiné à l'adresse 192.168.10.2, un routeur IP doit déterminer laquelle de ses interfaces réseau sera celle qui rapprochera le plus ce paquet de sa destination.

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

  • 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 "192.168.10.2", il est assez facile de dire (avec vos yeux humains) que le paquet doit être envoyé via l'interface Ethernet1, car l'adresse d'interface Ethernet1 correspond à la destination du paquet. adresse. 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 d'itinéraire est effectué en construisant une table de routage et en consultant la table chaque fois qu'un paquet doit être livré. Une table de routage contient l'ID réseau et les noms d'interface de destination. Vous savez déjà comment obtenir un identifiant réseau à partir d'une adresse IP et d'un masque de sous-réseau, vous êtes donc sur le point de créer une table de routage. Voici notre table de routage pour ce routeur:

  • ID réseau: 192.168.20.0 (11000000.10101000.00010100.00000000) - Masque de sous-réseau 24 bits - Interface Ethernet0
  • ID 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 suffit de convertir l'adresse de ce paquet en binaire (en tant qu'êtres humains - le routeur l'obtient en tant que fichier binaire pour commencer) et d'essayer de le faire correspondre à chaque adresse de notre routage. table (jusqu’au nombre de bits dans le masque de sous-réseau) jusqu’à ce que nous correspondions à une entrée.

  • Destination de paquet entrante: 11000000.10101000.00001010.00000010

En comparant cela 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 cesse ensuite de correspondre. Cela signifie que ce n'est pas la bonne interface de destination. Vous pouvez voir que l'interface Ethernet1 correspond à 24 bits de l'adresse de destination. Ah ah! Le paquet est lié à l'interface Ethernet1.

Dans un routeur réel, la table de routage est triée de sorte que les correspondances les plus longues sont masquées (c’est-à-dire les itinéraires les plus spécifiques), et numériquement, de sorte que le paquet puisse être acheminé dès qu’une correspondance est trouvée. et aucune autre tentative d'appariement n'est nécessaire (ce qui signifie que 192.168.10.0 serait répertorié en premier et que 192.168.20.0 n'aurait jamais été vérifié). Ici, nous simplifions un peu cela. Les structures de données et les algorithmes sophistiqués rendent les routeurs IP plus rapides, mais des algorithmes simples produiront 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. Ce n'est pas, évidemment, comment le monde fonctionne vraiment. Dans l’analogie de la conduite de pizza, le chauffeur n’est parfois pas autorisé à pénétrer plus avant dans l’immeuble que la réception et doit donner la pizza à quelqu'un d’autre pour le livrer au destinataire final (suspendez votre incrédulité J'étire mon analogie, s'il vous plaît).

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

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

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

  • ID réseau: 192.168.10.0 (11000000.10101000.00001010.00000000) - masque de sous-réseau / 24 - Interface RouterB-Ethernet0
  • Identifiant réseau: 192.168.30.0 (11000000.10101000. 00011110.00000000) - masque de sous-réseau / 24 - Interface RouteurB-Ethernet1

Dans le joli art ASCII, le réseau ressemble à ceci:

               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, dont le routeur A ne sait rien.

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

Avec la table de routage illustrée ci-dessus, aucune entrée de la table de routage du routeur A ne correspond à la destination 192.168.30.46. Par conséquent, le routeur A renverra le paquet au PC émetteur avec le message "Réseau inaccessible".

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

  • Identifiant réseau: 192.168.30.0 (11000000.10101000.00011110.00000000) - masque de sous-réseau / 24 - accessible via 192.168.10.254

De cette manière, le routeur A a une entrée de table de routage qui correspond à la destination 192.168.30.46 de notre exemple de paquet. Cette entrée de la table de routage indique effectivement "Si vous obtenez un paquet destiné à 192.168.30.0/24, envoyez-le à 192.168.10.254 car il sait comment le gérer." Il s’agit de l’action analogue «remettre la pizza à la réception» dont j’ai parlé plus tôt: transmettre le paquet à quelqu'un d’autre qui sait comment le rapprocher de sa destination.

Ajouter une entrée à une table de routage "à la main" est appelé ajouter une "route statique".

Si le routeur B souhaite remettre des paquets au réseau de masque de sous-réseau 192.168.20.0 255.255.255.0, il doit également avoir une entrée dans sa table de routage:

  • ID 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 sur le réseau 192.168.10.0)

Cela créerait un chemin pour la livraison entre le réseau 192.168.30.0/24 et le réseau 192.168.20.0/24 sur le réseau 192.168.10.0/24 entre ces routeurs.

Vous voulez toujours vous assurer que les routeurs des deux côtés d'un tel "réseau interstitiel" ont une entrée de table de routage pour le réseau "distant". Si le routeur B, dans notre exemple, ne possédait pas d'entrée de table de routage pour le réseau "distant" 192.168.20.0/24 connecté au routeur A, notre paquet hypothétique provenant du PC au 192.168.20.13 arriverait au périphérique de destination au 192.168.30.46, mais toute réponse que 192.168.30.46 tenterait de renvoyer serait renvoyée par le routeur B en tant que "Réseau de destination inaccessible". La communication à sens unique n'est généralement pas souhaitable. Veillez toujours à ce que le trafic circule dans les deux sens lorsque vous songez à la communication sur les réseaux informatiques.

Vous pouvez faire beaucoup de kilométrage sur des routes statiques. Les protocoles de routage dynamique tels que EIGRP, RIP, etc., ne sont en réalité qu'un moyen pour les routeurs d'échanger des informations de routage qui pourraient en fait être configurées avec des routes statiques. L’utilisation de protocoles de routage dynamiques sur des routes statiques présente toutefois un grand avantage: les protocoles de routage dynamiques peuvent modifier dynamiquement la table de routage en fonction des conditions du réseau (utilisation de la bande passante, interface "en panne", etc.) et, de ce fait, en utilisant une interface dynamique. Le protocole de routage peut aboutir à une configuration qui "achemine" des pannes ou des goulots d'étranglement dans l'infrastructure réseau. (Cependant, les protocoles de routage dynamiques sortent largement du cadre de cette réponse.)

Vous ne pouvez pas vous y rendre d'ici

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

En regardant la table de routage du routeur A, aucune interface de destination ni route statique ne correspond aux 24 premiers bits de 172.18.31.92 (qui est 10101100.000100001001111.01011100, BTW).

Comme nous le savons déjà, le routeur A renverrait le paquet à l'expéditeur via un message "Inaccessible au réseau de destination".

Supposons qu'un autre routeur (routeur C) se trouve à l'adresse "192.168.20.254". Le routeur C est connecté à 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

Il serait intéressant que le routeur A puisse router des paquets ne correspondant à aucune interface locale jusqu'au routeur C, de telle sorte que le routeur C 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 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 finissons par frapper cette nouvelle entrée. C'est un peu déroutant, au début. Nous cherchons à faire correspondre zéro bit de l'adresse de destination avec ... attendez ... quoi? Correspondant à zéro bits? Donc, nous ne cherchons pas du tout une correspondance. Cette entrée de la table de routage dit, en gros, "Si vous arrivez ici plutôt que de renoncer à la livraison, envoyez le paquet au routeur à l'adresse 192.168.20.254 et laissez-le le gérer".

192.168.20.254 est une destination que nous FAISONS savons comment livrer un paquet à. Lorsqu'il est confronté à un paquet destiné à une destination pour laquelle nous n'avons pas d'entrée de table de routage spécifique, cette entrée "passerelle par défaut" correspondra toujours (puisqu'elle correspond à zéro bit de l'adresse de destination) et nous donne un emplacement "de dernier recours" que nous pouvons envoyer des paquets pour la livraison. Vous entendrez parfois la passerelle par défaut appelée "passerelle de dernier recours".

Pour qu'un itinéraire de passerelle par défaut soit efficace, il doit faire référence à un routeur accessible via les autres entrées de la table de routage. Si vous tentez par exemple de spécifier une passerelle par défaut 192.168.50.254 dans le routeur A, la remise à une telle passerelle par défaut échoue. 192.168.50.254 n'est pas une adresse que le routeur A sait comment transmettre des paquets à l'aide de l'une des autres routes de sa table de routage. Une telle adresse serait donc inefficace en tant que passerelle par défaut. Cela peut être précisé de manière concise: la passerelle par défaut doit être définie sur une adresse déjà accessible en utilisant une autre route dans la table de routage.

Les vrais routeurs stockent généralement la passerelle par défaut en tant que dernier itinéraire de leur table de routage, de sorte qu'elle corresponde aux paquets une fois qu'ils n'ont pas réussi à faire correspondre toutes les autres entrées du tableau.

Urbanisme et routage IP

Diviser un sous-réseau IP en sous-réseaux IP plus petits relève de la planification urbaine. En urbanisme, le zonage est utilisé pour s'adapter aux caractéristiques naturelles du paysage (rivières, lacs, etc.), pour influer sur les flux de trafic entre les différentes parties de la ville et pour séparer les différents types d'utilisation des sols (industrielle, résidentielle, etc.). . Les sous-réseaux IP sont vraiment les mêmes.

Il y a trois raisons principales pour lesquelles vous souhaitez sous-réseau d'un réseau:

  • Vous souhaiterez peut-être 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 du trafic à envoyer sur la ligne T1.

  • Dans un réseau Ethernet, vous pouvez utiliser des sous-réseaux pour limiter la quantité de trafic de diffusion dans une partie donnée du réseau. Les protocoles de couche application utilisent la capacité de diffusion d’Ethernet à des fins très utiles. Toutefois, à mesure que de plus en plus d’hôtes sont regroupés sur le même réseau Ethernet, le pourcentage de trafic de diffusion sur le fil (ou sans fil, en Ethernet sans fil) peut augmenter au point de créer des problèmes pour la livraison de trafic autre que de diffusion. (Auparavant, le trafic de diffusion pouvait surcharger le processeur des hôtes en les obligeant à examiner chaque paquet de diffusion. C'est moins probable aujourd'hui.) Un trafic excessif sur Ethernet commuté peut également prendre la forme d'une "inondation de trames vers des destinations inconnues". Cette situation est imputable à un commutateur Ethernet incapable de suivre toutes les destinations du réseau. C'est pourquoi les réseaux Ethernet commutés ne peuvent pas évoluer vers un nombre infini d'hôtes. L’effet de l’inondation de trames vers des destinations inconnues est similaire à celui de l’excès de trafic de radiodiffusion, aux fins de la création de sous-réseaux.

  • Vous voudrez peut-être "contrôler" les types de trafic circulant entre différents groupes d'hôtes. Peut-être avez-vous des périphériques de serveur d'impression et souhaitez-vous uniquement que les ordinateurs serveur en attente d'impression autorisés leur envoient des travaux. En limitant le trafic autorisé à circuler sur le sous-réseau du serveur d'impression, les utilisateurs ne peuvent pas configurer leur ordinateur pour communiquer directement avec les périphériques du serveur d'impression afin de contourner la comptabilité d'impression. Vous pouvez placer les périphériques du serveur d'impression dans un sous-réseau et créer une règle dans le routeur ou le pare-feu attaché à ce sous-réseau afin de contrôler la liste des hôtes autorisés à envoyer du trafic aux périphériques du serveur d'impression. Les routeurs et les pare-feu peuvent généralement décider de la manière dont un paquet doit être livré ou non, en fonction des adresses 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 ignorent généralement les charges utiles et ne livrent que les paquets.)

Lors de la planification d'une ville, vous pouvez planifier la façon dont les rues se croisent et utiliser des rues tournantes, à sens unique ou sans issue pour influencer le flux de circulation. Vous voudrez peut-être que la rue principale soit longue de 30 blocs, chaque bloc pouvant contenir jusqu'à 99 bâtiments. Il est assez facile de planifier votre numérotation de rue de telle sorte que chaque bloc de Main Street ait une plage de numéros de rue augmentant de 100 pour chaque bloc. Il est très facile de savoir quel devrait être le "numéro de départ" dans chaque bloc suivant.

Lors de la planification de sous-réseaux IP, vous devez créer le bon nombre de sous-réseaux (rues) avec le bon nombre d'identifiants d'hôte disponibles (numéros d'immeuble) et 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 peuvent contrôler davantage le flux de trafic. Les pare-feu peuvent agir comme des policiers de la circulation obsessionnels.

Pour les besoins 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 vous le feriez avec la planification urbaine, vous travaillez en binaire pour décrire les limites de chaque sous-réseau.

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

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


13
@ Joseph: C'est une conférence que j'ai trop de fois donnée pour mon bien. > sourire <Je vais regarder votre section binaire. Je n'aime pas 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 bon dans ce domaine.
Evan Anderson

2
Mon seul problème avec la division de la réponse est qu'il faut comprendre pourquoi le sous-réseau existe (routage IP) avant de comprendre comment diviser efficacement un réseau IP en sous-réseaux. Je n'ai jamais trouvé un bon moyen de discuter d'un sujet indépendamment de l'autre. (En réalité, la conception d'un réseau IP avec VLSM est naturelle et "logique" une fois que vous avez compris le routage IP ...)
Evan Anderson

28
Ne le casse pas.
Joseph Kern

3
+1 pour le message le plus complet jamais vu sur serverfault
Scott Lundberg le

3
Upvote si seulement pour la métaphore Odometer. Maintenant, je sais comment expliquer comment le binaire fonctionne pour les gens.
phuzion

142

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

Votre fournisseur de services Internet vous indique dans la plage l’ID réseau 192.168.40.0/24 (11000000.10101000.00101000.00000000). Vous savez que vous souhaitez utiliser un périphérique pare-feu / routeur pour limiter la communication entre différentes parties de votre réseau (serveurs, ordinateurs clients, équipements réseau) et, en tant que tel, vous souhaitez décomposer ces différentes parties de votre réseau. dans des sous-réseaux IP (que le pare-feu / routeur peut ensuite router).

Tu as:

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

Quel est le bon moyen de décomposer le 192.168.40.0/24 en ces morceaux?

En pensant même à des puissances de deux et en travaillant avec le plus grand nombre de périphériques possibles, vous pouvez créer:

  • 18 ordinateurs serveurs - La plus grande puissance disponible sur deux est 32
  • 9 commutateurs - La plus grande puissance de deux suivante est de 16
  • 97 ordinateurs clients - La plus grande puissance disponible sur deux est de 128

Dans un sous-réseau IP donné, deux adresses réservées 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 hôte et l'adresse avec toutes les adresses dans la partie ID hôte. Ainsi, pour tout sous-réseau IP donné, le nombre d'adresses d'hôte disponibles est égal à deux fois la puissance de la quantité de 32 moins le nombre de bits dans le masque de sous-réseau, moins de 2. Par conséquent, dans le cas de 192.168.40.0/24 peut voir que le masque de sous-réseau a 24 bits. Cela laisse 8 bits disponibles pour les identifiants d'hôte. Nous savons que la puissance 2 sur 8 correspond à 256--, ce qui signifie que 256 combinaisons possibles de bits correspondent à un intervalle de 8 bits. Étant donné que les combinaisons "11111111" et "00000000" de ces 8 bits ne sont pas autorisées pour les ID hôte, nous disposons de 254 hôtes possibles pouvant être attribués dans le réseau 192.168.40.0/24.

Sur ces 254 hôtes, il semble que nous puissions installer les ordinateurs clients, les commutateurs et les ordinateurs serveurs dans cet espace, n'est-ce pas? 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 non couverts par le masque de sous-réseau fourni par votre fournisseur de services Internet). Nous devons trouver un moyen d’utiliser ces 8 bits pour créer un certain nombre d’ID de réseau uniques pouvant accueillir les périphériques ci-dessus.

Commencez avec le plus grand réseau - les ordinateurs clients. Vous savez que la puissance immédiatement supérieure de deux parmi le nombre de périphériques possibles est 128. Le nombre 128, en binaire, est "10000000". Heureusement pour nous, cela correspond au slot 8 bits que nous avons libre (s'il ne le faisait pas, cela indiquerait que notre sous-réseau de départ est trop petit pour accueillir tous nos périphériques).

Prenons notre ID de réseau, fourni par notre fournisseur de services Internet, et ajoutons-y un seul bit de masque de sous-réseau, en le séparant 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 cela jusqu'à ce que cela ait du sens. Nous avons augmenté le masque de sous-réseau d'un bit, ce qui a permis à l'ID de réseau de couvrir un bit qui aurait été utilisé pour l'ID d'hôte. Comme ce bit peut être nul ou un, nous avons effectivement divisé notre réseau 192.168.40.0 en deux réseaux. La première adresse IP valide sur le réseau 192.168.40.0/25 sera le premier 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

De même, le premier hôte valide du réseau 192.168.40.128 sera 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'ID d'hôte avec chaque bit, à l' exception du bit le plus à droite, défini sur "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, de cette manière, nous avons créé un réseau assez grand pour contenir nos ordinateurs clients, et un deuxième réseau auquel nous pouvons ensuite appliquer le même principe pour se décomposer en réseaux encore plus petits. Prenons une note:

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

Maintenant, pour décomposer le deuxième réseau de 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 suivante la plus élevée, à savoir 2. En binaire, 32 est "100000", ce qui correspond à une longueur de 6 bits. Il nous reste 7 bits de masque de sous-réseau dans 192.168.40.128/25, nous avons donc suffisamment de bits pour continuer à "jouer". Ajouter un peu plus de masque de sous-réseau nous donne deux autres réseaux:

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 comportant 26 bits de masque de sous-réseau, ou un total de 62 ID d’hôte 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 - Adresses IP valides: 192.168.40.129 - 192.168.40.190
  • Commutateurs - 192.168.40.192/26 - IP valides: 192.168.40.193 - 192.168.40.254

Cette technique est appelée masquage de sous-réseau de longueur variable (VLSM) et, si elle est correctement appliquée, donne aux "routeurs principaux" des tables de routage plus petites (via un processus appelé "récapitulatif de route"). Dans le cas de notre fournisseur de services Internet, dans cet exemple, ils peuvent ignorer totalement la manière dont nous avons sous-réseau 192.168.40.0/24. Si leur routeur a un paquet destiné à 192.168.40.206 (un de nos commutateurs), il suffit de le savoir pour 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’aura à la destination. Ceci garde nos routes de sous-réseau en dehors de leurs tables de routage. (Je simplifie ici, mais vous avez l'idée.)

Vous pouvez planifier de la sorte de très grands réseaux. Tant que vous faites la bonne "planification urbaine" dès le départ (en prévoyant le nombre d'hôtes dans chaque sous-réseau avec une certaine précision et un regard tourné vers l'avenir), vous pouvez créer une grande hiérarchie de routage qui, au niveau des routeurs principaux, "résume "à un très petit nombre de routes. Comme nous l'avons vu ci-dessus, plus le nombre de routes dans la table de routage d'un routeur est important, plus son travail est lent. Concevoir un réseau IP avec VLSM et garder les tables de routage réduites est une bonne chose (Good Thing, tm).

L'irréalisme des exemples

Le monde fictif dans cette réponse est évidemment fictif. En règle générale, vous pouvez créer des sous-réseaux sur un réseau Ethernet commuté moderne avec plus de 254 hôtes (dépendant du profil de trafic). Comme indiqué dans les commentaires, l'utilisation de / 24 réseaux entre routeurs n'est pas compatible avec Real Life (tm). Cela en fait d’excellents exemples, mais c’est un gaspillage d’espace d’adresse. En général, un réseau / / 30 ou un / 31 (voir http://www.faqs.org/rfcs/rfc3021.html pour plus de détails sur la façon dont le travail de / 31 - ils dépassent certainement le cadre de cette réponse) le réseau est utilisé sur liens qui sont strictement point à point entre deux routeurs.


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

@ JoeCool1986 - Bonne prise.
Evan Anderson

2
Je vais faire passer cette réponse à plus tard afin que deux réponses soient conservées.
L46kok

Sur la partie où vous créez deux sous-réseaux à partir de 192.168.40.128 et créez un ID de réseau de 192.168.40.192, d'où vient le 192?
user6607

@ user6607 Les sous-réseaux sont comptés à l'envers (sans espaces). Par exemple, le premier sous 0- réseau est représenté par 00000000. Le deuxième sous-réseau est 128ainsi 10000000et le troisième sous 192- réseau est représenté par 11000000, etc. Continuez à compter à rebours pour trouver de nouveaux sous-réseaux.
Joseph Kern

76

Sous-filet

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

Binaire

Binary est un système de comptage de base 2. Composé de seulement 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 espace réservé 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 11111111 = 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.1111111.00000000." Nous utilisons les sous-réseaux comme une main courte.

Les points de l'adresse sont séparés tous les 8 chiffres binaires (un octet). C'est pourquoi IPv4 est appelé espace d'adressage 32 bits (8 * 4).

Pourquoi sous-réseau?

Les adresses IPv4 (192.168.1.1) sont rares. Le sous-réseau nous donne le moyen d’augmenter le nombre de réseaux (ou d’hôtes) disponibles. Ceci pour des raisons administratives et 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 3 premiers octets (192.168.1) pour la partie réseau de l'adresse. et le 4ème octet (.1) en tant que 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 ça

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Regardez à nouveau l'exemple binaire. Remarquez comment j'ai dit que les trois premiers octets sont utilisés pour le réseau? Remarquez comment la partie réseau est tout? C'est tout ce que sont les sous-réseaux. Développons.

Étant donné que j'ai un seul octet pour ma partie hôte (dans l'exemple ci-dessus). Je peux UNIQUEMENT avoir 256 hôtes (256 est la valeur maximale d'un octet, en partant de 0). Mais il y a un autre petit truc: vous devez soustraire 2 adresses hôtes des adresses disponibles (actuellement 256). La première adresse de la plage sera celle du réseau (192.168.1.0) et la dernière adresse de la plage sera la diffusion (192.168.1.255). Donc, vous avez vraiment 254 adresses disponibles pour les hôtes dans un réseau.

Une étude de cas

Disons que je vous ai donné le morceau de papier suivant.

Create 4 networks with 192.168.1.0/24.

Jetons un coup d'oeil à ceci. Le / 24 s'appelle la notation CIDR. Plutôt que de référencer le 255.255.255.0, nous référons simplement les bits dont nous avons besoin pour le réseau. Dans ce cas, nous avons besoin de 24 bits (3 * 8) à partir d’une adresse 32 bits. Ecrire ceci en binaire

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

Nous savons ensuite que nous devons déterminer le nombre de sous-réseaux dont nous avons besoin. On dirait 4. Comme nous avons besoin de créer plus de réseaux (nous n'en avons actuellement qu'un), retournons 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 choisi un / 26, commençons à allouer des hôtes. Un petit calcul simple:

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

Nous avons 6 bits à allouer dans chaque réseau pour les hôtes. Rappelez-vous qu'il faut 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

Nous devons maintenant savoir 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 le sous-réseau entier.

Caractères génériques Un masque de caractères génériques 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 loin

Google pour les termes "super-réseau" et "VLSM (masque de sous-réseau de longueur variable)" pour les sujets plus avancés.

Je peux voir maintenant que j'ai mis trop longtemps à répondre ... soupir


1
"Etant donné que je n'ai qu'un seul octet pour ma partie hôte (dans l'exemple ci-dessus). Je ne peux UNIQUEMENT avoir que 255 hôtes (255 est la valeur maximale d'un octet). Mais il y a un autre petit truc: vous devez soustraire 2 adresses d'hôte. parmi ceux disponibles (actuellement 255). La première adresse de la plage sera celle du réseau (192.168.1.0) et la dernière adresse de la plage sera la diffusion (192.168.1.255). Vous disposez donc de 253 adresses disponibles pour hôtes dans un réseau. "... Ceci est incorrect.
joeqwerty

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

Oops. Merci! :-) Par un, je n'ai aucune idée de la façon dont j'ai réussi cet exploit.
Joseph Kern

1
-1 Désolé, mais il n'y a pas eu de "cours" depuis la RFC 1519 en 1993, personne ne devrait en parler en dehors d'un contexte historique. Ils sont déroutants et causent beaucoup d'idées fausses.
Chris S

Chris, vous avez probablement raison, mais les cours étaient toujours enseignés jusqu'au début des années 2000 dans le CCNA et dans la plupart des cours de premier cycle.
Joseph Kern

34

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

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

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

Cependant, à mesure que les réseaux IP se développaient, il devenait évident que cette approche posait problème. Pour n'en nommer que trois:

Dans un monde de classe, tous les sous-réseaux devaient avoir un masque de / 8, / 16 ou / 24. Cela signifiait que le plus petit sous-réseau pouvant être configuré était un / 24, ce qui permettait à 254 adresses d'hôte (les adresses .0 et .255 étant réservées comme adresses réseau et adresses de diffusion, respectivement). Cela a été un énorme gaspillage, en particulier sur les liaisons point à point avec seulement deux routeurs qui leur sont connectés.

Même après que cette restriction ait été assouplie, les protocoles de routage antérieurs (par exemple, RIPv1 ) n’annoncaient pas la longueur de masque associée à un préfixe IP. En l'absence d'un masque spécifique, il utiliserait soit le masque d'une interface directement connectée dans le même réseau de classes, soit utiliserait le masque de classes. Par exemple, si vous souhaitez utiliser le réseau 172.16.0.0 pour les liaisons inter-routeurs avec / 30 masques, tous les sous-réseaux de 172.16.0.0 à 172.16.255.255 doivent avoir un masque / 30 (16384 sous-réseaux, chacun avec 2 adresses IP utilisables). ).

Les tables de routage des routeurs Internet ont commencé à utiliser de plus en plus de mémoire; c'était / est connu comme «l'explosion de la table de routage». Si un fournisseur dispose de 16 réseaux / 24 contigus, par exemple, il devra publier les 16 préfixes au lieu d’un seul récapitulatif couvrant l’ensemble de la plage.

Deux améliorations connexes nous ont permis d’aller au-delà des limites susmentionnées.

  1. Masques de sous-réseau de longueur variable (VLSM)
  2. CIDR (routage interdomaine sans classe)

VLSM fait référence à 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 doté de classes. 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 a permis une utilisation beaucoup plus efficace de l'espace d'adressage; Les sous-réseaux peuvent être dimensionnés correctement pour le nombre d'hôtes / routeurs qui leur seraient connectés.

CIDR prend VLSM et l'étend dans l'autre sens; En plus de diviser un seul réseau de classes en plusieurs sous-réseaux, le CIDR permet d'agréger plusieurs réseaux de classes 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é / résumé avec un seul préfixe:

172.16.0.0/14

En termes de sous-réseau: un masque de sous-réseau a une longueur de 32 bits. La longueur du masque indique le nombre de bits identifiant la partie réseau de l'adresse. Par exemple:

10.1.1.0/24
  • Le masque de sous-réseau classful est / 8
  • Le masque de sous-réseau actuel est / 24
  • 16 bits (24-8) ont été «empruntés» pour l’utilisation de sous-réseaux.

Cela signifie que, si l’ensemble du réseau 10.0.0.0/8 est sous-réseau dans / 24s, il y aura 65 536 (2 ^ 16) sous-réseaux dans cette plage. (Cela suppose que la plate-forme que vous utilisez prend en charge les numéros de sous-réseau compris entre 0 et 255. Voir l'adresse IP de Cisco subnet-zero).

Il reste 8 bits dans la "partie hôte" de l'adresse. Cela signifie qu'il existe 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 l'adresse de diffusion dirigée vers le sous-réseau). Cela laisse 254 adresses IP utilisables sur ce sous-réseau. ((2 ^ 8) - 2)


4
Il y avait en fait 5 classes.
dbasnett

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

2
Vous avez introduit l’histoire dans une question d’introduction ... Ensuite, vous l’avez laissée incomplète. Je ne sais pas ce qui est pire.
Chris S

7

Plages de réseau: les réseaux sont toujours référencés par 2 chiffres: 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 réseau a une longueur de 32 bits, les deux nombres doivent tenir dans ces 32 bits.

La numérotation réseau est importante car elle est distribuée par l'ICANN lorsque vous demandez une plage d'adresses IP réseau. Si nous ne l'avions pas, personne ne pourrait faire la différence entre mon réseau et AT & Ts. Ainsi, alors que ces numéros doivent être uniques, personne d'autre ne souhaite attribuer de 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 personnes du réseau, la seconde partie m'appartient pour que je donne à toutes les 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 heureux avec un numéro de réseau utilisant 24 bits, ne me laissant que 8 bits. - ce qui suffit pour un maximum de 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 leur propre réseau.

Dans le passé, on parlait de 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).

De nos jours, cette convention de nommage est tombée de la mode. Il a été remplacé par le concept appelé CIDR. CIDR met explicitement le nombre de bits pour vos hôtes après la barre oblique. Donc, mon exemple ci-dessus (la classe C) est maintenant appelé CIDR / 24.

Cela nous donne un peu plus de flexibilité. Avant si j'avais 300 hôtes à gérer, il me faudrait un réseau de classe B! Maintenant, je peux obtenir un CIDR / 23, donc j’ai 9 bits pour moi et 23 bits pour le numéro de réseau. L’ICANN n’a peut-être pas ce type de réseau, mais si j’ai un réseau interne ou si je loue un réseau partiel auprès d’un FAI, 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 à plus de personnes d’avoir leur propre petite tranche d’adresses IP disponibles. Jusqu'à ce que nous obtenions IPv6, c'est assez important.


Cependant ... bien que je sache, un CIDR / 24 est l’équivalent de l’ancien réseau de classe C, et un / 16 est une classe B et un / 8 est une classe A ... Je suis toujours perplexe à essayer de calculer un / 22 po ma tête. Heureusement, il existe des outils qui le font pour moi :)

Toutefois, si vous savez que / 24 correspond à 8 bits pour les hôtes (et 24 bits pour les réseaux), je sais que a / 23 me donne un bit supplémentaire qui double le nombre d'hôtes.


-1 Désolé, mais mentionner des classes en dehors d'une référence "historique" est inapproprié de nos jours. Ils ne sont pas "tombés à la mode", ils ont été officiellement déconseillés par le RFC 1519 en 1993. Ils sont déroutants et causent beaucoup d'idées fausses.
Chris S

Certaines implémentations de protocoles de routage dynamiques résument des limites classées, il est donc utile de les connaître.
Ben

5

Je vais poser et répondre à quelques questions connexes en chemin:

  • Pourquoi vois-tu 255.255.255.0si souvent?
  • Pourquoi 192.168.0.1?
  • Pourquoi 127.0.0.1?

Pourquoi de tels nombres étranges - 255, 192, 168, 127?


8 + 8 + 8 + 8 bits décimaux en pointillés

Les adresses Internet telles que 194.60.38.10 utilisent la notation décimale à point pour séparer 32 bits en 8 + 8 + 8 + 8 bits. Décimal en points signifie convertir chaque nombre en binaire, puis le mettre à gauche avec 0'.

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

Ainsi, 194.60.38.10 correspond à une virgule décimale pour l'adresse 4 × 8 = 32 bits 11000010.00111100.00100110.00001010, car 38 → 100110, 10 → 1010, etc. 194 nécessite tous les 8 bits; les autres sont rembourrés.

rembourré

Une fois que vous pensez à 255, 192 et 127 en binaire 8 bits, vous comprendrez mieux pourquoi certains nombres décimaux sont si courants:

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

Ces nombres décimaux représentent des blocs visuels pratiques tels que ■■■■■■■■, ■ □□□□□□ et □ ■■■■■■■. Donc 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………00000dans binaire.

  • 168 = 10101000

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

Les masques de sous-réseau divisent ensuite chaque adresse Internet 32 ​​bits en un ID réseau et un ID hôte. Alors que les adresses Internet peuvent avoir n'importe quel mélange de 1 et de 0, les masques de sous-réseau commencent par seulement 1 et se terminent par 0.

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

Le noircissement des 8 + 8 + 8 = 24 bits et la suppression des 8 bits définitifs permettent de scinder l'IP. ■■ □□□□ ■ □ | □ □ ■■ □■ □ □ □ □ ■ ■ ■ ■ □ | □□□□ ■ □ ■ □ en deux parties:

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ host

Si le propriétaire du sous-réseau (par exemple OmniCorp ) souhaitait davantage d'adresses IP internes, il pourrait en acheter davantage (disons 8 + 8 = 16 bits) du côté droit du réseau, comme ceci:

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ host

De toute évidence, il existe un compromis entre l’espace adresse de 32 bits = 2³² = 4 294 967 296 options: si vous achetez plus d’ID réseaux (côté gauche), votre réseau interne dispose d’un plus grand nombre d’ID hôtes (côté droit).

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

255.255.255.0 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□.

Même les gens les moins chers ont

255.255.255.128 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■ □□□□□□

ou 255.255.255.192 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■■ □□□□□.

Selon le folklore, ce n’était pas réellement Roger Miller, mais un humble administrateur système avec un masque 255.255.255.254 qui écrivait à l’origine de King of the Road , remplaçant «Je n’ai pas un grand sous-réseau» par «Je n’ai pas de cigarettes ”.

Je fume mes cigarettes jusqu'au bout

(Pourquoi les masques des plus humbles sont-ils remplis de chiffres aussi élevés? Parce que, comme le narrateur de Miller, les masques de sous-réseau comptent tout ce que vous n'avez pas .)


Que signifie le slash final après une adresse IP? (par exemple, 194.60.38.10/24)

Puisque les masques de sous-réseau (qui séparent «leurs» des «nôtres») commencent toujours par des 1«s», et comme nous détestons résumer les pouvoirs de deux plus que nous ne détestons pas imaginer les pouvoirs de deux en premier lieu, quelqu'un a inventé CIDR (la barre oblique après une adresse IP).

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

■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□ avec 8 + 8 + 8 bits appartenant à «eux» et 8 bits appartenant à «nous».

Inverser l'hymne du hobo ci-dessus,

  • /31 est le compositeur
  • /24fait partie de la classe moyenne ( 255.255.255.0= ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□
  • /16 est riche ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ | □□□□□□□
  • /8 est super riche ■■■■■■■ | □□□□□□□□ □ □□□□□□□ □ □□□□□□□□
  • /1ou /0serait l'IANA ou quelque chose.





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


Quelle relation avec la réponse les images y figurent-elles? Est-ce juste pour se concentrer sur la réponse? :)
simhumileco

4

Bien que ce qui précède soit correct (désolé, TL; DR), le calcul des sous-réseaux cause toujours beaucoup de problèmes à de nombreux administrateurs de réseau. Il existe en fait un moyen très simple de calculer un sous-réseau, vous pouvez le faire la plupart du temps dans votre tête et vous avez 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. Ici, je ne parlerai que d’IPv4; IPv6 n'entre pas dans le cadre de cette discussion.

Rappelez-vous ceci:

Il y a trois points essentiels à retenir: tous les sous-réseaux sont basés sur des puissances de deux et il existe deux nombres clés: 256 et 32. Plus d'informations à ce sujet plus tard.

Premièrement, regardons 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

Calculer 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, etc. Le nombre total d'adresses dans un sous-réseau doit toujours être une puissance de 2 .

Comme chaque octet d'un sous-réseau IPv4 va jusqu'à 256, 256 est un nombre très important et constitue la base du reste du calcul.

Dimensionnement du sous-réseau

Nous allons commencer par une question simple: "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 regarder le dernier. Voici comment c'est facile: soustrayez 248 à 256. 256 moins 248 est égal à 8. Il y a 8 adresses disponibles (adresses de réseau et de diffusion comprise). 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 est égal à 240. Le masque de sous-réseau sera 255.255.255.248.

Maintenant, si nous voulons développer au-delà de 256 adresses (historiquement, une "classe C"), cela devient un peu plus compliqué: si notre dernier octet est 0 et notre troisième octet est, par exemple, 240 (255.255.240.0), alors 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 égaux à 0 (par exemple 255.240.0.0), nous prenons le résultat de la soustraction du deuxième octet (nous dirons qu'il en a 16 de nouveau), mais multiplions par 256 (adresses dans le troisième octet), puis multiplions par 256 (adresses dans le dernier octet) pour obtenir 1 048 576 adresses. Aussi simple que ça! (OK, l’inverse est un peu plus difficile. Si nous voulons un sous-réseau avec 1 048 576 adresses, nous devons diviser ce nombre par 256 plusieurs fois pour obtenir un nombre que nous pouvons soustraire de 256.)

Adresse 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. Donc, si nous avons 16 adresses dans notre sous-réseau, les adresses réseau possibles seront 0, 16, 32, 48, 64, etc. jusqu'à 240. (Notez que 0 est un multiple valide de tout nombre, de même que tout nombre 0 est égal à 0.)

Et, bien sûr, l’adresse de diffusion sera la dernière adresse de l’étendue. Donc, 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

Alors, qu'en est-il de la notation CIDR? Comment traduire cela vers et à partir d'un masque de sous-réseau de style IPv4?

Rappelez-vous nos pouvoirs de deux? Eh bien, nous avons maintenant un autre numéro de clé à retenir que 256: 32. N'oubliez pas, la notation CIDR décrit le nombre de bits significatifs dans l'adresse IPv4, et une adresse IPv4 comporte 32 bits, soit 8 pour chaque octet. Donc, si nous avons un masque de sous-réseau de 255.255.255.240, cela correspond à 16 adresses. Si nous regardons notre tableau "puissances de 2" ci-dessus, nous voyons que 16 est deux au quatrième pouvoir (2 ^ 4). Nous soustrayons donc le nombre de 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 on nous donne un CIDR de / 28, on soustrait ce (28) de 32 pour obtenir 4; relance 2 à cette (4ème) puissance (2 ^ 4) pour obtenir 16; puis soustrayez ce (16) de 256 pour obtenir 240; ou 255.255.255.240.


merci.Mais je suis encore flou sur la façon dont le PC utilise le masque de sous-réseau. Quand 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 comment un paquet est encapsulé? Par exemple, si l'ordinateur souhaitait envoyer un paquet sur le réseau local, il utiliserait une trame ethernet fr.wikipedia.org/wiki/Ethernet_frame et, s'il souhaitait rester en dehors du réseau, utiliserait un paquet tcp fr.wikipedia.org/wiki /… ?
aquagremlin

En gros, 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. Envoyer un paquet via la prise Ethernet d'un ordinateur est un événement générique. C'est pourquoi le paquet lui-même doit déterminer qui y répond. Un paquet destiné à être capté par un périphérique local (commutateur ou autre ordinateur sur le réseau local) doit être différent du paquet qui sera capté par un routeur.
aquagremlin

Cela se produit sur une couche sous TCP. Chaque périphérique a une adresse matérielle (MAC) associée à une adresse IP dans la table ARP de chaque périphérique. Ceci est construit par la 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 à travers le routeur, le MAC est supprimé et ensuite étiqueté avec le MAC du routeur de saut suivant. Le sous-réseau définit simplement la portée du réseau local. (C'est la simple version <500 caractères.)
Jonathan J

2

Je pense également qu'il devrait au moins être fait mention des NAT, car ils sont utilisés si couramment dans les réseaux modernes à la place des sous-réseaux, en raison notamment de l'épuisement des adresses IPv4. (En outre, lorsque j'ai commencé à comprendre les sous-réseaux, j’étais très confus quant à la relation entre les sous-réseaux et les réseaux créés par les routeurs WiFi).

La traduction d'adresses de réseau (NAT) est une technique (généralement) utilisée pour créer des réseaux privés en mappant un espace d'adressage (IP: Port) sur un autre. Cela sert principalement à 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 entreprise), ou parfois par des fournisseurs de services Internet.

La traduction d’adresse réelle est faite de manière transparente dans des nœuds compatibles NAT, généralement des routeurs. Cela peut prendre de nombreuses formes: Cône complet, Adressage restreint, Port restreint, etc.

Des informations complètes peuvent être trouvées sur Wikipedia , mais par exemple considérons un routeur Wifi avec 2 appareils connectés. L'adresse IP publique du routeur est 10.9.20.21/24et l'IP des périphériques (adresses IP privées Les) sont A: 192.168.0.2, B: 192.168.0.3et celle du routeur est R: 192.168.0.1. Ainsi, si vous Asouhaitez vous connecter au serveur S: 10.9.24.5/24(qui se trouve sur un sous-réseau différent du routeur ici):

  1. A envoie un paquet IP à R(qui serait la passerelle par défaut) avec l'adresse IP source 192.168.0.2, le port src (par exemple) 14567et l'adresse IP de destination: 10.9.24.5(bien que le port fasse en réalité partie de l'en-tête TCP).
  2. Le routeur (compatible NAT) mappe le port 14567sur le périphérique Aet modifie la source du paquet IP en 10.9.20.21(adresse IP publique du routeur). Cela contraste avec le sous-réseau décrit ci-dessus, où les paquets IP ne sont en réalité jamais modifiés .
  3. Sreçoit la série de paquets TCP (avec src IP:, 10.9.20.21src Port:) 14567et envoie des paquets de réponse avec ces valeurs dans les champs de destination.
  4. Rvérifie le port de destination, qui est 14567et transfère le paquet à A.
  5. A reçoit le paquet de réponse.

Dans la situation ci-dessus, si vous Btentez d'ouvrir une connexion sur le même port source ( 14567), celle-ci sera mappée sur un autre port par R(et le port du paquet sortant sera modifié) avant l'envoi S. C'est-à-dire qu'il y aurait également une traduction de port au lieu d'une simple adresse IP.

Deux choses à noter ici:

  1. En raison de cette traduction d'adresses, il est souvent impossible d'établir une connexion avec des périphériques du réseau privé sans utiliser certaines techniques spéciales.
  2. La restriction sur le nombre total de connexions TCP d'un même périphérique à un serveur (65536 = 2 ^ 16) s'applique désormais de manière collective à tous les périphériques situés derrière le NAT, sous la forme NAT utilisée ci-dessus.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.