Ein frei kopier- und anpassbares Lehrmittel von eduskript.org

Lernziele
  • Sie wissen, wie die Subnetmaske den Netzwerk- vom Hostteil trennt.
  • Sie können die Netzwerkadresse bilden und entscheiden, ob zwei IPs im selben Netz liegen.
  • Sie können die Netzwerkgrösse (nutzbare Hostadressen) berechnen.
  • Sie wissen, was ein Gateway / Router ist und wie er Pakete weiterleitet.

Das Wichtigste zuerst: die Subnetmaske

In der letzten Lektion haben Sie gesehen: Eine IP-Adresse hat einen Netzwerkteil (wie die Ortsangabe) und einen Hostteil (das einzelne Gerät). Aber wo verläuft die Grenze? Das bestimmt die Subnetmaske. Sie besteht ebenfalls aus vier Bytes.

Merken Sie sich: Im Netzwerkteil ist die Subnetmaske 255, im Hostteil ist sie 0.

  • IP 192.168.1.5 mit Maske 255.255.255.0 → alle Adressen 192.168.1.x gelten als Ihr Netzwerk.
  • Dieselbe IP 192.168.1.5 mit Maske 255.255.0.0 → schon alle Adressen 192.168.x.x gelten als Ihr Netzwerk.

Solche Masken, die nur aus vollen (255) und leeren (0) Bytes bestehen, heissen klassische Subnetmasken. Die Maske ist wie eine Schablone, die man auf die Adresse legt: Wo 255 steht, schaut der Netzwerkteil durch; wo 0 steht, der Hostteil.

Die Netzwerkadresse — so entscheidet der Computer

Wie rechnet ein Computer aus, ob ein Ziel im selben Netz liegt? Mit der Netzwerkadresse: der tiefstmöglichen Adresse eines Netzwerks, bei der der gesamte Hostteil 0 ist. Sie gehört zu keinem Gerät — genau wie «8000 Zürich» kein konkretes Gebäude ist.

Der Trick: Alle Adressen desselben Netzwerks erzeugen dieselbe Netzwerkadresse. Ein Computer mit IP 192.168.1.5 und Maske 255.255.255.0 geht so vor:

  1. Beim Konfigurieren bildet er seine eigene Netzwerkadresse: 192.168.1.0.
  2. Soll er an 192.168.1.12 senden, bildet er auch dort die Netzwerkadresse: 192.168.1.0gleich, also selbes Netz, direkt zustellbar.
  3. Soll er an 192.168.2.54 senden: Netzwerkadresse 192.168.2.0verschieden, also fremdes Netz. Das Paket geht an den Gateway (dazu unten mehr).

🐍 Jetzt sind Sie dran

🐍 Übung 1: Netzwerkadresse berechnen (mittel)

Schreiben Sie netzwerkadresse(ip, maske) für klassische Masken (nur 255 oder 0). Regel: Wo die Maske 255 ist, übernehmen Sie das IP-Oktett; wo sie 0 ist, schreiben Sie "0".

Erinnerung: "192.168.1.5".split(".") ergibt die Liste ["192","168","1","5"], und ".".join(liste) setzt eine Liste wieder mit Punkten zusammen.

Neu — auf einzelne Listenelemente zugreifen: Mit eckigen Klammern und einer Position holen Sie ein einzelnes Element. Gezählt wird ab 0! Also ist ip_teile[0] das erste Teil ("192"), ip_teile[1] das zweite ("168"), ip_teile[3] das letzte. In der Schleife ist ip_teile[i] das i-te Teil.

PythonLoading editor…
def netzwerkadresse(ip, maske):
    ip_teile = ip.split(".")
    maske_teile = maske.split(".")
    ergebnis = []
    for i in range(4):
        # maske_teile[i] ist das i-te Masken-Oktett, ip_teile[i] das i-te IP-Oktett.
        # Wenn das Masken-Oktett 255 ist: das IP-Oktett anhängen.
        # Wenn es 0 ist: "0" anhängen.
        ...
    return ".".join(ergebnis)

print(netzwerkadresse("192.168.1.5", "255.255.255.0"))   # 192.168.1.0
print(netzwerkadresse("10.32.4.12", "255.255.0.0"))      # 10.32.0.0
🐍 Übung 2: Gleiches Netzwerk? (mittel)

