IT kompakt
Werke der kompakt-reihe zu wichtigen Konzepten und Technologien der IT-Branche: ermöglichen einen raschen Einstieg, bieten einen fundierten Überblick, sind praxisorientiert, aktuell und immer ihren Preis wert. Weitere Titel der Reihe siehe: http://www.springer.com/series/8297.
Valentin Plenk Angewandte Netzwerktechnik kompakt Dateiformate, Übertragungsprotokolle und ihre Nutzung in Java-Applikationen
Valentin Plenk Hochschule Hof Hof, Deutschland IT kompakt ISBN 978-3-658-15903-0 DOI 10.1007/978-3-658-15904-7 ISBN 978-3-658-15904-7 (ebook) Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar. Springer Vieweg Springer Fachmedien Wiesbaden GmbH 2017 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Springer Vieweg ist Teil von Springer Nature Die eingetragene Gesellschaft ist Springer Fachmedien Wiesbaden GmbH Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Strasse 46, 65189 Wiesbaden, Germany
Vorwort Zum Aufbau des Buches Viele Lehr- und Sachbücher erklären den Stoff von den Grundlagen zur Anwendung. Damit ergibt sich eine Lernsituation nach dem Motto Lern das mal! Später verstehst Du auch, wozu Du das brauchst. Das erinnert mich an den folgenden Witz: Sagt ein Mann zu einem Passanten: Kennen Sie den Weg zum Bahnhof? Der Passant verneint, darauf der Mann: Also passen Sie mal auf! Sie gehen diesestraßerunter,dannlinksunddann... Ich habe oft das Gefühl, dass ich die Rolle des Mannes spiele und meine Studierenden die des Passanten. Um dieses Problem zu vermeiden, habe ich das Buch von der Anwendung zur Theorie aufgebaut. Die Kapitel sind so angeordnet, dass zunächst eine Anwendung dargestellt wird und danach vom Abstrakten zum Konkreten die entsprechende technische Lösung. Zum Inhalt des Buches Den Stoff für das Buch habe ich aus vielen, thematisch enger gefassten Büchern so ausgewählt, dass das Buch den gesamten Bereich technischer Kommunikation von Datenformaten über Protokolle bis hin zum Versenden von Netzwerktelegrammen abdeckt. Der Schwerpunkt liegt dabei auf der Anwendung von Netzwerken. Technische Aspekte der Übertragungsschicht werden nicht behandelt. V
VI Vorwort Viele konkrete, wo sinnvoll in Java ausprogrammierte Beispiele zeigen die Anwendung des Stoffs. Spätere Kapitel greifen die Beispiele aus den früheren Kapiteln wieder auf und helfen dem Leser, den roten Faden nicht zu verlieren. Wer das Buch bis zum Ende durcharbeitet, baut ein Verständnis der typischen Probleme in der Anwendung der Netzwerktechnik auf, von der Repräsentation der Daten in einem Dateiformat über den Austausch der Daten über Standardprotokolle bis hin zur Definition einfacher, eigener Protokolle auf der Basis von TCP/IP. Oberkotzau, September 2016 Valentin Plenk
Danksagung Ich danke allen, die mich beim Schreiben unterstützt haben. Besonders erwähnen möchte ich dabei meinen Kollegen, Prof. Dr. Scheidt, der mir zahlreiche Unterlagen und die Abb. 7.2, 7.3 und 7.4 zur Verfügung gestellt hat, Herrn Bernd Kandler, der mich bei den Übungsaufgaben unterstützt hat, sowie Herrn Philipp Schmalz, der für die ansprechende Gestaltung der Abbildungen und des Textes gesorgt und das Material für die begleitende Webseite zusammengestellt hat. VII
Abkürzungen ACK Acknowledgement ASCII American Standard Code for Information Interchange CSMA/CA Carrier Sense Multiple Access/Collision Avoidance CSMA/CD Carrier Sense Multiple Access/Collision Detection CSS Cascading Style Sheets DNS Domain Name System FDMA Frequency Division Multiple Access FTP File Transfer Protocol HTML Hypertext Markup Language HTTP Hypertext Transfer Protocol HTTPS Hypertext Transfer Protocol Secure IETF Internet Engineering Task Force IP Internet Protocol JAR Java Archive JSON JavaScript Object Notation MAC Media Access Control MSS Maximum Segment Size MTU Maximum Transfer Unit NAT Network Address Translation OPC UA Open Platform Communications Unified Architecture PLC Programmable Logic Controller = SPS PPP Point-to-Point Protocol RTP Real-Time Transport Protocol SACK Selective Acknowledgements SDK Software Development Kit IX
X SEQ SYN SMTP SPS TCP/IP TDMA UDP/IP URI URL URN USC UTF WIN WLAN WWW Abkürzungen Sequence Synchronize Simple Mail Transfer Protocol speicherprogrammierbare Steuerung = PLC Transmission Control Protocol / Internet Protocol Time Division Multiple Access User Datagram Protocol / Internet Protocol Uniform Resource Identifier Uniform Resource Locator Uniform Resource Name Universal Character Set USC Transformation Format Window (Size) Wireless Local Area Network World Wide Web
Inhaltsverzeichnis 1 Einführung... 1 1.1 Aktueller Kontext der Netzwerktechnik... 1 1.2 Aufbau des Buches... 2 1.3 Grundlagen der Kommunikation... 3 1.3.1 Zeitlicher Ablauf der Kommunikation... 3 1.3.2 Das Prinzip eines Kommunikationsprotokolls. 4 1.4 Schichtmodelle... 6 1.4.1 TCP/IP... 6 1.4.2 Java... 8 2 Grundlagen... 11 2.1 Beispiel Studentenverwaltung Datenmodell... 11 2.2 Java-Streams... 15 2.2.1 Binäre Streams... 16 2.2.2 Beispiel Studentenverwaltung Binäres Schreiben... 17 2.2.3 Beispiel Studentenverwaltung Verwaltungsklasse... 18 2.2.4 Text-Streams... 22 2.2.5 Beispiel Studentenverwaltung Lesen als Text. 26 2.3 Codierung/Zeichensätze... 32 2.4 Netzwerkanalyse mit Wireshark... 34 2.4.1 Capture-Filter... 35 2.4.2 Display-Filter... 36 2.4.3 Protokollanalyse... 37 XI
XII Inhaltsverzeichnis 3 Dateiformate: JSON... 41 3.1 Dateiformate im Allgemeinen... 41 3.2 Das Dateiformat JSON... 42 3.3 Zugriff in Java mit GSON... 44 3.4 Beispiel Studentenverwaltung Lesen und Schreiben als JSON... 49 4 Dateiformate: HTML... 53 4.1 HTML im Kontext... 53 4.2 Das Dateiformat HTML... 54 4.3 Webadressen... 54 4.3.1 URLs, URNs und URIs... 55 4.3.2 IP-Adressen (im Überblick)... 56 4.3.3 Domain Name System (DNS)... 57 4.4 Grundstruktur einer HTML-Seite... 58 4.5 Formulare... 61 4.6 Analyse im Webbrowser... 63 4.7 Analyse mit Wireshark... 64 4.8 Beispiel: Zugriff auf den Webserver einer SPS (Teil 1) 66 4.8.1 Der Quellcode... 67 4.8.2 Die Kommunikation... 70 5 Protokolle: HTTP... 77 5.1 Protokolle im Allgemeinen... 77 5.2 Das Protokoll HTTP... 79 5.3 GET und POST... 80 5.4 Cookies... 81 5.5 Authentifizierung und Verschlüsselung... 81 5.6 Zugriff in Java... 82 5.6.1 Die Bibliothek HTTPClient... 82 5.6.2 Eine Get-Anfrage... 83 5.6.3 Eine Post-Anfrage... 84 5.7 Beispiel: Zugriff auf den Webserver einer SPS (Teil 2) 85 5.7.1 Die Anmeldung... 86 5.7.2 Der Zählerstand... 86 5.8 Beispiel Studentenverwaltung Abrufen einer JSON-Datei... 88
Inhaltsverzeichnis XIII 6 Protokolle: OPC UA... 93 6.1 Überblick über OPC UA... 93 6.2 Zugriff in Java mit dem Prosys-SDK... 96 6.2.1 Lesen eines Nodes... 97 6.2.2 Suchen eines Nodes im Address-Space... 98 7 Protokolle: TCP/IP... 103 7.1 TCP/IP im Überblick... 103 7.2 TCP im Detail... 104 7.2.1 Verbindung aufbauen... 106 7.2.2 Datenübertragung... 106 7.2.3 Verbindungsabbau... 109 7.3 Zugriff in Java... 110 7.3.1 Verbindungsaufbau beim Server... 111 7.3.2 Verbindungsaufbau beim Client... 112 7.4 Eine Beispielanwendung... 112 7.5 Beispiel Studentenverwaltung Datenaustausch über TCP/IP... 118 8 Protokolle: UDP/IP... 127 8.1 UDP/IP im Überblick... 127 8.2 Übertragbare Datenmenge... 128 8.3 Zugriff in Java... 130 8.3.1 Das Prinzip der UDP-Kommunikation... 130 8.3.2 Eine Beispielanwendung... 131 9 Ausblick... 139 9.1 Die unteren Schichten im Kontext... 139 9.2 IP-Protokoll/Netzwerkschicht... 141 9.2.1 IPv4-Adressen... 141 9.2.2 Routing... 142 9.3 Ethernet/Netzzugangsschicht... 144 A Lösungsvorschläge zu den Übungsaufgaben... 147 A.1 Lösungen zu Kap. 2... 147 A.2 Lösungen zu Kap. 3... 155 A.3 Lösungen zu Kap. 4... 155
XIV Inhaltsverzeichnis A.4 Lösungen zu Kap. 5... 164 A.5 Lösungen zu Kap. 7... 179 A.6 Lösungen zu Kap. 8... 187 Literatur... 191 Sachverzeichnis... 193