5

关于《计算机网络:自顶向下方法》一书中 TCP 协议的问题

 2 years ago
source link: https://www.v2ex.com/t/836415
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  程序员

关于《计算机网络:自顶向下方法》一书中 TCP 协议的问题

  rattlecattle · 1 天前 · 992 次点击

最近在恶补计算机网络的知识,看到了 TCP 协议部分,在第七版 164 页,阐述 TCP 是回退 N 步( GBN )还是选择重传(SR)有这样的论述:

“TCP 看起来更像是 GBN 风格的协议,但是 TCP 和 GBN 有着显著的区别。许多 TCP 实现会将正确接收但失序上网报文段缓存起来。
另外考虑一下,当发送方发送一组报文段 1,2 ,...,N ,并且所有报文段都按序无差错地到达接收方时会发生的情况。
进一步假设对分组 n<N 的确认报文丢失,但是其余 N-1 个确认报文分别在超时以前到达发送端,这时又会发生的情况。在该例中,Go-Back-N 不仅会重传分组 n ,还会重传所有后继的分组 n+1,n+2,....,N 。
在另一方面,TCP 却至多重传一个报文段,即报文段 n 。此外,如果对报文段 n+1 的确认报文在报文段 n 超时之前达到,TCP 甚至不会重传报文段 n.”

很疑惑,GBN 不是累计确认吗? 如果除了 n 其余的 ACK 传回发送方,那么发送方收到了比 n 更高的比如 N > n 的 ACK ,不就确认了这个 N 之前的分组都已经被交付了吗?为什么还会重传 n, n + 1 ,n + 2 ,......,N ?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK