Netty Tutorial #1. Netty Tutorial #1 - Grundlagen

Ähnliche Dokumente
Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht

SCHICHTENMODELLE IM NETZWERK

Das ISO / OSI -7 Schichten Modell

Rechnernetze Übung 11

Rechnernetze Übung 11. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2012

Rechnernetze I SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 23.

Technische Informatik II FS 2008

Internetanwendungstechnik. TCP/IP- und OSI-Referenzmodell. Gero Mühl

Netzwerke, Kapitel 3.1

Verteilte Systeme - Java Networking (Sockets) -

2 Kommunikationssysteme. vs2 1

Rechnernetze I SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 8.

Netzwerkgrundlagen. OSI-Modell. Layer 1 Physikal Layer. Layer 2 Data Link Layer. Layer 3 Network Layer

Fakultät Informatik Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur. Diplomverteidigung

Rechnernetze I. Rechnernetze I. 2 Protokolle und Protokollhierharchie SS 2012

Das ISO/OSI Referenzmodell Internet (TCP/IP) Referenzmodell. Standard Elemente Schichten im ISO/OSI Referenzmodell.

Vermittlungsschicht ( network layer )

Client-Server - Grundlagen

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Das TCP/IP Schichtenmodell

Rechnern netze und Organisatio on

- Man versieht die Nachricht mit der Adresse des Empfängers und schickt Sie per Knopfdruck ab.

Rechnernetze I. Rechnernetze I. 2 Protokolle und Protokollhierharchie. SoSe 2018

Netzwerk-Programmierung. Netzwerke.

Basisinformationstechnologie I

GigE Vision: Der Standard

Universität Innsbruck, Wirtschaftsinformatik Proseminar zur Vorlesung Einführung in die Wirtschaftsinformatik

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

OSI Referenzmodell. Aufbau des Referenzmodells Funktionsweise

Modul 117. OSI-Referenzmodell

Abschlussklausur. Computernetze. Bewertung: 16. Mai Name: Vorname: Matrikelnummer:

TCP/IP-Protokollfamilie

TCP/UDP. Transport Layer

Systeme II. Christian Schindelhauer Sommersemester Vorlesung

Abschlussklausur. Computernetze. 14. Februar Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

ARP, ICMP, ping. Jörn Stuphorn Bielefeld, den 4. Mai Mai Universität Bielefeld Technische Fakultät

Vorlesung SS 2001: Sicherheit in offenen Netzen

Analyse und Bewertung der Möglichkeiten einer IP-basierten Übertragung im UMTS Funknetz für Echtzeit- und Nicht-Echtzeit-Dienste.

Computeranwendung in der Chemie Informatik für Chemiker(innen) 4. Netzwerke

Verteidigung der Diplomarbeit 3D-Netzwerk-Visualisierung

Netzwerke. Netzwerk - Programmierung. Alexander Sczyrba. Madis Rumming.

Aufgaben zum ISO/OSI Referenzmodell

3b: Telekommunikation

Version: Das Versionsfeld gibt an ob es sich um IPv4 oder um IPv6 handelt.

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Was ist das OSI-Referenzmodell eigentlich und wofür wird es benötigt?

Peer-to-Peer- Netzwerke

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

Themenschwerpunkt: Rechnernetze und Netzwerkdesign

TCP. Transmission Control Protocol

Rechnerkommunikation II

UDP-/ICMP-Erweiterung für fwtest

Informations- und Kommunikationssysteme

Rechnernetze I. Rechnernetze I. 2 Protokolle und Protokollhierharchie SS 2014

Jede Technik oder jeder Vorgang, der zur Datenübertragung genutzt wird, lässt sich in 3 Teile gliedern:

Adressierung eines Kommunikationspartners in der TCP/IP-Familie

Modul N4 Adressierung und Protokolle

Basisinformationstechnologie II

Projektierung und Betrieb von Rechnernetzen

Basisinformationstechnologie I

Abschlussklausur. Netzwerke. 13. Juli Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

2. WWW-Protokolle und -Formate

Netzwerktechnologien 3 VO

Netzwerktechnologie 2 Sommersemester 2004

Technische Grundlagen

OSI-Schichtenmodell. Martin Fechtner

Verteilte Systeme. Protokolle. by B. Plattner & T. Walter (1999) Protokolle-1. Institut für Technische Informatik und Kommunikationsnetze

COMPUTER- NETZWERKE. 6. Auflage VON DEN GRUNDLAGEN ZUR FUNKTION UND ANWENDUNG

