Skip to main content
Top

2018 | Book

TCP und UDP Internals

Protokolle und Programmierung

insite
SEARCH

About this book

Kommunikation, also der Austausch von Informationen, erfordert bestimmte Regeln, die man in der Kommunikationstechnik unter dem Begriff Kommunikationsprotokoll (kurz Protokoll) kennt. Verteilte Systeme zur nachrichtenbasierten Kommunikation gestalten sich wegen vieler Protokolldetails jedoch oft sehr komplex. Deswegen sind Referenzmodelle nötig, die diese Komplexität durch die Schichtung und Kapselung der einzelnen Funktionen überschaubar darstellen. Als Standard haben sich heute das ISO/OSI-Referenzmodell und das TCP/IP-Referenzmodell durchgesetzt, wobei die TCP/IP-Protokollfamilie in der Praxis sehr viel beliebter ist und das Internet dominiert.
Das Buch vermittelt daher praxisbezogen und in kompakter Form wichtige Grundkonzepte der Datenkommunikation. Der Fokus liegt auf den gängigen Transportprotokollen der Internet-Gemeinde und auf der Entwicklung verteilter Anwendungen. Besonders ausführlich betrachtet der Autor die beiden weit verbreiteten Transportprotokolle TCP und UDP sowie die Socket API. Neben den wesentlichen Protokollmechanismen und Zusammenhängen dieser Protokolle weist er auf die Möglichkeiten der Protokolloptimierung hin. Dadurch wird das Buch zu einem praktischen Ratgeber, der jederzeit zur Konfiguration der komplexen Protokollimplementierungen in Universalbetriebssystemen wie Linux und Windows herangezogen werden kann.
Als Professor für Wirtschaftsinformatik richtet sich der Autor vor allem an Studierende der Fächer Informatik, Wirtschaftsinformatik und Kommunikationstechnik. Die komplexen Sachverhalte werden bis ins Detail verständlich erklärt und helfen dabei, die konkreten Protokollimplementierungen besser nutzen zu können. Der Schwerpunkt des Buches liegt auf den praktisch relevanten Themen, aber auch die grundlegenden Aspekte werden erläutert. Viele Bilder veranschaulichen die zum Teil komplexen Protokollmechanismen. Eine Sammlung von Kontrollfragen inklusive Musterlösungen erleichtert die Nachbearbeitung des Stoffes. Komplettiert wird das Buch durch umfangreiches Zusatzmaterial, das zum Download bereitsteht. Lehrende können darüber hinaus auf Anfrage Präsentationsfolien zu den behandelten Themen beziehen.

Table of Contents

