This preview shows page 1. Sign up to view the full content.
Unformatted text preview: bsdi.1027: . ack 9217 win 0 Figure 22.1 Example of persist timer probing a zero-sized window.
Segments 1-13 shows the normal data transfer from the client to the server, filling up the
window with 9216 bytes of data. The server advertises a window of 4096, and has a
default socket buffer size of 4096, but really accepts a total of 9216 bytes. This is some
form of interaction between the TCP/IP code and the streams subsystem in SVR4.
In segment 13 the server acknowledges the previous four data segments, but advertises a
window of 0, stopping the client from transmitting any more data. This causes the client
to set its persist timer. If the client doesn't receive a window update when the timer
expires, it probes the empty window, to see if a window update has been lost. Since our
server process is asleep, the 9216 bytes of data are buffered by TCP, waiting for the
application to issue a read.
Notice the spacing of the window probes by the client. The first (segment 14) is 4.949
seconds after receiving the zero-sized window. The next (segment 16) is 4.996 seconds file:///D|/Documents%20and%20Settings/bigini/Docu...homenet2run/tcpip/tcp-ip-illustrated/tcp_pers.htm (3 of 11) [12/09/2001 14.47.29] Chapter 22. TCP Persist Timer later. The spacing is then about 6, 12, 24,48, and 60 seconds after the previous.
Why are the spacings always a fraction of a second less than 5,6,12, 24, 48, and 60?
These probes are triggered by TCP's 500-rns timer expiring. When the timer expires, the
window probe is sent, and a reply is received about 4 ms later. The receipt of the reply
causes the timer to be restarted, but the time until the next clock tick is about 500 minus 4
The normal TCP exponential backoff is used when calculating the persist timer. The first
timeout is calculated as 1.5 seconds for a typical LAN connection. This is multiplied by 2
for a second timeout value of 3 seconds. A multiplier of 4 gives the next value of 6, a
multiplier of 8 gives a value of 12, and so on. But the persist timer is always bounded
between 5 and 60 seconds, which accounts for the valu...
View Full Document
This test prep was uploaded on 04/04/2014 for the course ECE EL5373 taught by Professor Guoyang during the Spring '12 term at NYU Poly.
- Spring '12