Wie funktioniert das IPv4-Subnetting?


439

Dies ist eine kanonische Frage zu IPv4-Subnetzen.

Verbunden:

Wie funktioniert das Subnetting und wie machen Sie es von Hand oder in Ihrem Kopf? Kann jemand sowohl konzeptionell als auch an mehreren Beispielen erklären? Server Fault erhält eine Vielzahl von Subnetzfragen, sodass wir eine Antwort verwenden können, um sie auf Server Fault selbst zu verweisen.

  • Wie finde ich heraus, wie ich ein Netzwerk aufteilen kann?
  • Wenn ich eine Netzmaske bekomme, woher weiß ich, welche Reichweite das Netzwerk hat?
  • Manchmal folgt ein Schrägstrich, gefolgt von einer Zahl. Was ist diese Zahl?
  • Manchmal gibt es eine Subnetzmaske, aber auch eine Wildcard-Maske. Sie scheinen dasselbe zu sein, sind aber unterschiedlich.
  • Jemand hat etwas über das Wissen um Binärdateien erwähnt?

Diese zweiteilige Antwort erklärt alles, was Sie über die IPv4-Adressberechnung und mehr wissen wollten.
Ron Maupin

Antworten:


648

Es gibt IP-Subnetze, über die Router geeignete Ziele für Pakete auswählen können. Sie können IP-Subnetze verwenden, um größere Netzwerke aus logischen Gründen (Firewall usw.) oder aus physischen Gründen (kleinere Broadcast-Domänen usw.) aufzubrechen.

Einfach ausgedrückt, verwenden IP-Router Ihre IP-Subnetze, um Routing-Entscheidungen zu treffen. Verstehen Sie, wie diese Entscheidungen funktionieren und wie Sie IP-Subnetze planen.

Zählen bis 1

Wenn Sie die binäre Schreibweise (Basis 2) bereits fließend beherrschen, können Sie diesen Abschnitt überspringen.

Für diejenigen von euch, die noch übrig sind: Schande, dass ihr die binäre Notation nicht fließend beherrscht!

Ja - das kann ein bisschen hart sein. Es ist wirklich sehr einfach zu lernen, wie man Binärzahlen zählt und wie man Binärzahlen in Dezimalzahlen und zurück konvertiert. Sie sollten wirklich wissen, wie es geht.

Das Zählen in Binärdateien ist so einfach, weil Sie nur wissen müssen, wie man bis 1 zählt!

Denken Sie an den "Kilometerzähler" eines Autos, außer dass im Gegensatz zu einem herkömmlichen Kilometerzähler jede Ziffer nur bis zu 1 von 0 zählen kann. Wenn das Auto ab Werk frisch ist, zeigt der Kilometerzähler "00000000" an.

Wenn Sie Ihre erste Meile gefahren sind, zeigt der Kilometerzähler "00000001" an. So weit, ist es gut.

Wenn Sie Ihre zweite Meile gefahren sind, wird die erste Ziffer des Kilometerzählers auf "0" zurückgesetzt (da der Maximalwert "1" ist), und die zweite Ziffer des Kilometerzählers wird auf "1" zurückgesetzt, sodass der Kilometerzähler anzeigt. 00000010 ". Dies sieht aus wie die Zahl 10 in Dezimalschreibweise, aber es ist tatsächlich 2 (die Anzahl der Meilen, die Sie das Auto bisher gefahren haben) in Binärschreibweise.

Wenn Sie die dritte Meile gefahren sind, zeigt der Kilometerzähler "00000011" an, da sich die erste Ziffer des Kilometerzählers wieder dreht. Die Zahl "11" in Binärschreibweise entspricht der Dezimalzahl 3.

Wenn Sie Ihre vierte Meile gefahren sind, werden beide Ziffern (die am Ende der dritten Meile "1" lauteten) auf die Nullposition zurückgesetzt, und die dritte Ziffer wird auf die Position "1" hochgefahren. 00000100 ". Das ist die binäre Darstellung der Dezimalzahl 4.

Sie können sich all das merken, wenn Sie möchten, aber Sie müssen wirklich nur verstehen, wie der kleine Kilometerzähler "überrollt", wenn die Zahl, die er zählt, größer wird. Es ist genau das Gleiche wie bei einem herkömmlichen Dezimal-Kilometerzähler, außer dass bei unserem fiktiven "binären Kilometerzähler" jede Ziffer nur "0" oder "1" sein kann.

Um eine Dezimalzahl in eine Binärzahl umzuwandeln, können Sie den Kilometerzähler vorwärts tippen und laut zählen, bis Sie die Dezimalzahl, die Sie in eine Binärzahl umwandeln möchten, so oft gerollt haben. Was auch immer auf dem Kilometerzähler nach all dem Hin- und Herbewegen angezeigt wird, ist die binäre Darstellung der Dezimalzahl, bis zu der Sie gezählt haben.

Da Sie wissen, wie der Kilometerzähler vorwärts rollt, wissen Sie auch, wie er rückwärts rollt. Um eine auf dem Kilometerzähler angezeigte Binärzahl in eine Dezimalzahl umzuwandeln, können Sie den Kilometerzähler um jeweils einen Tick zurückdrehen und laut zählen, bis der Kilometerzähler "00000000" anzeigt. Nach all dem Zählen und Rollen ist die letzte Zahl, die Sie laut sagen, die Dezimalzahl der Binärzahl, mit der der Kilometerzähler begonnen hat.

Das Konvertieren von Werten zwischen binär und dezimal auf diese Weise wäre sehr mühsam. Sie könnten es tun, aber es wäre nicht sehr effizient. Es ist einfacher, einen kleinen Algorithmus zu lernen, um es schneller zu machen.

Ein kurzer Überblick: Jede Ziffer in einer Binärzahl wird als "Bit" bezeichnet. Das ist "b" von "binär" und "es" von "Ziffer". Ein Bit ist eine Binärziffer.

Das Konvertieren einer Binärzahl wie "1101011" in eine Dezimalzahl ist ein einfacher Vorgang mit einem praktischen kleinen Algorithmus.

Beginnen Sie, indem Sie die Anzahl der Bits in der Binärzahl zählen. In diesem Fall gibt es 7. Machen Sie 7 Unterteilungen auf einem Blatt Papier (in Ihrem Kopf, in einer Textdatei usw.) und beginnen Sie, diese von rechts nach links auszufüllen. Geben Sie ganz rechts die Zahl "1" ein, da wir immer mit "1" beginnen. Geben Sie im nächsten Feld links den doppelten Wert im Feld rechts ein (also "2" im nächsten Feld, "4" im nächsten Feld) und fahren Sie fort, bis alle Felder belegt sind. (Sie werden sich diese Zahlen merken, die die Potenzen von 2 sind, wenn Sie dies mehr und mehr tun. Ich habe bis zu 131.072 in meinem Kopf in Ordnung, aber ich brauche normalerweise einen Taschenrechner oder ein Papier danach).

Also solltest du folgendes auf deinem Papier in deinen kleinen Slots haben.

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

Übertragen Sie die Bits von der Binärzahl unter den Slots wie folgt:

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

Fügen Sie nun einige Symbole hinzu und berechnen Sie die Antwort auf das Problem:

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

Nach all den Berechnungen sollten Sie sich Folgendes einfallen lassen:

 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

Das ist alles. "1101011" in Dezimalzahl ist 107. Es sind nur einfache Schritte und einfache Berechnungen.

Das Konvertieren von Dezimalzahlen in Binärzahlen ist genauso einfach und entspricht dem gleichen grundlegenden Algorithmus, der in umgekehrter Reihenfolge ausgeführt wird.

Angenommen, wir möchten die Zahl 218 in eine Binärzahl umwandeln. Beginnen Sie rechts neben einem Blatt Papier mit der Zahl "1". Verdoppeln Sie nach links diesen Wert (also "2") und bewegen Sie sich weiter nach links, um den letzten Wert zu verdoppeln. Wenn die Zahl, die Sie schreiben möchten, größer ist als die Zahl, die konvertiert wird, beenden Sie das Schreiben. andernfalls verdoppeln Sie die vorherige Nummer und schreiben Sie weiter. (Das Konvertieren einer großen Zahl wie 34.157.216.092 in eine binäre Zahl mit diesem Algorithmus kann etwas mühsam sein, ist aber durchaus möglich.)

Also sollten Sie auf Ihrem Papier haben:

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

Sie haben bei 128 aufgehört, Zahlen zu schreiben, weil das Verdoppeln von 128, was 256 ergibt, größer ist als die Zahl, die konvertiert wird (218).

Schreiben Sie ab der ganz linken Zahl "218" darüber (128) und fragen Sie sich: "Ist 218 größer oder gleich 128?" Wenn die Antwort ja ist, kratzen Sie eine "1" unter "128". Schreiben Sie über "64" das Ergebnis von 218 minus 128 (90).

Fragen Sie sich bei "64": "Ist 90 größer oder gleich 64?" Sie schreiben also eine "1" unter "64", subtrahieren dann 64 von 90 und schreiben diese über "32" (26).

Wenn Sie jedoch zu "32" gelangen, stellen Sie fest, dass 32 nicht größer oder gleich 26 ist. In diesem Fall schreiben Sie eine "0" unter "32", und kopieren Sie die Zahl (26) von "32" nach "26". 16 "und fahren Sie dann fort, sich die gleiche Frage mit dem Rest der Zahlen zu stellen.

Wenn Sie fertig sind, sollten Sie Folgendes haben:

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

Die Zahlen oben sind nur Notizen, die bei der Berechnung verwendet werden und uns nicht viel bedeuten. Unten sehen Sie jedoch eine Binärzahl "11011010". Sicher genug, 218, konvertiert in binär, ist "11011010".

