unknown: TCP: Größe des Puffers bei Sementierung

Beitrag lesen

Woher weiß der Client, wie viele Segmente es insgesamt gibt?

Das weiss er nicht. Theoretisch sind das unendlich viele, bei einer Anwendung die unendlich läuft und zyklisch Daten empfängt.

Das betrifft die TCP-Socket-Verbindung. Die ist der Größe nach unlimitiert, hat aber üblicherweise ein Timeout. Wenn länger nix kommt, wird nachgefragt und/oder die Verbindung geschlossen.

Ich kann dir nicht ganz folgen, bzw. nicht einordnen, worauf du hinaus willst.
Das betrifft TCP Pakete. Wenn eine Anwendung lange genug läuft, kann sie unendlich viele empfangen.

Der Empfänger muss dafür i.d.R. genügend Platz reservieren, weil nicht sichergestellt ist, in welcher Reihenfolge die Pakete zur Verfügung stehen werden.

Deswegen kann der Sender nur soviele Daten schicken, wie der Empfänger Platz reserviert hat.

Erst wenn alle Pakete vollständig vorhanden sind, kann die Datei geschlossen werden.

Aber die Anwendung kann schon vorher Daten vom TCP Stack abholen und in eine Datei schreiben.

Es können aber alle Pakete bis zur Lücke aus dem Ringpuffer an das OS und damit vermutlich auch an die Applikation ausgeliefert werden. Das ist Sache des NICs.

Das ist Sache der Anwendung. Diese liest die Daten. Liest sie keine, läuft der Puffer voll.

Wenn der zugewiesene Puffer im NIC überläuft, muss die Verbindung (für diese eine Übertragung) abgebrochen werden und der (Teil)Puffer wird geleert.

Wenn du jetzt noch den Puffer der Netzwerkkarte selbst ins Spiel bringst, hast du noch einen weiteren Puffer. Ob der TCP-Stack diesen bereit stellt, keine Ahnung.

Die TCP-Sockets (aufgabe der OSse) sind davon aber erst einmal nicht betroffen. Die bleiben empfangs- und sendebereit.

Warum? Diese haben nur einen begrenzten Puffer.