~~NOTOC~~ ====== Kommunikationsarten ====== ===== Leitungs- vs. paketbasierte Verbindungen ===== ==== Leitungsbasierende Kommunikation ==== {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:vermittlung.jpg?200|}} **Leitungsvermittelte Verbindungen** öffnen einen exklusiven Kommunikationskanal zwischen zwei Kommunikationspartnern - ein Beispiel ist das frühere Telefonnetz. ((Bildquelle: https://commons.wikimedia.org/wiki/File:Telefonistinde.jpg, Lizenz: [[https://creativecommons.org/licenses/by/3.0/deed.de| Creative-Commons-Lizenz "Namensnennung 3.0 nicht portiert"]], Beschreibung: //Dansk: Manuel betjening på telefoncentral// Datum: //2. April 2017// Quelle: //MyNewsDesk.com// Urheber: //Arkiv//)) Durch Änderung der Steckverbindung, später durch Relais und elektronische Schaltungen wurden die Teilnehmer direkt verbunden. Der gesamte Kommunikationsvorgang nutzte diesen Kanal. Bei leitungsbasierten Verbindungen ist der logistische Aufwand recht hoch, die Vermittlungszeit ebenfalls, dafür kann man sehr genau vorhersagen, mit welcher Bandbreite die Kommunikation durchgeführt werden kann, da die Verbindung für diesen einen Kommunikationsvorgang "reserviert" ist. {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:leitungsbasiert.png?600 |}} ==== Paketbasierte Kommunikation ==== Bei der Paketbasierten Kommunikation (z.B. per TCP oder UDP), werden die Kommunikationsinhalte in "Datenpakete aufgeteilt und über ein vermaschtes Netz an den Empfänger vermittelt - jedes Paket einzeln. Dabei können verschiedene Teile der Kommunikation durchaus unterschiedliche Wege durch das Netzwerk nehmen und in anderer Reihenfolge am Ziel ankommen, als sie abgesendet wurden. |{{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:packet_switching.gif |}}| |Grafik: Oddbodz - Own work, [[https://creativecommons.org/licenses/by-sa/3.0|CC BY-SA 3.0]], https://commons.wikimedia.org/w/index.php?curid=29033823| ==== Ein Experiment mit Filius ==== Öffne das folgende Filius-Szenario: [[https://codeberg.org/qg-info-unterricht/filius-dateien-wiki/raw/branch/main/tcp_ip/paketbasierte_kommunikation.fls|paketbasierte_kommunikation.fls]] und aktiviere zunächst **alle** Modemverbindungen. Beim empfangenden Modem (das auf eingehende Verbindungsanfragen wartet) die Schaltfläche "Aktivieren klicken", dann beim Gegenstück auf "Verbinden". Wenn die Verbindung zustande gekommen ist, haben beide Modems einen grünen Punkt: {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:filius_modem.png |}} Reduziere dann die Ausführungsgeschwindigkeit auf ca. 70%. Das Ergebnis sollte so aussehen: {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:auswahl_110.png?500 |}} ---- {{:aufgabe.png?nolink |}} === (A1) === * Öffne auf dem Laptop mit der IP-Adresse 192.168.1.10 (links oben) eine Kommandozeile * Pinge den Rechner mit der Adresse 192.168.0.11 an und beobachte am Blinken der Verbindungsleitungen, welchen Weg die ICMP Pakete nehmen. * Wiederhole den Versuch mit dem Zielrechner 192.168.0.12. Was fällt dir auf? Kannst du anhand der Konfiguration der Rechner (mit den Mauszeiger über dem Rechner stehen bleiben) eine Erklärung für das Verhalten finden? * Füge zwischen den beiden Switches oben ein Kabel ein. * Wiederhole die beiden Versuche von oben und notiere deine Beobachtungen. Erläutere den Begriff "Paketbasierte Kommunikation" anhand deiner Beobachtungen. ==== TCP genauer angeschaut ==== Mit dem TCP Protokoll kann man Informationen in beide Richtungen übertragen. Kommunikation über TCP ermöglicht es, zur gleichen Zeit Daten zu senden und zu empfangen. Die Übertragungseinheiten, auf die TCP bei der Datenübertragung zurückgreift, sind Segmente (Pakete), die zusätzlich zu den Nutzdaten auch Metainformationen enthalten können. Die maximale Paketgröße ist auf 1.500 Byte beschränkt (MTU - "Maximum Transfer Unit"). Verbindungsauf- und -abbau und auch die Datenübertragung werden von TCP-Software im Netzwerk-Protokollstapel des Betriebssystems übernommen. Der TCP-Stack des Betriebssystems wird von den Netzwerkanwendungen wie Webbrowsern oder Serverprogrammen über spezifische Schnittstellen bedient, jede Verbindung ist dabei durch zwei Endpunkte -- **Client** und **Server** -- definiert. Welcher Kommunikationspartner die Client- und welche die Serverrolle übernimmt, spielt dabei zunächst keine Rolle – wichtig ist, dass der TCP-Stack an jedem Endpunkt ein eindeutiges, Paar aus **IP-Adresse** und **Port** verwenden kann. Sein solches Paar nennt man auch einen **Socket**. **Beispiel:** {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:server-client.png |}} ==== Exkurs: Sockets ==== Ein **Server** ist ein Programm, das Dienste zur Verfügung stellt, häufig wird es auf einem Server (Gerät) dauerhaft im Hintergrund ausgeführt. Es stellt seine Dienste an einem Port zur Verfügung. Zusammen mit der IP-Adresse des Servergeräts kommuniziert es also über einen Socket mit der Außenwelt. So kann ein Servergrät viele Serverdienste anbieten, ohne dass es zu Kollisionen kommt. {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:serverdienste.drawio.png |}} Ein Client ist ein Programm, das auf die Dienste eines Serverprogramms zugreift. Es wird meist auf dem Clientgerät ausgeführt, z.B. dem Laptop oder Smartphone, mit dem ein Benutzer mit Netzwerkdiensten in Interaktion tritt. Für jede aktive Netzwerkverbindung verwendet auch das Clientgerät einen eigenen Socket - in der Spalte ganz links sind auch die jeweiligen Client-Programme aufgelistet, die den Socket verwenden. {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:lsof.png |}} ==== TCP-Verbindungsaufbau: Three-Way-Handshake ==== Damit Client und Server eine TCP Verbindung aufbauen können, müssen beide über eine IP-Adresse verfügen und den Port für die Datenübertragung definiert und freigegeben haben((Hier greifen z.B. Firewalls ein, indem Sie den Zugriff auf bestimmte Ports blockieren)). Der Ablauf beim Verbindungsaufbau mit TCP sieht folgendermaßen aus: * Im ersten Schritt sendet der Client dem Server ein **SYN-Paket** (**syn**chronize) mit einer individuellen, zufälligen Sequenznummer. Diese Nummer stellt die Übertragung in der korrekten Reihenfolge und ohne Duplikate sicher. * Hat der Server das Paket erhalten, stimmt er dem Verbindungsaufbau zu, indem er ein **SYN-ACK-Paket** (**ack**nowledgement) zusammen mit der um 1 erhöhten Sequenznummer des Clients zurückschickt. Außerdem übermittelt er dem Client eine eigene (zufällige) Sequenznummer. * Zum Abschluss des Verbindungsaufbaus bestätigt der Client den Erhalt des SYN-ACK-Segments, indem er ein eigenes ACK-Paket versendet, das die um 1 erhöhte Sequenznummer des Servers enthält. {{ :faecher:informatik:oberstufe:netzwerke:kommunikationsarten_und_tcp:3wayhs.drawio.png |}} ---- {{:aufgabe.png?nolink |}} === (A2) === Öffne in Filius das folgende Beispiel [[https://codeberg.org/qg-info-unterricht/filius-dateien-wiki/raw/branch/main/tcp_ip/webserver_client.fls|webserver_client.fls]]. Auf dem Laptop ist ein Webbrowser installiert, öffne mit diesem die Webseite auf den Server (192.168.0.1) Vollziehe den TCP Verbindungsaufbau nach. Kannst in der Analyse des Datenverkehrs herausfinden, ob und wie eine TCP Verbindung auch beendet wird? Recherchiere und erstelle einen Heftaufschrieb. ---- === Material === {{simplefilelist>.:*}}