Via IP werden diverse Transportprotokolle genutzt. Die geläufigsten darunter sind UDP und TCP, wobei auch QUIC mit HTTP/3 an Aufwind gewinnt.
ICMP, kurz für Internet Control Message Protocol, ist im RFC 792 (ICMPv4) bzw. RFC 4443 (ICMPv6) als ein unterstützendes Protokoll des Internet Protocol Suites definiert und operiert somit im Layer 3 des OSI 7-Schichten-Modells, auch wenn die Header und das Payload die Bedingungen für ein Layer 4 Protokoll erfüllen. Es kann zwar zum Transport von Daten verwendet werden, dennoch liegt der eigentliche Einsatzzweck bei der Diagnose oder Kontrolle.
| 0 - 7 | 8 - 15 | 16 - 31 |
|---|---|---|
| Typ | Code | Checksum (Prüfsumme) |
| Rest of Header |
Dies ist keine vollständige Liste an Typen und Codes, sondern werden hier einige geläufigen Typen erwähnt. Details sind dem RFC 792 zu entnehmen
Hinweis: Daten in einer "Echo Request"-Nachricht müssen auch in der zugehörigen "Echo Reply"-Nachricht gesendet werden "Destination Unreachable"-Nachrichten werden grundsätzlich nur von einem Router erzeugt
| Typ | Bezeichnung | Code | Beschreibung |
|---|---|---|---|
| 0 | Echo Reply | 0 | Echo Reply (pong) zum ping |
| 8 | Echo Request | 0 | Echo Request (ping) |
| 9 | Router Advertisement | 0 | Ankündigung des Routers im Netz (LAN) |
| 10 | Router Solicitation | 0 | Nachfrage nach einem Router im Netz (LAN) |
| 11 | Time Exceeded | 0 | TTL is abgelaufen |
| 11 | Time Exceeded | 1 | Fragment-Zutsammensetzungszeit abgelaufen |
| 3 | Destination Unreachable | 0 | Zielnetz nicht erreichbar |
| 3 | Destination Unreachable | 1 | Zielhost nicht erreichbar |
| 3 | Destination Unreachable | 2 | Zielprotokoll nicht erreichbar |
| 3 | Destination Unreachable | 3 | Zielport nicht erreichbar |
| 3 | Destination Unreachable | 4 | Trotz DF-Bit Fragmentierung erforderlich |
| 3 | Destination Unreachable | 5 | Quell-Route fehlgeschlagen |
| 3 | Destination Unreachable | 6 | Zielnetz unbekannt |
| 3 | Destination Unreachable | 7 | Zielhost unbekannt |
Dies ist keine vollständige Liste an Typen und Codes, sondern werden hier einige geläufigen Typen erwähnt. Details sind dem RFC 4443 zu entnehmen.
Hinweis: Daten in einer "Echo Request"-Nachricht müssen auch in der zugehörigen "Echo Reply"-Nachricht gesendet werden "Destination Unreachable"-Nachrichten werden grundsätzlich nur von einem Router erzeugt
| Typ | Bezeichnung | Code | Beschreibung |
|---|---|---|---|
| 128 | Echo Request | 0 | Echo Request (ping) |
| 129 | Echo Reply | 0 | Echo Reply (pong) zum ping |
| 133 | Router Solicitation | 0 | Nachfrage nach einem RA (NDP) |
| 134 | Router Advertisement (RA) | 0 | Ankündigung des Routers (NDP) |
| 135 | Neighbor Solicitation | 0 | Neighbor Solicitation (via NDP) |
| 136 | Neighbor Advertisement | 0 | Neighbor Advertisement (NDP) |
| 3 | Time Exceeded | 0 | TTL is abgelaufen |
| 3 | Time Exceeded | 1 | Fragment-Zutsammensetzungszeit abgelaufen |
| 1 | Destination Unreachable | 0 | keine Route zum Ziel |
| 1 | Destination Unreachable | 1 | Kommunikation mit dem Ziel administrativ verboten |
| 1 | Destination Unreachable | 3 | Adresse nicht erreichbar |
| 1 | Destination Unreachable | 4 | Zielport nicht erreichbar |
| 1 | Destination Unreachable | 6 | Route zum Ziel abgewiesen (bspw. Firewall) |
UDP, kurz für User Datagram Protocol, ist ein (Layer 4) Transportprotokoll der Internetprotokollfamilie.Es hat folgende Eigenschaften:
Ein Datagramm ist laut RFC 1594 "eine in sich geschlossene, unabhängige Dateneinheit, die genügend Informationen enthält, um vom Quell- zum Zielcomputer weitergeleitet zu werden, ohne auf einen früheren Austausch zwischen diesem Quell- und Zielcomputer und dem transportierenden Netz angewiesen zu sein".
Der Begriff "UDP Paket" wird oftmals synonym zu "UDP Datagramm" genutzt, auch wenn sich Pakete und Datagramme in den Feinheiten unterscheiden. So werden UDP Datagramme zu UDP Paketen, sobald sie mit den IP-Headern versehen werden. Im Sinne diesen Artikels sind die Unterschiede jedoch nicht relevant. Sie können aber hier eingesehen werden: Definition of Network Units: Packet, Fragment, Frame, Datagram, and Segment
| 0 - 15 | 16 - 31 |
|---|---|
| Quell-Port | Ziel-Port |
| Länge | Checksum (Prüfsumme) |
| Daten (Payload) |
UDP Datagramme werden als UDP Pakete via IP übertragen. IP setzt dabei vor dem UDP Paket einen weiteren Header, in dem sich die von IP benötigten Daten befinden. Für die Erzeugung der Prüfsumme werden Teile des IP-Headers in einen Pseudo-Header eingesetzt. Der Pseudo-Header wird jedoch nur zur Erzeugung der Prüfsumme genutzt und wird nicht als Teil des UDP Pakets übertragen.
Der IPv4 Pseudo-Header hat eine Größe von 12 Bytes (96 Bits) und ist wie folgt aufgebaut:
| 0 - 31 | 32 - 63 | 64 - 71 | 72 - 79 | 80 - 95 |
|---|---|---|---|---|
| Quell-IP | Ziel-IP | Leerfeld | Protokoll-ID | UDP-Datagramm-Länge |
| X | X | 0000 0000 | 0001 0001 | X |
Bei einem Transport via IPv6 hat der Pseudo-Header eine Größe von 40 Bytes (320 Bits) und ist wie folgt aufgebaut:
| 0 - 127 | 128 - 255 | 256 - 287 | 288 - 311 | 312 - 319 |
|---|---|---|---|---|
| Quell-IP | Ziel-IP | UDP-Datagramm-Länge | Leerfeld | Next Header |
| X | X | X | 0x000000 | X |
TCP, kurz für Transmission Control Protocol, ist ein (Layer 4) Transportprotokoll der Internetprotokollfamilie. Es hat folgende EIgenschaften:
| Offsets | 0 | 1 | 2 | 3 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 0 | 0 | Source port | Destination port | ||||||||||||||||||||||||||||||
| 4 | 32 | Sequence number | |||||||||||||||||||||||||||||||
| 8 | 64 | Acknowledgment number (if ACK set) | |||||||||||||||||||||||||||||||
| 12 | 96 | Data offset | Reserved 0 0 0 0 | CWR | ECE | URG | ACK | PSH | RST | SYN | FIN | Window Size | |||||||||||||||||||||
| 16 | 128 | Checksum | Urgent pointer (if URG set) | ||||||||||||||||||||||||||||||
| 20 | 160 | Options (if data offset > 5. Padded at the end with "0" bits if necessary.) | |||||||||||||||||||||||||||||||
| ⋮ | ⋮ | ||||||||||||||||||||||||||||||||
| 56 | 448 | ||||||||||||||||||||||||||||||||
aus: Transmission Control Protocol, Wikipedia the free encyclopedia, abg. am 14.12.2023
Eine TCP-Verbindung wird stets mittels 3-Wege-Handshake aufgebaut und mittels 4-Wege-Handshake terminiert:
aus: crocus.kr, abg. am 14.12.2023
TCP implementiert zudem ein Congestion Control Mechanismus, also eine Überlastungskontrolle. Dazu gehört die Slow Start Strategie mit einem Congestion Window (CWND) von 1, 2, 4 oder 10 Maximaler Segmentgröße (MSS). Mit jedem erfolgreich erhaltenen ACK steigt der CWND Wert. Die maximale Übertragunsrate wird anschließend nach und nach erhöht bis entweder ein Paketverlust erfolgt, oder der empfängerseitig festgelegte Window Size (rwnd) erreicht ist.
QUIC wird hier nur nebenbei erwähnt und sehr grob thematisiert. Siehe RFC 9000 für Details.
QUIC ist ein modernes Layer 4 Transportprotokoll standartisiert unter RFC 9000. Der Fokus liegt dabei im Transport von verbindungsorientierten Web-Applikationen, die bis Dato TCP verwenden. Dazu werden zwischen zwei Endgeräten mehrere Verbindungen gleichzeitig via UDP aufgebaut. Durch Verwendung von UDP im Unterbau sinken zudem die Latenzen und die genutzte Bandbreite. Congestion Control werden dabei nicht auf der Kernel-Ebene sondern in der Nutzer-Ebene implementiert. Dies vereinfacht etwaige QUIC Implementationen auch auf bestehenden Systemen auszurollen. Außerdem ist das Protokoll flexibel aufgebaut, sodass Erweiterungen zu QUIC möglich werden.
QUIC verbindet zudem die Funktion von TLS over TCP. Dadurch sinkt das Overhead in einer verschlüsselten HTTPS-Verbindung. Alleine das Handshake für den Verbindungsaufbau wird deutlich kürzer:
(C) CC BY-SA 4.0, Sedrubal, Wikimedia Foundation. URL: Verbinsungsaufbau von QUIC im Vergleich zu TCP
Auch hier werden wie in TCP ACKs geschickt, um den Erhalt eines Pakets zu bestätigen. Dabei gilt:
Dadurch erzielt man Folgendes:
Kommt es zu einem Paketverlust, wird das Paket nicht eigenständig erneut versendet. Stattdessen wird es in Frames zerlegt und nach und nach als Frames innerhalb der anstehenden Paketen mitversandt. Sobald ein Paket, dass die versandten Informationen enthält, mit einem ACK beantwortet wurde, findet der erneute Versand auch nicht mehr statt.