Netzwerke & Internet
Materialien
Aufgaben
Aufgaben A
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)?
Lösungen
A1
$320000$ Geräte (Google)
A2
Anzahl Verbindungen für $n$ Geräte:
$$A = \frac{n-1}{2} \cdot n$$
Tipp für Herleitung: Berechne explizit für einige Beispiele:
$n=5$: $A = 4 + 3 + 2 + 1 = 2 \cdot 5$
$n=6$: $A = 5 + 4 + 3 + 2 + 1 = 2.5 \cdot 6$
$n=7$: $A = 6 + 5 + 4 + 3 + 2 + 1 = 3 \cdot 7$
Mit Code:
def anzahl_verbindungen(n):
a = 0
for i in range(1,n):
a = a + i
return a
print(anzahl_verbindungen(1000000))
Problem: Dauert sehr lange, kaum berechenbar für $30$ Mia. Geräte
Aufgaben B
Aufgabe B1: IPv4-Adressen
Wie viele verschiedene IPv4-Adressen gibt es?
Reicht dies aus, um alle Geräte im Internet eindeutig zu adressieren?
Lösung:
$2^{32} \approx 4.3$ Milliarden
Nein, da es ca. $30$ Milliarden Geräte gibt.
Aufgabe B2: Subnetzmaske
Eine typische Subnetzmaske in einem Heimnetzwerk ist $255.255.255.0$. Wie viele verschiedene Geräte kann man maximal haben in diesem Subnetz?
Lösung
Für Hosts stehen $8$ Bits zur verfügung, also $2^8-2 = 254$ Geräte.
Achtung: Muss $2$ abziehen, da zwei Adressen nicht an Geräte vergeben werden - später mehr dazu.
Aufgabe B3: Mein 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:
Mac:
Lösung
IP (Beispiel): $172.16.27.145$, Subnetzmaske: $255.255.248.0$
$11$ Bits für Hosts, also $2^{11}-2 = 2046$ Hosts. Ca. $600$ Personen an KSR, sollte also passen.
Aufgabe B4: 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.
Lösung
$2^x = 30 \cdot 10^9$
$x \approx 34.8$
Also mind. $35$ Bit.
Gleichung kann gelöst werden mit dem Logarithmus oder einfach durch ausprobieren.
Aufgabe B5: MAC-Adresse
Bestimme die MAC-Adresse deines Computers (resp. von dessen Netzwerkkarte).
In welchem Format wird diese geschrieben?
Berechne, für wie viele Geräte dies reicht.
Wie viele Geräte kann bei der aktuellen Weltbevölkerung eine Person im Durchschnitt gerade noch haben? Wird die mögliche Anzahl Adressen auch für die Zukunft ausreichen?
Lösung
MAC-Adressen bestehen aus $6$ Bytes, also $6*8 = 48$ bits.
Typischerweise wird jedes Byte mit einer zweistelligen Hexadezimalzahl ($16$er System) geschrieben, z.B. 2b:80:41:ae:fd:7e
.
Anzahl Möglichkeiten: $16^{12} = {2^{4}}^{12} = 2^{48} \approx 281 \cdot 10^{12}$, allerdings sind zwei Bits fix, also deshalb nur $2^{46} \approx 70 \cdot 10^{12}$
ca. $9000$ Geräte (MAC mit $46$ freien Bits), mit $48$ Bits wären es sogar etwa $35000$. Wird irgendwann nicht mehr reichen. Laut Quellen im Internet dürften um 2040 die MAC-Adressen ausgehen.
Aufgabe B6 (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$. Erklärung: 255.192.0.0
entspricht binär 11111111.11000000.00000000.00000000
, hat also zehn Einsen.
Wandle um $4-$Byte-Notation $\rightarrow$ CIDR-Notation:
$255.255.255.255$
$255.255.255.0$
$255.240.0.0$
Wandle um CIDR-Notation $\rightarrow$ $4-$Byte-Notation:
Zusatzaufgaben (Basic)
Wie viele Hosts kann ein Netzwerk mit Subnetzmaske $255.255.255.192$ haben?
Zusatzaufgaben (Advanced)
Aufgabe 1
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.
Aufgabe 2
Erweitere deinen Code der vorherigen Zusatzaufgabe 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:
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.
Aufgaben C
Aufgabe C1
Betrachte folgendes Netzwerk
Die Routing-Tabelle für den Router oben links ist:
Zeile | IP-Präfix | Router | Handlung |
1 | 1.1.3.1 | localhost (ich selbst, Netzwerkkarte 1) | Paket empfangen (eigene Adresse) |
2 | 3.3.3.3 | localhost (auch ich selbst, Netzwerkkarte 2) | Paket empfangen (eigene Adresse) |
3 | 1.1.3.0/24 | – | Direkt versenden über Netzwerkkarte 1, Ziel im gleichen Subnetz 1.1.3 |
4 | 3.3.3.0/24 | – | Direkt versenden über Netzwerkkarte 2, Ziel im gleichen Subnetz 3.3.3 |
5 | 1.1.1.0/24 | 3.3.3.2 | Weiterleiten über 3.3.3.2 |
6 | 1.1.8.0/24 | 3.3.3.8 | Weiterleiten über 3.3.3.8 |
7 | 1.1.6.0/24 | 3.3.3.4 | Weiterleiten über 3.3.3.4 |
8 | * | 3.3.3.1 | Alles andere: An den Router (auch Gateway) 3.3.3.1 senden zur Weiterleitung |
Teil I:
Der Router erhält ein Paket für eine gewisse IP-Adresse. Lese entsprechend die Routing-Tabelle aus und notiere die relevanten Zeilen:
IP-Adresse: 1.1.3.2
IP-Adresse: 1.1.1.5
IP-Adresse: 94.130.229.77
IP-Adresse: 1.1.3.1
Teil II: Notiere die Routing-Tabelle für den Router 1.1.8.1/3.3.3.8
Lösung:
Teil 1:
Zeile 3 (gleiches Subnetz)
Zeile 4, dann Zeile 4 (Weiterleiten via 3.3.3.2)
Zeile 8, dann Zeile 4 (Weiterleiten via 3.3.3.1)
Zeile 1 (Localhost - Gerät selber)
Teil 2:
Zeile | IP-Präfix | Router | Handlung |
1 | 1.1.8.1 | localhost (ich selbst, Netzwerkkarte 1) | Paket empfangen (eigene Adresse) |
2 | 3.3.3.8 | localhost (auch ich selbst, Netzwerkkarte 2) | Paket empfangen (eigene Adresse) |
3 | 1.1.8.0/24 | – | Direkt versenden über Netzwerkkarte 1, Ziel im gleichen Subnetz 1.1.8 |
4 | 3.3.3.0/24 | – | Direkt versenden über Netzwerkkarte 2, Ziel im gleichen Subnetz 3.3.3 |
5 | 1.1.1.0/24 | 3.3.3.2 | Weiterleiten über 3.3.3.2 |
6 | 1.1.3.0/24 | 3.3.3.3 | Weiterleiten über 3.3.3.3 |
7 | 1.1.6.0/24 | 3.3.3.4 | Weiterleiten über 3.3.3.4 |
8 | * | 3.3.3.1 | Alles andere: An den Router (auch Gateway) 3.3.3.1 senden zur Weiterleitung |
Aufgaben D: TCP/IP
Aufgabe D
Studiere die TCP/IP-Visualisierung: https://oinf.ch/interactive/tcp-ip-visualisierung/
Diese zeigt sehr detailliert, was genau passiert, wenn man eine Website aufruft.
Hole dir aus den Slides die nötigen Informationen, um die folgenden Fragen zu beantworten:
Was ist ein Three Way Handshake und wozu werden die SYN,ACK,FIN-Bits gebraucht?
Wofür steht ARP? Wozu wird dieses Protokoll benötigt und wie funktioniert es (grob)?