Skip to main content

2024 | Buch

TCP, UDP und QUIC Internals

Protokolle und Programmierung

insite
SUCHEN

Über dieses Buch

Das Lehrbuch vermittelt praxisbezogen wichtige Grundkonzepte der Datenkommunikation mit einem Fokus auf den wichtigsten Transportprotokollen des Internets und auf der Entwicklung verteilter Anwendungen. Besonders ausführlich betrachtet der Autor die Transportprotokolle TCP und UDP, aber auch das neue, ursprünglich von Google für die Webkommunikation mit HTTP/3 entwickelte und inzwischen standardisierte Protokoll QUIC wird in der 2. Auflage ausführlich und verständlich erläutert. Dabei werden auch die zugrundeliegenden Kommunikationskonzepte anschaulich beschrieben. Um die Vorteile von QUIC im Vergleich zu TCP zu verstehen, werden auch die Grundlagen des Transport Layer Security (TLS) Protokolls, das in QUIC nun bereits integriert ist, in der vorliegenden 2. Auflage eingeführt. Die Nutzung von Transportmechanismen in der Programmierung eigener Kommunikationsanwendungen über die Socket API wird ebenfalls mit vielen Beispielen vor allem in Java, aber auch grundlegend in C erläutert.

Neben den wesentlichen Protokollmechanismen und Zusammenhängen der betrachteten Protokolle weist der Autor 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, Windows oder macOS herangezogen werden kann.

Die komplexen Sachverhalte werden verständlich erklärt und helfen dabei, die konkreten Protokollimplementierungen besser zu nutzen. Der Schwerpunkt des Buches liegt auf den praktisch relevanten Themen, aber auch grundlegende Aspekte werden erläutert. Viele Bilder veranschaulichen die Protokollmechanismen. Eine Sammlung von Kontrollfragen inklusive Musterlösungen erleichtert die Nachbearbeitung des Stoffes. Komplettiert wird das Buch durch umfangreiches Online-Zusatzmaterial. Lehrende können darüber hinaus auf Anfrage Präsentationsfolien zu den behandelten Themen beziehen.

Das Buch richtet sich an Studierende der Informatik und Wirtschaftsinformatik sowie anderer Fachrichtungen mit Schwerpunkt Informationsverarbeitung und an Praktiker*innen wie Softwareentwickler*innen und Netzwerkadministrator*innen.

Der Inhalt

• Einführung in die Grundbegriffe der Datenkommunikation

• Grundkonzepte der Transportschicht

• Transportprotokolle TCP, UDP und QUIC

• Einführung in das Transport Layer Security (TLS) Protokoll

• Programmierung von Socket-Anwendungen

