可靠传输
ARQ(Automatic Repeat-reQuest),自动重传请求
- 基于停止等待协议
连续ARQ协议 + 滑动窗口协议
SACK(Selective Acknowledgment,选择性确认)
- 告诉发送方,那些数据丢失,那些数据确认收到
- 避免重传时有太多重复数据,提高TCP性能
- 如果请求包含SACK选项,SACK信息位于TCP首部可选部分
- Kind=5,表示SACK选项,占8位
- Length:占8位,表示SACK信息一共占用多少字节。
- Left Edge:占32位,左边界。已经收到的数据的(包含)起始位置。
- Right Edge:占32位,有边界。已经收到的数据(不包含)结束位置。
- SACK选项最多携带4组边界信息。
- 最大占用34字节 = 1 + 1 + 8 * 4
数据分段
- 数据的切分一般发生在传输层,因为可以提高重传的性能。
- 需要明确的是,可靠传输实在传输层进行控制的。
- 如果数据在传输层不分段,一旦传输数据部分丢失,整个传输层的数据都得重传。
- 如果数据在传输层分了段,一旦传输数据部分丢失,只需要重传丢失部分的数据即可。