Hello Marco,
ich beschäftige mich gerade etwas mit TCP, weil ich beim Bewerbungsgespräch (siehe) da etwas auf dem Schlauch stand. Ich habe mir dazu die Wikipedia-Seite durchgelesen, die auch ganz aufschlussreich ist. Meine Frage, die noch bleibt:
Hier wird beispielhaft eine gestaffelte Datenübertragung dargestellt. Die Frage ist: Woher weiß der Client, wie viele Segmente es insgesamt gibt? Dementsprechend müsste ja da der Puffer angepasst werden. Ich habe erst vermutet, dass der Client ja sieht, wenn der Payload des "letzten" Pakets nicht "voll" ist. Gerade in diesem Beispiel funktioniert das aber nicht, da der Payload immer exakt gleich groß ist. Außerdem würde das sowieso nicht funktionieren, da ja der clientseitige Puffer u. U. nicht groß genug ist. Wer kann helfen?
TCP ist ein symmetrisches Protokoll. Es gibt allgemein betrachtet keinen dedizierten Server und Empfänger. Allerdings sind die Rollen während einer Verbindung schon festgelegt.
Eine Übertragung besteht im Wesentlichen aus drei teilen:
*1 Verbindungsaufbau
*2 Paketweise (segmentierte) Übertragung
*3 Verbindungsabbau
siehe auch http://www.elektronik-kompendium.de/sites/net/0812271.htm
Es ist hier leider auch nicht vollständig beschrieben.
Aus meiner Erinnerung:
Aber beim Verbindungsaufbau sendet der Sender dem Empfänger die Anzahl der zur Übertragung gewünschten Bytes. Der Empfänger antwortet beim ACK nit einer Window-Größe. In diesem Fenster muss sich die Größe der gesendeten Pakete befinden.
Kann der Empfänger die Daten (in der Menge) nicht entgegen nehmen, antwortet er mit einem NACK und einer Fenstergröße von 0.
Der Empfänger weiß also durch das erste Paket (Verbindungsaufbau), was auf ihn zukommt.
Grüße Marco
PS: Ich hab den Job trotzdem *freu* :)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg