使用选择确认SACK
发布时间:2014/9/6 21:24:54 访问次数:1100
我们知道,TCP的首部没有哪个字段能够提供上述这些字节块的边界信息。RFC 2018规定, MSS5131-334MLC如果要使用选择确认SACK,那么在建立TCP连接时,就要在TCP一首部的选项中加上“允许SACK”的选项,而双方必须都事先商定好。如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。只是以后在TCP报丈段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节(因为序号有32位,需要使用4个字节表示),因此在选项中最多只能指明4个字节块的边界信息。这是因为4个字节块共有8个边界,因而需要用32个字节来描述。另外还需要两个字节。一个字节用来指明是SACK选项,另一个字节是指明这个选项要占用多少字节。如果要报告五个字节块的边界信息,那么至少需要42个字节。这就超过了选项长度的40字节的上限。RFC 2018还对报告这些边界信息的格式都做出了非常明确的规定,这里从略。
然而,SACK文档并没有指明发送方应当怎样响应SACK。因此大多数的实现还是重传所有未被确认的数据块。
我们知道,TCP的首部没有哪个字段能够提供上述这些字节块的边界信息。RFC 2018规定, MSS5131-334MLC如果要使用选择确认SACK,那么在建立TCP连接时,就要在TCP一首部的选项中加上“允许SACK”的选项,而双方必须都事先商定好。如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。只是以后在TCP报丈段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节(因为序号有32位,需要使用4个字节表示),因此在选项中最多只能指明4个字节块的边界信息。这是因为4个字节块共有8个边界,因而需要用32个字节来描述。另外还需要两个字节。一个字节用来指明是SACK选项,另一个字节是指明这个选项要占用多少字节。如果要报告五个字节块的边界信息,那么至少需要42个字节。这就超过了选项长度的40字节的上限。RFC 2018还对报告这些边界信息的格式都做出了非常明确的规定,这里从略。
然而,SACK文档并没有指明发送方应当怎样响应SACK。因此大多数的实现还是重传所有未被确认的数据块。
上一篇:选择确认SACK
上一篇:利用滑动窗口实现流量控制