Navigation: [[p:netzwerke:peer2peer]] —> [[p:netzwerke:mehrere_rechner]] —> [[p:netzwerke:mehrere_netzwerke]] —> [[p:netzwerke:webserver]] {{gem/mgr}}{{ gem/pageinfo}}
====== 💻-💻 Peer-to-Peer-Netzwerk ======
{{ :p:netzwerke:peer2peer.png?nolink&270}}
**🎯 Worum geht es?**((Bildquellen: Wenn nicht anders angegeben, stellen die Bilder Screenshots der [[https://www.lernsoftware-filius.de|Software Filius]] von Stefan Freischlad dar und unterliegen der [[https://www.gnu.org/licenses/gpl-3.0.html|GNU General Public License V3]]))
* Du baust das einfachste Netzwerk -- zwei Rechner direkt verbinden -- auf.
* Du lernst, wie Daten über ein Netzwerk (z.B. das Internet) verschickt werden.
* Du lernst, warum sich zwei so unterschiedliche Systeme wie ein iOS Handy und ein Windows-PC verstehen können.
~~INTOC~~
\\
===== - Netzwerk-Simulator "Filius" =====
{{ :p:netzwerke:filiuslogo.png?nolink&81|}} ℹ️ [[https://www.lernsoftware-filius.de/Startseite|Filius]] ist ein Netzwerk-Simulationsprogramm der Universität Siegen. Damit wirst du die Grundlagen der Netzwerktechnik erlernen. Die Kapitel zu Netzerken mit Filius basieren auf dem [[http://www.lernsoftware-filius.de/downloads/Einfuehrung_Filius_2015.pdf|Skriptum zum Unterricht - Netzwerke mit Filius]] von Daniel Garmann.
⚠️ Für die Bearbeitung der Kapitel muss Filius vorgängig installiert werden: ++++Installation Filius auf dem eigenen Laptop (zum Öffnen klicken)|
* **Windows und Linux**\\ \\
- Download und Installation gemäss: [[https://www.lernsoftware-filius.de/Herunterladen|Download Filus]] ⚠️ Bei ''(Windows/Ubuntu/Zip)'' auf das Wort ''Windows'' klicken.\\ \\ ⚠️ Windows: Es kann sein, dass Filius auf einem hochauflösenden Displays winzig angezeigt wird. Lösung: Rechtsklick auf das Filius-Symbol, ''Eigenschaften'' wählen, dann das Register ''Kompatibilität'' öffnen, dort auf ''Einstellungen für alle Benutzer ändern'' klicken und ein Häkchen vor ''Verhalten bei hoher DPI-Skalierung überschreiben'' und direkt darunter bei ''Skalierung durchgeführt von:'' das ''Syste'' auswählen.\\ \\
* **macOS**\\ \\
- Prüfe, ob Java Version 17 oder höher auf deinem Mac installiert ist, wie folgt:
- Über die Lupe 🔍 oben rechts, öffne die "terminal.app" - die terminal.app ist ein "Textfenster".
- In die terminal.app tippe Folgendes ein und quittiere das danach mit der ''Enter''-Taste:\\ ''java -version''
- Wenn danach sofort ''java version'' und dahinter als Erstes eine Zahl grösser gleich 17 angezeigt wird, dann passt alles. Wenn eine kleinere Zahl oder statt ''java version'' etwas anderes (z.B. eine Fehlermeldung) ausgegeben wird, dann muss die neueste Java Version installiert werden.
- Installiere die neueste Java Version (falls notwendig) d.h. den neuesten JDK Installer wie folgt:
- [[https://www.oracle.com/java/technologies/downloads/|Download JDK]] für macOS und installiere es.
- Prüfe, ob alles geklappt hat (das ist im vorangehenden Punkt 1 beschrieben). Wenn eine Fehlermeldung in der terminal.app angezeigt wird, dann einfach den Computer neu starten, dann sollte danach die richtige Versionsnummer angezeigt werden.
- Installiere die neueste Filius-Version wie folgt:
- Lade die ''Zip''-Version von Filius herunter, d.h. auf die [[https://www.lernsoftware-filius.de/Herunterladen|Filius Download Seite]] gehen und ⚠️ bei ''(Windows/Ubuntu/Zip)'' auf das Wort ''Zip'' klicken.
- Verschiebe das Zip-File an einen Ort, wo du das File wieder findest.
- Doppelklicke das File. Es wird ein Ordner mit dem gleichen Namen erzeugt. Öffne diesen Ordner. Suche darin das File ''filius.jar''.
- Danach Rechtsklick auf das File ''filius.jar'', danach ''Öffnen mit'' wählen und ''JavaLauncher.app''. Jetzt alles was kommt mit ''Öffnen'' und ''Erlauben'' quittieren. Filius wird geöffnet.\\ ⚠️ Sollte das nicht funktionieren ++so kann dieser Schritt helfen|\\ \\ Ursache, der Ordner, in welchem du deinen Filius-Ordner reinkopiert hast, besitzt nicht die Rechte um Programme darin starten zu können.\\ Einfachste Lösung: Verschiebe den filius-Ordner direkt in dein Benutzerverzeichnis (darin können Programme gestartet werden). Dazu im Finder das Menü ''Gehe zu'' öffnen und dort ''Benutzerordner'' wählen. Verschiebe nun den filius-Ordner da rein. Jetzt sollte der ''Öffnen mit''-Schritt funktionieren. Damit du den Filius-Ordner schnell wiederfindest, kannst du den Filius Ordner per Drag-und-Drop im Finder zu deinen Favoriten (linke Spalte im Finder) schieben.\\ \\ ++
- Wenn Filius später einmal erneut gestartet werden soll, einfach im Finder wieder zu ''filius.jar'' gehen und dieses direkt Doppelklicken.
- Falls du Java später einmal entfernen möchtest, hier eine Anleitung dazu (diese entfernt gleich alle Java-Versionen, solltest du mehrere haben):
- Öffne wie in Punkt 1 beschrieben die "terminal.app". Tippe das Folgende und quittiere das mit ''Enter''-Taste\\ ''sudo rm -rf /Library/Java/JavaVirtualMachines''\\ Jetzt wird ''Passwort:🔑'' angezeigt. Das bedeutet, jetzt muss das Administratorpasswort des Computers "blind" eingegeben und mit ''Enter'' quittiert werden.
- Wenn alles geklappt hat, führt die Eingabe\\ ''java -version''\\ zu einer Fehlermeldung.
++++
\\
===== - Peer-to-Peer Netzwerk einrichten und testen =====
== ✍ Auftrag – Filius 1 ==
{{ gem/flag?label=Erledigt&icon=%E2%9C%8D#3b38987ae9175cc3}} {{ :p:netzwerke:entwurfsmodus.png?nolink&51|}}
👉 Verbinde zwei Laptops per LAN-Kabel zu einem "Peer-To-Peer-Netzwerk".\\ \\
💡 Aufgaben mit dem rechts gezeigten „🔨 Hammersymbol“ sind im Entwurfsmodus zu bearbeiten, dazu muss im Filius-Fenster auf das Hammersymbol geklickt werden.
- Starte Filius, füge zwei Laptops ein und verbinde diese per Kabel.
- Klicke auf den Laptop links, gebe diesen die ''IP-Adresse'' ''192.168.0.10'' und den ''Namen'' ''Rechner 0.10''.
- Gebe dem Laptop rechts die ''IP-Adresse'' ''192.168.0.11'' und den ''Namen'' ''Rechner 0.11''.
- Speichere das Netzwerk unter dem Namen ''Filius01'' an einem Ort ab, an welchem du das File wiederfinden kannst.
- Markiere diesen Auftrag als "Erledigt".
{{ :p:netzwerke:peer2peer.png?nolink&270 |}}
== ✍ Auftrag – Filius 2 ==
{{ :p:netzwerke:aktionsmodus.png?nolink&51|}}
👉 Teste, ob das "Peer-To-Peer-Netzwerk" funktioniert.\\ \\ 💡 Aufgaben mit dem rechts gezeigten „▶️ Wiedergabesymbol“ sind im Aktionsmodus zu bearbeiten, dazu muss im Filius-Fenster auf das Wiedergabesymbol geklickt werden.
- Wechsle in den ▶️ Aktionsmodus.
- Klicke auf den ''Rechner 0.10'' und installiere die ''Befehlszeile''.
- Starte die ''Befehlszeile'' und teste die Verbindung zum ''Rechner 0.11'' mit dem Befehl ''ping 192.168.0.11''. Beachte dabei, wie das Kabel zwischen den Laptops die Farbe ändert, wenn Daten gesendet werden.
- Wenn alles geklappt hat, sendet ''Rechner 0.10'' viermal eine Nachricht ("ping") an den ''Rechner 0.11'', der jeweils mit einer Nachricht antwortet.
- Öffne per Rechtsklick auf einen der beiden Laptops den ''Datenaustausch''. Dort siehst du die Nachrichten, welche ausgetauscht wurden. Suche die Zeile, in welcher das erste "ping" gesendet wird. Schreibe die Nummer (Spalte ''Nr.'') dieser Zeile ins Textfeld.\\ 🏓 Übrigens, die Antwort auf "ping" wird als "pong" bezeichnet.
- Speichere das Netzwerk unter Filius02 ab, dieses wird für die Aufträge Filius 3 und Filius 4 gebraucht.
{{gem/match?0=N4IgLgpgHmIFwhAGhAMwDYEMDmBneIAlsiAE4TbQAOBAdAFQDMIAvkA#47b5ab7108215cb8}}
\\
===== - Exkurs Netzwerkprotokolle und -schichten =====
🤓 Um den ''Datenaustausch'' in Filius zu verstehen, musst du wissen, wie Nachrichten in einem Netzwerk übermittelt werden. Daher zuerst etwas Theorie.
[{{ :p:netzwerke:clientserver.png?255|Client Server (([[https://commons.wikimedia.org/wiki/File:Client-server-model.svg|Client-server-model]] by David Vignoni, [[https://commons.wikimedia.org/wiki/User:Calimo|Calimo]] and Mgyugcha on [[https://commons.wikimedia.org|Wikimedia Commons]] under [[https://www.gnu.org/licenses/lgpl-3.0.html|GNU Lesser General Public License]]))}}]
; Server
: Ein Server ist ein Rechner, der einen Dienst (Webseite, E-Mail etc.) anderen Rechnern zur Verfügung stellt.
; Client
: Ein Client ist ein Rechner, der einen Server-Dienst nutzt.
; Protokoll
: Ein Protokoll ist eine Vereinbarung, wer was wann wie mit welchen Worten sagt. Das ist notwendig, damit sich all die verschiedenen Geräte im Netzwerk verstehen können. Eine gemäss der Protokoll-Vereinbarung geschriebene Nachricht, welche im Netzwerk verschickt wird, wird ebenfalls kurz als "Protokkoll" bezeichnet.
; Schichtmodell
: Der Aufbau eines Netzwerks (z.B. des Internets) wird durch ein Schichtmodell beschrieben. Jede Schicht beschreibt eine Aufgabe und baut auf den unteren Schichten auf (siehe nachfolgende Tabelle).
^ Schicht ^ Beschreibung ^ Protokoll-Beispiele ^ "Adressen" ^
| Anwendung | Verschickt Daten und Dateien von Anwendungsprogrammen in Form von Anwendungsprotokollen. Jede Anwendung wird durch ihre //Port-Nummer// identifiziert. | http, dns | Port-Nummer |
| Transport | Stellt Verbindung zwischen Client und Server her. Spaltet beim Senden grosse Anwendungsprotokolle in kleinere Einheiten und setzt diese beim Empfangen mithilfe der //Segment Number// wieder zusammen | tcp, udp | Segment Number |
| Vermittlung | Sucht einen Weg durch das Netzwerk / Internet. Die //IP-Adresse// dient als "Post-Adresse", an welche die Daten verschickt werden. | ip, icmp, arp | IP-Adresse |
| Netzzugang | Überträgt die Daten von einer Netzwerkkarte zur nächsten (sodass irgendwann nach mehreren Schritten das Ziel erreicht wird). Jede Netzwerkkarte besitzt eine eigene //MAC-Adresse//. | ethernet | MAC-Adresse |
[{{ :p:netzwerke:schichtmodell.png?150|Schichtenmodell (([[https://isaaccomputerscience.org/concepts/net_internet_tcp_ip_stack|Envelope encapsulation and decapsulation]] by [[https://isaaccomputerscience.org/|Isaac Computer Science]] under [[https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/|Open Government Licence v3.0]]))}}]
💡 Ein Beispiel: Ein Browser (Client) fragt eine Webseite (Server) an. Dabei wird die Webseiten-Anfrage über das Netzwerk zum Server geschickt -- wie bei der Paketpost. Für das Senden wird im Client das Schichtenmodell von **oben nach unten** durchlaufen:
- Der Browser übergibt die Webseiten-Anfrage der Anwendungsschicht. Dort werden die Port-Nummern des Client-Browsers und des Webserverprogramms der Anfrage hinzugefügt (diese Zusatzinformation wird als //Anwendungsheader// bezeichnet) und das Resultat der Transportschicht übergeben.
- In der Transportschicht wird die Anfrage je nach Grösse in mehrere Teile aufgespalten. Jeder Anfrageteil wird durch eine Segment Number ergänzt (//Transportheader//) und der Vermittlungsschicht übergeben. Die Segment Number erlaubt es dem Server, die Anfrageteile wieder richtig zusammenzusetzen.
- In der Vermittlungssicht werden jedem Anfrageteil die Client- und Server IP-Adressen hinzugefügt - quasi die Absender- und Empfängeradressen (//Vermittlungsheader//) und der Netzwerkschicht übergeben.
- In der Netzwerkschicht wird jeder Anfrageteil mit der die MAC-Adresse der nächsten Netzwerkkarte versehen (//Netzzugangsheader//) und an die nächste Netzwerkkarte weitergeleitet.
Auf dem Server werden die Schichten dann umgekehrt von **unten nach oben** durchlaufen, in jeder Schicht wird der zugehörige Header wieder entfernt und die Anfrage am Ende der Server-Software übergeben.
== ✍ Auftrag – Schichtmodell ==
- Kopiere die folgenden Stichworte zu den Beschreibungen / Eigenschaften in der Tabelle:\\ ''Server'', ''Client'', ''Protokoll'', ''Anwendungsschicht'', ''Transportschicht'', ''Vermittlungsschicht'', ''Netzzugangsschicht'', ''Header''{{gem/match?0=N4IgLgpgHmIFwgEIQM4GMAWAnCBLARgK4B2A5gAQD05AorqRMehgIYBmY5X3Pvf-fAD7kAymFyYA7gHssYADrEAtCtVr1GzVu07depYoAiuRijAti+E5CwC79hwOGKA0tIC27krgDWLcdJMAG4QOLiWLFgkFCQAJuRunt5+AUxssu4OzsQimBI+nLEm5AByLJhYEhicAF6EtsQAJ5hmjKUQYDWSoT5+chCO2QBahCj+NeHpWO7+uIFtRQPh5ABWELGhonmYnBjhdQxsAD+knN1YG8Tk2TRYPozEhcWVO-QDAILE3cSx0eQsmQACrJOI47NlkGFIIU2gA1UJjH7kIKycjSDa2FAdGpPVBtSQmDHkOpjTxta7kIwmJjmYhsLAsBi2MEs1ncbIAMXCG04eGIbQA6hAKL8sC12p1zj4qOQAJKPUL80Gs4QgAA0IDYABtGSh4CBcOqQDgGFAAA76gB0ACpFDa7daRKEgvbiDbAVhpGBXTaStifdaABIQFixAOfboBgAqDLdtrjAGEtSYA-DpiAAL5AA#c98c2a6e51217780}}
- Der Befehl ''ping'' nutzt das ''icmp'' Protokoll, welches zur Vermittlungsschicht gehört. In welchen Schichten werden der icmp Nachricht beim Senden Header hinzugefügt? Schreibe ein ''x'' hinter die betreffenden Schichten.\\ ++Lösungshinweis|\\ \\ Das imcp Protokoll wird in der Vermittlungsschicht erzeugt und läuft im Schichtmodell nach unten für den Versand. Die Header sind ersichtlich, wenn du in Filius im Datenaustausch eine der icmp-Nachrichten anklickst.\\ \\ ++ {{gem/match?0=N4IgLgpgHmIFwgIIDsDuFkBMCuyDmABADrIAqATgIbIDOADgPbljHIBqE5AtgJZhgAbXIRIA5CGABek7HmqEQAGhAAzAZTw14IHkpDkIeaHW0BtAHpQAugGoSF63eQA6AFRQ3JN1BABfIA#23eeaf55c311a49f}}
== ✍ Auftrag – MAC-Adresse ==
{{ gem/flag?label=Erledigt&icon=%E2%9C%8D#dd70c671c3958b05}}💡 Die "MAC-Adresse" oder auch "Physikalische Adresse" oder "Hardware-Adresse" genannt, wird durch sechs zweistellige Hexadezimalzahlen dargestellt, z.B. ''6A:64:5A:2F:C3:61'' oder ''6A-64-5A-2F-C3-61''.\\
Die MAC-Adresse ist in der Hardware fest abgespeichert (im Gegensatz dazu kann die IP-Adresse frei gewählt oder zugeteilt werden). Über die MAC-Adresse ist es möglich, Geräte in einem Netzwerk zu identifizieren und z.B. für das Netzwerk zu sperren.
- Finde wie folgt die MAC-Adresse deines Laptops heraus:
* Windows:
- Unten rechts Rechtsklick auf das Netzwerk-Symbol und ''Netzwerk- und Interneteinstellungen'' öffnen.
- Im Netzwerk und Internet Fenster oben auf ''Eingenschaften'' klicken. Die MAC-Adresse steht etwas weiter unten neben ''Physikalische Adresse:''.
* macOS:
- Klicke oben rechts auf das WLAN-Symbol und wähle ''WLAN-Einstellungen...0''
- Klicke im WLAN-Fenster auf ''Details'' und in den Details auf ''Hardware''. Dann wird die MAC-Adresse angezeigt.
* Linux:
- Öffne ein Terminal und gib dort ''ifconfig'' ein (gefolgt von Enter). Sollte das nicht funktionieren, versuche ''/sbin/ifconfig''. Wenn das auch nicht funktioniert musst du zuerst den ifconfig-Befehl installieren im Terminal mit ''sudo apt-get install net-tools'', du wirst dabei nach deinem Administrationspasswort gefragt (das musst du dann "bilnd" eingeben). Danach sollte ''ifconfig'' bzw. ''/sbin/ifconfig'' funktionieren.
- Die Mac-Adresse wird nach dem Stichwort "ether" oder "HWaddr" angezeigt.
- Öffne das [[https://www.heise.de/netze/tools/mac/|Online-Tool MAC-Adressen]] und schlage deine MAC-Adresse nach. Was wird angezeigt?\\ ++Lösung (erst nach dem Nachschlagen ansehen)|\\ \\ Es wird der Hersteller deiner Netzwerkkarte angezeigt.\\ \\ ++
- Markiere diese Aufgab als "Erledigt"!
\\
===== - Peer-to-Peer-Netzwerk verstehen =====
== ✍ Auftrag – Filius 3 ==
{{ gem/flag?label=Erledigt&icon=%E2%9C%8D#c7abd3b45258737f}} {{ :p:netzwerke:aktionsmodus.png?nolink&51|}}
👉 Untersuche, wie genau die beiden verbundenen Rechner miteinander Kontakt aufnehmen und miteinander kommunizieren.
- ⚠️ Öffne in Filius das Netzwerk erneut, welches du unter dem Namen Filius02 abgespeichert hattest (so löschst du alle Daten und kannst mit einem frischen Netzwerk beginnen, was für diesen Auftrag notwendig ist).
- Klicke im ▶️ Aktionsmodus auf den ''Rechner 0.10'' und starte die ''Befehlszeile''.
- Öffne per Rechtsklick auf einen der beiden Laptops den ''Datenaustausch''. Wenn der Datenaustausch leer ist, setzte erneut einen Ping ab (schreibe in die ''Befehlszeile'' des ''Rechner 0.10'' die Anweisung ''ping 192.168.0.11'').
- Gebe danach in der Filius-Befehlszeile den Befehl ''ipconfig'' ein und studiere die Ausgabe.
- Gebe danach in der Filius-Befehlszeile den Befehl ''arp'' ein und studiere die Ausgabe.
- Öffne den Datenaustausch. Jede Zeile stellt eine Nachricht (ein Protokoll) dar, welche gesendet oder empfangen wurde. Klicke auf eine Nachricht, um die Details zu sehen. Hier siehst du z.B. von welcher Schicht welche Header der Nachricht hinzugefügt wurden und was darin steht.
- Diskutiere mit einer Mitschülerin oder einem Mitschüler die folgenden Fragen. Halte eure Antworten im Textfeld fest.
- Was bedeutet im Datenaustausch im ersten ARP-Protokoll der Eintrag ''FF:FF:FF:FF:FF:FF'' (recherchiere dazu im Internet)?
- Was genau passiert bei den beiden "ARP"-Einträgen?
- Was passiert bei den ersten beiden "ICMP"-Einträgen?
- Wenn erneut ein ''ping 192.168.0.11'' ausgeführt wird, dann wird kein ARP-Protokoll versandt, da sich die beiden Rechner bereits vom ersten Ping her kennen. Aber angenommen, es wird ein zusätzlicher Rechner mit der IP-Adresse ''192.168.0.12'' dem Netzwerk hingefügt. Dann löst die Anweisung ''ping 192.168.0.12'' wiederum ein "arp"-Protokoll aus. Warum?
- Rufe anschliessend die Lehrperson, wenn die Lehrperson zufrieden ist mit den Antworten, markierst du die Aufgabe als "Erledigt".
{{gem/plain?0=N4XyA#e31a99b9a9825a99}}
\\
===== - Auf zu grösseren Netzwerken... ======
Fahre weiter mit: [[p:netzwerke:mehrere_rechner]].
\\
=== Eigene Notizen ===
{{gem/quill#9067f62534070bc0}}