RFC 793 - TRANSMISSION CONTROL PROTOCOL
DARPA INTERNET PROGRAMM
PROTOKOLLSPEZIFIKATION
Veröffentlicht: September 1981
Status: Internet-Standard (STD 7)
Autor: Jon Postel (Information Sciences Institute, USC)
Organisation: DARPA Internet-Programm
Status dieses Memos
Dieses RFC spezifiziert einen Standard für die DARPA-Internet-Community. Hosts im DARPA-Internet werden erwartet, diesen Standard zu übernehmen und zu implementieren.
Zusammenfassung (Abstract)
Das Transmission Control Protocol (TCP) ist für die Verwendung als hochzuverlässiges Host-to-Host-Protokoll zwischen Hosts in paketvermittelten Computerkommunikationsnetzwerken und in zusammengeschalteten Systemen solcher Netzwerke vorgesehen.
Dieses Dokument beschreibt die vom Transmission Control Protocol auszuführenden Funktionen, das Programm, das es implementiert, und seine Schnittstelle zu Programmen oder Benutzern, die seine Dienste benötigen. TCP bietet einen verbindungsorientierten, zuverlässigen Byte-Stream-Dienst.
Inhaltsverzeichnis (Table of Contents)
Vorwort (Preface)
1. Einführung (Introduction)
- 1. Introduction (Einführung)
- 1.1 Motivation
- 1.2 Umfang
- 1.3 Über dieses Dokument
- 1.4 Schnittstellen
- 1.5 Betrieb
2. Philosophie
- 2. Philosophy (Philosophie)
- 2.1 Elemente des Internetwork-Systems
- 2.2 Betriebsmodell
- 2.3 Die Host-Umgebung
- 2.4 Schnittstellen
- 2.5 Beziehung zu anderen Protokollen
- 2.6 Zuverlässige Kommunikation
- 2.7 Verbindungsaufbau und -abbau
- 2.8 Datenkommunikation
- 2.9 Priorität und Sicherheit
- 2.10 Robustheitsprinzip
3. Funktionale Spezifikation
- 3. Functional Specification (Funktionale Spezifikation)
- 3.1 Header-Format
- 3.2 Terminologie
- 3.3 Sequenznummern
- 3.4 Eine Verbindung aufbauen
- 3.5 Eine Verbindung schließen
- 3.6 Priorität und Sicherheit
- 3.7 Datenkommunikation
- 3.8 Schnittstellen
- 3.9 Ereignisverarbeitung
Anhänge
Schnellreferenz zu Kernkonzepten
TCP-Header-Format
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Hauptmerkmale von TCP
| Merkmal | Beschreibung |
|---|---|
| Verbindungsorientiert | Muss vor der Kommunikation eine Verbindung aufbauen (Dreiwege-Handshake) |
| Zuverlässige Übertragung | Bestätigungs-, Neuübertragungs- und Sequenzierungsmechanismen |
| Byte-Stream | Behandelt Daten als kontinuierlichen Byte-Strom |
| Flusskontrolle | Gleitfenstermechanismus |
| Staukontrolle | Verhindert Netzwerküberlastung |
| Vollduplex | Gleichzeitige bidirektionale Übertragung |
Verbindungszustände
CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → ...
Hauptzustände:
- CLOSED: Geschlossen
- LISTEN: Lauschend
- SYN-SENT: SYN gesendet
- SYN-RECEIVED: SYN empfangen
- ESTABLISHED: Verbindung hergestellt
- FIN-WAIT-1: Erste FIN-Wartezeit
- FIN-WAIT-2: Zweite FIN-Wartezeit
- CLOSE-WAIT: Schließwartezeit
- CLOSING: Schließt
- LAST-ACK: Letzte Bestätigung
- TIME-WAIT: Zeitwartezeit
Dreiwege-Handshake
Client Server
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |
TCP vs UDP Vergleich
| Merkmal | TCP | UDP |
|---|---|---|
| Verbindung | Verbindungsorientiert | Verbindungslos |
| Zuverlässigkeit | Zuverlässig | Unzuverlässig |
| Reihenfolge | Garantiert Reihenfolge | Keine Garantie |
| Geschwindigkeit | Langsamer | Schnell |
| Overhead | Hoch (20-60 Byte Header) | Niedrig (8 Byte Header) |
| Flusskontrolle | Ja | Nein |
| Staukontrolle | Ja | Nein |
| Anwendungsfälle | HTTP, FTP, Email | DNS, Video-Streaming, Gaming |
Verwandte Ressourcen
- Offizieller Text: RFC 793 (TXT)
- Offizielle Seite: RFC 793 DataTracker
- Standard: STD 7
- Verwandte Protokolle:
- RFC 791 (IP) - Netzwerkschicht
- RFC 792 (ICMP) - Kontrollnachrichten
- RFC 768 (UDP) - Vergleichsprotokoll
- RFC 2581 (TCP-Staukontrolle)
- RFC 5681 (TCP-Staukontrolle-Update)
- RFC 7323 (TCP-Erweiterungen)
Wichtiger Hinweis: TCP ist eines der Kernprotokolle der Internet-Transportschicht. In Kombination mit dem IP-Protokoll bildet es die Grundlage des TCP/IP-Protokollstapels. Es bietet einen zuverlässigen, verbindungsorientierten Byte-Stream-Dienst und ist die Grundlage für viele Anwendungsprotokolle wie HTTP, FTP und SMTP.