lehrkraefte:blc:informatik:glf22:crash-course-network

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf22:crash-course-network [2023/03/31 11:59] – [Anatomie der Namensauflösung] Ivo Blöchligerlehrkraefte:blc:informatik:glf22:crash-course-network [2023/03/31 12:51] (current) – [NAT] Ivo Blöchliger
Line 1: Line 1:
 +====== Netzwerk ======
 +  * IP-Adressen (IPv4)
 +    * öffentliche IP-Adressen
 +    * private Netze
 +    * eigene IP-Adresse, IP-Adresse gegen aussen
 +    * Routing
 +  * DNS (Domain Name Service)
 +    * Domain, Subdomain
 +    * Hierarchische Auflösung, Caching
 +  * Ports
 +    * Typische Ports: https (443), http (80), dns (53), ssh (22)
 +    * Dynamische Ports
 +  * NAT (Network Address Translation)
  
 +===== IP-Adresse (IPv4) =====
 +Services, die Ihre öffentliche(n) IP-Adresse(n) anzeigen:
 +  * https://ipchicken.com/
 +  * https://ifconfig.me/
 +  * https://www.top10vpn.com/tools/what-is-my-ip/  (gibt aus IPv6 Adressen aus, falls Sie mit einer unterwegs sind).
 +
 +Kommandos, die Ihre lokalen IP-Adressen anzeigen:
 +<code bash>
 +ipconfig  # Windows (und Mac?)
 +ip addr   # Linux
 +</code>
 +
 +Kommando, das Ihre öffentliche IP-Adresse anzeigt:
 +<code bash>
 +curl --silent https://ifconfig.me
 +curl --silent https://ifconfig.me/all
 +</code>
 +
 +==== Private und reservierte Netzwerke ====
 +Folgende Bereiche von IP-Adressen sind reserviert und «gibt es nicht» im Internet:
 +  * 10.0.0.0 bis 10.255.255.255     (für grosse Netzwerke, wie z.B. das Schul-WLAN)
 +  * 172.16.0.0 bis 172.31.255.255   (für mittlere Netzwerke, z.B. das interne Netzwerk vom Cluster, der die Schulnetze betreut.)
 +  * 192.168.0.0 bis 192.168.255.255 (für kleine Netzwerke, typischerweise zu Hause)
 +  * 127.0.0.0 bis 127.255.255.255   (Loopback Netzwerk, normalerweise der eigene Computer, auch localhost genannt).
 +
 +==== Anatomie einer IP-Adresesse ====
 +  * 4 Bytes, normalerweise Dezimal geschrieben mit 3 Punkten getrennt.
 +  * Aufgeteilt in Netzteil (erste $n$ Bits) und Hostteil (letzte $32-n$ Bits).
 +    * Netzmaske gibt an, wie viele Bits zum Netzteil gehören. Binär sind das immer $n$ Einsen, gefolgt von $32-n$ Nullen. Beispiele:
 +      * 255.255.255.0   (24 Bit Netzmaske)
 +      * 255.255.0.0     (16 Bit Netzmaske)
 +      * 255.255.255.254 (31 Bit Netzmaske)
 +
 +==== Datenpakete Routing ====
 +Aussprache: «ruuting», wie französisch «route», («rauting» wäre dann die Fräsmaschine)
 +  * Internet: Ein Netz, das Netzwerke verbindet (Netzteil der IP-Adresse).
 +  * Datenpaket: 
 +    * Zieladresse, Zielport (Nummer von 0-65535)
 +    * Absenderadresse, Absenderport
 +    * Meta-Daten
 +    * Payload (Inhalt, Nutzlast)
 +  * Routing: Datenpakete von einem Netz ins nächste weiterleiten.
 +    * Router: «Computer mit 2 oder mehr Netzwerkanschlüssen» (für jedes verbundene Netz eines).
 +    * Aus den ersten Bits der Zieladresse wird entschieden, in welches nächste Netz das Datenpacket weitergeleitet werden soll
 +    * Meist mehrere Möglichkeiten, Auswahl nach Auslastung/Geschwindigkeit.
 +
 +Packetverfolgung ;-)
 +<code bash>
 +tracert tech-lab.ch     # Windows
 +traceroute tech-lab.ch  # Linux (evtl. Installation vom Programm nötig)
 +</code>
 +===== DNS =====
 +Domain Name Service. «It's always DNS» (wenn es Netzwerkprobleme gibt)
 +  * Telefonbuch für IP-Adressen
 +  * tech-lab.ch ist (für Menschen) einfacher als 81.62.232.82
 +  * TLD: Top Level Domain (z.B. .ch, .com, .de etc). Der letzte Teil eines Domain-Names.
 +  * Domain: Name.TLD, z.B. tech-lab.ch, ksbg.ch, google.com.  (Ein Name (ohne Punkt), Punkt, TLD).
 +  * Subdomain: subdomain.name.tld, z.B. www.tech-lab.ch, ofi.tech-lab.ch, fginfo.ksbg.ch, www.ksbg.ch (www, ofi, fginfo wären hier die Subdomains).
 +    * http://world-wide-web.niemand-tippt-von-hand-webadressen-ein.ch/
 +
 +==== Reservierung einer Domain ====
 +  * TLD legt Regeln für mögliche Domains fest.
 +  * Registrare verwalten Domain-Reservierungen. Kostet je nach Domain und Registrar zwischen 10.- und 100.- pro Jahr (oder mehr)
 +  * Domain grabbing (z.B. Expo01 Story)
 +  * Domain Streitigkeiten (zu blöd, wenn Familie Maggi den Domain maggi.com benutzt hat), siehe https://mll-legal.com/wp-content/uploads/2019/12/maggi_case.pdf
 +
 +
 +Lookup auf der Kommandozeile:
 +<code bash>
 +nslookup tech-lab.ch  # Windows
 +host tech-lab.ch      # Linux
 +</code>
 +Die Auflösung funktioniert auch in die entgegengesetzte Richtung, also z.B.
 +<code bash>
 +nslookup 81.62.232.82
 +</code>
 +Wer ist also der Internetprovider vom Tech-Lab?
 +<WRAP todo>
 +  * Finden Sie heraus, bei welchem Anbieter www.ksbg.ch ghostet ist.
 +  * Finden Sie heraus, wer der Internetprovider der KSBG ist.
 +<hidden Lösungshinweise>
 +  * IP-Adresse zu www.ksbg.ch bestimmen, dann diese IP-Adresse wieder einem Namen zuordnen. 
 +  * Bestimmen Sie dazu Ihre gegen aussen sichtbare IP-Adresse und ordnen Sie dieser einen Namen zu).
 +</hidden>
 +</WRAP>
 +
 +==== Anatomie der Namensauflösung ====
 +  * Root-Server
 +    * Wissen, welche Server für TLD-Auflösungen zuständig sind (z.B. für .ch-Domains).
 +  * TLD DNS (z.B. für .ch) 
 +    * Wissen, welche Nameserver für einen bestimmten Domain zuständig sind (z.B. für tech-lab.ch)
 +  * Authoritative Nameserver
 +    * Kennt alle Subdomain, Mailserver etc. für einen einen Domain.
 +  * Nameserver vom Provider: Kennt die IP noch, oder fragt nach (Caching)
 +  * Nameserver vom Modem/Router zu Hause: Kennt die IP noch, oder fragt nach (Caching)
 +  * Lokaler Computer: Kennt die IP noch, oder fragt nach (Caching)
 +
 +Die Anfragen werden zwischengespeichert während einer gewissen Zeit (TTL, Time to live), meist Stunden bis Tage.
 +
 +Gecashte Einträge anzeigen (zeigt auch, mit welchen Adressen ihr Computer letztlich höchstwahrscheinlich kommuniziert hat).
 +<code bash>
 +ipconfig -displaydns   # Windows
 +</code>
 +
 +Zuständige Nameserver für einen Domain finden:
 +<code bash>
 +nslookup -type=ns tech-lab.ch   # Windows
 +host -t ns tech-lab.ch          # Linux
 +dig ns tech-lab.ch              # Linux
 +</code>
 +
 +
 +<WRAP todo>
 +  * Finden Sie heraus, bei welchem Provider wohl der Domain-Name ksbg.ch reserviert wurde.
 +<hidden Lösungshinweis>
 +Finden Sie heraus, welche Nameserver für ksbg.ch zuständig sind. Besuchen Sie dann die entsprechende Webseite.
 +</hidden>
 +</WRAP>
 +
 +===== Ports =====
 +Bei einem Verbindungsaufgaufbau ist nicht nur die IP-Adresse, sondern auch die Portnummer wichtig.
 +
 +<WRAP todo>
 +  * Laden Sie folgendes Archiv: {{lehrkraefte:blc:informatik:glf22:webserver.zip}} herunter und entpacken Sie es.
 +  * Navigieren Sie auf der Kommandozeile ins entpackte Verzeichnis und starten Sie einen einfachen Webserver mit
 +<code bash>
 +python -m http.server
 +</code>
 +  * Verbinden Sie sich dann auf http://localhost:8000
 +  * Betrachten Sie die Ausgabe auf der Konsole.
 +
 +<hidden Telnet auf Windows ist offenbar 💩>
 +  * Überprüfen Sie auf der Kommandozeile, ob telnet installiert ist:
 +<code bash>
 +telnet localhost 8000
 +</code>
 +  * Wenn dies fehlschlägt, Öffnen Sie die System-Einstellungen und suchen Sie nach «Windows Features aktivieren» und setzen Sie dort bei «Telnet client» ein Häckchen. Evtl. muss der Computer danach neu gestartet werden?
 +  * Machen Sie eine Webanfrage «von Hand» auf der Kommandozeile:
 +<code bash>
 +telnet localhost 8000
 +</code>
 +und geben Sie dann
 +<code txt>
 +GET / HTTP/1.1
 +</code>
 +gefolgt von zwei mal <key>Enter</key> ein. 
 +Das wird wohl nicht angezeigt etc, aber die Antwort vom Webserver sollten Sie sehen.
 +</hidden>
 +</WRAP>
 +
 +<WRAP todo>
 +  * Verbinden Sie sich aufs Tech-Lab Netzwerk (falls möglich).
 +  * Wenn Ihr Webserver gestartet ist, geben Sie jemanden die IP-Adresse Ihres Computers (im Tech-Lab Netz 192.168.1.xyz). Er soll per http://192.168.1.xyz:8000 auf Ihren Webserver zugreifen.
 +  * Sie dürfen gerne «Ihre» Webseite modifizieren oder weitere Dinge hinzufügen.
 +</WRAP>
 +
 +====== NAT ======
 +Network Address Translation.
 +
 +  * Problem: Theoretisches Limit von $2^{32}$ IP-Adressen, praktisch noch etwas weniger (3.6 Milliarden?)
 +  * Lösung IPv6 ($2^{128}$ Adressen), aber niemand will umstellen...
 +  * Workaround: NAT
 +  * Am Beispiel der Schule:
 +    * Eine öffentliche IP-Adresse gegen aussen.
 +    * Datenpakete nach draussen werden vom Gateway (erster Router) umadressiert und sich die Verbindungsdetails (IP/Portnummer) gemerkt.
 +    * Einkommende Antworten werden mit gemerkter Liste wieder umadressiert und an korrekte interne IP weiter geleitet.
 +
 +<WRAP todo>
 +  * Verbinden Sie sich auf das Schule-SG WLAN
 +  * Verfolgen Sie die Stationen eines Datenpakets zum tech-lab.ch Server mit
 +<code bash>
 +tracert tech-lab.ch
 +</code>
 +  * Finden Sie eine interne IP vom Cluster (d.h. eine IP eines private Netzwerks, aber nicht ihres eigenen)?
 +</WRAP>