**Dies ist eine alte Version des Dokuments!**
Aufgaben A: Grundlagen Netzwerke
Abgabe via Teams.
Aufgabe A1: Unterseekabel
Ein typischer Schweizer Haushalt hat eine Internetverbindung von etwa $500$ Mbit / s. Wie viele solche Haushalte könnte man mit dem MAREA-Kabel versorgen, angenommen, dass alle gleichzeitig ihre Internetverbindung voll auslasten?
Aufgabe A2: Netzwerk mit direkten Verbindungen
- Betrachte ein Netzwerk mit $n$ Geräten, welche alle direkt miteinander verbunden sind. Wie viele Verbindungen / Kabel sind nötig?
- Entscheide selbst: Löse das Problem, indem du …
- eine mathematische Formel dafür herleitest (besser!) oder …
- einen Python-Code schreibst, der die Berechnung für dich übernimmt.
- Wie viele Kabel benötigt man für ein Netzwerk mit …
- $5$ Geräten (kleiner Haushalt)?
- $200$ Geräten (mittlere Firma)?
- $30$ Milliarden Geräten (Internet)?
Aufgabe A3: Protokolle
Wo im echten Leben gibt es Protokolle? Mache eigene Beispiele.
Lösungen A
Aufgaben B: Schichtenmodell
Aufgabe B1: WireShark Installieren
Wireshark ist ein freier und quelloffener Netzwerk-Monitor, mit dem sich der ganze Netzverkehr eines Geräts protokollieren lässt.
- Installiere Wireshark auf deinem Gerät.
- Starte eine neue Capture mit leerem Capture-Filter - was siehst du?
- Beende die Capture mit dem roten Stopp-Knopf
.
Aufgabe B2: HTTP-Verbindung Protokollieren
Viele Web-Verbindungen sind heute verschlüsselt, was es schwieriger macht, ihre Details zu protokollieren. Wir wollen unten eine unverschlüsselte HTTP-Verbindung protokollieren:
- Starte eine Wireshark Capture mit dem Capture-Filter
host laralei.ch
- damit werden nur Verbindungen zum Serverlaralei.ch
protokolliert. - Öffne ein neues Browser-Fenster und lade die Webseite
http://laralei.ch
.- Wichtig: Die Adresse muss genau wie oben eingegeben werden - die meisten Browser wechseln sonst automatisch zu
https://laralei.ch
, was die verschlüsselte Variante wäre.
- Beende die Capture mit dem roten Stopp-Knopf.
- Schau dir das Paket-Protokoll an.
Jedes Paket ist teil eines ineinander verschachtelten Gesprächs auf verschiedenen Ebenen.
- Auf der höchsten Ebene sprechen der Browser und der Webserver das Protokoll HTTP, um eine Webseite zu übertragen.
- Wähle ein HTTP-Paket, das vom Server zurückgeschickt wurde, und zeige die Details (unten) des Pakets an.
- Findest du in den Antworten des Servers Sprach-Elemente, die du kennst? Welche?
- Auf der nächst-tieferen Ebene wird durch TCP ein bidirektionaler Datenstrom zwischen unserem Gerät und dem Gerät des Webservers organisiert.
- Wähle das erste HTTP-Paket und zeige den Datenstrom an:
- Erkennst du das HTTP-Gespräch, das in diesem Datenstrom eingebettet ist?
Aufgaben C: IP-Adresse & Subnetzmaske
Aufgabe C1: IPv4-Adressen
- Wie viele verschiedene IPv4-Adressen gibt es?
- Reicht dies aus, um alle Geräte im Internet eindeutig zu adressieren?
Aufgabe C2: Subnetzmaske
Eine typische Subnetzmaske in einem Heimnetzwerk ist $255.255.255.0$. Wie viele verschiedene Geräte kann man maximal haben in diesem Subnetz?
Aufgabe C3: Meine IP
- Stelle sicher, dass dein Computer mit dem eduroam-Netz der Schule verbunden ist. Bestimme dann die (lokale) IP deines Geräts in diesem Subnetz, sowie die Subnetzmaske (siehe unten).
- Trage deine IP mit Name in Tabelle an Wandtafel.
- Wie viele Geräte können sich mit diesem Subnetz verbinden? Reicht dies oder sollte man die Subnetzmaske anpassen?
Win:
- Terminal (Eingabeaufforderung): ipconfig
Mac:
- Terminal: ifconfig
- Systemeinstellung / Netzwerk / WLAN / Weitere Optionen / TCP/IP
Aufgabe C4: IPv4
- Wie du gesehen hast, reicht der IPv4-Standard nicht aus, um alle Geräte im Internet zu adressieren. Aus wie vielen Bytes müsste eine IP-Adresse mindestens bestehen, damit dies aktuell möglich ist?
- Tatsächlich wurde dieses Problem mit IPv6 bereits angegangen. Studiere den Eintrag zu IPv6 unten:
Aufgabe C5 (CIDR)
Subnetzmasken können auch durch CIDR-Suffix kürzer ausgedrückt werden. Dieser Wert gibt die Anzahl Bits an, die in der Subnetzmaske $1$ sind. Z.B. steht $/10$ für $255.192.0.0$.
a) Wandle um $4-$Byte-Notation $\rightarrow$ CIDR-Notation:
- i) $255.255.255.255$
- ii) $255.255.255.0$
- iii) $255.240.0.0$
b) Wandle um CIDR-Notation $\rightarrow$ $4-$Byte-Notation:
- i) $/7$
- ii) $/25$
Aufgabe C6: Subnetzmasken
- Wie viele Hosts kann ein Netzwerk mit Subnetzmaske $255.255.255.192$ haben?
- Wie viele Hosts kann ein Netzwerk mit CIDR /14 haben?
- Welche Subnetzmaske (normal und CIDR) sollte der Informatiker einer Firma mit ca. $5000$ Geräten für das Netzwerk der Firma wählen?
Zusatzaufgaben (Programmieren)
a)
Schreibe ein Python-Programm (z.B. eine Funktion), welches für einen gegebenen CIDR-Suffix die entsprechende Subnetzmaske im $4$-Byte-Format (z.B. $255.192.0.0$) bestimmt und umgekehrt.
b)
Programmiere nun eine eigene Auswahl der folgenden Funktionen:
- Subnetzmaske in andere Formate umwandeln:
subnet_dec_to_bin(subnet)
subnet_bin_to_dec(subnet_bin)
subnet_bin_to_cidr(subnet_bin)
subnet_dec_to_cidr(subnet)
cidr_to_subnet_bin(cidr)
cidr_to_subnet_dec(cidr)
- Abzahl mögliche Hosts für Subnetzmaske (in versch. Formaten) bestimmen:
nr_hosts_from_subnet_bin(subnet_bin)
nr_hosts_from_subnet_dec(subnet_dec)
nr_hosts_from_cidr(cidr)
c)
Erweitere deinen Code aus a) und b) und implementiere einen ultimativen Netzwerk-Rechner im Stile der folgenden Website: https://www.heise.de/netze/tools/netzwerkrechner/ Man soll seine IP-Adresse und CIDR-Suffix angeben können und zurück erhalten:
- Subnetzmaske (verwende Code von vorheriger Zusatzaufgabe)
- Anzahl Hosts
Die weiteren Angaben (IP-Range, Broadcast, …) können dann später hinzugefügt werden. Falls du bereits über Klassen/OOP Bescheid weisst, wäre diese Aufgabe ein gutes Anwendungsbeispiel.