Damit kann Ihr Computer die entscheidende Frage beantworten: eigenes Netz (direkt zustellen) oder fremdes (an den Gateway)? Die Funktion netzwerkadresse ist schon eingebaut — nutzen Sie sie.

PythonLoading editor…
def netzwerkadresse(ip, maske):
    ip_teile = ip.split(".")
    maske_teile = maske.split(".")
    ergebnis = []
    for i in range(4):
        if int(maske_teile[i]) == 255:
            ergebnis.append(ip_teile[i])
        else:
            ergebnis.append("0")
    return ".".join(ergebnis)

def gleiches_netz(ip1, ip2, maske):
    # Bilde beide Netzwerkadressen und vergleiche, ob sie gleich sind.
    ...

print(gleiches_netz("192.168.1.5", "192.168.1.12", "255.255.255.0"))  # True
print(gleiches_netz("192.168.1.5", "192.168.2.54", "255.255.255.0"))  # False

Wie gross ist ein Netzwerk?

Die Netzwerkadresse ist die tiefste Adresse (Hostteil ganz 0). Es gibt auch eine höchste: die Broadcast-Adresse (Hostteil ganz auf Maximum). Pakete an sie gehen an alle Geräte im Netz. Beide Adressen sind reserviert und können keinem Gerät gegeben werden.

Wie viele Geräte passen also ins Netz 192.168.1.0 mit Maske 255.255.255.0?

Lösung (unbedingt anschauen)

Der Hostteil ist das ganze letzte Byte = 8 Bit:28 Host-Bit=256 Adressen2^{8\text{ Host-Bit}} = 256\text{ Adressen}Davon sind Netzwerk- und Broadcastadresse reserviert:282=254 nutzbare Hostadressen2^{8}-2 = 254\text{ nutzbare Hostadressen}Merken Sie sich generell:2Anzahl Host-Bit2=nutzbare Hostadressen2^{\text{Anzahl Host-Bit}}-2 = \text{nutzbare Hostadressen}

✏️ Übung 3: Netzwerkgrösse (einfach)

a) Wie viele Hosts hat ein Netz mit Maske 255.255.255.0?b) Ein Unternehmen braucht 500 Geräte und wählt 255.255.0.0. Reicht das?

Lösung

a) 8 Host-Bit → 282=2542^8 - 2 = 254 nutzbare Hosts.b) 16 Host-Bit → 2162=655342^{16} - 2 = 65'534 nutzbare Hosts. Reicht locker (sogar überdimensioniert).

✏️ Übung 4: Netzwerk- und Broadcastadresse (mittel)

Bestimmen Sie zu jeder Kombination Netzwerkadresse und Broadcastadresse:a) 192.168.5.42 / 255.255.255.0b) 10.20.30.40 / 255.255.0.0c) 172.16.100.200 / 255.0.0.0

Lösung

Netzwerkadresse = Hostteil auf 0, Broadcast = Hostteil auf 255.a) Netz 192.168.5.0, Broadcast 192.168.5.255b) Netz 10.20.0.0, Broadcast 10.20.255.255c) Netz 172.0.0.0, Broadcast 172.255.255.255

Der Router / das Gateway

Was passiert, wenn das Ziel in einem anderen Netz liegt? Dann muss das Paket aus dem eigenen Netz hinaus. Dafür gibt es die Gateway-Adresse — das «Tor zur Welt». Meist ist das ein Router: ein Gerät, das gleichzeitig an mehreren Netzwerken hängt und Pakete zwischen ihnen weiterleitet (es kennt die «Routen»).

Ihr Heimrouter hängt z.B. an mindestens zwei Netzen: Ihrem Heimnetz und dem Netz zwischen Router und Internet-Provider (Swisscom, Sunrise …). Ein Router hat pro Netzwerkschnittstelle eine eigene IP und Subnetmaske.

Wie entscheidet der Router, wohin er weiterleitet? Genau wie Ihr Computer:

  1. Er merkt sich die Netzwerkadressen aller angeschlossenen Netze.
  2. Für jedes ankommende Paket prüft er mit der jeweiligen Maske, in welches Netz die Ziel-IP fällt.
  3. Passt sie in keines, nutzt er seine Standardroute (Default Route) — den «Notausgang» zum nächsten Router.

