我现在知道了,tcp 在三次握手的时候会确认双方有没有 SACK 的能力(通过选项)。
如果有的话,那么接收方可能下面这种情况:
即已经收到了 14-20 的包,但由于网络原因,又收到了 22-23 的包。这时候,可能接收方会回复信息 ACK = 21 、SACK = [22-23]、window = 5 。所以,接收方有缓存 LastRcvd 之后的数据包的能力( 22-23 ),即使 21 没有收到。
但我现在想问,如果接收方没有 SACK 的能力,
- 那么接收方也会缓存 LastRcvd 之后的数据包(22-23)吗,只是单纯不会通知出来 SACK 信息而已?
- 还是 既不会缓存 LastRcvd 之后的数据包(22-23),也不会通知出来 SACK 信息?