Frontmatter
1. Grundbegriffe der Datenkommunikation
Zusammenfassung
Kommunikation ist der Austausch von Informationen nach bestimmten Regeln. Dies ist zwischen Menschen ähnlich wie zwischen Maschinen. Das Regelwerk fasst man in der Kommunikationstechnik unter dem Begriff Kommunikationsprotokoll (kurz Protokoll) zusammen. Die nachrichtenbasierte Kommunikation in verteilten Systemen ist aufgrund der vielen Protokolldetails sehr komplex. Aus diesem Grund entwickelte man Beschreibungsmodelle, sogenannte Referenzmodelle, in denen die Komplexität durch Schichtung und Kapselung der einzelnen Funktionen überschaubarer dargestellt wurde. Zwei Referenzmodelle, das ISO/OSI-Referenzmodell und das TCP/IP-Referenzmodell, haben sich heute durchgesetzt, wobei in der Praxis die konkreten Protokolle der TCP/IP-Welt deutlich mehr genutzt werden und das Internet dominieren. Die grundlegenden Begriffe der Datenkommunikation, die Referenzmodelle und einige Fallbeispiele sollen einen Überblick über die Datenkommunikation verschaffen und dienen damit als Basis für die weitere Betrachtung der Transportmechanismen.
Peter Mandl
2. Grundkonzepte der Transportschicht
Zusammenfassung
Transportprotokolle wie TCP und UDP sind die Basis für die höherwertigen Kommunikationsmechanismen der Anwendungsschicht. Das Transportsystem als Ganzes stellt Übertragungsfunktionen bereit und wickelt sehr viele Aufgaben im Hintergrund ab. Für den Nutzer eines Transportsystems, den Dienstnehmer, ist nicht ersichtlich, welche Nachrichten konkret gesendet werden und mit welchen Protokollmechanismen die Kommunikation durchgeführt wird. Wichtige Funktionen sind die Adressierung und die Datenübertragung. Je nach Funktionalität kann die Transportschicht verbindungsorientiert oder verbindungslos arbeiten. Bei verbindungsorientierten Protokollen werden zudem noch Mechanismen zum Verbindungsmanagement und während der Datenübertragung auch Bestätigungsverfahren, Übertragungswiederholungsverfahren, Flusskontroll- und der Staukontrollmechanismen sowie Mechanismen zu Stückelung (Segmentierung) von Nachrichten benötigt. Die grundlegenden Mechanismen der Transportschicht werden zunächst allgemein, ohne konkreten Bezug zu einem Transportprotokoll betrachtet.
Peter Mandl
3. TCP-Konzepte und -Protokollmechanismen
Zusammenfassung
Das Transportprotokoll TCP ist in internetbasierten Netzwerken die Basis für die höherwertigen Kommunikationsmechanismen, wenn Verbindungsorientierung und zuverlässiger Transport erforderlich sind. TCP bzw. die implementierten TCP-Instanzen übernehmen die Aufgabe des Verbindungsaufbaus und der gesicherten Datenübertragung. Bestätigungs- und Wiederholungsverfahren sind ebenso in TCP vorhanden, wie eine Flusskontrolle. Die Segmentlängen werden ermittelt, so dass die TCP-Segmente auch durch die unterliegenden Schichten transportiert werden können. Optimierungen wie zum Beispiel eine kumulative Bestätigung sind in zugehörigen RFCs spezifiziert. Das Protokoll nutzt einen schlanken Header für die Steuerinformationen. In der TCP-Spezifikation sind der Verbindungsauf- und der Verbindungsabbau über Zustandsautomaten beschrieben. Weiterführende Konzepte und Mechanismen von TCP sind das Slow-Start-Verfahren zur Überlastkontrolle und auch der Einsatz spezieller Timer wie etwa der Retransmission Timer, der für die Arbeitsweise von TCP von großer Bedeutung ist. Auch die Sicherheit von TCP, die durch spezielle Angriffsvektoren gefährdet ist, darf nicht außer Acht gelassen werden. TCP wird ständig optimiert und weiterentwickelt und es gibt mittlerweile eine Fülle von RFCs, die sich mit TCP befassen. Diese Aspekte werden in diesem Kapitel im Detail erläutert.
Peter Mandl
4. UDP-Konzepte und -Protokollmechanismen
Zusammenfassung
UDP ist im Gegensatz zu TCP ein Transportprotokoll für die verbindungslose und ungesicherte Kommunikation. Wenn es also für eine Anwendung akzeptabel ist, dass gelegentlich Nachrichten verloren gehen können, ohne dass dies schlimmere Konsistenzprobleme verursacht, dann ist UDP möglicherweise eine bessere Wahl als TCP. Beispielsweise ist es günstiger, einen Audiostrom über UDP zu übertragen als über TCP, weil es für das menschliche Ohr einfacher zu verarbeiten ist, wenn eine kleine Sequenz fehlt, als wenn ein ständiges Nachfordern fehlender Daten die Audioqualität stark durch „Ruckeln“ beeinträchtigen würde. Die wichtigste UDP-Funktionalität ist, das Multiplexing mehrerer UDP-Kommunikationsendpunkte über der IP-Schicht ohne zusätzliche Sicherheitsmechanismen einzuführen. Außer einer Fehlererkennungsfunktion wird sonst zur Best-Effort-Übertragung des Internet-Protokolls nichts hinzugefügt. Ein weiterer Vorteil, der sich durch die UDP-Nutzung ergibt, ist die Möglichkeit, Broadcast- und Multicast-Nachrichten zu senden und zu empfangen. Die Besonderheiten des Transportprotokolls UDP werden im Weiteren diskutiert.
Peter Mandl
5. Programmierung von TCP/UDP-Anwendungen
Zusammenfassung
Viele Kommunikationsanwendungen werden heute auf Basis der Socket API entwickelt. Höhere Kommunikationsmechanismen wie Remote Procedure Call (RPC), Remote Method Invocation (RMI) oder Message Passing nutzen ebenfalls überwiegend die Socket API, die ursprünglich nur in der Programmiersprache C implementiert war, heute aber in allen gängigen Programmiersprachen zur Verfügung steht. In Java besteht eine komfortable Nutzungsmöglichkeit, die es gestattet, ganze Java-Objekte als Nachricht zu übertragen. Das Java-Laufzeitsystem übernimmt auch die Serialisierung und Deserialisierung der Objekte bei TCP-Sockets. Ebenso können Datagramm-Sockets und Multicast-Sockets auf Basis von UDP genutzt werden. Serveranwendungen, die sehr viele Anfragen von Clients pro Zeiteinheit bearbeiten müssen, können diese Anfragen nicht seriell in einem Thread bearbeiten, sondern implementieren in der Regel Mutithreading, wobei es mehrere Varianten gibt. Entweder wird jedem Client serverseitig ein eigener Workerthread zugewiesen oder es werden einzelne Client-Requests zur Bearbeitung an Workerthreads übergeben. Für Hochleistungsanwendungen ist die feingranularere Zuordnung eines Client-Requests an einen Workerthread effizienter. Die Threads werden in einem Threadpool verwaltet und ankommende Requests werden freien Threads zugeordnet. Damit ein Server hier effizient arbeiten kann, werden häufig über der Socket API liegende Frameworks bzw. APIs wie nio und netty verwendet, die auch ein effizientes, nicht blockierendes Warten auf ankommende Requests ermöglichen. Dies erfolgt unter Zuhilfenahme der speziellen Systemfunktion select, mit der die Programmierung eines zentralen Ereigniswartepunkts für viele Ereignisquellen wie TCP-Verbindungen realisiert werden kann. Im Folgenden wird die Programmierung von socketbasierten Anwendungen erläutert. Insbesondere wird die Socket API in Java besprochen. Programmierhilfen für einfachere Anwendungen auf Basis von TCP- und UDP-Sockets werden aufgezeigt, ein einfaches Framwork zur Erleichterung der Programmierung wird vorgestellt und die Programmierung von Servern für sehr leistungsstarke Anwendungen wird andiskutiert.
Peter Mandl
6. Schlussbemerkung
Zusammenfassung
Dieses Buch sollte einen tieferen Einblick in die Funktionsweise und Nutzung die wichtigsten Transportprotokolle in heutigen Kommunikationssystemen und auch in die Programmierung von Kommunikationsanwendungen geben. Die Entwicklung von Transportprotokollen ist aufgrund der rasanten Entwicklung des Internets noch lange nicht abgeschlossen. Es werden immer wieder neue Protokolle bzw. Optimierungen bestehender Protokolle vorgeschlagen.
Peter Mandl
7. Übungsaufgaben und Lösungen
Zusammenfassung
Zur Vertiefung des Stoffes sollen die wichtigsten Fragestellungen aus den einzelnen Kapiteln nochmals in Form von Übungsaufgaben wiederholt werden. Mögliche Lösungen werden gleich mitgeliefert. Die Übungsfragen werden nach Kapiteln geordnet und sollen auch zum erneuten Lesen noch nicht ganz verstandener Aspekte aus den vorangegangenen Kapitel anregen.
Peter Mandl
Backmatter
Metadata
Title
TCP und UDP Internals
Author
Prof. Dr. Peter Mandl
Copyright Year
2018
Electronic ISBN
978-3-658-20149-4
Print ISBN
978-3-658-20148-7
DOI
https://doi.org/10.1007/978-3-658-20149-4

Premium Partner