So entsteht eine Kette von Routern, die ein Paket Schritt für Schritt weitergeben, bis es ankommt. Genau so funktioniert das Internet.

✏️ Übung 5: Router-Entscheidung (mittel)

Ein Router hängt an drei Netzen plus Standardroute:

SchnittstelleNetzwerkadresseSubnetmaske
eth0192.168.1.0255.255.255.0
eth1192.168.2.0255.255.255.0
eth210.0.0.0255.0.0.0
eth3Standardroute

Wohin leitet er weiter? a) 192.168.1.50 b) 192.168.2.200 c) 10.100.50.25 d) 172.16.5.10

Lösung

a) Netz 192.168.1.0eth0b) Netz 192.168.2.0eth1c) Netz 10.0.0.0eth2d) in keinem Netz → eth3 (Standardroute)

✏️ Übung 6: Netzwerkplanung (schwer)

Sie planen ein Firmennetz mit drei Abteilungen — Buchhaltung (20 Geräte), Entwicklung (50), Vertrieb (10) — je mit Maske 255.255.255.0.a) Reicht die Maske? b) Geben Sie jeder Abteilung eine eigene Netzwerkadresse.

Lösung

a) 255.255.255.0 → 254 nutzbare Hosts pro Netz. Reicht für alle (20, 50, 10 < 254).b) z.B. Buchhaltung 192.168.1.0, Entwicklung 192.168.2.0, Vertrieb 192.168.3.0. Wichtig: jede Abteilung eine eigene Netzwerkadresse.

Vertiefung (nicht Prüfungsstoff): binäres Verständnis

Letztlich muss man Subnetmasken binär verstehen. Binär ist eine Subnetmaske eine Serie von 1, gefolgt von 0. Die Grenze kann mitten durch ein Byte laufen — sie muss aber klar sein (nur ein Übergang von 1 zu 0). Man notiert die Maske darum auch kurz als Anzahl 1, z.B. /24.

Die Netzwerkadresse bildet sich binär durch ein bitweises UND von IP und Maske: Nur wo beide eine 1 haben, steht in der Netzwerkadresse eine 1. Darum heisst die Operation «Bitwise AND» (Zeichen &):

IP & Subnetmaske=Netzwerkadresse\text{IP } \& \text{ Subnetmaske} = \text{Netzwerkadresse}

Wollte man das Netz so vergrössern, dass auch 192.168.0.13 dazugehört, müsste man die Grenze um ein Bit nach vorne schieben:

Welche Dezimalzahl ergäbe das?

Die Maske 255.255.254.0. Dann bilden 192.168.0.x und 192.168.1.x dieselbe Netzwerkadresse 192.168.0.0.

🐍 Challenge: Netzwerkadresse mit bitweisem UND (schwer)

Die Dezimal-Methode klappt nur bei klassischen Masken. Mit dem bitweisen UND (&) geht es für jede Maske — genau wie es der Computer macht. In Python verknüpft 13 & 254 zwei Zahlen Bit für Bit. Vervollständigen Sie die eine fehlende Zeile. (Erinnerung: ip_teile[i] ist das i-te Oktett — gezählt ab 0.)

PythonLoading editor…
def netzwerkadresse_and(ip, maske):
    ip_teile = ip.split(".")
    maske_teile = maske.split(".")
    ergebnis = []
    for i in range(4):
        # Verknüpfe IP-Oktett und Masken-Oktett mit bitweisem UND (&).
        # Tipp: int(...) & int(...)
        oktett = ...
        ergebnis.append(str(oktett))
    return ".".join(ergebnis)

print(netzwerkadresse_and("192.168.1.13", "255.255.255.0"))      # 192.168.1.0
print(netzwerkadresse_and("192.168.1.130", "255.255.255.192"))   # 192.168.1.128

Als Nächstes: Sie wissen jetzt, wie ein Router entscheidet, an welches Nachbarnetz ein Paket geht. Aber wie findet ein Paket über viele Router hinweg den kürzesten Weg durchs ganze Internet? Das klären wir mit dem Routing und dem Algorithmus von Dijkstra.