
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 der Router?
Ich könnte es verstehen, wenn alle Computer physisch über ein Kabel miteinander verbunden wären, aber alle Pakete müssen trotzdem über den Router gehen.
Nehmen wir an, ich habe einen Computer in einem Netzwerk 192.168.0.0/255.255.255.0
mit der IP 192.168.0.1
.
Wenn dieser Computer beispielsweise versucht, einen Computer außerhalb des Subnetzwerks zu erreichen, 192.168.1.1
überträgt er die Nachricht an den Router. Der Router erkennt, dass die IP außerhalb des IP-Bereichs des Subnetzwerks liegt, und überträgt sie nicht an das Subnetzwerk, sondern an das Netzwerk, mit dem er verbunden ist (möglicherweise ein anderer Router).
Antwort1
Ihre ursprünglichen Annahmen sind nicht ganz richtig. Was Sie als „Router“ bezeichnen, sind zwei Geräte in einem – ein Zwei-Port-Router, der intern mit einem Mehr-Port-Ethernet-Switch. (Hier ist ein BeispielDiagramm.)
Das bedeutet, dass die ComputerSinddirekt auf Schicht 2 verbunden und können Pakete untereinander sendenohneSie gehen durch den Routerkern – sie werden einfach vom Switch-Chip zwischen den Ports weitergeleitet. (Der Router hat seinen eigenen „Port“ im Switch.)
Wenn Sie sich die Pakete also mit Wireshark ansehen, werden Sie feststellen, dass sie direkt die MAC-Adressen der jeweils anderen verwenden, während „externe“ Pakete immer die MAC des Routers als Ziel haben.
(Ich gehe davon aus, dass Sie von den typischen „Wireless-Routern“ sprechen, die in den meisten Haushalten zu finden sind und die normalerweise Anlass für diese Art von Fragen sind. Ein größeres Netzwerk hätte eineseparateRouter mit einem Port pro Subnetz und einigen separaten Switches (vielleicht ein Master-Switch und einer pro Etage/Raum) sowie mehrere Dutzend Computer, die an diese Switches angeschlossen sind.)
Bei Wi-Fi-Netzwerken ist es ungefähr dasselbe, nur dass "Switch" durch "Wireless Bridge" bzw. "Access Point" ersetzt wird. In beiden Fällen können verbundene Computer auf Schicht 2 direkt Pakete aneinander senden.ohnegeht über den Router.
Kommentare:
Als ich Router sagte, meinte ich eigentlich Switch. Mein Fehler. Ich wollte damit sagen, dass die einzelnen Computer in einem Subnetz nicht miteinander verbunden sind, sondern mit einem Switch, der dann Pakete an das richtige Ziel weiterleiten kann. Ein Ethernet-Frame enthält die Subnetzmaske nicht, da der Switch diese bereits kennt und sie daher für die korrekte Umschaltung nicht benötigt.
Das ist wieder falsch. Switches haben dieses Wissen nicht; ihr Switching-Kern arbeitet auf Schicht 2 und weiß nichtirgendetwasüber IP – es leitet Ethernet-Frames ausschließlich basierend auf dem Feld „Ziel-MAC-Adresse“ weiter.
Daher benötigen Hosts die Subnetzmaske, um herauszufinden, welche MAC-Adresse sie als Ziel verwenden sollen:
Wenn sich der Peer im selben Subnetz befindet, wird davon ausgegangen, dass erauf Linkper Definition – daher hat der Ethernet-Frame die MAC des Peers als Ziel.
Für GleichaltrigedraußenDas Subnetz, der Ethernet-Frame hat dieGatewaysMAC als Ziel.
(Dies gilt für die Standardkonfiguration. Einige spezielle Snowflake-Netzwerke ändern dies – beispielsweise erlauben die meisten Betriebssysteme das Hinzufügen zusätzlicher „On-Link“-Routen für zusätzliche Subnetze; umgekehrt können einige Switches so konfiguriert sein, dass sie ARP-Antworten fälschen, sodass sogar „On-Link“-Verkehr durch das Gateway gezwungen wird.)
Antwort2
Wie erkennt ein Computer, ob einZieladressebefindet sich im selben Subnetz oder in einem anderen?
Überprüfen derlokale Adresseund dasSubnetzmaske.
Sehen wir uns ein paar Beispiele an:
Wenn mein Computer die IP hat 192.168.0.1
und die Maske ist, 255.0.0.0
bedeutet das, dass sich jede Adresse von 192.0.0.0
bis 192.255.255.255
im selben Subnetz befindet. Die Pakete an all diese anderen Computer müssen nicht über den Router gehen, sie können direkt gesendet werden. Senden Sie ein ARP-Paket, um die MAC-Adresse des Zielcomputers zu erhalten, und senden Sie dann das Paket.
Wenn mein Computer jedoch die IP-Adresse 192.168.0.1
und die Maske hat, 255.255.255.128
sind die Computer im selben Subnetz nur von der IP-Adresse 192.168.0.0
bis 192.168.0.127
erreichbar. Sie können direkt erreicht werden (ARP senden, MAC-Adresse finden usw.). Jede andere Adresse muss beispielsweise 192.168.0.200
über den Router erreicht werden.
Antwort3
Nicht offensichtlich ist, dass jedes IP-Gerätist selbst ein Router.
Dies kann auf einem normalen PC mit dem Befehl „route print“ angezeigt werden. Sie sind mit zwei Netzwerken verbunden: Ihrem lokalen Ethernet- oder WLAN-Segment und dem lokalen Host-Netzwerk. Für jedes Paket muss entschieden werden, in welches Netzwerk es gesendet wird.
Dies wird deutlicher, wenn Sie Ihren Computer in zwei Netzwerke einbinden, beispielsweise in ein „öffentliches“ und ein „privates“. Jetzt benötigen Sie unbedingt die Subnetzmaske, um zu entscheiden, in welches Netzwerk das Paket gesendet werden soll.
Viele Leute stellen zufällig fest, dass ein PC mit einer einzigen Netzwerkverbindung möglicherweise mit einer falsch konfigurierten Submaske funktioniert: Sie senden dann einfach alles an das Gateway.
Antwort4
TCP/IP hätte wie von Ihnen vorgeschlagen konzipiert werden können: Blattknoten würden alles an den Router senden und dieser würde es an das Ziel weiterleiten, 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 verbraucht: Jedes Paket zwischen Geräten im selben Subnetz muss zweimal übertragen werden: einmal vom Sender zum Router und noch einmal vom Router zum Empfänger. In Netzwerken, in denen der Router gleichzeitig der Netzwerk-Switch ist, ist dies eigentlich keine zusätzliche Bandbreite, da das Paket ohnehin durch den Switch laufen würde. Aber nicht alle Netzwerktechnologien funktionieren so. Das ursprüngliche Ethernet-Design war eine Bus-Technologie ohne zentralen Switch oder Repeater.
Dadurch wird der Router stärker belastet. Selbst wenn der Router gleichzeitig der Switch ist, ist dies etwas aufwändiger, da die Routing-Implementierung auf Layer 3 und nicht auf das einfachere Layer 2-Switching umgestellt werden muss.
Eine allgemeine Philosophie, die dem Design von TCP/IP zugrunde liegt, ist, dass Endknoten intelligente Geräte sind und daher davon ausgegangen wird, dass sie einen Teil der Arbeit selbst übernehmen können. Sie müssen nicht die gesamte Netzwerktopologie kennen wie Backbone-Router, aber sie wissen genug über die lokale Umgebung, um einen Teil der anfänglichen lokalen vs. Remote-Routing-Aufgabe zu übernehmen. Für die Implementierung dieses einfachen anfänglichen Routings ist nicht viel Code erforderlich.
Darüber hinaus befinden sich Geräte, die keine Router sind, nicht unbedingt in nur einem Subnetz. Sie können problemlos mehrere Netzwerkkarten in einem PC haben – viele haben sowohl Ethernet als auch WLAN. Und jede davon kann mit einem anderen Subnetz verbunden sein, und Adressen und Subnetzmasken werden verwendet, um zu bestimmen, welche Netzwerkkarte verwendet werden soll. Wenn Sie virtuelle Maschinen ausführen, gibt es wahrscheinlich ein virtuelles Subnetz, das sie mit dem Hostsystem verbindet.