Einführung. Internet vs. WWW

Packet Tracer Simulation - TCP-und UDP-Kommunikation

Digitale Kommunikation und Internetdienste 1

Vorlesung SS 2001: Sicherheit in offenen Netzen

Device Management Schnittstellen. Referat von Peter Voser Embedded Development GmbH

Netzwerkprogrammierung unter Linux und UNIX

VAADIN, SPRING BOOT & REST

Grundkurs Datenkommunlkation

Rechnernetze 1 Vorlesung im SS 07

Grundkurs Datenkommunikation

Das Internet-Protocol. Aufteilung von Octets. IP-Adressformat. Class-A Netzwerke. Konventionen für Hostadressen

Systeme II. Christian Schindelhauer Sommersemester Vorlesung

Firewall - Techniken & Architekturen

Vernetzte Systeme Network Layer Vermittlungsschicht Schicht 3 Netzwerk Schicht

Zoo 5. Robert McNeel & Associates Seattle Barcelona Miami Seoul Taipei Tokyo

Grundlagen des Datenschutzes und der IT-Sicherheit

Institut für Informatik der Ludwig-Maximilians-Universität München Prof. Dr. D. Kranzlmüller, Dr. N. gentschen Felde. Probeklausur

All People Seem To Need Data Processing: Application Presentation - Session Transport Network Data-Link - Physical

HTTP. Arthur Zaczek. Aug 2015

Stefan Dahler. 1. Konfiguration von Extended Routing. 1.1 Einleitung

Vortrag zur Diplomarbeit

Rechnernetze und Organisation

CCNA Exploration Network Fundamentals. ARP Address Resolution Protocol

IP Internet Protokoll

Virtuelle Kommunikation. Anwender. Physikalische Kommunikation. "Veredelung" des Dienstes

UDP User Datagramm Protokoll

Eigenschaften von IP-Netzen (1 / 2)

Transkript:

Netty Tutorial #1 - Grundlagen Netty Tutorial #1 Theorie: Das Internet Netty einbinden TCP oder UDP? Einfacher Server Einfacher Client Ausblick: Wie es weiter geht 1 Theorie: Das Internet Bevor wir uns der Praxis widmen und Netty in unser Projekt einbinden, noch ein paar Worte zum Aufbau des Internets. Wie so ziemlich jeder weiß, handeln es sich beim Internet um ein (mittlerweile sehr komplexes) Computernetzwerk. Nur durch das Internet können wir bestimmte Anwendungen / Dienste, etwa das von Tim Berners-Lee begründete World Wide Web nutzen oder auf einem Minecraft-Server spielen. Um das Internet besser verstehen zu können, eine kurze Erklärung zu den OSI-Layern, auch OSI-Referenzmodell oder OSI-Schichtmodell. Die Begriffe werden in diesem Tutorial synonym verwendet. OSI-Layer Das OSI-Schichtmodell ist seit einigen Jahrzehnten ISO-Standard und dient der besseren Verteilung von Aufgaben und Problemen bei der Netzwerkkommunikation über das Internet. Dabei existieren 7 Schichten, denen jeweils unterschiedliche Funktionen zugeordnet sind. Die niedrigste Schicht (im Sinne von geringster Abstraktion) ist der Physical Layer (im deutschen Raum auch "Bitübertragungsschicht"). Diese Schicht wird für den Zugang zum Internet benötigt und besteht z.b. aus Kabeln und Repeatern, die für das Übertragen von elektrischen Signalen zuständig sind. Vereinfacht kann man sich das wie Morse-Zeichen vorstellen: Die Daten werden Bit für Bit kodiert durch die Leitung geschickt. Der Physical Layer ist übrigens dafür verantwortlich, dass ein Ping von 1ms zwischen zwei Servern in Europa und Australien schlichtweg unmöglich ist (zumindest mit herkömmlichen elektrischen Signalen oder Lichtübertragung durch Glasfaser-Leitungen). Die zweite Schicht dient der Sicherung und ist ebenfalls zwingend notwendig, um einen funktionierenden Internetzugang herzustellen. Wie der Name schon vermuten lässt, ist diese Schicht dafür zuständig, die korrekte und vollständige Übermittelung der Daten zu gewährleisten. Übernommen wird die Aufgabe zum Beispiel von Switches in einem Netzwerk. Die dritte Schicht, auch Netzwerkschicht oder Vermittlungsschicht hat ebenfalls eine ziemlich wichtige Funktion: Durch sie wird das Herstellen einer Verbindung zwischen zwei Computern ermöglicht. Zudem können die Daten in Pakete zerlegt und weitergesendet werden. Dies ist dann besonders wichtig, wenn keine direkte Kommunikation zwischen den Kommunikationspartnern möglich ist. Der Transport Layer, oder auch Transportschicht, ist die erste Schicht, mit der wir uns aktiv beschäftigen müssen (der Vollständigkeit halber und zur Förderung des Allgemeinwissens sind die anderen Schichten hier natürlich trotzdem aufgeführt). Hier fällt die Entscheidung zwischen gängigen Internetprotokollfamilien: TCP, UDP oder SCTP. Im Falle von UDP ist die Schicht für das Zerlegen der Daten in Pakete und das Auseinanderhalten dieser Pakete zuständig. Bei TCP werden die Bytes einfach als beliebige Sequenzen übertragen; dafür kann der Sender erfahren, ob die Daten den Empfänger erreicht haben. Für größere Datenmengen ist TCP meist die bessere Wahl. SCTP wird aus Gründen der Vereinfachung zunächst nicht

