| TCP ist das am weitesten verbreitete Protokoll zur Übertragung von Daten. Alle Betriebssysteme unterstützen TCP, weil es einfach, sicher und sehr zuverlässig ist. | TCP stützt sich meistens auf das Internet Protocol IP und wird deshalb oft mit TCP/IP bezeichnet. Internet, Mail und viele andere Dienste arbeiten mit TCP als Grundlage. |
Netzwerk
|
Zusammenarbeit - Lokal und weltweit |
| TCP-Kompress | Protokoll, Aufgaben, Verbindung, Sicherheit, Socket |
| Verhandlung | Die interaktive Kommunikation zwischen TCP-Partnern |
| Geschichte | Einige historische Daten |
| TCP-Header | Aufbau eines typischen TCP-Headers |
| Daten | TCP Daten-Pakete |
| Verwandte Themen | OSI-Modell, UDP, Port IP, ICMP |
| Links |
Ausgewählte
|
TCP-Kompress |
|
ProtokollTCP ist ein Protokoll - Eine standardisierte Sammlung von Regeln, nach denen Daten in Netzwerken ausgetauscht werden.OSI-ModellTCP-Software arbeitet in der Transport-Schicht des OSI-Modells. TCP benötigt zur Arbeit alle darunter liegenden Schichten, z.B. IP (als TCP/IP) und Ethernet. TCP erhält von einer darüber liegenden Schicht den Auftrag zur Übertragung der Daten.AufgabenDie Aufgabe von TCP besteht darin, die Übertragung der Daten zu organisieren und zu überwachen.Wichtige Teil-Aufgaben sind:
•
Feststellung, ob das Ziel erreichbar ist
• Zerlegung der Daten ↓ in transportable Pakete • Übergabe jedes Pakets an IP zur Übertragung • Zusammensetzung der von IP empfangenen Daten-Pakete • Kontrolle der Vollständigkeit und Rückmeldung an den Sender • Nochmalige Übertragung defekter oder verloren gegangener Pakete • Geregelter Abbau der Verbindung |
Verbindungs-OrientiertTCP stellt einen bidirektionale Verbindung zwischen Sender und Empfänger her. Damit wird erreicht:● Die Übertragung findet nur statt, wenn das Ziel erreichbar ist. Daten werden nicht "ins Leere" gesendet (wie z.B. von IP oder UDP). ● Die TCP-Komponenten von Sender und Empfänger wissen voneinander und organisieren gemeinsam die Übertragung. Das erleichtert das Erkennen und Beheben von Problemen, die bei der Übertragung auftreten. Sicherheit & ZuverlässigkeitTCP ist ein zuverlässiges Protokoll. Das bedeutet:● TCP kontrolliert, dass alle Daten-Pakete übertragen werden. Kein Paket darf fehlen oder mehrfach verwendet werden. ● TCP organisiert die Zusammensetzung empfangener Pakete in der richtigen Reihenfolge. ● TCP organisiert die wiederholte Sendung von defekten oder verloren gegangenen Daten-Paketen. |
Socket = IP-Adresse + PortDie Kombination von IP-Adresse + Port wird als Socket bezeichnet.Jede TCP-Verbindung erfordert die Angabe je eines kompletten Sockets für Sender und Empfänger. Ein Server-Programm erzeugt einen dauerhaften Socket auf einem standardisierten Port, z.B. ein Webserver auf Port 80. Der Server lauscht (listen) auf Aufträge, d.h. das Betriebssystem leitet alle auf Port 80 eintreffenden Daten an den Server. Ein Client, welcher Daten (z.B. Auftrag zum Senden einer Webseite) an den Server senden will, erzeugt dazu einen temporären Socket (beliebiger Port). TCP organisiert die Übertragung des Client-Auftrags zwischen den beiden Sockets. |
Die Antwort-Daten des Webservers bestehen aus dem HTML-Quelltext der Webseite. Der Client lauscht auf seinem Socket auf die erwarteten Daten des Servers. Der Server erzeugt einen temporären Socket (beliebiger Port) zum Senden der HTML-Daten. TCP organisiert die Übertragung der Daten an den Client. Danach werden die temporären Sockets von Client und Server geschlossen. Der dauerhafte Socket des Servers bleibt geöffnet und lauscht auf weitere Aufträge. |
TCP auf allen SystemenTCP ist in den Netzwerk-Komponenten aller Betriebssysteme enthalten.TCP benötigt keine Konfiguration, stellt keine Fragen und arbeitet auf jedem PC rasch und sicher im Hintergrund. |
TCP/IPDie Kombination von TCP und IP stellt derzeit das wichtigste und am häufigsten verwendete Netzwerk-Protokoll dar.Wenn Sicherheit keine Rolle spielt, oder wenn Geschwindigkeit wichtiger ist, wird UDP an Stelle von TCP eingesetzt (meist sogar an den gleichen Ports). |
Verhandlung |
|
|
Eine wesentliche Voraussetzung für die Sicherheit von TCP ist die Einbeziehung
beider Partner (Sender und Empfänger) in die Übertragung. ● Dazu wird ein Bidirektionaler Daten-Kanal (Voll-Duplex) aufgebaut, das bedeutet: ● Zusätzlich zu den Nutz-Daten werden in beide Richtungen (!) Nachrichten zur Kontrolle der Übertragung ausgetauscht. ( TCP-Header ↓ ) ● TCP ist ein Verbindungs-orientiertes Protokoll, d.h. es stellt vor Übertragung der Nutz-Daten eine gesicherte Verbindung zwischen Sender und Empfänger her. (IP oder UDP sind verbindungs-lose Protokolle). ● Technische Probleme: In großen und komplexen Netzwerken wie dem Internet muss man damit rechnen, dass mit einer gewissen Wahrscheinlichkeit Probleme auftreten, z.B. • Flexible Übertragungs-Wege benötigen unterschiedlich viel Zeit. Das kann die Reihenfolge eintreffender Pakete ändern. • Überlastung einer Komponente führt zu Verzögerung oder Ablehnung der Daten-Annahme. • Ausfall einer Komponente (zumindest für einige Zeit) kann zum Verlust ganzer Daten-Pakete führen. ● TCP kann die meisten dieser Probleme erkennen und meist auch beheben. Dazu wird ein gewisser Aufwand (Overhead) betrieben, welcher TCP etwas langsamer macht als UDP. |
Bei jeder TCP-Verbindung sind u.a. diese Arbeiten auszuführen:SynchronisationDie TCP-Komponenten von Sender und Empfänger identifizieren einander. Sie tauschen zur Kontrolle in beide Richtungen kurze Pakete von Daten aus (3-way handshake).TCP-Sender• Die Nutz-Daten werden in Pakete zerlegt, die Pakete werden eindeutig nummeriert.• Die Pakete werden zur Übertragung einzeln an IP übergeben. • Der Sender erwartet vom Empfänger die Bestätigung empfangener Pakete. • Der Sender versucht die Daten-Rate optimal an die realen Bedingungen nazupassen. • Bei Problemen wird die Sendung der betroffenen Pakete wiederholt. TCP-Empfänger• Der Empfänger gibt laufend seine Aufnahme-Kapazität bekannt.• Die einzelnen Pakete der Nutz-Daten werden empfangen und identifiziert. • Die Pakete werden in der richtigen Reihenfolge zusammengesetzt. • An den Sender wird eine Bestätigung für korrekt empfangene Pakete gesendet. AbbauNach korrekter Übertragung informieren beide Partner einander vom kontrollierten Abbau der Verbindung. |
OptimierungJedes von TCP erkannte Problem führt zum Austausch zusätzlicher Daten: Sender und Empfänger informieren einander vom aufgetretenen Problem, in der Folge werden die betroffenen Daten-Pakete erneut gesendet.Bei gehäuftem Auftreten von Fehlern könnte das zur Überlastung des Netzwerks führen. Man verwendet besondere Algorithmen in TCP Hilfs-Programmen zum Erkennen und Vermeiden solcher Situationen. TCP beobachtet laufend die Fehler-Rate und ändert danach sein Verhalten. |
Die Übertragung wird langsam begonnen (Slow Start), danach wird die Daten-Rate (Bit pro Sekunde) kontrolliert gesteigert. Nach Eintreffen jeder Bestätigung kennt der Sender die Zeit für Hin- und Rückweg der Daten (round trip). Fehlerhafte oder verlorene Pakete werden nochmals gesendet. Mit Hilfe der aktuellen Informationen stellt TCP sein Verhalten auf optimalen Durchsatz ein. Wenn alles klappt, wird die Daten-Rate gesteigert, bei Fehlern verringert. Die Algorithmen zur Optimierung von TCP sind nicht vorgegeben, sondern man forscht laufend nach Möglichkeiten zur Verbesserung. |
Geschichte |
|
|
TCP wurde 1973 von
Robert E. Kahn im Rahmen von
ARPANET "erfunden" und später gemeinsam mit
Vinton E. Cerf
entwickelt. Die treibende Kraft war der Kalte Krieg, speziell die Entwicklung eines
dezentralen Netzwerks zur unangreifbar sicheren Kommunikation. Die Entwicklung dauerte mehrere Jahre und verlagerte sich zunehmend in den zivilen Bereich. TCP wurde erstmals 1981 als ziviler Standard RFC 793 festgelegt. Es folgten zahlreiche Erweiterungen und Verbesserungen. Die heutige Version beruht hauptsächlich auf RFC 1323 von 1992. |
Vinton Cerf und Robert Kahn bei einer Ehrung durch den US-Präsidenten(Quelle: Wikipedia) Man findet nur wenige Bilder von Bob Kahn, gerade dieses Bild ist kein Zufall. In den USA wird die Entwicklung von TCP offenbar noch immer dem militärischen Sektor zugeordnet. Nicht alle Pioniere der Informatik werden solcherart geehrt... |
|
Zur gleichen Zeit wurden unabhängig voneinander auch die Programmiersprache C und
das Betriebssystem UNIX entwickelt. Es gab keine Personal Computer sondern große zentrale Computer mit einer Vielzahl von Terminals (Bildschirm-Arbeitsplätzen). Über derartige Computer verfügten neben dem Militär hauptsächlich Universitäten. Durch Zusammenführung der Universitäts-Computer mit ihrem C-programmierten UNIX System im TCP-organisierten ARPANET entstand erstmals ein leistungsfähiges dezentrales Netzwerk. Daraus entwickelte sich das heutige Internet. Interessant ist u.a. der ideologische Aspekt: Das zentralistisch organisierte Militär entwickelte anfangs großen Widerstand gegen eine dezentrale Lösung, weil man einen Verlust an Einfluss befürchtete. |
Interessant und noch heute aktuell sind die Ziele bei der Entwicklung von TCP: • Das Netzwerk ist dezentral organisiert. Bei Ausfall einzelner Komponenten können alle intakten Komponenten weiter miteinander kommunizieren. • Es gibt keinen einzelnen Punkt ("Zentrale"), der einen Zusammenbruch des gesamten Netzwerks auslösen kann. • Das Netzwerk wird durch Hinzufügen oder Entfernen von Teilnehmern (PC) nicht inhaltlich (qualitativ) verändert sondern nur in seinem Ausmaß (quantitativ). • Möglichst viele Komponenten werden redundant angelegt. Sie können einander ganz oder teilweise ersetzen. • Man versucht erst gar nicht, alle Fehler zu verhindern, sondern man rechnet mit Fehlern und entwickelt Strategien zu ihrer Erkennung und Behebung. |
| Heute ist TCP weltweit etabliert, der Standard ist schon lange unverändert und eine wesentliche Änderung in naher Zukunft nicht notwendig. | Die Algorithmen zur Optimierung des Datenverkehrs mit TCP sind jedoch Gegenstand der IT-Forschung und werden von Zeit zu Zeit an die technischen Möglichkeiten und an die Gebrauchs-Gewohnheiten des Internet angepasst. |
TCP Header |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TCP erhält von der übergeordneten Schicht des
OSI Kommunikations-Modells (letzlich von einem
AnwenderInnen-Programm) den Befehl zur Übertragung von Daten.SynchronisationVor Beginn der Übertragung wird eine bidirektionale Verbindung zwischen dem eigenen PC und dem entfernten Ziel aufgebaut. Die Bezeichnung "Sender" und "Empfänger" ist nicht ganz zutreffend, da beide Sockets gleichberechtigt Daten senden und empfangen können. In der Phase der Synchronisation werden mit SYN-Flag speziell bezeichnete Daten-Pakete ausgetauscht.Daten-PaketeNach Aufbau der TCP-Verbindung werden die zu sendenden Daten in transportable Pakete von ca. 1450 Byte zerlegt und fortlaufend nummeriert.Jedem Paket wird ein Block von TCP Verwaltungs-Daten vorangestellt, der TCP-Header. Wichtigster Inhalt sind die Port-Nummern von Sender und Empfänger. |
Weitergabe an IPFertig mit TCP Header verpackte Daten-Pakete werden an die darunter liegende Schicht - normalerweise an IP - zum Transport übergeben.IP verpackt die Daten weiter und stellt selbst einen IP-Header voran. Wichtigster Inhalt sind die IP-Adressen von Sender und Empfänger. EmpfangBeim Empfang von Daten-Paketen wird der TCP-Header von den Nutz-Daten getrennt, analysiert und die gewonnene Information zur Organisation der weiteren Übertragung verwendet. Unter anderem werden die einzelnen Daten-Pakete mit Hilfe ihrer Paket-Nummer in der richtigen Reihenfolge zusammengesetzt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Typischer TCP-Header eines Daten-Pakets
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Der TCP-Header ist in Worten zu je 32 Bit = 2 Byte organisiert. Alle Daten werden in Network Byte Order (Big endian, Höchstwertiges Byte voran) angegeben. Sequence NumberBei Verbindungs-Aufbau (SYN ↓ gesetzt) die Initialisierungs-NummerBei Daten-Übertragung die fortlaufende Nummer des ersten Daten-Bytes dieses TCP-Paketes (zum Sortieren der Daten). |
Acknowledgment Number (Quittierungsnummer)Nur gültig, wenn ACK ↓ gesetzt ist: Jene Sequenznummer, die der Sender dieses TCP-Segmentes als nächstes erwartet.Data OffsetLänge des TCP-Headers in 32-Bit-Worten (ohne Nutz-Daten). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Control- FlagsMehrere 1-Bit (Boolean) Variable zur Steuerung der Kommunikation.URG
Urgent-Flag: Dringende Unterbrechung (kaum verwendet).Die Verarbeitung der Daten wird unterbrochen und jene Daten gelesen, auf welche der Urgent Pointer ↓ zeigt. ACK
Acknowledge-(Bestätigungs)-Flag.Dient bei Verbindungs-Aufbau (SYN gesetzt) zur Handshake-Bestätigung. Beim Daten-Transport (ohne SYN) dient es zur Bestätigung der ACK-Nummer ↑ |
PSH
Push-Flag leert den Daten-Buffer des Empfängers und veranlasst die sofortige
Verarbeitung der Daten.RST
Reset-Flag zum vorzeitigen, jedoch kontrollierten Abbruch einer Verbindung.SYN
Synchronisations-Flag, kennzeichnet Pakete zum Verbindungs-Aufbau (Handshake).FIN
Finish-Flag zeigt das Ende der Daten an.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WindowDer Empfänger signalisiert, wieviele Bytes er zur Verarbeitung empfangen kann. Wichtig zur Optimierung der Kommunikation, verhindert Überlastung.ChecksumPrüfsumme zur Erkennung von Übertragungsfehlern:Berechnung aus TCP-Header + Daten. |
Urgent PointerNur gültig, wenn URG gesetzt ist. Ergibt zusammen mit der Sequenz-Nummer die Position der (wichtigen) Urgent-Daten.OptionsWeitere optionale Worte zu je 32 Bit. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Daten |
|
| Bei Aufbau der Verbindung (Synchronisation) einigen sich Sender und Empfänger auf die Größe der Daten-Pakete. Dazu wird der Options-Bereich am Ende des TCP Headers verwendet. | Die Größe der Daten-Pakete richtet sich nach den technischen Möglichkeiten von Sender und Empfänger. Der kleinere der beiden möglichen Paket-Längen wird verwendet. |
|
Beispiel:
Eine Verbindung läuft über TCP - IP - Ethernet - (A)DSLDSL verwendet PPP (Point to Point Protocol), ADSL verwendet PPoE (Point to Point over Ethernet). Dieses Protokoll stellt jedem transportierten Daten-Block (frame) einen Header von 8 Byte voran. Ethernet kann nur Daten-Blöcke (frames) von max. 1500 Bytes transportieren und ist damit meist das begrenzende Element der gesamten Verbindung. Dieses Protokoll stellt jedem frame einen Ethernet-Header von 20 Byte voran. |
IP kann theoretisch Blöcke bis zu 64kB transportieren. Dieses Protokoll stellt jedem IP-Paket einen IP-Header von 20 Byte voran. TCP stellt jedem Daten-Paket einen TCP-Header von ca. 20 Byte voran. Wenn das Daten-Paket durch die hier angenommene Verbindung laufen soll, dann kann ein Paket nur etwas mehr als 1400 Byte Nutzdaten aufnehmen. max = 1500 - (8+20+20+20) = 1500-68 = 1432
|