Bei allen TCP-Paketen ist das PSH-Flag gesetzt – wer/was ist dafür verantwortlich?

Bei allen TCP-Paketen ist das PSH-Flag gesetzt – wer/was ist dafür verantwortlich?

Bei einem Server->Client-TCP-Stream ist bei allen Paketen vom Server das PSH-Flag gesetzt. Ist der gute alte Nagle dafür verantwortlich, dass dieses Flag gesetzt wird?

Antwort1

Das Push-Flag ( PSHoder P) wird vom sendenden Host gesetzt. Wenn die sendende Anwendung 100 Bytes schreibt oder sendet, ist jedes Paket PSHgesetzt. Wenn der Sender 2000 Bytes sendet, werden diese in zwei Paketen gesendet und das zweite hat das PSHFlag, wobei von einer Standard-Framegröße von 1500 ausgegangen wird.

Das Push-Flag zeigt dem empfangenden Host an, dass die empfangenen Daten sofort an die empfangende Anwendung weitergegeben werden sollen.

Antwort2

Das Setzen des Push-Flags wird normalerweise nicht von der sendenden Anwendung gesteuert, sondern von der sendenden TCP-Schicht. Die meisten modernen TCP/IP-Stacks setzen das PSH-Bit am Ende des an send() übergebenen Puffers.

Quelle: Verbessern Sie die Latenz für TCP, indem Sie nicht auf das Push-Flag warten

Antwort3

Das ständige Setzen des P-Bits ist ein standardmäßig korrektes, aber ineffizientes Verhalten, das Sie möglicherweise bei alten TCP-Stacks feststellen.

verwandte Informationen