Mit diesen sehr einfachen Schritten können Sie Binärwerte in Dezimalwerte umwandeln und wieder zurück ohne einen Taschenrechner. Die Mathematik ist sehr einfach und die Regeln können mit ein wenig Übung auswendig gelernt werden.

Adressen aufteilen

Denken Sie an IP-Routing wie Pizza Delivery.

Wenn Sie gebeten werden, eine Pizza an die "123 Main Street" zu liefern, ist es Ihnen als Mensch sehr klar, dass Sie zu dem Gebäude mit der Nummer "123" in der Straße mit dem Namen "Main Street" gehen möchten. Es ist leicht zu erkennen, dass Sie zum 100-Block der Main Street gehen müssen, da die Hausnummer zwischen 100 und 199 liegt und die meisten Stadtblöcke in Hunderten nummeriert sind. Sie "wissen nur", wie Sie die Adresse aufteilen.

Router liefern Pakete, keine Pizza. Ihre Aufgabe ist die gleiche wie bei einem Pizzafahrer: Die Ladung (Pakete) so nah wie möglich an das Ziel zu bringen. Ein Router ist mit zwei oder mehr IP-Subnetzen verbunden (um überhaupt nützlich zu sein). Ein Router muss die Ziel-IP-Adressen von Paketen untersuchen und diese Zieladressen genau wie der Pizzatreiber in ihre Komponenten "Straßenname" und "Hausnummer" aufteilen, um Entscheidungen über die Zustellung zu treffen.

Jeder Computer (oder "Host") in einem IP-Netzwerk ist mit einer eindeutigen IP-Adresse und Subnetzmaske konfiguriert. Diese IP-Adresse kann in eine "Hausnummer" -Komponente (wie "123" im obigen Beispiel), die als "Host-ID" bezeichnet wird, und eine "Straßennamen" -Komponente (wie "Hauptstraße" im obigen Beispiel), die als "Hauptstraße" bezeichnet wird, unterteilt werden "Netzwerk ID". Für unser menschliches Auge ist es leicht zu erkennen, wo sich die Hausnummer und der Straßenname in der "123 Main Street" befinden, aber es ist schwieriger, diese Unterteilung in "10.13.216.41 mit einer Subnetzmaske von 255.255.192.0" zu erkennen.

IP-Router können IP-Adressen einfach in diese Komponenten aufteilen, um Routing-Entscheidungen zu treffen. Da das Verständnis der Weiterleitung von IP-Paketen von diesem Prozess abhängt, müssen wir auch wissen, wie IP-Adressen aufgeteilt werden. Glücklicherweise ist es ziemlich einfach, die Host-ID und die Netzwerk-ID aus einer IP-Adresse und einer Subnetzmaske zu extrahieren.

Beginnen Sie, indem Sie die IP-Adresse in Binärform schreiben (verwenden Sie einen Taschenrechner, wenn Sie dies noch nicht in Ihrem Kopf gelernt haben, aber machen Sie sich eine Notiz, wie es geht - es ist wirklich sehr, sehr einfach und beeindruckt das andere Geschlecht bei Parteien):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

Schreiben Sie die Subnetzmaske auch binär aus:

     255.     255.     192.       0
11111111.11111111.11000000.00000000

Nebeneinander geschrieben können Sie sehen, dass der Punkt in der Subnetzmaske, an dem die "1" anhält, an einem Punkt in der IP-Adresse ausgerichtet ist. Das ist der Punkt, an dem sich die Netzwerk-ID und die Host-ID teilen. Also in diesem Fall:

      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

Router verwenden die Subnetzmaske, um die durch Einsen in der IP-Adresse abgedeckten Bits "auszublenden" (wobei die nicht "ausgeblendeten" Bits durch Nullen ersetzt werden), um die Netzwerk-ID zu extrahieren:

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

Ebenso kann ein Router mithilfe der Subnetzmaske die von Nullen in der IP-Adresse abgedeckten Bits "maskieren" (indem er die nicht "maskierten" Bits wieder durch Nullen ersetzt), um die Host-ID zu extrahieren:

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

Für unser menschliches Auge ist es nicht so einfach, den "Bruch" zwischen der Netzwerk-ID und der Host-ID zu erkennen wie zwischen der "Hausnummer" und dem "Straßennamen" in den physischen Adressen während der Pizza-Lieferung, aber der ultimative Effekt ist der gleich.

Da Sie nun IP-Adressen und Subnetzmasken in Host-IDs und Netzwerk-IDs aufteilen können, können Sie IP-Adressen wie bei einem Router weiterleiten.

Mehr Terminologie

Sie werden Subnetzmasken sehen, die im gesamten Internet und im Rest dieser Antwort als (IP / Nummer) geschrieben sind. Diese Notation wird als "Classless Inter-Domain Routing" (CIDR) -Notation bezeichnet. "255.255.255.0" besteht zu Beginn aus 24 Bits von Einsen, und es ist schneller, dies als "/ 24" zu schreiben als als "255.255.255.0". Um eine CIDR-Zahl (wie "/ 16") in eine Punkt-Dezimal-Subnetzmaske umzuwandeln, schreiben Sie einfach diese Zahl von Einsen aus, teilen Sie sie in 8-Bit-Gruppen auf und konvertieren Sie sie in eine Dezimalzahl. (A "/ 16" ist beispielsweise "255.255.0.0".)

In den "alten Tagen" wurden Subnetzmasken nicht spezifiziert, sondern durch Betrachtung bestimmter Teile der IP-Adresse abgeleitet. Eine IP-Adresse, die beispielsweise mit 0 bis 127 beginnt, hatte eine implizite Subnetzmaske von 255.0.0.0 (eine IP-Adresse der Klasse A).

Diese impliziten Subnetzmasken werden heutzutage nicht mehr verwendet, und ich empfehle nicht, mehr darüber zu lernen, es sei denn, Sie haben das Unglück, mit sehr alten Geräten oder alten Protokollen (wie RIPv1) umzugehen, die keine klassenlose IP-Adressierung unterstützen. Ich werde diese "Adressenklassen" nicht weiter erwähnen, da sie heute nicht anwendbar sind und verwirrend sein können.

Einige Geräte verwenden eine Notation namens "Platzhaltermasken". Eine "Wildcard-Maske" ist nichts anderes als eine Subnetzmaske mit allen Nullen, bei denen es Einsen geben würde, und Einsen, bei denen es Nullen geben würde. Die "Wildcard-Maske" von a / 26 ist:

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

In der Regel werden "Platzhaltermasken" angezeigt, mit denen Host-IDs in Zugriffssteuerungslisten oder Firewall-Regeln abgeglichen werden. Wir werden hier nicht weiter darauf eingehen.

Wie ein Router funktioniert

Wie ich bereits sagte, haben IP-Router eine ähnliche Aufgabe wie ein Pizzaboten, da sie ihre Fracht (Pakete) an ihren Bestimmungsort bringen müssen. Wenn ein Paket für die Adresse 192.168.10.2 gebunden ist, muss ein IP-Router ermitteln, welche seiner Netzwerkschnittstellen das Paket am besten an sein Ziel bringt.

Angenommen, Sie sind ein IP-Router und Sie haben Schnittstellen mit einer Nummer verbunden:

  • Ethernet0 - 192.168.20.1, Subnetzmaske / 24
  • Ethernet1 - 192.168.10.1, Subnetzmaske / 24

Wenn Sie ein zuzustellendes Paket mit der Zieladresse "192.168.10.2" erhalten, können Sie (mit menschlichen Augen) leicht erkennen, dass das Paket über die Schnittstelle Ethernet1 gesendet werden soll, da die Adresse der Ethernet1-Schnittstelle dem Ziel des Pakets entspricht Adresse. Alle an die Ethernet1-Schnittstelle angeschlossenen Computer haben IP-Adressen, die mit "192.168.10." Beginnen, da die Netzwerk-ID der IP-Adresse, die Ihrer Ethernet1-Schnittstelle zugewiesen ist, "192.168.10.0" lautet.

Für einen Router wird bei dieser Routenauswahl eine Routing-Tabelle erstellt und diese Tabelle bei jeder Zustellung eines Pakets abgefragt. Eine Routing-Tabelle enthält die Namen der Netzwerk-ID und der Zielschnittstelle. Sie wissen bereits, wie Sie eine Netzwerk-ID aus einer IP-Adresse und einer Subnetzmaske abrufen können, und sind auf dem Weg zum Erstellen einer Routingtabelle. Hier ist unsere Routing-Tabelle für diesen Router:

  • Netzwerk-ID: 192.168.20.0 (11000000.10101000.00010100.00000000) - 24-Bit-Subnetzmaske - Schnittstelle Ethernet0
  • Netzwerk-ID: 192.168.10.0 (11000000.10101000.00001010.00000000) - 24-Bit-Subnetzmaske - Schnittstelle Ethernet1

Für unser eingehendes Paket, das für "192.168.10.2" gebunden ist, müssen wir nur die Adresse dieses Pakets in binär konvertieren (als Mensch - der Router erhält sie von Anfang an als binär) und versuchen, sie mit jeder Adresse in unserem Routing abzugleichen Tabelle (bis zur Anzahl der Bits in der Subnetzmaske), bis ein Eintrag gefunden wird.

  • Ziel des eingehenden Pakets: 11000000.10101000.00001010.00000010

Vergleichen Sie das mit den Einträgen in unserer Routing-Tabelle:

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)

Der Eintrag für Ethernet0 stimmt mit den ersten 19 Bit überein, hört dann aber auf, übereinzustimmen. Das heißt, es ist nicht die richtige Zielschnittstelle. Sie sehen, dass die Schnittstelle Ethernet1 mit 24 Bit der Zieladresse übereinstimmt. Ah, ha! Das Paket ist an die Schnittstelle Ethernet1 gebunden.