behandelt, bei genug Interesse ist ein zusätzliches Tutorial aber denkbar. Die fünfte Schicht ist der Session Layer (deutsch: Sitzungsschicht). Hier wird die Sitzung bzw. Verbindung zwischen Sender und Empfänger aufrechterhalten. Durch eine Art Wiederherstellungspunkte lassen sich Aktionen wiederholen oder rückgängig machen, falls Fehler auftreten. Da meist die Anwendung über das Verhalten einer Sitzung entscheidet, steht diese Schicht als erste Schicht in direktem Kontakt mit der Anwendung, wie es sich bei der Arbeit mit Netty auch noch zeigen wird. Abgeschlossen wird das OSI-Schichtmodell mit Presentation Layer und Application Layer. Mit diesen zwei Schichten werden wir am häufigsten in Kontakt kommen. Hier wird beispielsweise definiert, welche Daten in welchem Zusammenhang übertragen werden. Auch wenn es nicht jedes Mal explizit erwähnt wird, ist es künftig hilfreich, das OSI-Schichtmodell zumindest grob verinnerlicht zu haben. An vielen Stellen kann dies zu einem deutlich besseren Verständnis beitragen. 2 Netty einbinden Nach der Theorie etwas Praxis: Bevor wirklich Quellcode geschrieben werden kann, muss Netty in das eigene Projekt eingebunden werden. Bevor in irgendeiner Form gehandelt wird, sollte eine Frage geklärt werden: Welche Version von Netty soll eingebunden werden? Auf der Website des Netty Projekts finden sich Downloads für Netty 3.x, Netty 4.x und Netty 5.x, wobei sich Version 5.x noch in der Alpha-Phase befindet. Wer ausschließlich stabile Software bevorzugt und bei Bugs verabscheut, dem sei zu Version 4.0.32.Final geraten. Ansonsten stehen auch schon Builds der 5.x-Serie zur Verfügung. Hier wurden viele Funktionen deutlich verbessert und zum Teil auch welche hinzugefügt. Da sich die 5.x-Serie noch in der Alpha-Phase befindet, sollte im Hinterkopf behalten werden, dass ein Bug durchaus auftreten kann. Generell ist die 3.x-Serie schon seit längerer Zeit überholt und sollte daher nicht mehr verwendet werden (es sei denn, es steht nur Java 5 zur Verfügung). Nach dieser Entscheidung kann das Einbinden erfolgen, wozu im Folgenden zwei Wege vorgestellt werden. Manuelles Einbinden Die einfache Variante besteht darin, das ZIP-Archiv von der Download-Seite herunterzuladen, zu öffnen und die Datei "netty-all.jar" zu extrahieren. Diese enthält die Netty-Bibliothek in vollem Umfang und ist bereits kompiliert. Die meisten integrierten Entwicklungsumgebungen (z.b. Eclipse, IntelliJ IDEA oder NetBeans) unterstützen das Einbinden einer Bibliothek als JAR-Archiv. Es ist zu beachten, dass die Bibliothek auch zur Laufzeit verfügbar sein muss. Einbinden mit Maven Benutzer eines Build-Systems können diesen Schritt noch schneller erledigen. Im Falle von Maven werden einfach folgende Zeilen in die pom.xml eingefügt: XML 1. <dependency> 2. <groupid>io.netty</groupid> 3. <artifactid>netty-all</artifactid> 4. <version>5.0.0.alpha2</version> <!-- Eventuell verändern --> 5. <scope>compile</scope> 2

