title: Differences between TCP and Go Back N
body: <p>I was reading Computer Networking from Kurose, and while reading in the TCP chapter about the differences between TCP and Go Back N I found something that I don't fully understand. The book says the following about some of the differences between the two protocols:</p>
  
  <blockquote>
    <p>"many TCP implementations buffer correctly received but out-of-order segs rather than discard.</p>
    
    <p>also, suppose a seqof segs 1, 2, …N, are received correctively in-order,ACK(n), 
    n &lt; N, gets lost, and remaining N-1 acks arrive at sender before their respective timeouts
    TCP retransmit most one seg, i.e., seg n, instead of pkts, n, n+1, …, N
    TCP wouldn’t even retransmit seg n if ACK(n+1) arrived before timeout for seg n"</p>
  </blockquote>
  
  <p>I understand the buffering of out-of-order segments, but I don't understand the other behavior, and I think it is because I don't fully understand Go Back N. Following that example, if ACK(n+t) arrives before Go Back N timeout, the protocol would continue as if seg n was in fact received, which is the case, because of the accumulative ACKS... so, Go Back N wouldn't retransmit that segment either.... or am I missing something?</p>