In einem echten Router wird die Routingtabelle so sortiert, dass die längsten Subnetzmasken zuerst (dh die spezifischsten Routen) und numerisch auf Übereinstimmungen überprüft werden, damit das Paket weitergeleitet werden kann, sobald eine Übereinstimmung gefunden wird Es sind keine weiteren Übereinstimmungsversuche erforderlich (dh 192.168.10.0 wird zuerst aufgeführt und 192.168.20.0 wird niemals überprüft). Hier vereinfachen wir das ein bisschen. Ausgefallene Datenstrukturen und Algorithmen machen IP-Router schneller, aber einfache Algorithmen führen zu denselben Ergebnissen.

Statische Routen

Bis zu diesem Punkt haben wir von einem hypothetischen Router gesprochen, bei dem Netzwerke direkt mit ihm verbunden sind. Offensichtlich funktioniert die Welt nicht so. In der Pizza-Fahr-Analogie darf der Fahrer manchmal nur die Rezeption betreten und muss die Pizza zur Auslieferung an den Endempfänger weitergeben (Unglauben aussetzen und mit mir verhandeln) Ich strecke meine Analogie bitte aus.

Rufen wir zunächst unseren Router aus den vorherigen Beispielen "Router A" auf. Sie kennen die Routing-Tabelle von RouterA bereits als:

  • Netzwerk-ID: 192.168.20.0 (11000000.10101000.00010100.00000000) - Subnetzmaske / 24 - Schnittstelle RouterA-Ethernet0
  • Netzwerk-ID: 192.168.10.0 (11000000.10101000.00001010.00000000) - Subnetzmaske / 24 - Schnittstelle RouterA-Ethernet1

Angenommen, es gibt einen anderen Router, "Router B", dessen Ethernet0- und Ethernet1-Schnittstellen die IP-Adressen 192.168.10.254/24 und 192.168.30.1/24 zugewiesen haben. Es hat die folgende Routing-Tabelle:

  • Netzwerk-ID: 192.168.10.0 (11000000.10101000.00001010.00000000) - Subnetzmaske / 24 - Schnittstelle RouterB-Ethernet0
  • Netzwerk-ID: 192.168.30.0 (11000000.10101000.00011110.00000000) - Subnetzmaske / 24 - Schnittstelle RouterB-Ethernet1

In der hübschen ASCII-Grafik sieht das Netzwerk folgendermaßen aus:

               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

Sie können sehen, dass Router B weiß, wie er in ein Netzwerk "gelangt", 192.168.30.0/24, und dass Router A nichts davon weiß.

Angenommen, ein PC mit der IP-Adresse 192.168.20.13, der an das mit der Ethernet0-Schnittstelle von Router A verbundene Netzwerk angeschlossen ist, sendet ein Paket zur Zustellung an Router A. Unser hypothetisches Paket ist für die IP-Adresse 192.168.30.46 bestimmt. Hierbei handelt es sich um ein Gerät, das an das an die Ethernet1-Schnittstelle von Router B angeschlossene Netzwerk angeschlossen ist.

Bei der oben gezeigten Routing-Tabelle stimmt keiner der Einträge in der Routing-Tabelle von Router A mit dem Ziel 192.168.30.46 überein, sodass Router A das Paket mit der Meldung "Zielnetzwerk nicht erreichbar" an den sendenden PC zurücksendet.

Um Router A auf das Vorhandensein des Netzwerks 192.168.30.0/24 aufmerksam zu machen, fügen Sie der Routing-Tabelle auf Router A den folgenden Eintrag hinzu:

  • Netzwerk-ID: 192.168.30.0 (11000000.10101000.00011110.00000000) - Subnetzmaske / 24 - Zugriff über 192.168.10.254

Auf diese Weise verfügt Router A über einen Routing-Tabelleneintrag, der dem Ziel 192.168.30.46 unseres Beispielpakets entspricht. Dieser Routing-Tabelleneintrag lautet effektiv "Wenn Sie ein Paket für 192.168.30.0/24 erhalten, senden Sie es an 192.168.10.254, da er weiß, wie er damit umgeht." Dies ist die analoge Aktion "Übergabe der Pizza an der Rezeption", die ich bereits erwähnt habe - Weitergabe des Pakets an jemanden, der weiß, wie er es näher an sein Ziel bringt.

Das Hinzufügen eines Eintrags zu einer Routingtabelle "von Hand" wird als Hinzufügen einer "statischen Route" bezeichnet.

Wenn Router B Pakete an das 192.168.20.0-Subnetzmasken-255.255.255.0-Netzwerk senden möchte, benötigt er auch einen Eintrag in seiner Routingtabelle:

  • Netzwerk-ID: 192.168.20.0 (11000000.10101000.00010100.00000000) - Subnetzmaske / 24 - Zugriff über: 192.168.10.1 (IP-Adresse von Router A im Netzwerk 192.168.10.0)

Dies würde einen Pfad für die Zustellung zwischen dem 192.168.30.0/24-Netzwerk und dem 192.168.20.0/24-Netzwerk über das 192.168.10.0/24-Netzwerk zwischen diesen Routern erstellen.

Sie möchten immer sicher sein, dass Router auf beiden Seiten eines solchen "Interstitial-Netzwerks" einen Routing-Tabelleneintrag für das "ferne" Netzwerk haben. Wenn Router B in unserem Beispiel keinen Routing-Tabelleneintrag für das "entfernte" Netzwerk 192.168.20.0/24 an Router A angeschlossen hätte , würde unser hypothetisches Paket vom PC unter 192.168.20.13 unter 192.168.30.46 zum Zielgerät gelangen. Jede Antwort, die 192.168.30.46 versuchte, zurückzusenden, würde von Router B als "Zielnetzwerk nicht erreichbar" zurückgegeben. Einwegkommunikation ist im Allgemeinen nicht wünschenswert. Denken Sie immer daran, dass der Datenverkehr in beide Richtungen fließt, wenn Sie an die Kommunikation in Computernetzwerken denken.

Sie können eine Menge Kilometer auf statischen Strecken fahren. Dynamische Routing-Protokolle wie EIGRP, RIP usw. sind eigentlich nichts anderes als eine Möglichkeit für Router, Routing-Informationen untereinander auszutauschen, die tatsächlich mit statischen Routen konfiguriert werden könnten. Ein großer Vorteil der Verwendung dynamischer Routing-Protokolle gegenüber statischen Routen besteht jedoch darin, dass dynamische Routing-Protokolle die Routing-Tabelle basierend auf den Netzwerkbedingungen (Bandbreitennutzung, Ausfall einer Schnittstelle usw.) und als solche dynamisch ändern können Das Routing-Protokoll kann zu einer Konfiguration führen, die Fehler oder Engpässe in der Netzwerkinfrastruktur umgeht. (Dynamische Routing-Protokolle liegen jedoch WEGWEISER außerhalb des Rahmens dieser Antwort.)

Sie können von hier aus nicht dorthin gelangen

Was passiert im Fall unseres Beispielrouters A, wenn ein für "172.16.31.92" gebundenes Paket eingeht?

Betrachten des Routers In einer Routingtabelle stimmen weder die Zielschnittstelle noch die statische Route mit den ersten 24 Bits von 172.18.31.92 überein (10101100.00010000.00011111.01011100, BTW).

Wie wir bereits wissen, würde Router A das Paket über eine Nachricht "Zielnetzwerk nicht erreichbar" an den Absender zurücksenden.

Angenommen, unter der Adresse "192.168.20.254" befindet sich ein anderer Router (Router C). Router C hat eine Verbindung zum 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

Es wäre schön, wenn Router A Pakete, die keiner lokalen Schnittstelle entsprechen, an Router C weiterleiten könnte, sodass Router C sie an das Internet weiterleiten kann. Geben Sie die Route "Standard-Gateway" ein.

Fügen Sie am Ende unserer Routing-Tabelle einen Eintrag wie folgt hinzu:

  • Netzwerk-ID: 0.0.0.0 (00000000.00000000.00000000000000) - Subnetzmaske / 0 - Zielrouter: 192.168.20.254

Wenn wir versuchen, "172.16.31.92" mit jedem Eintrag in der Routing-Tabelle abzugleichen, treffen wir am Ende diesen neuen Eintrag. Anfangs ist es etwas verwirrend. Wir wollen null Bits der Zieladresse mit ... Moment ... was abgleichen? Übereinstimmende Null-Bits? Wir suchen also überhaupt keine Übereinstimmung. In diesem Routing-Tabelleneintrag heißt es im Grunde: "Wenn Sie hier ankommen, anstatt auf die Zustellung zu verzichten, senden Sie das Paket unter 192.168.20.254 an den Router und lassen Sie ihn damit umgehen".

192.168.20.254 ist ein Ziel , wir SIE wissen , wie ein Paket zu liefern. Wenn wir mit einem Paket konfrontiert werden, das an ein Ziel gebunden ist, für das wir keinen spezifischen Routing-Tabelleneintrag haben, stimmt dieser "Standard-Gateway" -Eintrag immer überein (da er mit null Bits der Zieladresse übereinstimmt) und gibt uns einen "letzten Ausweg" -Platz, den wir können Pakete zur Zustellung senden. Manchmal wird das Standard-Gateway als "Gateway of Last Resort" bezeichnet.

Damit eine Standard-Gateway-Route wirksam wird, muss sie sich auf einen Router beziehen, der über die anderen Einträge in der Routing-Tabelle erreichbar ist. Wenn Sie beispielsweise in Router A versuchen, ein Standard-Gateway mit dem Wert 192.168.50.254 anzugeben, schlägt die Übermittlung an ein solches Standard-Gateway fehl. 192.168.50.254 ist keine Adresse, mit der Router A Pakete übermitteln kann, um eine der anderen Routen in seiner Routing-Tabelle zu verwenden. Daher wäre eine solche Adresse als Standard-Gateway ineffektiv. Dies kann kurz gesagt werden: Das Standard-Gateway muss auf eine Adresse eingestellt sein, die bereits über eine andere Route in der Routing-Tabelle erreichbar ist.

