Ich verstehe, wie Subnetzmasken verwendet werden, um ein Netzwerk in Subnetze zu unterteilen, aber warum muss jeder Computer im Netzwerk die Subnetzmaske kennen und nicht nur den Router?
Ich könnte es verstehen, wenn jeder Computer physisch über ein Kabel miteinander verbunden wäre, aber alle Pakete trotzdem über den Router gesendet werden müssten.
Nehmen wir an, ich habe einen Computer in einem Netzwerk 192.168.0.0/255.255.255.0
, der die IP hat 192.168.0.1
.
Wenn dieser Computer versucht, einen Computer außerhalb des Subnetzwerks zu erreichen 192.168.1.1
, sendet er beispielsweise die Nachricht an den Router. Der Router erkennt, dass sich die IP außerhalb des IP-Bereichs des Subnetzwerks befindet, und überträgt sie nicht über das Subnetzwerk. Netzwerk, es überträgt es an das Netzwerk, mit dem es verbunden ist (möglicherweise ein anderer Router).
if each computer were physically connected to each other with a wire
- man muss bedenken, dass tcp / ip zu einer zeit erfunden wurde, in der dies tatsächlich der fall ist. Google10-base-2
. Es gibt andere Protokolle, die anders als TCP / IP funktionieren, aber in den letzten 20 Jahren hat IPv4 den Protokollkampf gewonnen.Antworten:
Ihre ursprünglichen Annahmen stimmen nicht ganz. Was Sie als "Router" bezeichnen, sind zwei Geräte in einem - ein Zwei-Port-Router, der intern mit einem Ethernet-Switch mit mehreren Ports verbunden ist . (Hier ist ein Beispiel - Diagramm ) .
Dies bedeutet , dass die Computer sind direkt auf der Schicht 2 verbunden und können Pakete miteinander senden , ohne Umweg über den Router Kern - sie sind einfach zwischen den Anschlüssen durch den Switch - Chip weitergeleitet. (Der Router hat einen eigenen "Port" im Switch.)
Wenn Sie sich also die Pakete mit Wireshark ansehen, werden Sie feststellen, dass sie direkt die MAC-Adressen des anderen verwenden, während "externe" Pakete immer die MAC-Adresse des Routers als Ziel haben.
(Ich nehme an, Sie sprechen von den typischen "drahtlosen Routern", die in den meisten Haushalten zu finden sind und die die übliche Ursache für diese Art von Fragen sind. Ein größeres Netzwerk hätte einen separaten Router mit einem Port pro Subnetz und ein paar separate Switches (vielleicht ein Master plus einen pro Etage / Raum) und mehrere Dutzend Computer, die an diese Switches angeschlossen sind.)
Bei Wi-Fi-Netzwerken ist dies in etwa gleich, mit der Ausnahme, dass "Switch" durch "Wireless Bridge" (auch als "Access Point" bezeichnet) ersetzt wird. In beiden Fällen können verbundene Computer auf Schicht 2 Pakete direkt aneinander senden, ohne den Router zu durchlaufen.
Bemerkungen:
Das ist wieder falsch. Switches verfügen nicht über dieses Wissen. ihre Vermittlungskerne arbeiten auf Schicht 2 und wissen nicht , etwas über IP - es vorwärts Ethernet - Frames rein auf der Grundlage der ‚Ziel - MAC - Adresse‘ ein.
Daher benötigen Hosts die Subnetzmaske, um herauszufinden, welche MAC-Adresse als Ziel verwendet werden soll:
Wenn der Peer im gleichen Subnetz ist, wird es angenommen, dass On-Link per Definition - so wird der Ethernet - Frame Peer MAC als Ziel hat.
Für Peers außerhalb des Subnetzes hat der Ethernet-Frame den MAC des Gateways als Ziel.
(Dies gilt für die Standardkonfiguration. Einige Spezialschneeflockennetzwerke ändern dies - z. B. erlauben die meisten Betriebssysteme das Hinzufügen zusätzlicher "On-Link" -Routen für zusätzliche Subnetze. Umgekehrt können einige Switches so konfiguriert werden, dass ARP-Antworten sogar "On-Link" sind "Der Datenverkehr wird durch das Gateway gezwungen.)
quelle
Woher weiß ein Computer, ob sich eine Zieladresse im selben Subnetz in einem anderen befindet?
Überprüfen der lokalen Adresse und der Subnetzmaske .
Schauen wir uns ein paar Beispiele an:
Wenn mein Computer die IP
192.168.0.1
und die Maske hat255.0.0.0
, bedeutet dies, dass sich jede Adresse von192.0.0.0
bis192.255.255.255
im selben Subnetz befindet. Die Pakete an alle anderen Computer müssen nicht über den Router gesendet werden, sondern können direkt gesendet werden. Senden Sie ein ARP-Paket, um die MAC-Adresse des Zielcomputers abzurufen, und senden Sie dann das Paket.Aber wenn mein Computer die IP hat
192.168.0.1
und die Maske ist,255.255.255.128
dann sind die Computer im selben Subnetz nur von IP-Adresse192.168.0.0
zu192.168.0.127
. Sie können direkt erreicht werden (ARP senden, MAC - Adresse ermitteln usw.) Jede andere Adresse muss zum Beispiel192.168.0.200
über den Router erreicht werden.quelle
Was an IP nicht offensichtlich ist, ist, dass jedes IP-Gerät selbst ein Router ist .
Dies kann auf einem normalen PC mit dem Befehl "Route drucken" angezeigt werden. Sie sind mit zwei Netzwerken verbunden: Ihrem lokalen Ethernet- oder WLAN-Segment und dem lokalen Host-Netzwerk. Für jedes Paket muss eine Entscheidung darüber getroffen werden, in welches Netzwerk es gestellt werden soll.
Dies wird deutlicher, wenn Sie Ihren Computer in zwei Netzwerke einbinden, z. B. ein "öffentliches" und ein "privates". Jetzt benötigen Sie definitiv die Subnetzmaske, um zu entscheiden, über welches Netzwerk das Paket gesendet werden soll.
Viele Leute werden aus Versehen feststellen, dass ein PC mit einer einzigen Netzwerkverbindung möglicherweise mit einer falsch konfigurierten Submaske funktioniert: Sie senden einfach alles an das Gateway.
quelle
Ich sehe dies in einigen der anderen Antworten hier, aber ich denke, es könnte klarer sein: Auf Computern mit mehreren Netzwerkschnittstellen kann die Subnetzmaske verwendet werden, um basierend auf der Ziel-IP-Adresse automatisch zu bestimmen, auf welcher physischen Schnittstelle IP-Verkehr gesendet werden soll .
Wenn Sie ein Paket an ein Gerät in einem LAN senden, das mit einer der Schnittstellen verbunden ist, kann der Computer die Schnittstellen überprüfen, um festzustellen, auf welcher Schnittstelle das Paket gesendet werden soll (wenn Sie keine Route explizit konfiguriert haben) wenn subnet_mask & destination_ip == subnet_mask & interface_ip (damit
&
meine ich bitweise und damit==
meine ich Gleichheit zu behaupten), und wenn es eine Übereinstimmung gibt, wählen Sie diese Schnittstelle.So, wenn Sie zB haben:
Wenn Sie ein Paket an 192.168.2.123 senden und keine Route eingerichtet haben, kann festgelegt werden, dass die Schnittstelle C verwendet werden soll, da 255.255.255.0 & 192.168.2.123 == 255.255.255.0 & 192.168.2.97 .
Dies wäre nicht möglich, wenn die Subnetzmaske nicht bekannt wäre und Sie für jede einzelne IP-Adresse, an die Sie Daten gesendet haben, eine Route einrichten müssten.
quelle
TCP / IP könnte wie von Ihnen vorgeschlagen entworfen worden sein - Blattknoten senden alles an den Router und leiten es an das Ziel weiter, das sich möglicherweise im selben Subnetz wie der Absender befindet.
Dies wäre jedoch aus zwei Gründen kein optimales Design:
Es wird mehr Bandbreite verwendet: Jedes Paket zwischen Geräten im selben Subnetz muss zweimal übertragen werden: einmal vom Absender zum Router und erneut vom Router zum Empfänger. In Netzwerken, in denen der Router auch der Netzwerk-Switch ist, ist dies eigentlich keine zusätzliche Bandbreite, da er den Switch sowieso passieren würde. Aber nicht alle Netzwerktechnologien funktionieren so. Das ursprüngliche Ethernet-Design war eine Bustechnologie ohne zentralen Switch oder Repeater.
Dadurch wird der Router stärker belastet. Auch wenn der Router gleichzeitig der Switch ist, ist dies etwas aufwändiger, da die Implementierung des Layer-3-Routings vorangetrieben wurde und nicht das einfachere Layer-2-Switching.
Eine allgemeine Philosophie, die das Design von TCP / IP verkörpert, ist, dass Endknoten intelligente Geräte sind, sodass davon ausgegangen wird, dass sie einen Teil der Arbeit erledigen können. Sie müssen nicht die gesamte Netzwerktopologie kennen, wie dies bei Backbone-Routern der Fall ist, aber sie wissen genug über die lokale Umgebung, um einen Teil der anfänglichen Routing-Aufgaben zwischen lokalem und Remote-Netzwerk zu übernehmen. Es ist nicht viel Code erforderlich, um dieses einfache anfängliche Routing zu implementieren.
Darüber hinaus befinden sich Nicht-Router-Geräte nicht unbedingt in nur einem Subnetz. Sie können problemlos mehrere Netzwerkkarten in einem PC haben - viele haben sowohl Ethernet als auch WiFi. Jedes dieser Geräte kann mit einem anderen Subnetz verbunden werden. Mithilfe von Adressen und Subnetzmasken wird festgelegt, welche Netzwerkkarte verwendet werden soll. Wenn Sie virtuelle Maschinen ausführen, besteht wahrscheinlich ein virtuelles Subnetz, das sie mit dem Hostsystem verbindet.
quelle
Wenn wir uns eine Routing-Tabelle ansehen (das ist zufällig mein Desktop-Computer):
ip route
Route
Jede Ansicht vermittelt die gleichen Informationen. Die Subnetzmasken geben an, welche Hosts in diesem Netzwerk direkt erreichbar sind, und andere Hosts werden über ein Gateway gefunden. Insbesondere müssen wir wissen, dass das Gateway erreichbar ist, da wir sonst keine Pakete zur Weiterleitung senden können.
Sie können im Prinzip alles über Ihren Gateway-Host senden. Das würde so aussehen
oder
Ich habe das nicht ausprobiert, aber es kann für MAC-Forced Forwarding verwendet werden .
quelle
Nun, die Geräte, die als Router bezeichnet werden, sind normalerweise nicht nur Router. Daher verwenden die Leute manchmal Begriffe wie NAPT-Router, Heim-Router oder Consumer-Router, um darauf hinzuweisen, dass es sich nicht nur um einen Router handelt. Um zu verdeutlichen, dass diese Geräte nicht nur Router sind, sondern auch NAPT (was kein Routing ist) und einen eingebauten Switch (ein Switch führt Bridging aus, was kein Routing ist - Unterscheidung zwischen einem Switch und einer Bridge) sind ein bisschen nicht so gut definiert - man könnte sagen, dass eine Bridge oft zwei Ports hat und verschiedene Netzwerkmedien (z. B. Ethernet und Nicht-Ethernet) verbindet, während ein Switch mehrere Ports und dasselbe Netzwerkmedium hat. Ein Schalter überbrückt.
Wenn der Switch vom "Router" getrennt wäre, wäre dies in der Tat klarer. Wenn sich die IP-Adresse im selben Netzwerk befindet, wird das Paket an
geleitetDas Kabel führt zum nächsten physischen Switch, der letztendlich für einen anderen Computer im Netzwerk bestimmt ist (es sei denn, es handelt sich um einen verwalteten Switch und Sie haben eine Verbindung zum Switch hergestellt, z. B. telnet oder http, und der Switch hatte eine eigene IP-Adresse ) und da das Paket nicht für ein anderes Netzwerk bestimmt ist, erreicht es den Router nicht. Wenn es für einen Computer in einem anderen Netzwerk bestimmt ist, wird es natürlich weiterhin an den Switch weitergeleitet, danach jedoch an den Router (der Switch hat das Paket an den Router und die Ziel-MAC-Adresse des eingehenden Pakets weitergeleitet) der Switch wäre die MAC-Adresse des Routers gewesen, und die Route würde sie aus der richtigen Schnittstelle des Routers herausleiten.Bei diesen Dingen, die normalerweise als Router bezeichnet werden und Switches enthalten (z. B. keine professionellen Cisco / Wacholder-Router), befindet sich der Switch im Inneren. Dies ist jedoch nur die Position des Switches Im selben Netzwerk wird dann das Paket an den Switch adressiert und nicht an den Router. Und es geht nur zum Schalter innerhalb des Fräsers und erreicht nicht den Fräser.
was meinst du hier .. Wenn alle Computer in einem gesamten Netzwerk physisch mit einem Kabel verbunden wären .. dann bräuchten Sie wohl keinen Switch oder Router. Was Sie beschreiben, klingt ein bisschen wie Original-Ethernet. Und wenn alle mit einem Kabel verbunden wären, wäre es wahrscheinlich kein so großes Netzwerk. Und es wird sowieso kein Draht sein, wie Sie es gewohnt sind. Auf dem Weg dorthin wären Computer mit "Wasserhähnen" verbunden. Ich weiß also nicht, warum Sie diesen Satz gerade reingeworfen haben.
Sie wollen also die Idee von allen Computern beiseite lassen, die mit einem Kabel ohne Router verbunden sind.
Und nein, selbst bei Ihnen zu Hause gehen sie nicht jedes Mal durch den Router. Auch mit Ihrem "Heimrouter", nennen Sie es eine Internetbox. Sie gehen zum Schalter hinein.
zum switch dann vom switch geht es zum router
Nun, der Router erkennt, für welche Netzwerkschnittstelle er bestimmt ist. Es sendet von einer Schnittstelle zu einer anderen Schnittstelle. Eine Unterscheidung - neben welcher Schnittstelle, wäre, ob ein Netzwerk direkt angeschlossen ist oder nicht. Es könnte an einen Switch und dann an einen Computer weitergeleitet werden. Oder es könnte an einen Computer senden. Wenn das Netzwerk nicht direkt verbunden ist, wird es an einen anderen Router weitergeleitet.
und dein letzter satz war
Und dann hast du plötzlich beschlossen, nicht mehr zu schreiben?Nun, ich würde es nicht so ausdrücken. Jede Schnittstelle am Router hat einen anderen IP-Bereich.
Bei Ihrem Consumer- oder Home-Router ist dies jedoch wie bei einem Router mit zwei Schnittstellen, an die an Ihrer Seite ein Switch angeschlossen ist. Und die mehreren Ports sind Ports des Switch.
Also, wenn Sie in Bezug auf den Router-Teil denken, ist es nicht so, als ob sich das innerhalb des Subnetzwerks und das außerhalb befindet, denn es gibt möglicherweise viele Netzwerke. Es gibt eine auf jeder Schnittstelle. Und der Router sendet es nicht an dasselbe Netzwerk zurück, von dem es stammt. Der Grund, warum es den Router an erster Stelle erreichte, ist genau, dass der Switch (den es zuerst erreichte) die MAC-Adresse sah und so sah, dass dies nicht die MAC-Adresse des Routers ist.
Der Computer, der das Paket gesendet hat, überprüft, ob sich die Ziel-IP des Pakets in seinem eigenen Netzwerk oder in demselben Netzwerk befindet, und wählt dann basierend darauf die relevante MAC-Adresse aus. Entweder die MAC-Adresse des Computers, für den sie bestimmt ist (wenn sich der Computer im selben Netzwerk befindet). Oder (wenn sich der Computer an einer anderen Schnittstelle des Routers befindet), ist dies die MAC-Adresse des Routers. Ich denke, das könnte den Titel Ihrer Frage ganz direkt beantworten, warum der Computer die Subnetzmaske kennen muss. Im TCP / IP-System wie es ist, wählt der Computer die relevante Schicht 2 aus Adresse zB für Ethernet die MAC-Adresse.
quelle
Der Computer / Gerät funktioniert verwenden , um die Subnetz - Maske , um die IP - Broadcast - Adresse zu berechnen.
IP-Schnittstellen, die sich nicht im Promiscuous-Modus befinden, sind so konfiguriert, dass sie sowohl auf die IP-Broadcast-Adresse als auch auf ihre eigene IP-Adresse reagieren.
quelle
Ich habe ein Konto erstellt, um dies zu beantworten, da ich denke, dass andere die Rolle einer Subnetzmaske verkomplizieren.
Die Subnetzmaske bestimmt, mit welchen anderen Computern in einem Netzwerk ein Host kommunizieren soll. Wenn sich ein Host außerhalb meines Subnetzes befindet, versuche ich, über mein Gateway mit diesem Computer zu kommunizieren. Befindet sich dieser Host in meinem Subnetz, spreche ich direkt mit diesem Host (kein Gateway erforderlich). Wenn ein Computer außerhalb des Subnetzes eines Hosts versucht, mit ihm zu kommunizieren, werden diese Pakete auf taube Ohren gestoßen und sofort verworfen.
Warum ist das für dich relevant? Wenn wir keine Netzmasken verwenden würden, müssten Sie (und JEDER andere Host, der mit dem DNS-Server von Google (8.8.8.8) kommuniziert) die physikalische Adresse (MAC-Adresse) kennen. Dies würde dazu führen, dass Ihr Computer und alle anderen Benutzer einen ARP-Eintrag für jeden Internetcomputer erstellen müssen, mit dem Sie sprechen. Dies würde Ihren Arbeitsspeicher verschwenden und das gesamte Netzwerk verlangsamen, da die physische Adresse von Computern viel weiter als erforderlich übergeben wird.
quelle