主要使用了 SACK 来告诉发送方有哪些数据被重复接收了

D-SACK 使用了 SACK 的第一个段来做标志,

  • 如果 SACK 的第一个段的范围被 ACK 所覆盖,那么就是 D-SACK
  • 如果 SACK 的第一个段的范围被 SACK 的第二个段覆盖,那么就是 D-SACK
  1. 可以让发送方知道,是发出去的包丢了,还是回来的 ACK 包丢了。
  2. 是不是自己的 timeout 太小了,导致重传。
  3. 网络上出现了先发的包后到的情况(又称 reordering)
  4. 网络上是不是把我的数据包给复制了。