Echte Router speichern normalerweise das Standard-Gateway als letzte Route in ihrer Routing-Tabelle, sodass es mit Paketen übereinstimmt, nachdem sie nicht mit allen anderen Einträgen in der Tabelle übereinstimmen konnten.

Stadtplanung und IP-Routing

Die Aufteilung eines IP-Subnetzes in kleinere IP-Subnetze ist eine städtebauliche Angelegenheit. In der Stadtplanung wird die Zoneneinteilung verwendet, um sich an die natürlichen Gegebenheiten der Landschaft (Flüsse, Seen usw.) anzupassen, die Verkehrsströme zwischen verschiedenen Stadtteilen zu beeinflussen und verschiedene Arten der Flächennutzung (Industrie, Wohngebiete usw.) zu trennen. . IP-Subnetze sind im Grunde dasselbe.

Es gibt drei Hauptgründe, warum Sie ein Netzwerk subnetzen würden:

  • Möglicherweise möchten Sie über verschiedene Kommunikationsmedien hinweg kommunizieren. Wenn Sie eine T1-WAN-Verbindung zwischen zwei Gebäuden haben, können IP-Router an den Enden dieser Verbindungen platziert werden, um die Kommunikation über den T1 zu erleichtern. Die Netzwerke an jedem Ende (und möglicherweise das "Interstitial" -Netzwerk am T1 selbst) werden eindeutigen IP-Subnetzen zugewiesen, damit die Router entscheiden können, welcher Verkehr über die T1-Leitung gesendet werden soll.

  • In einem Ethernet-Netzwerk können Sie das Subnetz verwenden, um den Broadcast-Verkehr in einem bestimmten Teil des Netzwerks zu begrenzen. Protokolle auf Anwendungsebene nutzen die Broadcast-Funktion von Ethernet für sehr nützliche Zwecke. Da jedoch immer mehr Hosts in dasselbe Ethernet-Netzwerk gepackt werden, kann der Anteil des Broadcast-Verkehrs auf dem Kabel (oder der Luft im Wireless-Ethernet) so weit ansteigen, dass Probleme bei der Übermittlung von Nicht-Broadcast-Verkehr auftreten. (Früher konnte der Broadcast-Verkehr die CPU der Hosts überfordern, indem er sie dazu zwang, jedes Broadcast-Paket zu untersuchen. Das ist heute weniger wahrscheinlich.) Übermäßiger Datenverkehr auf Switched Ethernet kann auch in Form eines "Flutens von Frames zu unbekannten Zielen" auftreten. Dieser Zustand wird dadurch verursacht, dass ein Ethernet-Switch nicht in der Lage ist, jedes Ziel im Netzwerk zu verfolgen. Dies ist der Grund, warum Switched-Ethernet-Netzwerke nicht auf eine unbegrenzte Anzahl von Hosts skaliert werden können. Der Effekt des Flutens von Frames zu unbekannten Zielen ist ähnlich dem Effekt des übermäßigen Broadcast-Verkehrs zum Zwecke der Subnetzbildung.

  • Möglicherweise möchten Sie den Datenverkehr zwischen verschiedenen Hostgruppen "überwachen". Möglicherweise haben Sie Druckservergeräte und möchten nur autorisierte Druckwarteschlangenserver-Computer, um Aufträge an diese zu senden. Durch die Beschränkung des Datenverkehrs, der zum Subnetz des Druckservers fließen darf, können Benutzer ihren PC nicht so konfigurieren, dass er direkt mit den Druckservern kommuniziert, um die Druckabrechnung zu umgehen. Sie können die Druckservergeräte für sich allein in ein Subnetz stellen und im Router oder in der Firewall, die an dieses Subnetz angeschlossen sind, eine Regel erstellen, um die Liste der Hosts zu steuern, die Datenverkehr an die Druckservergeräte senden dürfen. (Sowohl Router als auch Firewalls können in der Regel anhand der Quell- und Zieladressen des Pakets entscheiden, wie oder ob ein Paket zugestellt werden soll. Firewalls sind in der Regel eine Unterart von Routern mit einer besessenen Persönlichkeit. Sie können sehr, sehr besorgt über die Nutzlast von Paketen sein, wohingegen Router in der Regel Nutzlasten ignorieren und nur die Pakete zustellen.)

Bei der Planung einer Stadt können Sie planen, wie sich Straßen kreuzen, und mithilfe von Einbahnstraßen, Einbahnstraßen und Sackgassen den Verkehrsfluss beeinflussen. Sie möchten vielleicht, dass die Hauptstraße 30 Blöcke lang ist und jeder Block bis zu 99 Gebäude enthält. Es ist ziemlich einfach, Ihre Straßennummerierung so zu planen, dass jeder Block in der Hauptstraße eine Reihe von Straßennummern aufweist, die für jeden Block um 100 erhöht werden. Es ist sehr einfach zu wissen, wie die "Startnummer" in jedem nachfolgenden Block lauten soll.

Bei der Planung von IP-Subnetzen müssen Sie die richtige Anzahl von Subnetzen (Straßen) mit der richtigen Anzahl von verfügbaren Host-IDs (Gebäudenummern) erstellen und Router verwenden, um die Subnetze miteinander zu verbinden (Kreuzungen). Regeln zu zulässigen Quell- und Zieladressen, die in den Routern angegeben sind, können den Verkehrsfluss weiter steuern. Firewalls können sich wie besessene Verkehrspolizisten verhalten.

Für die Zwecke dieser Antwort ist der Aufbau unserer Subnetze unser einziges Hauptanliegen. Anstatt wie bei der Stadtplanung mit Dezimalzahlen zu arbeiten, arbeiten Sie mit Binärzahlen, um die Grenzen der einzelnen Subnetze zu beschreiben.

Fortsetzung auf: Wie funktioniert das IPv4-Subnetting?

(Ja ... wir haben die maximale Größe einer Antwort (30000 Zeichen) erreicht.)


13
@Joseph: Es ist ein Vortrag, den ich zu oft zu meinem eigenen Besten gehalten habe. > smile <Ich schaue mir Ihren Binärteil an. Ich hasse es, über Mathematik zu unterrichten (was wirklich das ist, was das Verständnis von Binär ist - in Basis 2 zu zählen), weil ich nicht sehr gut darin bin.
Evan Anderson

2
Mein einziges Problem bei der Aufteilung der Antwort ist, dass man verstehen muss, warum Subnetze existieren (IP-Routing), bevor man verstehen kann, wie man ein IP-Netzwerk effektiv in Subnetze aufteilt. Ich habe noch nie einen guten Weg gefunden, um ein Thema für sich zu diskutieren. (Wirklich, das Entwerfen eines IP-Netzwerks mit VLSM ist eine Selbstverständlichkeit und "sinnvoll", nachdem Sie das IP-Routing verstanden haben ...)
Evan Anderson

28
Brechen Sie es nicht auf.
Joseph Kern

3
+1 für den umfassendsten Beitrag, den es je auf serverfault gab
Scott Lundberg

3
Nur für die Metapher des Kilometerzählers aufgewertet. Jetzt kann ich den Leuten erklären, wie binär funktioniert.
Phuzion

142

Fortsetzung von: Wie funktioniert das IPv4-Subnetting?

Ihr ISP teilt Ihnen den Bereich mit der Netzwerk-ID 192.168.40.0/24 (11000000.10101000.00101000.00000000). Sie wissen, dass Sie ein Firewall- / Router-Gerät verwenden möchten, um die Kommunikation zwischen verschiedenen Teilen Ihres Netzwerks (Servern, Client-Computern, Netzwerkgeräten) einzuschränken, und möchten daher diese verschiedenen Teile Ihres Netzwerks aufteilen in IP-Subnetze (zwischen denen das Firewall- / Router-Gerät dann routen kann).

Du hast:

  • 12 Server-Computer, aber Sie könnten bis zu 50% mehr bekommen
  • 9 Schalter
  • 97 Client-Computer, aber Sie könnten mehr bekommen

Was ist ein guter Weg, um 192.168.40.0/24 in diese Teile zu zerlegen?

Wenn Sie in Zweierpotenzen denken und mit einer größeren Anzahl möglicher Geräte arbeiten, können Sie sich Folgendes einfallen lassen:

  • 18 Server-Computer - Die zweitgrößte Potenz von zwei ist 32
  • 9 Schalter - Die zweitgrößte Potenz von zwei ist 16
  • 97 Client-Computer - Die zweitgrößte Potenz von zwei ist 128

In einem bestimmten IP-Subnetz sind zwei Adressen reserviert, die nicht als gültige Geräte-IP-Adressen verwendet werden können - die Adresse mit allen Nullen im Host-ID-Teil und die Adresse mit allen Einsen im Host-ID-Teil. Als solches ist für jedes gegebene IP-Subnetz die Anzahl der verfügbaren Hostadressen zwei hoch 32 minus der Anzahl der Bits in der Subnetzmaske minus 2. Im Fall von 192.168.40.0/24 ist dies also der Fall kann sehen, dass die Subnetzmaske 24 Bit hat. Damit bleiben 8 Bits für Host-IDs verfügbar. Wir wissen, dass 2 zur 8. Potenz 256 ist - was bedeutet, dass 256 mögliche Kombinationen von Bits in einen Schlitz passen, der 8 Bits breit ist. Da die Kombinationen "11111111" und "00000000" dieser 8 Bits für Host-IDs nicht zulässig sind, verbleiben 254 mögliche Hosts, die im Netzwerk 192.168.40.0/24 zugewiesen werden können.

