Check out the new USENIX Web site. next up previous
Next: Forward loss Up: Loss deduction algorithm Previous: Loss deduction algorithm

TCP basics

Every TCP packet contains a 32 bit sequence number and a 32 bit acknowledgment number. The sequence number identifies the bytes in each packet so they may be ordered into a reliable data stream. The acknowledgment number is used by the receiving host to indicate which bytes it has received, and indirectly, which it has not. When in-sequence data is received, the receiver sends an acknowledgment specifying the next sequence number that it expects and implicitly acknowledging all sequence numbers preceding it. Since packets may be lost, or reordered in flight, the acknowledgment number is only incremented in response to the arrival of an in-sequence packet. Consequently, out-of-order or lost packets will cause a receiver to issue duplicate acknowledgments for the packet it was expecting.


  
Figure: Data seeding phase of basic loss deduction algorithm.
\begin{figure*}
\center
\begin{tabular}
{\vert l l \vert}
\hline 
\begin{minipag...
 ...eived
 ackReceived++ \end{code}\end{minipage}\\ \hline\end{tabular}\end{figure*}


  
Figure: Hole filling phase of basic loss deduction algorithm.
\begin{figure*}
\center
\begin{tabular}
{\vert l l \vert }
\hline 
\begin{minipa...
 ...ck = MAX(lastAck, j) \end{code}\end{minipage}\\ \hline\end{tabular}\end{figure*}



Stefan Savage
8/31/1999