Ich verstehe die Grundidee hinter Subnetzmasken wie 255.255.255.0
. Aber alle Subnetzbeispiele, die ich gesehen habe, waren (von links nach rechts) aufeinanderfolgende Einsen (HI-Bits). Beispielsweise wird 255.255.0.0
( /16
) in die folgenden Oktette übersetzt:
11111111 . 11111111 . 00000000 . 00000000
ICHglaubendass diese Teilemusszusammenhängend sein, denn der Sinn der Subnetzbildung besteht darin, Host-IDs und Bereiche verfügbarer Geräte-IDs abzuleiten. Aber ich frage mich, ob Sie jemals eine Subnetzmaske von beispielsweise haben könnten, 255.17.255.0
oder:
11111111 . 00010001 . 11111111 . 00000000
- Würde das jemals passieren? Oder ist es unmöglich, dass Subnetze ohne zusammenhängende Einsen existieren? Wenn ja, warum?
- Wenn es möglich ist, warum sollten Sie es sonst tun (einige konkrete Beispiele)?
Antwort1
Der Abschnitt 3.1 in derRFCzeigt die zulässigen Masken im klassenlosen Inter-Domain-Routing. Die Bits müssen zusammenhängend sein, damit das Routing ordnungsgemäß funktioniert.
Auch logisch betrachtet würde es nicht wirklich Sinn machen, seltsame, zufällige Netzwerkmasken zu haben.
Antwort2
Ja, man kann es sich so vorstellen, dass Subnetzmasken am Anfang immer 1en sind. Wenn ein Subnetzgrößenindikator am Anfang der binären Darstellung keine 1en hat, würde ich sagen, dass der Subnetzgrößenindikator nach modernen Standards keine richtige „Subnetzmaske“ ist.
RFC 1219besagt, dass der frühere RFC 950 nicht zusammenhängende Bits zulässt. TatsächlichRFC 950 Seite 15(Abschnitt 3) enthält eindeutig ein Beispiel, das „nicht zusammenhängende Subnetzbits veranschaulicht“. Es gibt jedoch keine Möglichkeit, solche Subnetze in CIDR-Notation umzuwandeln. Die CIDR-Notation wird von IPv6 verwendet (zumindest seitRFC 1884 Seite 7, erster Satz von Abschnitt 2.4), daher wurden nicht zusammenhängende Bits für IPv6-Netzwerke nie allgemein unterstützt.RFC 1219Die Methode von gibt an, dass „Subnetzbits (Maske = 1) vom höchstwertigen Bit in Richtung des niederwertigsten Bits zugewiesen werden“. (DieRFC 4632 Abschnitt 3.1, erwähnt in Samis Antwort, verweist auf einen offiziellen Standard, der die CIDR-Notation diskutiert.)
RFC 1878 Seite 2zeigt die Standardnotation „Subnetzmaske“ für alle IPv4-Subnetze außer /0
.
Ich werde jedoch etwas näher auf Samis Antwort eingehen und das „Warum“ untersuchen (mit einem konkreten Beispiel, wie es in der Frage verlangt wurde) …
Einige professionelle Cisco-Geräte unterstützen eine sogenannte „Wildcard-Maske“, die die Bits invertiert. Ein normales Subnetz könnte also durch etwas namens dargestellt werden 00000000.00000000.00000000.11111111
.
Bei den Wildcard-Masken von Cisco gab es keine Regel, dass alle Nullen zuerst kommen mussten. Sie konnten also verwenden 00000000.00000000.00000000.11111110
.
Dadurch würde eine Gruppe erstellt, die alle IP-Adressen mit geraden Nummern enthält.
Dies war tatsächlich wichtig zu wissen, da dies in der Schulung von Cisco abgedeckt war und im Prüfungsprozess für die professionellen Zertifizierungen von Cisco möglicherweise nach so etwas gefragt wird.
Ich denke jedoch, dass es größtenteils nutzlos war. Anstatt ein Netzwerk durch die Verwendung von geraden oder ungeraden Adressen in zwei Hälften zu unterteilen, könnte man ein Netzwerk einfach durch die Verwendung von Adressen mit niedrigen und hohen Nummern in zwei Hälften unterteilen, indem man normale Subnetze erstellt, die halb so groß sind.
Platzhaltermasken mit nicht zusammenhängenden Bits waren nicht besonders nützlich und konnten schwieriger zu handhaben sein. Der Sinn des auf 1 gesetzten Subnetzmaskenbits besteht darin, dass dieses Bit dabei hilft, zu identifizieren, in welchem Subnetz sich ein Gerät befindet. Es gibt keinen zwingenden Grund, diese Bits über die gesamte Adresse zu verteilen, anstatt sie einfach ordentlich am Anfang der Adresse zu gruppieren. Das Ergebnis war, dass die Unterstützung dieser Art von Masken eine zusätzliche Komplexität ohne großen substantiellen Nutzen darstellte.
Ich schätze, Cisco hat sich schließlich damit abgefunden, dass solche nicht-traditionellen Subnetzmasken sinnlos sind, weil sie die Unterstützung für „Wildcard-Masken“ eingestellt haben. Die älteren Pix-Firewalls unterstützen „Wildcard-Masken“, aber die neueren ASA-Einheiten verwenden stattdessen standardmäßige „Subnetzmasken“.
Ich würde nicht einmal versuchen, ein Netzwerk mit nicht zusammenhängenden „Subnetzbits“ in der Maske zu erstellen, da viele Softwareprogramme den neueren Trends/Standards folgen und ein solches Netzwerkdesign ablehnen würden. Selbst wenn ich ältere Software verwenden würde, würde ich wahrscheinlich wollen, dass mein Netzwerk leicht geändert werden kann, um neuere Software verwenden zu können, ohne das Netzwerk neu gestalten zu müssen. Zusammenhängende „Subnetzbits“ sind also die einzige Möglichkeit.
Wenn Ihnen diese Frage in einem Test gestellt wird, würde ich mit Sicherheit sagen, dass alle Einsen am Anfang der Adresse stehen müssen. Das ist es, was jeder vernünftige Prüfer heutzutage den meisten Schülern beibringen möchte.
Antwort3
RFC 950heißt es in Kapitel 2.2:
To support subnets, it is necessary to store one more 32-bit
quantity, called my_ip_mask. This is a bit-mask with bits set in
the fields corresponding to the IP network number, and additional
bits set corresponding to the subnet number field.
The code then becomes:
IF bitwise_and(dg.ip_dest, my_ip_mask)
= bitwise_and(my_ip_addr, my_ip_mask)
THEN
send_dg_locally(dg, dg.ip_dest)
ELSE
send_dg_locally(dg,
gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))
Der Vorschlag bezog sich also auf eine einfache Bitoperation, bei der aufeinanderfolgende Bits keine Rolle spielen.
Im Jahr 1985 waren CPU und Speicher noch viel begrenzter, so dass für komplexere Vorgänge einfach nicht genügend Zeit blieb.
In Kapitel 3 wird es noch deutlicher:
und dass im Netzwerk ein 3-Bit-Subnetzfeld verwendet wird (01011000), d. h., die Adressmaske lautet 255.255.255.88.
Allerdings scheinen diese RFCs veraltet zu sein. Unter Windows 7 SP1 ist es beispielsweise nicht möglich, eine solche Subnetzmaske festzulegen:
Selbst unter Windows XP SP2 war dies nicht mehr möglich:
Der Windows 98-Klon ReactOS erlaubt jedoch das Setzen der „seltsamen“ Netzmaske:
Antwort4
Ich stimme der Antwort von @Sami Kuhmonen zu:
Der Abschnitt 3.1 im RFC zeigt die zulässigen Masken im klassenlosen Inter-Domain-Routing. Die Bits müssen zusammenhängend sein, damit das Routing richtig funktioniert. Logisch betrachtet würde es auch keinen Sinn ergeben, seltsame, zufällige Netzwerkmasken zu verwenden.
Auch wenn es nicht gewünscht oder erlaubt ist, kann man dennoch eine Subnetzmaske aus nicht aufeinanderfolgenden Einsen definieren. Der Grund dafür:
Aus IP-Adresse und Subnetzmaske werden mit den binären Operationen AND und XOR die Netzwerk-ID und Host-ID berechnet. Alles andere ist irrelevant.
Ich habe das vor Jahren unter Win 2000 getestet, es funktioniert. Beide Computer hatten eine 255.160.0.0-Maske. Sie waren in einem LAN ohne Router, daher kann ich nichts über das Verhalten des Routers sagen (normalerweise können Sie die Maske des Routers nur in seiner Weboberfläche einstellen, die sie dann ablehnt).
Sie können eine solche „ungültige“ Subnetzmaske auch nicht in das entsprechende Feld der Netzwerkeinstellungen eingeben; die GUI lehnt sie ab. Sie können aber schummeln, indem Sie sie direkt in der Registrierung ändern. Starten Sie anschließend neu oder deaktivieren und aktivieren Sie die Netzwerkkarte, damit die Änderungen aktiv werden.
Der Zweck von all dem: ähm, wahrscheinlich keiner.