Von diesen 254 Hosts scheinen wir die Client-Computer, Switches und Server-Computer in diesen Bereich einbauen zu können, oder? Lass es uns versuchen.

Sie haben 8 Bit Subnetzmaske zum "Spielen" (die restlichen 8 Bit der IP-Adresse 192.168.40.0/24 werden von der von Ihrem Internetdienstanbieter bereitgestellten Subnetzmaske nicht abgedeckt). Wir müssen eine Möglichkeit finden, diese 8 Bits zu verwenden, um eine Reihe eindeutiger Netzwerk-IDs zu erstellen, die die oben genannten Geräte aufnehmen können.

Beginnen Sie mit dem größten Netzwerk - den Client-Computern. Sie wissen, dass die nächstgrößere Potenz von zwei aus der Anzahl der möglichen Geräte 128 ist. Die Zahl 128 in binärer Form ist "10000000". Zum Glück passt dies in den 8-Bit-Steckplatz, den wir frei haben (wenn dies nicht der Fall wäre, wäre dies ein Hinweis darauf, dass unser Start-Subnetz zu klein ist, um alle unsere Geräte aufzunehmen).

Nehmen wir die von unserem Internetdienstanbieter bereitgestellte Netzwerk-ID und fügen ihr ein einzelnes Bit einer Subnetzmaske hinzu, die in zwei Netzwerke unterteilt wird:

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)

Schauen Sie sich das an, bis es Sinn macht. Wir haben die Subnetzmaske um ein Bit verlängert, sodass die Netzwerk-ID ein Bit abdeckt, das für die Host-ID verwendet worden wäre. Da dieses eine Bit entweder Null oder Eins sein kann, haben wir unser 192.168.40.0-Netzwerk effektiv in zwei Netzwerke aufgeteilt. Die erste gültige IP-Adresse im Netzwerk 192.168.40.0/25 ist die erste Host-ID mit einer "1" im Bit ganz rechts:

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

Der erste gültige Host im Netzwerk 192.168.40.128 ist ebenfalls die erste Host-ID mit einer "1" im Bit ganz rechts:

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

Der letzte gültige Host in jedem Netzwerk ist die Host-ID, wobei jedes Bit außer dem am weitesten rechts stehenden Bit auf "1" gesetzt ist:

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

Auf diese Weise haben wir ein Netzwerk geschaffen, das groß genug ist, um unsere Client-Computer aufzunehmen, und ein zweites Netzwerk, in dem wir dasselbe Prinzip anwenden können, um es in noch kleinere Netzwerke aufzuteilen. Machen wir uns eine Notiz:

  • Client-Computer - 192.168.40.0/25 - Gültige IP-Adressen: 192.168.40.1 - 192.168.40.126

Um nun das zweite Netzwerk für unsere Server und Switches zu zerstören, machen wir dasselbe.

Wir haben 12 Server-Computer, aber wir könnten bis zu 6 weitere kaufen. Planen wir 18, was uns die nächsthöhere Potenz von 2 als 32 lässt. In der Binärdarstellung ist 32 "100000", was 6 Bits lang ist. Wir haben noch 7 Bits Subnetzmaske in 192.168.40.128/25, also haben wir genug Bits, um weiterzuspielen. Durch Hinzufügen eines weiteren Teils der Subnetzmaske erhalten wir zwei weitere Netzwerke:

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

Jetzt haben wir also 192.168.40.128/25 in zwei weitere Netzwerke aufgeteilt, von denen jedes 26 Bit Subnetzmaske oder insgesamt 62 mögliche Host-IDs hat - 2 ^ (32 - 26) - 2.

Das bedeutet, dass diese beiden Netzwerke genügend Adressen für unsere Server und Switches haben! Machen wir uns Notizen:

  • Server - 192.168.40.128/26 - Gültige IP-Adressen: 192.168.40.129 - 192.168.40.190
  • Switches - 192.168.40.192/26 - Gültige IPs: 192.168.40.193 - 192.168.40.254

Diese Technik wird als VLSM (Variable-Length Subnet Masking) bezeichnet und führt bei ordnungsgemäßer Anwendung dazu, dass "Core-Router" kleinere Routingtabellen haben (durch einen als "Routenzusammenfassung" bezeichneten Prozess). Im Fall unseres ISP in diesem Beispiel wissen sie möglicherweise gar nicht, wie wir 192.168.40.0/24 subnettiert haben. Wenn in ihrem Router ein Paket für 192.168.40.206 (einer unserer Switches) gebunden ist, müssen sie es nur an unseren Router weiterleiten (da 192.168.40.206 mit der Netzwerk-ID und der Subnetzmaske 192.168.40.0/24 in der Routing-Tabelle ihres Routers übereinstimmt) ) und unser Router bringt es ans Ziel. Dies hält unsere Subnetzrouten von ihren Routingtabellen fern. (Ich vereinfache hier, aber Sie bekommen die Idee.)

Auf diese Weise können Sie sehr große geografische Netzwerke planen. Solange Sie im Vorfeld die richtige "Stadtplanung" durchführen (wobei Sie die Anzahl der Hosts in jedem Teilnetzwerk mit einiger Genauigkeit und mit Blick auf die Zukunft vorwegnehmen), können Sie eine große Routing-Hierarchie erstellen, die in den Kernroutern zusammengefasst wird "auf eine sehr kleine Anzahl von Strecken. Wie wir oben gesehen haben, führt die Routing-Tabelle eines Routers umso langsamer aus, je mehr Routen vorhanden sind. Das Entwerfen eines IP-Netzwerks mit VLSM und das Kleinhalten von Routingtabellen ist eine gute Sache.

Der Unrealismus der Beispiele

Die fiktive Welt in dieser Antwort ist offensichtlich fiktiv. In der Regel können Sie in modernen Ethernet-Switches Subnetze mit mehr als 254 Hosts einrichten (abhängig vom Verkehrsprofil). Wie bereits in Kommentaren erwähnt, stimmt die Verwendung von / 24-Netzwerken zwischen Routern nicht mit Real Life (tm) überein. Das sind nette Beispiele, aber es ist eine Verschwendung von Adressraum. In der Regel wird ein / 30- oder ein / 31 -Netzwerk ( Einzelheiten zur Arbeitsweise von / 31 finden Sie unter http://www.faqs.org/rfcs/rfc3021.html ) verwendet Verbindungen, die ausschließlich Punkt-zu-Punkt zwischen zwei Routern sind.


Kleiner Fehler: Der Code direkt nach "Der letzte gültige Host ..." wird wieder als "der erste gültige Host" bezeichnet. Ich nehme an, das sollte noch "last" heißen.
JoeCool1986

@ JoeCool1986 - Guter Fang.
Evan Anderson

2
Ich werde diese Antwort positiv bewerten, um sicherzustellen, dass zwei Antworten in der richtigen Reihenfolge sind.
l46kok

Auf dem Teil, auf dem Sie zwei Subnetze aus 192.168.40.128 erstellen und eine Netzwerk-ID von 192.168.40.192 erstellen, woher stammen die 192?
user6607

@ user6607 Subnetze werden rückwärts gezählt (ohne Lücken). Beispielsweise wird das erste Subnetz 0als dargestellt 00000000. Das zweite Subnetz ist 128so 10000000und das dritte Subnetz 192wird als 11000000usw. dargestellt. Zählen Sie einfach weiter rückwärts, um neue Subnetze zu finden.
Joseph Kern

76

Subnetz

Die Untervernetzung ist nicht schwierig, kann aber einschüchternd sein. Beginnen wir also mit dem einfachsten Schritt. Binär zählen lernen.

Binär

Binär ist ein Basis-2-Zählsystem. Bestehend aus nur zwei Zahlen (1 und 0). Die Zählung erfolgt auf diese Weise.

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)

Wenn Sie sich also vorstellen, dass jede 1 ein Platzhalter für einen Wert ist (alle Binärwerte sind Zweierpotenzen)

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

Also ... 100000 = 32. Und 10000000 = 128. UND 11111111 = 255.

Wenn ich sage "Ich habe eine Subnetzmaske von 255.255.255.0", meine ich wirklich "Ich habe eine Subnetzmaske von 11111111.11111111.111111.00000000". Wir verwenden Subnetze als Kurzform.

Die Punkte in der Adresse werden alle 8 Binärziffern (ein Oktett) getrennt. Aus diesem Grund wird IPv4 als 32-Bit-Adressraum (8 * 4) bezeichnet.

Warum ein Subnetz?

IPv4-Adressen (192.168.1.1) sind Mangelware. Durch das Sub-Netting können wir die Anzahl der verfügbaren Netzwerke (oder Hosts) erhöhen. Dies hat administrative und technische Gründe.

Jede IP-Adresse ist in zwei separate Teile unterteilt, das Netzwerk und den Host. Standardmäßig verwendet eine Adresse der Klasse C (192.168.1.1) die ersten 3 Oktette (192.168.1) für den Netzwerkteil der Adresse. und das 4. Oktett (.1) als Host-Teil.

Standardmäßig sehen eine IP-Adresse und eine Subnetzmaske für eine Adresse der Klasse C so aus

IP     192.168.1.1 
Subnet 255.255.255.0

In binären wie folgt

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Schauen Sie sich das binäre Beispiel noch einmal an. Beachten Sie, wie ich sagte, dass die ersten drei Oktette für das Netzwerk verwendet werden? Beachten Sie, wie der Netzwerkteil alle ist? Das ist alles, was ein Subnetz ist. Lassen Sie uns erweitern.

Vorausgesetzt, ich habe ein einzelnes Oktett für meinen Host-Teil (im obigen Beispiel). Ich kann NUR 256 Hosts haben (256 ist der Maximalwert eines Oktetts, gerechnet ab 0). Es gibt aber noch einen kleinen Trick: Sie müssen 2 Hostadressen von den verfügbaren (derzeit 256) subtrahieren. Die erste Adresse im Bereich ist für das Netzwerk (192.168.1.0) und die letzte Adresse im Bereich ist die Rundsendung (192.168.1.255). Sie haben also wirklich 254 verfügbare Adressen für Hosts in einem Netzwerk.

