浅析TCP之SACK(选择性确认)
来源:互联网 发布:最新网络玄幻小说 编辑:程序博客网 时间:2024/06/05 17:19
1、SACK
Selective Acknowledgement,选择性确认。
2、功能
TCP收到乱序数据后,会将其放入乱序队列中,然后发送重复ACK给对端。对端如果收到多个重复的ACK,认为发生丢包,TCP会重传最后确认的包开始的后续包。这样原先已经正确传输的包可能会重复发送,降低了TCP性能。为改善这种情况,发展出SACK技术,使用SACK选项可以告知发包方收到了哪些数据,发包方收到这些信息后就会知道哪些数据丢失,然后立即重传丢失的部分。
需要注意的是只有收到失序的分组时才会可能会发送SACK,TCP的ACK还是建立在累积确认的基础上的。也就是说如果收到的报文段与期望收到的报文段的序号相同就会发送累积的ACK,SACK只是针对失序到达的报文段的。
3、格式
SACK包括了两个TCP选项,一个选项用于标识是否支持SACK(SACK_permitted),是在TCP连接建立时时发送;另一种选项则包含了具体的SACK信息。
1)SACK_permitted选项
该选项只允许在TCP连接建立时,有SYN标志的包中设置,也即TCP握手的前两个包中,分别表示通信的两方各自是否支持SACK。
2)SACK信息选项
SACK信息选项用于通告对端接收数据的信息。
该选项参数告诉对方已经接收到并缓存的不连续的数据块,注意都是已经接收的,发送方可
根据此信息检查究竟是哪个块丢失,从而发送相应的数据块。
* Left Edge of Block
不连续块的第一个数据的序列号
* Right Edge of Block
不连续块的最后一个数据的序列号之后的序列号
- 浅析TCP之SACK(选择性确认)
- TCP的SACK选择确认选项
- 8.4 选择确认(SACK)选项
- linux tcp SACK分析(一)
- 传输层学习之五(TCP的SACK,F-RTO)
- 传输层学习之五(TCP的SACK,F-RTO)
- tcp sack选项
- TCP SACK选项详解
- TCP-IP详解:SACK选项(Selective Acknowledgment)
- MySQL CARDINALITY确认索引选择性
- TCP协议中的SACK选项
- TCP的SACK选项功能
- sack
- TCP的核心系列 — SACK和DSACK的实现(二)
- TCP的核心系列 — SACK和DSACK的实现(一)
- TCP的核心系列 — SACK和DSACK的实现(七)
- TCP的核心系列 — SACK和DSACK的实现(三)
- TCP的核心系列 — SACK和DSACK的实现(四)
- Mac 搭建spark开发环境
- android文字及背景颜色渐变
- java运算符详解
- jsp页面读取property文件读取java类文件
- 图像工具包VintaSoftImaging.NET SDK发布v8.5,新增独立web服务
- 浅析TCP之SACK(选择性确认)
- swift 计算型属性
- Android Studio gradle配置详解
- 数组的连接、拼接、排序
- liblinear
- Drawable概念及对子类的互相转换,实现圆角图片,图片缩放等
- 微信小程序:新手跳坑指南
- Linux远程访问windows更改文件权限
- PHP 性能分析与实验