6. </dependency> Damit wäre auch dieser Schritt erledigt! 3 TCP oder UDP? Wir haben gelernt, dass im OSI-Schichtmodell eine Transportschicht (engl. Transport Layer) enthalten ist. Da Netty sowohl TCP (Transmission Control Protocol) als auch UDP (User Datagramm Protocol) unterstützt, stehen wir vor einer nicht unwichtigen Entscheidung. Um die Entscheidung ein wenig zu erleichtern, eine kleine Tabelle mit Eigenschaften von TCP und UDP. Transmission Control Protocol [TCP] User Datagramm Protocol [UDP] Verbindungsorientiert, Datenstrombasiert (Stream) Paket-basiert Zuverlässig 1 Nicht zuverlässig 1 Beliebig große Datenmengen, da eine Stream-Übertragung stattfindet Der Sender kann feststellen, ob die Daten den Empfänger in korrekter Reihenfolge (= gesendeter Reihenfolge) und in ihrer Vollständigkeit erreichen Länge einzelner Pakete häufig auf kleine Datenmengen beschränkt => Aufteilen komplexer Daten wird notwendig Hier können über eigenständig implementierte Prüfsummen-Verfahren und KeepAlive-Pakets TCP-Features simuliert werden 1 Zuverlässigkeit bezeichnet in diesem Kontext das vollständige und unmanipulierte Übertragen der Daten vom Sender an den Empfänger in unveränderter Reihenfolge. Dies leistet UDP im Gegensatz zu TCP nicht. Für alle Praxisbeispiele in Erklärungen in diesem Tutorial wird TCP verwendet. Auch hier werden sogenannte KeepAlive-Packets, das sind Datenpakete, die gesendet werden um die Funktionsfähigkeit des Kommunikationspartners sicherzustellen, trotz TCP eingesetzt. Um mögliche Verwirrungen vermeiden: Das ist so gewollt. Bei UDP ist die Bedeutung der KeepAlive-Packets zwar wesentlich größer, für TCP- Verbindungen können solche Packets jedoch auch verwendet werden, um die Funktionsfähigkeit (nicht die Verfügbarkeit) des anderen Rechners sicherzustellen. Glückerlichweise haben das auch die Netty- Entwickler erkannt, sodass Netty nun von Haus aus eine Implementierung für KeepAlive-Packets bereitstellt. 4 Einfacher Server Nun ist es endlich soweit: Wir setzen die Netty-Bibliothek praktisch ein. Dazu gibt es direkt den kompletten Quellcode, einige Stellen sich durch Kommentare nummeriert, damit anschließend eine Erklärung zu den nummerierten Stellen erfolgen kann. 3

Code Erklärung 5 Einfacher Client Nachdem wir einen vollständigen Server mithilfe von Netty programmiert haben, muss es natürlich auch einen Client geben, damit eine Verbindung aufgebaut werden kann. Zu Testzwecken genügt es, beim Hostname localhost anzugeben. Damit wird der eigene Computer referenziert. Es funktioniert aber ebenfalls, den Server auf einem entfernten Rechner zu starten und mit Kenntnis der IP-Adresse / des Hostnames von zu Hause mit diesem zu verbinden. Dabei ist zu beachten, dass die Portfreigaben in Firewall & Router u.u. erst konfiguriert werden müssen. Code Erklärung 6 Ausblick: Wie es weiter geht Damit ist das Ende dieses Tutorials erreicht. Ich möchte für weitere Tutorials noch einen kurzen Ausblick geben. Es handelt sich dabei lediglich um Ideen, die jederzeit variieren können. Auch besteht die Möglichkeit, dass einige Punkte gar nicht in einem Tutorial enthalten sind. Nettys ByteBuf ChannelHandler Kodierung und Dekodierung von Nachrichten Session-Verwaltung HTTP-Support Entwurf eines eigenen Protokolls Verschlüsselte und/oder komprimierte Datenübertragung Fehlerbehandlung... (Die Reihenfolge ist weitgehend willkürlich gewählt) 4

Hat dir das Tutorial gefallen? Du hast eine Idee für ein weiteres Tutorial, einen Verbesserungsvorschlag oder stehst vor einem Problem? Lass es mich wissen. ~ Janhektor 5