Eine Fallstudie

Nehmen wir an, ich habe Ihnen das folgende Stück Papier gegeben.

Create 4 networks with 192.168.1.0/24.

Werfen wir einen Blick darauf. Die / 24 heißt CIDR-Notation. Anstatt auf 255.255.255.0 zu verweisen, verweisen wir nur auf die Bits, die wir für das Netzwerk benötigen. In diesem Fall benötigen wir 24 Bit (3 * 8) von einer 32-Bit-Adresse. Schreiben Sie dies in binärer Form

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

Als nächstes müssen wir herausfinden, wie viele Subnetze wir benötigen. Sieht aus wie 4. Da wir mehr Netzwerke erstellen müssen (derzeit haben wir nur ein Netzwerk), können wir einige Bits umdrehen

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

Nachdem wir uns für eine / 26 entschieden haben, beginnen wir mit der Zuweisung von Hosts. Eine kleine einfache Rechnung:

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

Wir müssen in jedem Netzwerk 6 Bit für Hosts zuweisen. Denken Sie daran, dass wir für jedes Netzwerk 2 subtrahieren müssen.

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

Jetzt müssen wir herausfinden, wohin die Gastgeber gehen. Zurück zur Binärdatei!

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 ...

Auf diese Weise können Sie das gesamte Subnetz berechnen.

Platzhalter Eine Platzhaltermaske ist eine invertierte Subnetzmaske.

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

Des Weiteren

Google für die Begriffe "Super-Netting" und "VLSM (Variable Length Subnet Mask)" für weiterführende Themen.

Ich kann jetzt sehen, dass ich zu lange gebraucht habe, um zu antworten ... seufz


1
"Vorausgesetzt, ich habe ein einzelnes Oktett für meinen Host-Teil (im obigen Beispiel). Ich kann NUR 255 Hosts haben (255 ist der Maximalwert eines Oktetts). Aber es gibt noch einen kleinen Trick: Sie müssen 2 Host-Adressen subtrahieren Von den verfügbaren Adressen (derzeit 255) ist die erste Adresse im Bereich für das Netzwerk (192.168.1.0) und die letzte Adresse im Bereich für die Übertragung (192.168.1.255) Hosts in einem Netzwerk. "... Das ist falsch.
Joeqwerty

1
Es gibt 256 mögliche Werte für das Oktett: 0 bis 255, für insgesamt 256. 256 -2 (Netzwerk- und Broadcast-Adressen) = 254 mögliche Host-Adressen.
Joeqwerty

Hoppla. Vielen Dank! :-) Ich habe keine Ahnung, wie ich das geschafft habe.
Joseph Kern

1
-1 Es tut uns leid, aber seit RFC 1519 im Jahr 1993 gab es keine "Klassen" mehr. Niemand sollte über sie außerhalb eines historischen Kontexts sprechen. Sie sind verwirrend und verursachen viele Missverständnisse.
Chris S

Chris, Sie haben wahrscheinlich Recht, aber der Unterricht wurde noch bis in die frühen 2000er Jahre in den CCNA- und den meisten Grundkursen unterrichtet.
Joseph Kern

34

Eine kurze Geschichtsstunde: Ursprünglich wurden Unicast-IPv4-Adressen in drei Klassen mit jeweils einer zugeordneten "Standard" -Maskenlänge (als klassenbezogene Subnetzmaske bezeichnet) unterteilt.

  • Klasse A: Alles im Bereich 1.0.0.0 -> 127.255.255.255. Klassische Subnetzmaske von 255.0.0.0 (/ 8 in CIDR-Notation)
  • Klasse B: Alles im Bereich von 128.0.0.0 -> 191.255.255.255. Klassische Subnetzmaske von 255.255.0.0 (/ 16 in CIDR-Notation)
  • Klasse C: Alles im Bereich von 192.0.0.0 -> 223.255.255.255. Klassische Subnetzmaske von 255.255.255.0 (/ 24 in CIDR-Notation)

Die Idee war, dass Organisationen unterschiedlicher Größe eine andere Klasse von IP-Adressen zugewiesen bekommen, um den IP-Adressraum effizient zu nutzen.

Mit dem Wachstum der IP-Netzwerke wurde jedoch klar, dass dieser Ansatz seine Probleme hatte. Um nur drei zu nennen:

In einer classful Welt, alle Subnetze hatten eine Maske von / 8 haben, / 16 oder / 24. Dies bedeutete, dass das kleinste Subnetz, das konfiguriert werden konnte, ein / 24-Netzwerk war, das 254 Hostadressen zuließ (.0 und .255 wurden als Netzwerk- bzw. Broadcastadressen reserviert). Dies war eine enorme Verschwendung, insbesondere bei Punkt-zu-Punkt-Verbindungen mit nur zwei daran angeschlossenen Routern.

Auch nachdem diese Einschränkung aufgehoben wurde, kündigten frühere Routing-Protokolle (z. B. RIPv1 ) die mit einem IP-Präfix verknüpfte Maskenlänge nicht an. Ohne eine bestimmte Maske würde entweder die Maske einer direkt verbundenen Schnittstelle im selben klassifizierten Netzwerk verwendet oder auf die Verwendung der klassifizierten Maske zurückgegriffen. Wenn Sie beispielsweise das Netzwerk 172.16.0.0 für Verbindungen zwischen Routern mit / 30-Masken verwenden möchten, müssen alle Subnetze von 172.16.0.0 - 172.16.255.255 über eine / 30-Maske verfügen (16384 Subnetze mit jeweils 2 verwendbaren IPs) ).

Die Routing-Tabellen von Internet-Routern fingen an, immer mehr Speicherplatz in Anspruch zu nehmen. Dies war / ist als "Routing-Tabellen-Explosion" bekannt. Wenn ein Anbieter beispielsweise 16 zusammenhängende / 24 Netze hätte, müsste er alle 16 Präfixe anstelle einer einzigen Zusammenfassung, die den gesamten Bereich abdeckt, bekannt machen.

Zwei damit verbundene Verbesserungen haben es uns ermöglicht, die oben genannten Einschränkungen zu überschreiten.

  1. Subnetzmasken variabler Länge (VLSM)
  2. CIDR (Classless Inter Domain Routing)

VLSM bezieht sich auf die Fähigkeit eines Routing-Protokolls, verschiedene Subnetzmasken innerhalb desselben klassifizierten Netzwerks zu unterstützen. Zum Beispiel:

192.168.1.0/24

Könnte aufgeteilt werden in:

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

Dies ermöglichte eine effizientere Nutzung des Adressraums. Subnetze könnten für die Anzahl der an sie angeschlossenen Hosts / Router richtig dimensioniert sein.

CIDR verwendet VLSM und erweitert es in die andere Richtung. Zusätzlich zur Aufteilung eines einzelnen klassifizierten Netzwerks in kleinere Subnetze ermöglicht CIDR die Zusammenfassung mehrerer klassifizierter Netzwerke zu einer einzigen Zusammenfassung. Zum Beispiel die folgenden Netze der Klasse B (/ 16):

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

Kann mit einem Präfix zusammengefasst werden:

172.16.0.0/14

In Bezug auf das Subnetz: Eine Subnetzmaske ist 32 Bit lang. Die Maskenlänge gibt an, wie viele Bits den Netzwerkteil der Adresse identifizieren. Zum Beispiel:

10.1.1.0/24
  • Die klassenbezogene Subnetzmaske ist / 8
  • Die tatsächliche Subnetzmaske ist / 24
  • 16 Bits (24-8) wurden für die Verwendung von Teilnetzen "entlehnt".

Dies bedeutet, dass sich unter der Annahme, dass das gesamte 10.0.0.0/8-Netzwerk in / 24s unterteilt ist, 65536 (2 ^ 16) Subnetze in diesem Bereich befinden. (Dies setzt voraus, dass die von Ihnen verwendete Plattform die Subnetznummern 0 und 255 unterstützt. Siehe IP-Subnetz Null von Cisco).

Es verbleiben noch 8 Bits im "Host-Teil" der Adresse. Dies bedeutet, dass 256 IP-Adressen verfügbar sind (2 ^ 8), von denen 2 reserviert sind (10.1.1.0 ist die Netzwerkadresse, 10.1.1.255 ist die Subnetz-gerichtete Broadcast-Adresse). Damit bleiben 254 verwendbare IP-Adressen in diesem Subnetz. ((2 ^ 8) - 2)


4
Es gab tatsächlich 5 Klassen.
Dbasnett

5
Stimmt, aber müssen wir uns wirklich mit Multicast- und reservierter Klasse-E-Adressierung befassen, um eine Frage zur Einführung in das Subnetz zu beantworten? :)
Murali Suriar

2
Du hast die Geschichte in eine Intro-Frage gebracht ... Dann hast du sie unvollständig gelassen. Nicht sicher, was schlimmer ist.
Chris S

7

Netzwerkbereiche: Auf Netzwerke wird immer mit zwei Zahlen verwiesen: eine zur Ermittlung des Netzwerks und eine andere zur Ermittlung des Computers (oder Hosts) in diesem Netzwerk. Da jede Netzwerkadresse 32 Bit lang ist, müssen beide Zahlen in diese 32 Bit passen.

Die Netzwerknummerierung ist wichtig, da diese von ICANN ausgegeben wird, wenn Sie nach einem Netzwerk-IP-Bereich fragen. Wenn wir es nicht hätten, könnte niemand den Unterschied zwischen meinem Netzwerk und AT & Ts erkennen. Während diese Nummern eindeutig sein müssen, möchte niemand anderen den Hosts in meinem Netzwerk Nummern zuweisen. Daher die Aufteilung - der erste Teil wird von den Netzwerkleuten verwaltet, der zweite Teil ist ganz von mir und kann an die von mir gewünschten Maschinen weitergegeben werden.

