Zend certified PHP/Magento developer

TCP window probe

I was referred to this site when originally asking in the Networking SE.

I have a few questions about rwnd advertisements in TCP. I have read the RFC but was left with unanswered thoughts (or maybe I have missed some things). Perhaps some of answers are implementation-dependent – in this case please answer using your experience as I wish to know what happens in the general case.

The TCP standard states as follows:

The sending TCP must be prepared to accept from the user and send at
least one octet of new data even if the send window is zero.

I assume that the reason for this is that the window probe messages contain one octet of data. However, it made me think:

  1. I haven’t seen it stated in the standard that probe packets must contain one octet of new data. Are there different ways to probe the window size?

  2. If it is the only way, I wonder why resending an old segment (with an old sequence number) will not suffice. Does the receiver have to acknowledge only data that is within the window at a certain moment (meaning old data will not be necessarily acknowledged), meaning that we have to treat probing packets as an exception to that rule?

  3. Generally speaking, does the receiver notify the sender when its window grows in size? Does it have to do it (I understand the ack may be lost so the sender may have to probe anyway)?

  4. Are probe packets sent only when window = 0 or may they be sent before?