Je comprends comment les masques de sous-réseau sont utilisés pour diviser un réseau en sous-réseaux, mais pourquoi chaque ordinateur du réseau doit-il connaître le masque de sous-réseau et pas uniquement le routeur?
Je pourrais le comprendre, si chaque ordinateur était physiquement connecté l'un à l'autre avec un fil, mais tous les paquets doivent quand même passer par le routeur.
Disons que j'ai un ordinateur sur un réseau 192.168.0.0/255.255.255.0
, qui a l'IP 192.168.0.1
.
Si cet ordinateur essaie d’atteindre un ordinateur en dehors du sous-réseau, disons 192.168.1.1
, il transmet le message au routeur, le routeur identifie que l’IP est en dehors de la plage IP du sous-réseau et plutôt que de le transmettre sur le sous-réseau. réseau, il le transmet au réseau auquel il est connecté (peut-être un autre routeur).
if each computer were physically connected to each other with a wire
- Vous devez vous rappeler que TCP / IP a été inventé à une époque où c'est effectivement le cas. Google10-base-2
. Il existe d'autres protocoles qui fonctionnent différemment de TCP / IP, mais au cours des 20 dernières années, IPv4 a remporté la bataille des protocoles.Réponses:
Vos hypothèses de départ ne sont pas tout à fait correctes. Ce que vous appelez un "routeur", c'est deux périphériques en un: un routeur à deux ports connecté en interne à un commutateur Ethernet à plusieurs ports . (Voici un exemple de diagramme .)
Cela signifie que les ordinateurs sont directement connectés à la couche 2 et peuvent s’envoyer des paquets sans passer par le cœur du routeur. Ils sont simplement relayés entre les ports par la puce du commutateur. (Le routeur a son propre "port" dans le commutateur.)
Donc, si vous regardez les paquets en utilisant Wireshark, vous verrez qu'ils utilisent directement les adresses MAC les uns des autres, tandis que les paquets "extérieurs" ont toujours le MAC du routeur comme destination.
(Je suppose que vous parlez des «routeurs sans fil» typiques de la plupart des foyers, qui sont la cause habituelle de ce type de question. Un réseau plus grand aurait un routeur séparé avec un port par sous-réseau, et quelques commutateurs séparés (peut-être un maître plus un par étage / pièce) et plusieurs dizaines d’ordinateurs connectés à ces commutateurs.)
C'est à peu près la même chose avec les réseaux Wi-Fi, sauf que "commutateur" est remplacé par "pont sans fil", également appelé "point d'accès". Dans les deux cas, les ordinateurs connectés peuvent s’envoyer des paquets directement au niveau 2, sans passer par le routeur.
Commentaires:
C'est encore incorrect. Les commutateurs n'ont pas cette connaissance; leur cœur de commutation fonctionne sur la couche 2 et ne connaît rien de l'IP - il transmet des trames Ethernet uniquement sur la base du champ "adresse MAC de destination".
Par conséquent, les hôtes ont besoin du masque de sous-réseau pour déterminer quelle adresse MAC utiliser comme destination:
Si l'homologue se trouve dans le même sous-réseau, il est supposé être sur la liaison par définition. La trame Ethernet aura donc la destination MAC de l'homologue.
Pour les homologues extérieurs au sous-réseau, la trame Ethernet aura la destination MAC de la passerelle .
(Ceci s’applique à la configuration par défaut. Certains réseaux spéciaux flocon de neige le modifient - par exemple, la plupart des systèmes d’exploitation autorisent l’ajout de routes "en liaison" supplémentaires pour des sous-réseaux supplémentaires; à l’inverse, certains commutateurs peuvent être configurés avec des réponses ARP fausses de sorte que même "le trafic est forcé à travers la passerelle.)
la source
Comment un ordinateur peut-il savoir si une adresse de destination se trouve dans le même sous-réseau ou dans un autre?
Vérification de l’ adresse locale et du masque de sous - réseau .
Voyons quelques exemples:
Si mon ordinateur a l'adresse IP
192.168.0.1
et le masque,255.0.0.0
cela signifie que toute adresse de192.0.0.0
à se192.255.255.255
trouve dans le même sous-réseau. Les paquets vers tous les autres ordinateurs n'ont pas besoin de passer par le routeur, ils peuvent être envoyés directement. Envoyez un paquet ARP pour obtenir l'adresse MAC de l'ordinateur de destination, puis envoyez le paquet.Mais, si mon ordinateur a l'adresse IP
192.168.0.1
et le masque est255.255.255.128
alors les ordinateurs du même sous - réseau sont de adddress IP192.168.0.0
à192.168.0.127
seulement. Ils sont joignables directement (envoi d’ARP, recherche d’adresse MAC, etc.). Toute autre adresse, par exemple,192.168.0.200
doit être atteinte en passant par le routeur.la source
Une chose non évidente à propos de l'IP est que chaque périphérique IP est lui-même un routeur .
Ceci peut être vu sur un PC normal avec la commande "route print". Vous êtes connecté à deux réseaux: votre segment Ethernet local ou wifi et le réseau localhost. Chaque paquet doit être soumis à une décision quant au réseau sur lequel le mettre.
Cela devient plus évident si vous mettez votre ordinateur sur deux réseaux, un "public" et un "privé". Maintenant, vous avez définitivement besoin du masque de sous-réseau pour pouvoir choisir le réseau sur lequel envoyer le paquet.
Beaucoup de gens vont découvrir par hasard qu’un PC avec une seule connexion réseau peut fonctionner avec un sous-masque mal configuré: ils finissent par tout envoyer à la passerelle.
la source
Je vois cela mentionné dans certaines des autres réponses ici, mais je pense que cela pourrait être plus clair: sur les ordinateurs dotés de plusieurs interfaces réseau, le masque de sous-réseau peut être utilisé pour déterminer automatiquement quelle interface physique sur laquelle envoyer le trafic IP en fonction de l'adresse IP de destination.
Si vous envoyez un paquet à un périphérique d'un réseau local connecté à l'une des interfaces, pour savoir sur quelle interface l'envoyer (si vous n'avez pas configuré de route explicitement), l'ordinateur peut vérifier les interfaces pour voir si subnet_mask & destination_ip == subnet_mask & interface_ip (par
&
j'entends bitwise-and et par==
je veux dire par égalité), et s'il y a correspondance, choisissez cette interface.De cette façon, si vous avez par exemple:
Et vous envoyez un paquet à 192.168.2.123 et si aucune route n’est configurée, il est possible de déterminer que l’interface C doit être utilisée, car 255.255.255.0 et 192.168.2.123 == 255.255.255.0 et 192.168.2.97 .
Cela ne serait pas possible si le masque de sous-réseau n'était pas connu et vous auriez donc besoin d'un itinéraire configuré pour chaque adresse IP à laquelle vous avez envoyé des données.
la source
TCP / IP aurait pu être conçu comme vous le suggérez: les noeuds feuille envoyaient tout au routeur et le transmettaient à la cible, qui pourrait se trouver sur le même sous-réseau que l'expéditeur.
Mais ce ne serait pas une conception optimale, pour deux raisons:
Il utilise plus de bande passante: chaque paquet entre des périphériques d'un même sous-réseau doit être transmis deux fois: une fois de l'expéditeur au routeur et une autre fois du routeur au destinataire. Sur les réseaux où le routeur est également le commutateur réseau, cela ne représente en réalité aucune bande passante supplémentaire, étant donné que le commutateur devait passer de toute façon par le commutateur. Mais toutes les technologies de réseau ne fonctionnent pas comme ça. La conception Ethernet d'origine était une technologie de bus, sans commutateur central ni répéteur.
Cela met plus de charge sur le routeur. Même si le routeur est également le commutateur, cela demande un peu plus de travail, car il a été mis en œuvre jusqu'à la mise en œuvre du routage de couche 3, plutôt que la commutation de couche 2 plus simple.
Une philosophie générale qui incarne la conception de TCP / IP est que les nœuds d'extrémité sont des périphériques intelligents, ils sont donc supposés être capables d'effectuer une partie du travail. Ils n'ont pas besoin de connaître la topologie complète du réseau, contrairement aux routeurs dorsaux, mais ils en savent suffisamment sur l'environnement local pour prendre en charge une partie de la tâche de routage locale / vs initiale. Il ne faut pas beaucoup de code pour implémenter ce routage initial simple.
De plus, les périphériques non-routeurs ne sont pas nécessairement sur un seul sous-réseau. Vous pouvez facilement avoir plusieurs cartes réseau dans un PC - beaucoup ont à la fois Ethernet et WiFi. Et chacun de ceux-ci peut être connecté à un sous-réseau différent, et les adresses ainsi que les masques de sous-réseau sont utilisés pour déterminer la carte réseau à utiliser. Si vous exécutez des machines virtuelles, il est probable qu'un sous-réseau virtuel les connecte au système hôte.
la source
Si nous regardons une table de routage (ceci se trouve être ma machine de bureau):
route ip
route
Les deux vues transmettent les mêmes informations. Les masques de sous-réseau indiquent quels hôtes sont directement accessibles sur ce réseau, et d'autres hôtes sont trouvés à l'aide d'une passerelle. En particulier, nous devons savoir que la passerelle est accessible, sinon nous ne pourrions pas envoyer de paquets pour la transmettre.
En principe, vous pouvez tout envoyer via votre hôte de passerelle. Cela ressemblerait
ou
Je n'ai pas essayé cela, mais il peut être utilisé pour le transfert forcé sur MAC .
la source
ainsi, les périphériques que les utilisateurs appellent des routeurs ne sont généralement pas que des routeurs. C'est pourquoi les gens utilisent parfois des termes tels que routeur NAPT, routeur domestique ou routeur consommateur, pour suggérer qu'il ne s'agit pas d'un simple routeur. Pour faire valoir qu'ils ne sont pas que des routeurs, ces périphériques peuvent effectuer NAPT (qui n'est pas un routage) et ils ont un commutateur intégré (un commutateur établit un pont, ce qui n'est pas un routage - distinctions entre un commutateur et un pont sont un peu moins bien définis - on peut dire qu'un pont aurait souvent 2 ports et connecter différents supports de réseau (par exemple, ethernet et non-ethernet), alors qu'un commutateur aurait plusieurs ports et le même support de réseau). Un commutateur fait le pontage.
Si le commutateur était séparé du "routeur", alors ce serait plus clair. Lorsque l'adresse IP est sur le même réseau, le paquet
est alors dirigé versdescend le câble vers le prochain commutateur qui est le commutateur, et est finalement destiné à un autre ordinateur du réseau (sauf s’il s’agissait d’un commutateur géré et que vous vous connectiez au commutateur, par exemple telnet ou http et que le commutateur avait sa propre adresse IP ), et comme le paquet n’est pas destiné à un autre réseau, il n’atteindra pas le routeur. Quand il est destiné à un ordinateur sur un réseau différent, il va bien sûr toujours au commutateur, mais continue ensuite au routeur (le commutateur a dirigé le paquet vers le routeur et l'adresse MAC de destination du paquet venant de le commutateur aurait été l'adresse MAC du routeur) et la route l'acheminerait depuis l'interface correcte du routeur.Avec ces choses généralement appelées routeurs, qui ont des commutateurs à l'intérieur (comme, pas les routeurs de style professionnel cisco / juniper), le commutateur est à l'intérieur. Mais ce n'est que l'emplacement du commutateur. le même réseau alors le paquet est adressé au commutateur pas au routeur. Et cela ne concerne que le commutateur à l'intérieur du routeur et n'atteint pas le routeur.
que voulez-vous dire ici? Si tous les ordinateurs d'un réseau entier étaient physiquement connectés avec un fil .. alors je suppose que vous n'auriez pas besoin d'un commutateur ou d'un routeur. Ce que vous décrivez ressemble un peu à Ethernet d'origine… et s'ils sont tous reliés par un fil, ce ne serait probablement pas un si grand réseau. Et de toute façon, ce ne sera pas un fil comme vous en avez l'habitude. Des ordinateurs seraient connectés le long du chemin avec des "robinets". Donc, je ne sais pas pourquoi vous avez simplement ajouté cette phrase.
vous voulez donc dire en mettant de côté cette idée de tous les ordinateurs connectés avec un fil sans routeur.
Et non, même chez vous, ils ne passent pas par le routeur à chaque fois. Même avec votre "routeur domestique", appelez-le une boîte Internet. Ils vont au commutateur dedans.
au commutateur puis du commutateur, il va au routeur
Le routeur identifie l’interface réseau à laquelle il est destiné. Il envoie d'une interface à une autre interface. Une distinction - outre l'interface, serait de savoir si un réseau est directement connecté ou non. Il pourrait envoyer à un commutateur puis à un ordinateur. Ou il pourrait envoyer à un ordinateur. Ou si le réseau n'est pas directement connecté, il irait à un autre routeur.
et votre dernière phrase était
et puis quoi, avez-vous soudainement décidé d'arrêter d'écrire?eh bien, je ne le dirais pas comme ça. Chaque interface du routeur a une plage IP différente.
Mais, avec votre routeur grand public ou votre routeur domestique, il s’agit d’un routeur à deux interfaces, dont un est connecté à un commutateur. Et les multiples ports sont des ports du commutateur.
Donc, si vous pensez en termes de routeur, ce n’est pas comme si c’était à l’intérieur du sous-réseau et à l’extérieur, car il y avait potentiellement beaucoup de réseaux. Il y en a un sur chaque interface. Et le routeur ne le transmettra pas au même réseau d'où il vient. La raison pour laquelle il a atteint le routeur en premier lieu est précisément parce que le commutateur (auquel il est arrivé en premier) a vu l'adresse MAC et a donc vu que ce n'est pas l'adresse MAC du routeur.
L'ordinateur qui a envoyé le paquet vérifiera si l'adresse IP de destination du paquet se trouve sur son propre réseau, ou sur le même réseau, et choisira ensuite l'adresse MAC appropriée. Soit l'adresse MAC de l'ordinateur auquel elle est destinée (c'est-à-dire si l'ordinateur est sur le même réseau). Ou (si l'ordinateur est sur une autre interface du routeur), il s'agira de l'adresse MAC du routeur. Je suppose que cela pourrait répondre assez directement au titre de votre question, à savoir pourquoi l'ordinateur aurait besoin de connaître le masque de sous-réseau. Dans le système TCP / IP en l'état, c'est ainsi que cela fonctionne: l'ordinateur sélectionne la couche 2 correspondante. adresse par exemple pour Ethernet, l'adresse MAC.
la source
L'ordinateur / appareil n'utiliser le masque de sous - réseau afin de calculer l'adresse IP de diffusion.
Les interfaces IP qui ne sont pas en mode promiscuous sont configurées pour répondre à l'adresse de diffusion IP ainsi qu'à leur propre adresse IP.
la source
J'ai créé un compte juste pour répondre à cette question, car je pense que d'autres compliquent trop le rôle d'un masque de sous-réseau.
Le masque de sous-réseau détermine les autres machines d'un réseau avec lesquelles un hôte communiquera. Si un hôte se trouve en dehors de mon sous-réseau, j'essaierai de parler à cette machine via ma passerelle. Si cet hôte se trouve dans mon sous-réseau, je parlerai directement à cet hôte (aucune passerelle n'est requise). En outre, si une machine en dehors du sous-réseau d'un hôte tente de lui parler, ces paquets tomberont dans l'oreille d'un sourd et seront immédiatement abandonnés.
Pourquoi est-ce pertinent pour vous? Parce que si nous n'utilisions pas de masques de réseau, si vous tentiez de parler au serveur DNS de Google (8.8.8.8), vous (et TOUS les autres hôtes qui lui parleraient) auraient besoin de connaître son adresse physique (adresse MAC). Ainsi, votre ordinateur et tous les autres utilisateurs devront créer une entrée ARP pour chaque machine Internet à laquelle vous parlez. Cela gaspillerait votre RAM et ralentirait tous les réseaux car l'adresse physique des machines est transmise beaucoup plus loin que nécessaire.
la source