关于tcp协议的sack选项功能

关于tcp协议的sack选项功能

ID:35210226

大小:30.82 KB

页数:3页

时间:2019-03-21

关于tcp协议的sack选项功能_第1页
关于tcp协议的sack选项功能_第2页
关于tcp协议的sack选项功能_第3页
资源描述:

《关于tcp协议的sack选项功能》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、关于TCP协议的SACK选项功能 1.前言  TCP通信时,如果发送序列中间某个数据包丢失,TCP会通过重传最后确认的包开始的后续包,这样原先已经正确传输的包也可能重复发送,急剧降低了TCP性能。为改善这种情况,发展出SACK(SelectiveAcknowledgment,选择性确认)技术,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到等。 2.SACK选项  SACK信息是通过TCP头的选项部分提供的,信息分两种,一种标识是否支持SACK,是在TCP握手时发送;另一种是具体的SACK信息。  2

2、.1SACK允许选项         类型值:4+---------+---------+

3、Kind=4

4、Length=2

5、+---------+---------+  该选项只允许在有SYN标志的TCP包中,也即TCP握手的前两个包中,分别表示各自是否支持SACK.  2.2SACK选项  选项类型:5  选项长度:可变,但整个TCP选项长度不超过40字节,实际最多不超过4组边界值。            +--------+--------+

6、Kind=5

7、Length

8、+--------+--------+--------+--------+

9、LeftEdgeof1stBlock

10、

11、+--------+--------+--------+--------+

12、RightEdgeof1stBlock

13、+--------+--------+--------+--------+

14、

15、/.../

16、

17、+--------+--------+--------+--------+

18、LeftEdgeofnthBlock

19、+--------+--------+--------+--------+

20、RightEdgeofnthBlock

21、+--------+--------+--------+--------+  该选项参数告诉对方已经接收到并缓存的不连续的数据块,注意都是已经接收的,发送方

22、可根据此信息检查究竟是哪个块丢失,从而发送相应的数据块。  *LeftEdgeofBlock  不连续块的第一个数据的序列号。  *RightEdgeofBlock  不连续块的最后一个数据的序列号之后的序列号。表示(LeftEdge-1)和(RightEdge)处序列号的数据没能接收到。3.SACK的产生  SACK通常都是由TCP接收方产生的,在TCP握手时如果接收到对方的SACK允许选项同时自己也支持SACK的话,在接收异常时就可以发送SACK包通知发送方。  3.1对中间有丢包或延迟时的SACK  如果TCP接收方接收到非期待序列号的数据块时,如果该块的序列号小于期待的序列号,说

23、明是网络复制或重发的包,可以丢弃;如果收到的数据块序列号大于期待的序列号,说明中间包被丢弃或延迟,此时可以发送SACK通知发送方出现了网络丢包。  为反映接收方的接收缓存和网络传输情况,SACK中的第一个块必须描述是那个数据块激发此SACK选项的,接收方应该尽可能地在SACK选项部分中填写尽可能多的块信息,即使空间有限不能全部写完,SACK选项中要报告最近接收的不连续数据块,让发送方能了解当前网络传输情况的最新信息。  3.2对重发包的SACK(D-SACK)  RFC2883中对SACK进行了扩展,在SACK中描述的是收到的数据段,这些数据段可以是正常的,也可能是重复发送的,SACK字

24、段具有描述重复发送的数据段的能力,在第一块SACK数据中描述重复接收的不连续数据块的序列号参数,其他SACK数据则描述其他正常接收到的不连续数据,因此第一块SACK描述的序列号会比后面的SACK描述的序列号大;而在接收到不完整的数据段的情况下,SACK范围甚至可能小于当前的ACK值。通过这种方法,发送方可以更仔细判断出当前网络的传输情况,可以发现数据段被网络复制、错误重传、ACK丢失引起的重传、重传超时等异常的网络状况。  4.发送方对SACK的响应  TCP发送方都应该维护一个未确认的重发送数据队列,数据未被确认前是不能释放的,这个从重发送队列中的每个数据块都有一个标志位“SACKed

25、”标识是否该块被SACK过,对于已经被SACK过的块,在重新发送数据时将被跳过。发送方接收到接收方SACK信息后,根据SACK中数据标志重发送队列中相应的数据块的“SACKed”标志,但如果接收不到接收方数据,超时后,所有重发送队列中数据块的SACKed位都要清除,因为可能接收方已经出现了异常。 5.SACK应用举例  发送方发接收方接接收方发送的ACK  送的数据收的数据(包括SACK)  5.1SACK累加接收的数据    50

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。