选择确认SACK
发布时间:2014/9/6 21:20:54 访问次数:814
现在还有一个问题没有讨论。 MSS5131-333MLC这就是若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?答案是可以的。选择确认就是一种可行的处理方法。
我们用一个例子来说明选择确认(Selective ACK)的工作原理。TCP的接收方在接收对方发送过来的数据字节流的序号不连续,结果就形成了一些不连续的字节块(如图5-21所示)。可以看出,序号1~1000收到了,但序号1001~1500没有收到。接下来的字节流收到了,可是又缺少了3001~3500,再后面从序号4501起又没有收到。也就是说,接收方到了和前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。
图5-21 接收到的字节流序号不连续
从图5-21可看出,和前后字节不连续的每一个字节块都有两个边界:左边界和右边界。因此在图中用四个指针标记这些边界。请注意,第一个字节块的左边界Li=1501,但右边界Ri=3001而不是3000。这就是说,左边界指出字节块的第一个字节的序号,但右边界减l才是字节块中的最后一个序号。同理,第二个字节块的左边界L2=3501,而右边界R2= 4501。
现在还有一个问题没有讨论。 MSS5131-333MLC这就是若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?答案是可以的。选择确认就是一种可行的处理方法。
我们用一个例子来说明选择确认(Selective ACK)的工作原理。TCP的接收方在接收对方发送过来的数据字节流的序号不连续,结果就形成了一些不连续的字节块(如图5-21所示)。可以看出,序号1~1000收到了,但序号1001~1500没有收到。接下来的字节流收到了,可是又缺少了3001~3500,再后面从序号4501起又没有收到。也就是说,接收方到了和前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。
图5-21 接收到的字节流序号不连续
从图5-21可看出,和前后字节不连续的每一个字节块都有两个边界:左边界和右边界。因此在图中用四个指针标记这些边界。请注意,第一个字节块的左边界Li=1501,但右边界Ri=3001而不是3000。这就是说,左边界指出字节块的第一个字节的序号,但右边界减l才是字节块中的最后一个序号。同理,第二个字节块的左边界L2=3501,而右边界R2= 4501。
上一篇:使用选择确认SACK