1. 前言
TCP通信时,如果发送序列中间某个数据包丢失,TCP会通过重传最后确认的包开始的后续包,这样原先已经正确传输的包也可能重复发送,急剧降低了TCP性能。为改善这种情况,发展出SACK(Selective Acknowledgment, 选择性确认)技术,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到等。
2. SACK选项
SACK信息是通过TCP头的选项部分提供的,信息分两种,一种标识是否支持SACK,是在TCP握手时发送;另一种是具体的SACK信息。
2.1 SACK允许选项
类型值: 4
--------- ---------
| Kind=4 | Length=2|
--------- --------- |
该选项只允许在有SYN标志的TCP包中,也即TCP握手的前两个包中,分别表示各自是否支持SACK.
2.2 SACK选项
选项类型: 5
选项长度: 可变,但整个TCP选项长度不超过40字节,实际最多不超过4组边界值。
-------- --------
| Kind=5 | Length |
-------- -------- -------- --------
| Left Edge of 1st Block |
-------- -------- -------- --------
| Right Edge of 1st Block |
-------- -------- -------- --------
| |
/ . . . /
| |
-------- -------- -------- --------
| Left Edge of nth Block |
-------- -------- -------- --------
| Right Edge of nth Block |
-------- -------- -------- -------- |
该选项参数告诉对方已经接收到并缓存的不连续的数据块,注意都是已经接收的,发送方可根据此信息检查究竟是哪个块丢失,从而发送相应的数据块。
* Left Edge of Block
不连续块的第一个数据的序列号。
* Right Edge of Block
不连续块的最后一个数据的序列号之后的序列号。表示(Left Edge - 1)和(Right Edge)处序列号的数据没能接收到。
相关文章
OSI第二层网络架构安全要素
软交换网络中的关键路由技术详细分析
Cisco路由器配置--反转多路复用的妙用
关于TCP协议的SACK选项功能详细解读
在CISCO3550上封堵端口防病毒
思科3500系列交换机的基本配置命令
Catalyst6509防火墙模块配置
巧设寄存器重设思科路由器密码
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