Als Subnetz bezeichnet man die exakte Spezifikation eines Teils des IP-Adressraums. Dabei wird ein zusammenhängender Bereich von IP-Adressen zusammengefasst.
Durch die bitweise Verarbeitung über ein logisches Und entstehen spezielle Semantiken, die eingehalten werden müssen. Dadurch, dass diese Semantiken die möglichen Anfangs- und Endadressen der Adressbereiche stark einschränken, vereinfacht sich gleichzeitig das Ganze jedoch ungemein und erhält eine feste Struktur.
Die Absteckung des vom Subnetz erfassten Bereichs erfolgt durch bitweise Maskierung eines bestimmten Teils der IP-Adresse durch die Subnetzmaske. Dadurch erhält man aus einer beliebigen Adresse das Subnetz, zu dem die Adresse unter Annahme dieser Maske gehört.
Beispiele:
Adresse 192.168.1.23 in Binär: 11000000 10101000 00000001 00010111 Maske 255.255.255.0 in Binär: 11111111 11111111 11111111 00000000 nach logischem Und: 11000000 10101000 00000001 00000000 in Dezimal: 192.168.1.0
Adresse 192.168.1.23 in Binär: 11000000 10101000 00000001 00010111 Maske 255.255.252.0 in Binär: 11111111 11111111 11111100 00000000 nach logischem Und: 11000000 10101000 00000000 00000000 in Dezimal: 192.168.0.0
Adresse 192.168.2.34 in Binär: 11000000 10101000 00000010 00100010 Maske 255.255.255.0 in Binär: 11111111 11111111 11111111 00000000 nach logischem Und: 11000000 10101000 00000010 00000000 in Dezimal: 192.168.2.0
Adresse 192.168.2.34 in Binär: 11000000 10101000 00000010 00100010 Maske 255.255.252.0 in Binär: 11111111 11111111 11111100 00000000 nach logischem Und: 11000000 10101000 00000000 00000000 in Dezimal: 192.168.0.0
Die beiden Adressen 192.168.1.23 und 192.168.2.34 gehören also unter Annahme einer Subnetzmaske von 255.255.252.0 zum selben Subnetz (192.168.0.0), unter Annahme einer Subnetzmaske von 255.255.255.0 jedoch nicht (192.168.1.0 vs. 192.168.2.0). Offenbar ist es wichtig, immer die korrekte Subnetzmaske im Hinterkopf zu behalten.
Es zeigt sich, dass zum selben Subnetz jeweils die Adressen gehören, die sich nur in den binären Stellen unterscheiden, die in der Subnetzmaske Null sind. Damit unterteilt sich die Adresse in einen festen und einen variablen Ziffernteil. Beispiel:
Subnetz 192.168.0.0 in Binär: 11000000 10101000 000000|00 00000000 Maske 255.255.252.0 in Binär: 11111111 11111111 111111|00 00000000 variabler Teil: |xx xxxxxxxx erste/kleinste Adresse: 11000000 10101000 000000|00 00000000 in Dezimal: 192.168.0.0 letzte/grösste Adresse: 11000000 10101000 000000|11 11111111 in Dezimal: 192.168.3.255 fester Teil ^ variabler Teil Grenze (siehe nächsten Abschnitt)
Will man ein spezifisches Subnetz bezeichnen, gibt man die erste Adresse in diesem Subnetz zusammen mit der Subnetzmaske an. Beispiele:
Vor der Einführung von CIDR (Classless Inter-Domain Routing) waren für bestimmte Bereiche des IP-Adressraums bestimmte Subnetzmasken festgelegt. So existierten z. B. "Klasse-A Adressen" im Bereich von 0.0.0.0 bis 126.255.255.255. Diese hatten als Maske 255.0.0.0. Andere feste Masken waren 255.255.0.0 und 255.255.255.0.
CIDR hebt diese feste Zuordnung von Subnetzmasken zu IP-Bereichen auf. Statt der vorgegebenen, festen Masken werden nun Masken mit einer Bestimmten Länge verwendet. Diese bestehen aus einer Anzahl von zusammenhängenden binären Einsen, gefolgt von binären Nullen zur Auffüllung auf 32 bit. Somit existieren 33 mögliche Masken.
Da die Maskenschreibweise mit 4 Dezimalzahlen dadurch redundante Informationen beinhaltet, notiert man stattdessen die Anzahl der Einsen.
| Volle Schreibweise | Maskenschreibweise |
|---|---|
| 192.168.1.0/255.255.255.0 | 192.168.1.0/24 |
| 172.16.4.0/255.255.252.0 | 172.16.4.0/22 |
| 195.16.85.80/255.255.255.248 | 195.16.85.80/29 |
Da eine IP-Adresse aus 32 bit besteht, ist der variable Teil 32 − Maskenlänge bit lang. Die Anzahl der Adressen im Subnetz berechnet sich dadurch zu 232 − Maskenlänge.
Die Masken /0 und /32 sind speziell in der Hinsicht, dass sie das ganze Internet respektive einen einzelnen Host abdecken.
Die alten Klassen A, B und C entsprechen den Masken /8, /16 und /24.
Verschiebt man die Grenze zwischen festem (Masken-Einsen) und variablem (Masken-Nullen) Teil, können nun Unter-Subnetze aus einem Subnetz erzeugt werden. Dadurch dass der feste Teil um einige Stellen verlängert wird, kann man mehrere Unter-Subnetze über diese "neugewonnenen" festen Stellen unterscheiden. Da der variable Bereich damit automatisch kleiner wird, sind diese Subnetze jedoch kleiner.
Adressen 123.45.64.0/18 - Provider 01111011 00101101 01000000 00000000 16384 123.45.64.0/20 - Kunde A 01111011 00101101 01000000 00000000 4096 123.45.64.0/28 - A1 01111011 00101101 01000000 00000000 16 123.45.64.16/28 - A2 01111011 00101101 01000000 00010000 16 123.45.80.0/20 - Kunde B 01111011 00101101 01010000 00000000 4096 123.45.96.0/19 - Kunde C 01111011 00101101 01100000 00000000 8192
(der unterstrichene Teil ist jeweils der feste.)
Ein häufiger Verwendungszweck von Subnetzen ist die Zuweisung eines Adressbereichs an ein Netzwerksegment. Computern an diesem Netzwerksegment werden dabei Adressen aus dem Bereich des jeweiligen Subnetzes zugewiesen.
Aus historischen Gründen sind zwei der Adressen eingeschränkt verwendbar. Dies sind:
Die Computer am Netzwerksegment verwenden die Subnet-Angabe, um festzustellen ob sich eine bestimmte IP-Adresse im selben Segment befindet. Dabei wird der am Anfang dieses Artikels beschriebene Test durchgeführt. Je nach Ergebnis wird dann versucht, die Adresse lokal (über ARP) oder entfernt (über einen Router) zu erreichen.