1. 选择性确认(SACK)
TCP通信中,发送序列中的某一包丢失(1,2,3,4,5 中 3 丢失),如果全部重传消耗太大,接收方会确认 2 ,然后窗口划过去,将3,4,5重传,但是由于4,5传过了,造成重复。
- 创立SACK(Selective acknowledgment,选择性确认)技术
- 告知发送方哪些数据收到,哪些数据丢失。
- 不用重复传输。
- SACK是TCP协议头中选项的一部分
- Kind:1字节。kind == 5 代表这是SACK选项。
- Length:1字节。代表SACK选项长度(字节)。
- Left Edge:4字节。左边界。
- Right Edge:4字节。右边界。
- 区间左闭右开[…, …)
- SACK选项
- 最多携带4组边界信息。
- 最大占用字节数:4 * 8 + 2 = 34B
- 但是我们会发现问题:选项长度最大为40字节,左右边界占8字节,那么最多可以表示的区间只有4个,如果不止要重传4个区间怎么办呢?
- 如果需要重传的区间超过4个,TCP协议的SACK(Selective Acknowledgment)选项可能无法完全表示所有的区间。在这种情况下,S