TCP stellt einen virtuellen Kanal zwischen zwei Rechnern (genauer: Endpunkten zwischen 2 Anwendungen auf diesen Rechnern) her. Auf diesem Kanal können in beide Richtungen Daten übertragen werden. TCP setzt in den meisten Fällen auf das IP-Protokoll auf. Es ist in Schicht 4 des OSI-Netzwerkschichtenmodells angesiedelt.
Ein Endpunkt stellt ein Tupel bestehend aus IP-Adresse und Port dar. Ports sind 16-bit Zahlen und reichen von 1 bis 65535. Ports unterhalb von 1024 sind reserviert (englisch: well known ports) und werden von der IANA vergeben, z.B. ist Port 25 für das SMTP Protokoll für elektronische Post reserviert.
Jede TCP-Verbindung wird eindeutig durch zwei Endpunkte definiert. So ist es möglich, dass ein Webserver auf Port 80 mehr als eine Verbindung zu einem anderen Rechner geöffnet haben kann.
Ein Server-Rechner, der einen Dienst wie beispielsweise elektronische Post anbietet, generiert einen Endpunkt mit dem Port und seiner Adresse (er kann auch beliebige Adressen zulassen).
Dies wird als passive open bezeichnet.
Will ein Client eine Verbindung aufbauen, generiert er einen eigenen Endpunkt aus seiner Rechneradresse und einer noch freien Portnummer.
Mit Hilfe eines ihm bekannten Ports und der Adresse des Servers kann dann eine Verbindung aufgebaut werden.
Für den Aufbau der Verbindung sind drei Pakete erforderlich (3-WegeHandshake).
Während der Datenübertragungsphase (active open) sind die Rollen von Client und Server (aus TCP-Sicht) vollkommen symmetrisch.
Insbesondere kann jeder der beiden beteiligten Rechner einen Verbindungsabbau einleiten.
Während des Abbaus kann die Gegenseite noch Daten übertragen, die Verbindung kann also halb-offen sein. Ein 4-Wege-Handshake wird benutzt, um die Verbindung abzubauen.
Datenintegrität und Zuverlässigkeit
Im Gegensatz zum paketorientierten UDPimplementiertTCP einen bidirektionalen, byte-orientierten, zuverlässigen Datenstrom zwischen zwei Endpunkten. Das darunterliegende Protokoll (meist IP) ist paketorientiert, wobei Datenpakete verlorengehen können, in verkehrter Reihenfolge ankommen dürfen und sogar doppelt empfangen werden können. TCP prüft die Integrität der Daten mittels einer Prüfsumme und stellt die Reihenfolge durch Sequenznummern sicher. Der Sender wiederholt das Senden von Paketen falls keine Bestätigung innerhalb einer bestimmten Zeitspanne (Timeout) eintrifft. Die Daten der Pakete werden im Empfänger in einem Puffer zu einem Datenstrom zusammengefügt und doppelte Pakete verworfen.
Anmerkung
Der Hinweis auf einen "zuverlässigen Datenstrom" stimmt nur insofern, als dass der Sender zuverlässig erfährt, ob der Empfang von Daten vom Empfänger korrekt quittiert wurde oder nicht. Mehr aber nicht. Der Datentransfer kann selbstverständlich jederzeit nach dem "Aufbau einer Verbindung" gestört oder ganz unterbrochen werden. Das Übertragungssystem läuft dann in einen Timeout. Der vorab getätigte "Verbindungsaufbau" stellt also keinerlei Gewähr für eine nachfolgende sichere Übertragung dar.
Bestätigungen
Die jeweilige Länge des Puffers, bis zu der keine Lücke im Datenstrom existiert, wird bestätigt (Windowing). Dadurch ist die Ausnutzung der Netzwerk-Bandbreite auch bei großen Strecken möglich. Bei einer Übersee- oder Satellitenverbindung dauert das Eintreffen des ersten Acknowledges (ACK) aus technischen Gründen mehrere 100 ms, in dieser Zeit können unter Umständen mehrere hundert Pakete gesendet werden. Der Sender kann den Empfängerpuffer füllen bevor die erste Bestätigung eintrifft. Alle Pakete im Puffer können gemeinsam bestätigt werden. Bestätigungen werden zusätzlich zu den Daten in die Paket-Header im entgegengesetzen Datenstrom eingefügt (Piggybacking).
Weitere Protokolleigenschaften
Über ein Dringlichkeitsbit (Urgent) können Daten als vorrangig gekennzeichnet werden. Dadurch ist beispielsweise die bevorzugte Behandlung von CTRL-C (Abbruch) bei einer Terminalverbindung (TELNET) möglich.
Um Bandbreite zu sparen, wird auf der TCP Ebene meistens der Nagle-Algorithmus eingesetzt.
Problematik der Datenwiederholung
Die Wiederholung von Daten für die noch keine Bestätigung empfangen wurde, ist nicht unproblematisch. Im Internet, in dem viele Netzwerke mit unterschiedlichen Eigenschaften verbunden werden, ist Datenverlust einzelner Pakete durchaus normal. Die Verlustrate nimmt zu, falls bestimmte Netzwerke innerhalb der Verbindung an ihre Auslastungsgrenze kommen. Eine naive Implementierung von TCP/IP würde die verlorenen Pakete einfach wiederholen, was zu noch größerer Auslastung führen würde und unter Umständen zum Zusammenbruch des Netzwerks führen könnte. TCP/IP Implementierungen verwenden daher Algorithmen, die dies verhindern. Normalerweise wird langsam gestartet (Slow Start) und die Senderate dann bis zum Datenverlust erhöht. Jeder Datenverlust verringert die Senderate, insgesamt nähert sich die Datenrate dem jeweiligen zur Verfügung stehenden Maximum.
Dieser Beitrag ist aus der XML-Version der deutschen WikiPedia® entwickelt worden und unterliegt inhaltlich den GNU FDL-Lizenzbestimmungen. Linkziele außerhalb der wikipedia-Inhalte unterliegen den Urheberrechten der jeweiligen Anbieter
( DirectDownloads ) Kalenderblätter druckfertig aufbereitet für Schmuckblätter zum Selbstdrucken im Word DOC6/RTF Format, je Euro 5 über Click&BuyJAN | FEB | MÄRZ APRIL | MAI | JUNI JULI | AUG | SEPT OKT | NOV | DEZ
Das Geschenk für jeden Anlass, nicht nur bei 'runden' Jubiläen Andere Einzeltage oder Zahlungsarten bitte HIER bestellen
Diese Web Site verdient ihr Geld durch Produktverkäufe (CD-ROM, downloads) und in erster Linie durch Anzeigen. Wenn Sie als Webmaster zuverlässige Partner suchen für Ihr eigenes Anzeigenschäft, dürfen Sie sich gerne auf unsere Empfehlungen stützen:
z.B.: GigaCash & ProfiWin