====== - Netzwerke & Internet ====== ===== Materialien ===== * Slides: {{ :gf_informatik:web_sca:2022_web_02_internet.pdf |}} * [[gf_informatik:web:internet|Wiki zu Netzwerke & Internet]] ===== Info Prüfung ===== * Zeit: 40'-45' * Am Computer (isTest2 im Save Exam Browser) * Hilfsmittel: Taschenrechner * Stoff: alles zu Internet: * [[gf_informatik:web_sca:websites|]] * [[gf_informatik:web_sca:netzwerke_internet|]] * sowohl Theorie (z.B. in Slides) wie auch in Aufgaben === Lernhilfe === Es werden **verschiedene Kompetenzen** getestet. Hier jeweils mit einigen Beispielen (gibt vielen weiteren Inhalt!): * **1. Faktenwissen:** * wissen, wofür Abkürzungen von Protokollen stehen * vier Schichten von Schichtenmodell aufzählen können * **2. Grundsätzliches Verständnis:** * Einzelne Aspekte isoliert verstehen ... * z.B. Erklären können, wie NAT funktioniert * **3. Berechnungen:** * Anzahl Hosts in Subnetz * **4. Verbindungen machen:** * Gelerntes zusammensetzen, z.B. alle Schritte von Aufruf von Website verstehen * "Big Picture" sehen * eigene Analogien machen ===== 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 === 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 === 1. Wie viele verschiedene IPv4-Adressen gibt es? 1. Reicht dies aus, um alle Geräte im Internet eindeutig zu adressieren? === 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? === Aufgabe B3: Mein IP === 1. 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). 1. Trage deine IP mit Name in Tabelle an Wandtafel. 1. Wie viele Geräte können sich mit diesem Subnetz verbinden? Reicht dies oder sollte man die Subnetzmaske anpassen? Win: * Terminal: ipconfig Mac: * Terminal: ifconfig * Systemeinstellung / Netzwerk / WLAN / Weitere Optionen / TCP/IP === Aufgabe B4: IPv4 === 1. 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? 1. Tatsächlich wurde dieses Problem mit IPv6 bereits angegangen. Studiere den [[gf_informatik:web:internet:ip_adressen#ipv6|Eintrag zu IPv6.]] === Aufgabe B5: MAC-Adresse === 1. Bestimme die MAC-Adresse deines Computers (resp. von dessen Netzwerkkarte). 1. In welchem Format wird diese geschrieben? 1. Berechne, für wie viele Geräte dies reicht. 1. 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? === 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$. 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: * $/7$ * $/25$ === Zusatzaufgaben (Basic) === 1. 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: * 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. ++++Lösungen| === B1 === 1. $2^{32} \approx 4.3$ Milliarden 1. Nein, da ca. $30$ Milliarden Geräte gibt === B2 === 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. === B3 === 1. IP (Beispiel): $172.16.27.145$, Subnetzmaske: $255.255.248.0$ 1. $11$ Bits für Hosts, also $2^{11}-2 = 2046$ Hosts. Ca. $600$ Personen an KSR, sollte also passen. === B4 === $$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. === B5 === 1. 1. Wird typischerweise mit $6$ Hexadezimalzahlen ($16$er System) geschrieben, z.B. 2b:80:41:ae:fd:7e. Dies entspricht $48$ Bits. 1. Anzahl Möglichkeiten: $16^{12} = 2^{48} \approx 281 \cdot 10^{12}$, allerdings sind zwei Bits fix, also deshalb nur $2^{46} \approx 70 \cdot 10^{12}$ 1. 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. === B6 === siehe Tabelle hier: [[https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing#Übersicht_für_IPv4]] ++++ ==== Aufgaben C ==== === Aufgabe C1 === Betrachte folgendes Netzwerk {{ :gf_informatik:web:internet:network.png?600 |}} 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.* | -- | Direkt versenden über Netzwerkkarte 1, Ziel im gleichen Subnetz 1.1.3 | | 4 | 3.3.3.* | -- | Direkt versenden über Netzwerkkarte 2, Ziel im gleichen Subnetz 3.3.3 | | 5 | 1.1.1.* | 3.3.3.2 | Weiterleiten über 3.3.3.2 | | 6 | 1.1.8.* | 3.3.3.8 | Weiterleiten über 3.3.3.8 | | 7 | 1.1.6.* | 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: 1. IP-Adresse: 1.1.3.2 1. IP-Adresse: 1.1.1.5 1. IP-Adresse: 94.130.229.77 1. IP-Adresse: 1.1.3.1 **Teil II:** Notiere die Routing-Tabelle für den Router 1.1.8.1/3.3.3.8 ==== 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: 1. Was ist ein **Three Way Handshake** und wozu werden die **SYN,ACK,FIN**-Bits gebraucht? 1. Wofür steht **ARP**? Wozu wird dieses Protokoll benötigt und wie funktioniert es (grob)? ==== Aufgaben E: Repetition ==== Beantworte die folgenden Fragen. Achtung, nicht alles wurde im Unterricht behandelt. Recherchiere dazu in den Slides (am Anfang der Website) und im Internet! === Aufgabe E1: Schichtenmodell === Beschreibe die Verbindungs-Schichten des Internets. Nenne für jede Schicht: * Name * Analogie im Postversand * Welche Abstraktion bietet sie der nächstoberen Schicht? * Welche Adressen werden verwendet? * Nenne ein Internet-Protokoll, das in der Schicht verwendet wird. ++++Lösung| * Anwendungsschicht * Analogie: Versand von Gegenständen (Möbel, Bücher...) * Abstraktion: -- * Adressen: -- * Internet-Protokoll: HTTP(S), SMTP, DNS, ... * Transportschicht * Analogie: Übertragung einer ganzen Sendung aus mehreren Paketen, mit Lieferschein. * Abstraktion: (bidirektionaler) Datenstrom * Adressen: TCP-Ports * Internet-Protokoll: TCP, UDP * Vermittlungsschicht (*Internet Layer*) * Analogie: Post-Pakete * Abstraktion: (Einweg-) Paketvermittlung Ende-zu-Ende * Internet-Protokoll: IP * Netzzugangsschicht (*Link Layer* , *Physical Layer*) * Analogie: Transport über eine einzelne Strecke. * Abstraktion: Paket-Vermittlung über eine einzelne Verbindung * Internet-Protokolle: Ethernet (LAN), WiFi (WLAN), DSL, LTE, ... ++++ === Aufgabe E2: Adressen im Internet === Welche drei Adress-Arten im Internet haben wir angeschaut? Beschreibe deren Eigenschaften und Unterschiede. Mache für jede Art von Adresse ein Beispiel. ++++ Lösung| * **Domain / URL** * Domain: * Beispiel: `www.ethz.ch` * Eigenschaften: * Identifiziert einen Server (oder einen Server-Namensraum) im Internet. * Ist hierarchisch aufgebaut: am Schluss steht die Top-Level-Domain (entweder eine Länder-Domain wie `.ch` oder eine globale Domain wie `.com` oder `.org`), danach folgen die unter-Domains (im Beispiel `ethz`, danach `www`). * Ist Teil eines URLs. * URL (bisher nicht explizit besprochen) * Beispiel: `http://www.ethz.ch/index.html` * Eigenschaften: * Identifiziert eine Resource ("Datei") im Internet. * Wird insbesondere von HTTP benutzt, um Resourcen wie HTML und CSS von einem Webserver über das Internet zu laden. * Der zweite Teil (www.ethz.ch) ist eine Domain (Servername) * IP-Adresse * Beispiel: `129.132.98.12` * Eigenschaften: * Identifiziert ein Gerät (eigentlich: eine Netzwerk-Karte) im Internet. * Pakete werden auf der Vermittlungsschicht von einer IP-Adresse an jede andere geroutet. * Besteht aus 32 bit (IPv4) oder 128 bit (IPv6) * Es gibt ca. 4 Milliarden (232) IPv4-Adressen. * IP-Adressen sind logische Adressen - dasselbe Gerät erhält eine andere IP-Adresse, wenn es in einem anderen Netz eingebunden wird. * MAC-Adresse * Beispiel (müssen Sie nicht wissen): `00:80:41:ae:fd:7e` * Eigenschaften: * Identifiziert ein Geräte (eigentlich: eine Netzwerk-Karte) im lokalen Subnetz. * MAC-Adressen sind fix, jede Netzwerkkarte hat fix eine MAC-Adresse zugewiesen. Sie ändert sich nicht, wenn das Gerät in einem anderen Netzwerk angemeldet wird. * MAC-Adressen spielen nur für das lokale Subnetz eine Rolle, sie werden vom Router nicht weitergeleitet. ++++ === Aufgabe E3: Was ist ein Protokoll?=== Nenne ein Protokoll aus dem Internet und aus der realen Welt. Was zeichnet ein Protokoll aus? ++++Lösung| Ein Protokoll ist eine standardisierte Kommunikation und definiert den zeitlichen Ablauf sowie das Format der ausgetauschten Nachrichten. Viele Protokolle können beliebige Inhalte (zum Beispiel höhere Protokolle) also Nutzlast (*payload*) transportieren. Die Protokoll-spezifischen Teile der Kommunikation (Adressen etc.) heissen *Metadaten*. Protokolle aus dem Internet z.B.: * HTTP(S) * SMTP * DNS * TCP * UDP * IP (*Internet Protocol* - Achtung: oft sprechen wir von der "IP" wenn wir eigentlich die *IP-Adresse* (also z.B. `129.132.98.12`) meinen. Aber *IP* bezeichnet streng genommen das Internet Protokoll auf der Vermittlungsschicht). * Ethernet * LTE Protokolle aus der realen Welt: * Flugfunk * Begrüssungsrituale * Diplomatisches Protokoll (wer sitzt neben wem, Begrüssungsreihenfolge...) * Telefongespräche (`Do isch Wullschleger-Haslebacher!` - `Grüetsi Frau Wullschleger-Haslebacher, do isch Rüegsegger` etc.) * Vergessen Sie nicht den [[https://youtu.be/LCAUpnUVwMU?t=340|Schluss des Gesprächs]] ++++ === Aufgabe E4: Protokolle=== == Teil I == Liste alle Protokolle auf, die wir kennengelernt haben. ++++Lösung| Behandelte Protokolle: * ARP * DNS * Ethernet * HTTP * IP * MAC * TCP * UDP Weitere wichtige Protokolle: * SMTP: Simple Mail Transfer Protocol (Mail) * DHCP: Dynamic Host Configuration Protocol (Vergabe von IP-Adressen in Subnetz) ++++ == Teil II == * Für Protokolle mit Abkürzungen: Wofür stehen diese? * Erkläre für jedes Protokoll in $2-3$ Sätzen, wofür es verwendet wird. ++++Lösung| Behandelte Protokolle: * ARP: Adress Resolution Protocol (Finde Gerät mit gesuchter MAC-Adresse, schicke dazu Broadcast Nachricht an alle Geräte im Subnetz, siehe z.B. https://oinf.ch/interactive/tcp-ip-visualisierung/) * DNS: Domain Name System * Ethernet (kabelgebundene Datenübertragung von Gerät zu Gerät * HTTP: HyperText Transfer Protocol * IP: Internet Protocol * MAC: Media-Access-Control * TCP: Transmission Control Protocol * UDP: User Datagram Protocol Weitere wichtige Protokolle: * SMTP: Simple Mail Transfer Protocol (Mail) * DHCP: Dynamic Host Configuration Protocol (Vergabe von IP-Adressen in Subnetz) ++++ == Teil III == * Beschrifte die vier Schichten des Schichtenmodells ... * ... und trage jedes Protokoll in der richtigen Schicht ein: {{ :gf_informatik:web_sca:schichtenmodell_leer.png?400 |}} ++++Lösung| {{ :gf_informatik:web_sca:schichtenmodell_leer_sol.png?400 |}} ++++ === Aufgabe 5: Verbindungsprobleme=== Bei einem Webseiten-Aufruf auf `http://www.ethz.ch/index.html` triffst du auf die folgenden fünf Probleme. Beschreibe für jeden Fehler, auf welcher Netzwerkebene der Fehler liegt, und was da passiert (sein könnte). * `Internet disconnected` * `No route to host www.ethz.ch` * `Cannot resolve host www.ethz.ch` * `Server www.ethz.ch timed out` * `404 Resource not found` ++++Lösung| * `Internet disconnected` * Netzzugangsschicht: fehlende Netzverbindung (z.B. kein WLAN) * `No route to host www.ethz.ch` * Vermittlungsschicht: keine Route zur Ziel-IP-Adresse. * `Cannot resolve host www.ethz.ch` * Anwendungsschicht: Problem mit dem DNS-Server, oder unbekannte Domain * `Server www.ethz.ch timed out` * Könnte auf allen Schichten verursacht werden: * Netzzugangsschicht: schlechte Verbindungsqualität * Vermittlungsschicht: fehlerhaftes Routing, Pakete gehen verloren * Transportschicht: fehlerhafte Geschwindigkeits-Aushandlung. * Anwendungsschicht: Webserver ist überlastet und antwortet nicht. * `404 Resource not found` * Anwendungsschicht: falsche URL, oder Webserver ist falsch konfiguriert. ++++ === Aufgabe E6: Was passiert bei einem Seitenaufruf im Internet?=== Du rufst die Website `http://www.ethz.ch/index.html` auf. Was passiert dabei auf jeder Netzwerkebene? Angaben: * Dein Gerät: * IP: 192.168.2.5 * MAC-Adresse: 0xcafe * Router / Gateway: 192.168.2.1 * Gateway: * IP: 192.168.2.1 * MAC-Adresse: 0xface * DNS-Server: * IP: 8.8.8.8 * löst die Domain `www.ethz.ch` auf zu `129.132.98.12` ++++Lösung| * Anwendungsschicht: * Browser löst Domain zu IP auf mit DNS auf `8.8.8.8` (erhält `129.132.98.12`) * Browser öffnet HTTP-Verbindung zu `www.ethz.ch` * Browser verlangt die Resource mit `GET /index.html` * Webserver antwortet mit HTML Inhalten * Transportschicht: * UDP-Stream zwischen `192.168.2.5:` und `8.8.8.8:53` * TCP-Stream zwischen `192.168.2.5:` und `129.132.98.12:80` * Vermittlungsschicht: * IP-Pakete zwischen `192.168.2.5` und `8.8.8.8` * IP-Pakete zwischen `192.168.2.5` und `129.132.98.12` * Netzzugangsschicht: * WLAN- oder Ethernet-Pakete zwischen 0xcafe und 0xface ++++ === Aufgabe E7: Routing=== Ein Internet-Router hat die folgende Routing-Tabelle. Was passiert mit einem IP-Paket mit Quell-IP `192.168.0.25` und Destination-IP `129.132.98.12`? Welche Zeilen der Tabelle muss der Router konsultieren? ^ Zeile ^ IP-Präfix ^ Gateway / Netzwerkkarte ^ |1| 192.168.0.1 | localhost | |2| 192.168.0 | wlan0 (WLAN-Adapter 1) | |3| 129.132 | 3.3.3.5 | |4| 3.3.3.17 | localhost | |5| 3.3.3 | eth0 (Ethernetkarte 1) | |6| * (default route) | 3.3.3.1 | ++++Lösung| Das Paket wird via `3.3.3.5` weitergeleitet und zu diesem Zweck auf der Ethernetkarte 1 hinausgeschickt. Achtung: die Quell-Adresse spielt fürs Routing keine Rolle. Es braucht zwei Lookups in der Routing-Tabelle: * Zeile 3 bestimmt, dass `129.132.*` via `3.3.3.5` weitergeleitet wird * Zeile 5 bestimmt, dass alle Pakete an `3.3.3.5` über die Ethernetkarte 1 gesendet werden. ++++ === Aufgabe E8: Private IPs=== Weshalb ist an der KSR die IP-Adresse deines Geräts eine andere, als die die auf `whatsmyip.org` angezeigt wird? Was hat das für Auswirkungen: was kannst du auf deinem Gerät nicht (so einfach) tun? ++++Lösung| Die KSR verwendet [[gf_informatik:web:internet:ip_adressen#nat|NAT]]. Das heisst, intern werden nur IP-Adressen aus einem privaten Bereich vergeben. Der Router ersetzt die Quell-Adresse von ausgehenden Paketen mit seiner eigenen und merkt sich die Verbindung (*connection tracking*). Kommt ein Antwortpaket, so ersetzt der Router die Zieladresse des Pakets und leitet es intern weiter. Auswirkungen: * Das Gerät kann zwar Verbindungen nach aussen öffnen, aber von aussen können keine neuen Verbindungen zum Gerät erstellt werden. * Du kannst auf deinem Laptop keinen Server betreiben, der von aussen erreichbar ist. * Es ist schwierig, einen Webserver zu betreiben. * Es ist schwierig, einen Peer-to-peer-Client (Transmission, Gnutella...) zu betreiben (natürlich gibt es Workarounds) ++++