Die Netzwerknummer ist nicht auf eine bestimmte Anzahl von Bits festgelegt. Wenn ich beispielsweise nur 200 Computer verwalten müsste, wäre ich mit einer Netzwerknummer, die 24 Bits verwendet, vollkommen zufrieden, sodass mir nur 8 Bits zur Verfügung stehen - das reicht für bis zu 255 Hosts. Da die Netzwerknummer 24 Bit verwendet, können wir viele davon haben, was bedeutet, dass viele Leute ihre eigenen Netzwerke haben können.

In der Vergangenheit wurde dies als Klasse-C-Netzwerk bezeichnet. (Klasse B verwendete 16 Bits für die Netzwerknummer, und Klasse A verwendete 8 Bits, sodass nur wenige Netzwerke der Klasse A vorhanden sind).

Heutzutage ist diese Namenskonvention aus der Mode gekommen. Es wurde durch das Konzept CIDR ersetzt. CIDR gibt die Anzahl der Bits für Ihre Hosts nach dem Schrägstrich explizit an. Mein Beispiel oben (Klasse C) wird jetzt als CIDR / 24 bezeichnet.

Dies gibt uns etwas mehr Flexibilität. Wenn ich zuvor 300 Hosts verwalten müsste, bräuchte ich ein Klasse-B-Netzwerk! Jetzt kann ich nur eine / 23-CIDR bekommen, also habe ich 9 Bits für mich und 23 Bits für die Netzwerknummer. ICANN hat diese Art von Netzwerken möglicherweise nicht aus, aber wenn ich über ein internes Netzwerk verfüge oder ein Teilnetzwerk von einem ISP miete, ist dies einfacher zu verwalten - zumal alle ihre Kunden eine / 29 erhalten können (ohne mich zu verlassen). 3 Bit oder maximal 8 Maschinen), wodurch mehr Personen ihre eigene kleine Scheibe der verfügbaren IP-Adressen haben können. Bis wir IPv6 bekommen, ist dies ziemlich wichtig.


Allerdings ... obwohl ich weiß, dass ein / 24-CIDR dem alten Klasse-C-Netzwerk entspricht und ein / 16 der Klasse B und ein / 8 der Klasse A entspricht ... bin ich immer noch ratlos beim Versuch, einen / 22-Zoll-Wert zu berechnen mein Kopf. Zum Glück gibt es Tools, die dies für mich tun :)

Wenn Sie jedoch wissen, dass a / 24 8 Bit für Hosts (und 24 Bit für Netzwerke) ist, weiß ich, dass mir a / 23 ein zusätzliches Bit gibt, das die Anzahl der Hosts verdoppelt.


-1 Leider ist es heutzutage unangemessen, Klassen außerhalb eines "historischen" Bezugspunkts zu erwähnen. Sie sind nicht "aus der Mode gekommen", sondern wurden 1993 von RFC 1519 offiziell als veraltet eingestuft. Sie sind wie alle anderen verwirrend und verursachen eine Reihe von Missverständnissen.
Chris S

Einige Implementierungen von dynamischen Routing-Protokollen lassen sich über Klassengrenzen hinweg zusammenfassen. Daher ist es immer noch hilfreich, sie zu kennen.
Ben

5

Ich werde einige verwandte Fragen auf dem Weg stellen und beantworten:

  • Warum siehst du 255.255.255.0so oft?
  • Warum 192.168.0.1?
  • Warum 127.0.0.1?

Warum so seltsame Zahlen - 255, 192, 168, 127?


8 + 8 + 8 + 8-Bit-Dezimalpunkt

Internetadressen wie 194.60.38.10 verwenden die Punkt -Dezimal-Notation , um 32 Bits in 8 + 8 + 8 + 8 Bits aufzuteilen. Dezimalschreibweise Umwandlungseinrichtung jede Zahl in binären dann links Klotzen mit 0‚s.

Zum Beispiel .60.→ 60 = 32 + 16 + 8 + 4 → 111100.00111100..

So ist 194.60.38.10 für die 4 × 8 = 32-Bit-Adresse punktiert 11000010.00111100.00100110.00001010, da 38 → 100110, 10 → 1010und so weiter. 194 erfordert alle 8 Bits; Der Rest ist gepolstert.

gepolstert

Wenn Sie über 255, 192 und 127 in 8-Bit-Binärdaten nachdenken, können Sie leichter verstehen, warum bestimmte Dezimalzahlen so häufig vorkommen:

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

Diese Dezimalzahlen repräsentieren visuell praktische 8-Bit-Blöcke wie ■■■■■■■■, ■ □□□□□□ und □ ■■■■■■■. Sie haben also aufgrund der 8-Bit-Grenze noch nie 256 = 2⁹ gesehen, und 127 = 128−1 = 2⁸ − 1 ist der Bit-Flip einer Zweierpotenz - und Zweierpotenzen sind 10………00000in binär.

  • 168 = 10101000

Subnetzmasken: Was mir gehört, gehört mir + Was dir gehört, gehört dir

Subnetzmasken unterteilen dann jede 32-Bit-Internetadresse in eine Netzwerk-ID und eine Host-ID. Während Internetadressen eine beliebige Mischung aus Einsen und Nullen aufweisen können, beginnen Subnetzmasken nur mit Einsen und enden nur mit Nullen.

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

Das Verdunkeln der ersten 8 + 8 + 8 = 24 Bits und das Ausblenden der letzten 8 Bits ist eine Möglichkeit, die IP ■■ zu teilen ■ □ | □□□□ ■ □ ■ □ in zwei Teile:

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

Wenn der Subnetzbesitzer (z. B. OmniCorp ) mehr interne IPs haben möchte, könnte er mehr (z. B. 8 + 8 = 16 Bit) von der rechten Seite des Netzwerks kaufen, wie folgt:

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

Offensichtlich gibt es einen Kompromiss innerhalb des 32-Bit = 2³² = 4 294 967 296-Optionsadressraums: Wenn Sie mehr Netzwerk-IDs (linke Seite) kaufen, müssen Ihrem internen Netzwerk mehr Host-IDs (rechte Seite) zugewiesen werden.

Billigleute haben daher eine Subnetzmaske von

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

Auch billigere Leute haben

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

oder 255.255.255.192 = ■■■■■■■ | ■■■■■■■■ | ■■■■■■■ | ■■ □□□□□□.

Laut Folklore war es eigentlich nicht Roger Miller, sondern ein niedriger Systemadministrator mit einer 255.255.255.254-Maske, der ursprünglich King of the Road schrieb und „Ich habe kein großes Subnetz“ durch „Ich habe keine Zigaretten“ ersetzte ”.

Ich rauche meine Zigaretten bis zum Hintern

(Warum sind die Masken der Geringfügigen mit so hohen Zahlen gefüllt? Denn wie Millers Erzähler zählen Subnetzmasken alle Dinge, die Sie nicht haben.)


Was bedeutet der abschließende Schrägstrich nach einer IP? (z. B. 194.60.38.10/24)

Da Subnetzmasken (die "ihre" von "unsere" trennen) immer mit 1"s " beginnen und wir es hassen, Zweierpotenzen zu addieren, noch mehr als wir es hassen, die Zweierpotenzen überhaupt zu berechnen, hat jemand erfunden CIDR (der Schrägstrich nach einer IP).

194.60.38.10/24 bedeutet "die Submaske hat 24 Einsen, der Rest sind Nullen", also

■■■■■■■■ | ■■■■■■■■■■■■■■■■ | □□□□□□□ mit 8 + 8 + 8 Bits, die zu „ihnen“ gehören, und 8 Bits Zugehörigkeit zu "uns".

Umkehren der Hymne des Hobos oben,

  • /31 ist der Songwriter
  • /24ist bürgerlich ( 255.255.255.0= ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■ | □□□□□□□□□
  • /16 ist reich ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ | □□□□□□□
  • /8 ist superreich ■■■■■■■■ | □□□□□□□□ | □□□□□□□ | □□□□□□□□
  • /1oder /0wäre die IANA oder so.





† Verwenden Sie bc -l; obase=10; 60zum Beispiel.


In welchem ​​Verhältnis zur Antwort stehen die Bilder darin? Ist es nur um die Antwort zu fokussieren? :)
simhumileco

4

Während das oben Genannte korrekt ist (Entschuldigung, TL; DR), bereitet die Berechnung von Subnetzen vielen Netzwerkadministratoren immer noch große Sorgen. Tatsächlich gibt es eine sehr einfache Methode zur Subnetzberechnung. Sie können den größten Teil davon in Ihrem Kopf ausführen, und Sie müssen sich nur sehr wenig merken. Für die meisten Anwendungen ist es nicht einmal erforderlich, die Binärdarstellung zu verstehen, obwohl dies für ein umfassendes Verständnis der Teilnetze hilfreich ist. Hier werde ich nur IPv4 diskutieren; IPv6 liegt außerhalb des Rahmens dieser Diskussion.

Merk dir das:

Es sind drei wichtige Dinge zu beachten: Alle Subnetze basieren auf Zweierpotenzen, und es gibt zwei Schlüsselnummern: 256 und 32. Dazu später mehr.

Schauen wir uns zunächst eine Tabelle mit Potenzen von 2 an:

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

Die Berechnung der Potenzen von 2 ist einfach: Jede ganzzahlige Erhöhung der Potenz verdoppelt das Ergebnis. 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16 und so weiter. Die Gesamtzahl der Adressen in einem Subnetz muss immer eine Zweierpotenz sein .

