TCP Transmission Control Protocol ● Wiederholung ● TCP-Ports ● Segmentierung ● TCP Header ● Verbindungsaufbau-/abbau, 3 - WayHandShake ● Timeout & Retransmission ● MTU maximum transfer Unit TCP Sicher Verbunden? ● Individuelle Leitung der IP-Datagramme durch das Netzwerk ● Kein zuverlässiger Transport ● Falsche Reihenfolge oder kommen gar nicht erst an TCP ● ● ● ● ● bis Internetebene einschließlich nur unzuverlässige Übertragung auf Transportebene ist zuverlässige Übertragung eine Möglichkeit diese wird durch TCP hergestellt auf Transportebene außerdem angesiedelt: Zuordnung einer Verbindung zu Prozessen geschieht über Portnummer Pakete ● Quell-IP-Adresse ● Quell-Port ● Ziel-IP-Adresse ● Ziel-Port ● ● ● die TCP-Pakete werden vom IP-Protokoll als zusammenhanglose IP-Pakete (Datengramme) übertragen TCP-Instanz des Zielrechners setzt die empfangenen IP-Pakete in der richtigen Reihenfolge in die ursprünglichen Daten (Nachricht) zurück TCP ist im RFC 793( RFC 1122, RFC 1323) definiert Schichten Ports ● ● ● ● auch bei TCP werden den aktiven Anwendungsprozessen Ports zugeordnet sie werden den Anwendungsprozessen nach Bedarf (auch dynamisch) zugeordnet bei TCP werden für eine Portnummer 16 Bit verwendet also bis zu 65535 TCP-Ports je Rechner möglich Ports ● ● ● wie bei UDP auch bei TCP einige Portnummern reserviert 0 bis 1023 sind weltweit eindeutig für Standarddienste (sog. well known services) reserviert im Bereich von 1024 bis 65535 können sie im Rechner den Anwendungsprozessen frei zugeteilt werden Segmentierung ● den Anwendungen bietet TCP Daten als Datenstrom (data stream) an ● Datenstrom prinzipiell unendlich lang ● Daten sind jedoch so nicht verschickbar ● ● tiefere Ebenen bieten nur das Verschicken von Datenpaketen begrenzter Größe an daher: einteilen in Datenblöcke (Segmente) Segmentierung ● Segmentierung des Datenstroms in TCPDatenpakete ● jedes Segment/Paket erhält TCP-Header ● Segmente werden durchnummeriert Header ● ● ● ● ● ● Quellport (16 Bit): Der Quellport ist die Portnummer des Absenders. Zielport (16 Bit): Dies ist entsprechend die Portnummer des Empfängers. Sequenznummer (32 Bit): Sequenznummer des Pakets Bestätigungsnummer (32 Bit): bei gesetztem ACK-Bit von Bedeutung. Offset (4 Bit): Anzahl der 32-Bit-Wörter, aus denen der Header besteht; gibt entsprechend den Beginn der Nutzdaten im Paket an. Reserviert (6 Bit): Reserviert für zukünftige Anwendungen; muss 0 sein. Header ● ● ● ● Flags (6 Bit): Verschiedene Statusbits; im Einzelnen: URG: Urgent Data wird versandt; der Inhalt des Urgent-Zeigers muss beachtet werden. ACK: Acknowledgement – das Bestätigungsfeld muss berücksichtigt werden. PSH: Push-Funktion – Pufferung des Pakets wird verhindert; es wird unmittelbar gesendet. ● RST: Reset – Verbindung zurücksetzen ● SYN: Sequenznummern synchronisieren ● FIN: Ende der Sequenz; keine weiteren Daten vom Absender Header ● ● ● ● Fenster (16 Bit): Die Anzahl von Datenbytes, die der Absender des Pakets zu empfangen bereit ist; basiert unter anderem auf der IPMTU der verwendeten Schnittstelle. Prüfsumme (16 Bit): Anhand dieser einfacheren Plausibilitätskontrolle kann die Korrektheit der übertragenen Daten überprüft werden. Urgent-Zeiger (16 Bit): Ein Zeiger auf das Byte der aktuellen Sequenz, das Urgent Data enthält. Wird nur ausgewertet, wenn das URG-Flag gesetzt ist. Optionen (variable Länge): Enthält verschiedene hersteller- und implementierungsabhängige Zusatzinformationen; stets ein Vielfaches von 8 Bit lang. Verbindungsaufbau ● ● ● TCP verhindert den gleichzeitigen Verbindungsaufbau zwischen zwei Stationen d.h. nur eine Station kann den Aufbau initiieren außerdem ist es nicht möglich, einen mehrfachen Aufbau einer Verbindung Verbindungsaufbau ● ● ● ● Drei-Wege-Handshake - „Drei spezielle Datenpakete ohne Nutzdateninhalt“ der Verbindungsaufbau zwischen zwei Rechnern erfolgt mit Three Way Handshake Synchronisation der Kommunikationspartner der Anwendungsprozeß im Quellrechner kommuniziert über einen wahlfreien Port, der dynamisch (aber nur im Quellrechner!) zugewiesen wird 3 - WayHandShake Verbindungsabbau ● ● ● ● ● Abbau der Verbindung kann von jeder Seite eingeleitet werden Paket mit gesetztem FIN-Flag die beiden logischen Verbindungen werden nacheinander abgebaut und verhindert hierbei den Verlust von noch unquittierten Daten dann wird Port freigegeben und steht für spätere Verbindungen zur Verfügung Verbindungsabbau Flow Control ● Hier ein bischen Text flow control - Sliding Window Timeout & Retransmission ● ● ● ● der Datenaustausch zwischen zwei Stationen erfolgt nach dem Verbindungsaufbau gehen Daten bei der Übertragung verloren, wird nach Ablauf eines Timeouts die Wiederholung der fehlerhaften Segmente gestartet durch die Sequenznummer werden doppelt übertragene Pakete erkannt Maximum Retransmit erreicht?! - Verbindung zu unsicher! MTU ● ● ● ● Maximum Transmission Unit (MTU) maximale Segmentgröße wird zwischen Quelle und Ziel vor dem Verschicken der ersten Daten ausgehandelt Round Trip Time ->RTT Zeit vom Versenden eines Packets bis zur Bestätigung - dient der Synchonisation