Inhaltsverzeichnis

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 Staukontrollmechanismen sowie Mechanismen zur Stückelung (Segmentierung) von Nachrichten benötigt. Die grundlegenden Mechanismen der Transportschicht werden in diesem Kapitel 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 wird ständig optimiert und weiterentwickelt und es gibt mittlerweile eine Fülle von RFCs, die sich mit TCP befassen. Die wichtigsten Protokollmechanismen von TCP werden in diesem Kapitel detailliert erläutert. Hierzu gehört der Verbindungsaufbau, der Verbindungsabbau und die gesicherte Datenübertragung. Die in TCP verwendeten Bestätigungs- und Wiederholungsverfahren und die Maßnahmen zur Flusskontrolle werden ebenso betrachtet wie der in der TCP-Spezifikation erläuterte Zustandsautomat für den Verbindungsauf- und -abbau im Zusammenspiel mit dem Nachrichtenaustausch. Weiterführende Konzepte und Mechanismen wie die TCP-Überlastkontrolle (Slow-Start, TCP Reno, TCP NewReno, TCP BIC, TCP CUBIC) und wichtige TCP-Protokolltimer werden diskutiert. Auch auf Sicherheitsaspekte von TCP wird in diesem Kapitel eingegangen.
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. In diesem Kapitel werden grundlegende UDP-Funktionen wie das Multiplexing mehrerer UDP-Kommunikationsendpunkte eingeführt. Außer einer Fehlererkennungsfunktion wird bei UDP zur Best-Effort-Übertragung des Internet-Protokolls nichts hinzugefügt. Ein Vorteil, der sich aber bei Nutzung von UDP ergibt, ist die Möglichkeit, Broadcast- und Multicast-Nachrichten zu senden und zu empfangen.
Peter Mandl
5. TLS – Transport Layer Security Protocol
Zusammenfassung
Das Transport Layer Security (TLS) Protocol ist ein Protokoll zur Authentifizierung, Verschlüsselung und Integritätssicherung, das vor allem in der Web-Kommunikation genutzt wird. Das QUIC-Protokoll verwendet TLS in der Version 1.3 (TLS 1.3) implizit. Im älteren HTTP/2-Protokollstack, der TCP als Transportprotokoll nutzt, wird TLS 1.2 verwendet.
In diesem Kapitel wird TLS einführend erläutert. Auf die mathematischen Grundlagen der zugrundeliegenden kryptographischen Verfahren wird in diesem Kapitel nicht eingegangen. Jedoch werden einige Hintergrundinformationen bereitgestellt, um die grundlegenden Mechanismen nachvollziehen zu können. Zu weiterführenden Protokollinformationen wird auf die RFCs 8446 (TLS 1.3) und 5246 (TLS 1.2) verwiesen, in denen die Standardprotokolle beschrieben werden.
Dieses Kapitel konzentriert sich vor allem auf TLS 1.3 und geht nur dort auf TLS 1.2 ein, wo Unterschiede bzw. Verbesserungen aufgezeigt werden sollen. Um die in QUIC (siehe Kap. 6) eingebauten Security-Ansätze im Detail zu verstehen, ist es empfehlenswert, aber nicht notwendig, dieses Kapitel vorab zu lesen.
Peter Mandl
6. QUIC – UDP-Based Multiplexed and Secure Transport
Zusammenfassung
Die Initiative für die Entwicklung von QUIC ging von Google aus. Das Unternehmen entwickelte im Jahr 2012 das Protokoll mit der Bezeichnung „Quick UDP Internet Connections“. Googles Protokoll wird seither als gQUIC bezeichnet. gQUIC ist eine Weiterentwicklung des inzwischen obsoleten Protokolls SPDY (SPeeDY), das noch auf TCP aufsetzte und ebenfalls von Google stammte. Seit 2021 ist QUIC in angepasster Form auch von IETF in den RFCs 8999, 9000, 9001 und 9002 standardisiert.
QUIC wird Transportprotokoll genannt, liegt aber eigentlich über UDP und ist somit ganz exakt als Anwendungsprotokoll zu bezeichnen. Da es aber Transportaufgaben übernimmt, bleiben wir im Weiteren bei der Bezeichnung „Transportprotokoll“. QUIC ist vor allem auf die Optimierung der Webkommunikation zugeschnitten und ist ein zuverlässiges, verbindungsorientiertes und verschlüsseltes Protokoll.
Aktuell gibt es noch keinen API-Standard, wie er aus der Socket-Programmierung her bekannt ist. Trotzdem wurde QUIC in den letzten Jahren immer beliebter. Google und Facebook nutzen es bereits fast überwiegend als Basis für ihre Dienste. Allerdings sind in Ermangelung eines API-Standards heute nur proprietäre Implementierungen in den meisten Browsern im Einsatz.
Welche TCP-Schwächen das neue Protokoll QUIC adressiert, wozu es genau konzipiert wurde und welche Protokollmechanismen es unterstützt, wird in diesem Kapitel einführend erläutert. Für eine komplette Beschreibung des Protokolls mit all seinen Feinheiten wird auf die oben genannten RFCs verwiesen. QUIC verwendet in der aktuellen Version das Transport Layer Security Protocol in der Version 1.3 (TLS 1.3) für die Authentifizierung der Kommunikationspartner und für die Verschlüsselung der Nachrichten. TLS ist in der aktuellen QUIC-Version fester Bestandteil des Protokolls. Dieses Kapitel kann man auch ohne tiefgreifende kryptografische Kenntnisse verstehen, da auf die konkreten Maßnahmen zu Authentifizierung der Kommunikationspartner und auf die Verschlüsselungstechniken, die durch TLS eingebracht werden, nicht weiter eingegangen wird. Wer sich doch mehr dafür interessiert, sollte vorher Kap. 5 lesen.
Peter Mandl
7. Programmierung von TCP- und 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 gibt es 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 Multithreading, 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 feingranulare 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 Ereigniswartepunktes 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 Framework zur Erleichterung der Programmierung wird vorgestellt, und die Programmierung von Servern für sehr leistungsstarke Anwendungen wird andiskutiert.
Auf die Entwicklung von QUIC-basierten Anwendungen wird in Ermangelung einer Standard-API nicht weiter eingegangen. Es besteht noch Hoffnung, dass eine API, mit der portierbare Anwendungen beispielsweise in Java auf Basis eines Standards ähnlich wie die TCP-Sockets auch in QUIC programmiert werden können; eine Aussage der Internet-Community hierzu (August 2023) gibt es aber nicht.
Peter Mandl
8. Schlussbemerkung
Zusammenfassung
Dieses Buch sollte einen tieferen Einblick in die Funktionsweise und Nutzung der 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
Backmatter
Metadaten
Titel
TCP, UDP und QUIC Internals
verfasst von
Peter Mandl
Copyright-Jahr
2024
Electronic ISBN
978-3-658-43988-0
Print ISBN
978-3-658-43987-3
DOI
https://doi.org/10.1007/978-3-658-43988-0

Premium Partner