Da jedes Oktett eines IPv4-Subnetzes auf 256 steigt, ist 256 eine sehr wichtige Zahl und bildet die Grundlage für den Rest der Mathematik.

Größe des Subnetzes

Wir beginnen mit einer einfachen Frage: "Wie viele Adressen in einem Subnetz, wenn die Maske 255.255.255.248 ist?" Wir werden die ersten drei Oktette zunächst ignorieren und uns die letzten ansehen. So einfach ist das: Subtrahieren Sie 248 von 256. 256 minus 248 entspricht 8. Es sind 8 Adressen verfügbar (einschließlich der Netzwerk- und Broadcast-Adressen). Das Gegenteil funktioniert auch: "Wenn ich ein Subnetz mit 16 Adressen haben möchte, wie lautet die Subnetzmaske?" 256 minus 16 entspricht 240. Die Subnetzmaske lautet 255.255.255.248.

Wenn wir nun über 256 Adressen hinaus expandieren wollen (historisch gesehen eine "Klasse C"), wird es nur ein kleines bisschen komplizierter: Wenn unser letztes Oktett 0 ist und unser drittes Oktett beispielsweise 240 ist (255.255.240.0), dann Wir rechnen im dritten Oktett und stellen fest, dass es 16 Adressen geben würde. Also multiplizieren wir 16 mit 256 (die Anzahl der Adressen im letzten Oktett), um 4.096 zu erhalten. Wenn beide letzten beiden Oktette 0 sind (z. B. 255.240.0.0), dann nehmen wir das Subtraktionsergebnis vom zweiten Oktett (wir sagen, es ist wieder 16), multiplizieren aber 256 (Adressen im dritten Oktett), multiplizieren erneut mit 256 (Adressen im letzten Oktett), um 1.048.576 Adressen zu erhalten. So einfach ist das! (Okay, das Gegenteil ist etwas schwieriger. Wenn wir ein Subnetz mit 1.048.576 Adressen wollen, müssen wir diese Zahl ein paarmal durch 256 dividieren, um eine Zahl zu erhalten, die wir von 256 subtrahieren können.)

Netzwerkadresse

Nachdem wir nun wissen, wie die Subnetzmaske berechnet wird, wie ermitteln wir die Netzwerkadresse? Das ist ganz einfach: Es ist immer ein Vielfaches der Anzahl der Adressen in unserem Subnetz. Wenn wir also 16 Adressen in unserem Subnetz haben, sind die möglichen Netzwerkadressen 0, 16, 32, 48, 64 usw. bis 240. (Beachten Sie, dass 0 ein gültiges Vielfaches jeder Zahl ist, wie jede Zahl multipliziert mit 0 entspricht 0.)

Und natürlich ist die Broadcast-Adresse die letzte Adresse im Gültigkeitsbereich. Wenn wir also 16 Adressen in unserem Subnetz haben und eine Netzwerkadresse von 10.3.54.64 gewählt haben, lautet die Broadcast-Adresse (64 + 16-1 = 79) 10.3.54.79.

CIDR-Notation

Wie wäre es mit der CIDR-Notation? Wie lässt sich das in und aus einer IPv4-Subnetzmaske übersetzen?

Erinnern Sie sich an unsere Kräfte von zwei? Nun müssen wir uns neben 256: 32 noch eine weitere Schlüsselnummer merken. Denken Sie daran, die CIDR-Notation beschreibt die Anzahl der signifikanten Bits in der IPv4-Adresse, und es gibt 32 Bits in einer IPv4-Adresse, 8 für jedes Oktett. Wenn wir also eine Subnetzmaske von 255.255.255.240 haben, sind das 16 Adressen. Wenn wir uns unsere obige Tabelle "Potenzen von 2" ansehen, sehen wir, dass 16 zwei zur vierten Potenz (2 ^ 4) ist. Also subtrahieren wir diese Potenzzahl - 4 - von 32 und erhalten 28. Unsere CIDR-Notation für eine Subnetzmaske von 255.255.255.240, unsere CIDR-Notation ist / 28.

Und wenn wir eine CIDR von / 28 erhalten, subtrahieren wir diese (28) von 32, um 4 zu erhalten; Erhöhe 2 auf die (4.) Potenz (2 ^ 4), um 16 zu erhalten. dann subtrahiere (16) von 256, um 240 zu erhalten; oder 255.255.255.240.


danke. Aber ich bin immer noch unsicher, wie der PC die Subnetzmaske verwendet. Wenn eine Anwendung auf einem PC Daten senden möchte, kapselt sie diese in ein Paket. Bestimmt die Subnetzmaske, wie ein Paket gekapselt wird? Wenn der PC beispielsweise ein Paket im lokalen Netz senden möchte, verwendet er einen Ethernet-Frame ( en.wikipedia.org/wiki/Ethernet_frame) und außerhalb des Netzwerks ein TCP-Paket ( en.wikipedia.org/wiki) /… ?
Aquagremlin

Grundsätzlich weiß ich nicht, wie ein PC bestimmt, wohin seine Daten gesendet werden sollen. Das Ethernet-Netzwerk ist wie ein Bus - es geht überall hin. Das Ausgeben eines Pakets über die Ethernet-Buchse eines PCs ist ein generisches Ereignis. Daher muss das Paket selbst bestimmen, wer darauf reagiert. Ein Paket, das von einem lokalen Gerät (Switch oder anderem PC im LAN) abgeholt werden soll, muss anders aussehen als ein Paket, das von einem Router abgeholt wird.
Aquagremlin

Dies geschieht auf einer Ebene unterhalb von TCP. Jedes Gerät verfügt über eine Hardware-Adresse (MAC), die einer IP-Adresse in der ARP-Tabelle jedes Geräts zugeordnet ist. Dies wird durch Entdeckung aufgebaut. Wenn ein Paket für einen Host im lokalen Netzwerk bestimmt ist, ist es mit dem MAC für das Zielgerät gekennzeichnet. Wenn ein Paket für einen Remote-Host bestimmt ist, ist es mit dem MAC für den Router im lokalen Netzwerk gekennzeichnet. Beim Durchlaufen des Routers wird der MAC entfernt und anschließend mit dem MAC des nächsten Hop-Routers versehen. Das Subnetz definiert lediglich den Umfang des lokalen Netzwerks. (Das ist die einfache Version mit <500 Zeichen.)
Jonathan J

2

Ich bin auch der Meinung, dass NATs zumindest erwähnt werden sollten, da sie in modernen Netzwerken unter anderem aufgrund der Erschöpfung der IPv4-Adressen anstelle von Subnetzen so häufig verwendet werden. (Als ich zum ersten Mal etwas über Subnetze erfuhr, war ich sehr verwirrt darüber, wie sich Subnetze auf die von WLAN-Routern erstellten Netzwerke auswirken.)

NAT (Network Address Translation) ist eine Technik, die (häufig) zum Erstellen privater Netzwerke verwendet wird, indem ein Adressraum (IP: Port) einem anderen zugeordnet wird. Dies wird hauptsächlich verwendet, um ein privates Netzwerk mit mehreren privaten IPs hinter einer öffentlichen Adresse zu erstellen, z. B. in WLAN-Routern, von Organisationen (z. B. einer Universität oder einem Unternehmen) oder manchmal von ISPs.

Die eigentliche Adressumsetzung erfolgt in NAT-fähigen Knoten, in der Regel Routern , transparent . Es kann viele Formen haben, Full Cone, Address Restricted, Port Restricted usw. oder eine Mischung davon, die vorschreibt, wie die Verbindungen über den Knoten initiiert werden können.

Ausführliche Informationen finden Sie auf Wikipedia. Sie können jedoch beispielsweise einen WLAN-Router mit 2 angeschlossenen Geräten in Betracht ziehen. Die öffentliche IP - Adresse des Routers 10.9.20.21/24und die IP der Geräte (Private IPs) sind A: 192.168.0.2, B: 192.168.0.3und die des Routers ist R: 192.168.0.1. Also, wenn Sie Aeine Verbindung zum Server herstellen S: 10.9.24.5/24möchten (der sich tatsächlich in einem anderen Subnetz befindet, muss der Router hier installiert sein):

  1. A sendet ein IP-Paket Rmit der Quell-IP 192.168.0.2, dem Quell- Port (z. B.) 14567und der Ziel-IP 10.9.24.5(obwohl der Port tatsächlich Teil des TCP-Headers ist) an (das wäre das Standard-Gateway ).
  2. Der Router (der NAT-fähig ist) ordnet den Port 14567dem Gerät zu Aund ändert die Quelle des IP-Pakets in 10.9.20.21(die öffentliche IP des Routers). Dies steht im Gegensatz zum oben beschriebenen Subnetting, bei dem die IP-Pakete tatsächlich nie geändert werden .
  3. SEmpfängt die Serie von TCP-Paketen (mit src IP:, 10.9.20.21src Port :) 14567und sendet Antwortpakete mit diesen Werten in den Zielfeldern.
  4. Rprüft den Zielport 14567und leitet das Paket weiter an A.
  5. A empfängt das Antwortpaket.

Wenn in der obigen Situation Bversucht wird, eine Verbindung auf demselben Quellport ( 14567) zu öffnen , wird sie Rvor dem Senden an einen anderen Port zugeordnet (und der Port im ausgehenden Paket wird geändert) S. Das heißt, es würde auch eine Port-Übersetzung statt nur IP geben.

Zwei Dinge, die hier zu beachten sind:

  1. Aufgrund dieser Adressumsetzung ist es häufig nicht möglich, eine Verbindung zu Geräten im privaten Netzwerk herzustellen, ohne spezielle Techniken anzuwenden.
  2. Die Einschränkung der Gesamtzahl der TCP-Verbindungen von demselben Gerät zu einem Server (65536 = 2 ^ 16) gilt nun in der oben verwendeten NAT-Form für alle Geräte hinter dem NAT.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.