TCP重传机制详解——02SACK

news2024/11/15 10:00:10

文章目录

  • TCP重传机制详解——02 SACK
    • SACK是什么?
    • 为什么要有SACK?
    • 实际场景
      • 抓包具体显示信息
      • 流程
    • 实战抓包讲解
      • SACK关闭场景下,三次重复ACK后会快速重传
      • SACK打开但是不携带SACK块信息场景下,三次重复ACK也不会快速重传
      • SACK打开并且携带SACK块信息场景下,两次重复ACK也会快速重传
    • SACK reneging
      • 1. 故意不发送SACK
      • 2.SACK选项丢失
      • 3.丢弃已确认接收的数据包
    • 总结
    • REF

TCP重传机制详解——02 SACK

SACK是什么?

Selective Acknowledgment有选择的ACK,显而易见这是在ACK的基础上的扩展。在ACK包上会携带SACK选项,表示一个接收范围,也称之为"空洞"。

为什么要有SACK?

传统的TCP在丢包时会采用超时重传的方式,即等待一段时间后重传丢失的数据段。而使用SACK机制,接收端可以选择性地向发送端反馈已经成功接收的数据段范围,从而使发送端能够更精确地知道哪些数据段需要重传,提高了重传的效率。
SACK机制可以提高TCP的性能和可靠性,特别是在丢包较多或网络拥塞的情况下。

实际场景

在这里插入图片描述

TCP选项,在三次握手的时候,进行协商是否支持SACK选项(必须双方支持才可以使用),协商好则会在连接建立后数据从传输的时候决定是否携带SACK块信息。

抓包具体显示信息

SACK的抓包显示

  1. 报文显示SLE和SRE就是表示是SACK的块信息了,SLE即SACK left edge表示左边沿,SRE即SACK right edge右边沿。
  2. ACK报文不消耗序列号因此不会重传,所以可以看到如果没有确认就会在后面的ACK中继续去附加之前的SACK信息
  3. SACK块信息个数一定是有限的,因为报文就是有大小限制(MSS)

流程

接收端根据接收到的数据的序号,回复ACK,携带已经确认序号的信息块。
例如:收到了P(25-30),则回复SACK(25-31),发送端根据接收到的SACK块信息来重传数据(填洞)

实战抓包讲解

SACK关闭场景下,三次重复ACK后会快速重传

/proc/aya/net/ipv4/tcp_sack=0
在这里插入图片描述
SACK的"bug"(不是真正的bug,是缺点):SACK开启但是不携带SACK选项信息的场景下比不打开SACK场景的效率还要低

SACK打开但是不携带SACK块信息场景下,三次重复ACK也不会快速重传

/proc/aya/net/ipv4/tcp_sack=1,但是不携带SACK块信息
在这里插入图片描述

SACK打开并且携带SACK块信息场景下,两次重复ACK也会快速重传

是不是被标题吓到了?(嘿嘿,不小心做了标题党),这里其实只是抓包看起来是dup ACK两次,实际上SACK的判定条件是不一样的!

其实主要是因为SACK开启下的dup ACK的判定条件是不一样的。这也是为什么dup ACK三次(不携带SACK块)也不会触发快速重传!原因就是:SACK对于dup ACK的认定不是判断ack number的不同,而是根据SACK选项块信息的个数(>=3个)
在这里插入图片描述

SACK reneging

SACK reneging,即SACK违背承诺,或者SACK撤销确认。
SACK seneging是指在TCP通信中,接收端故意不发送SACK选项或者SACK选项丢失或者丢弃已确认成功接收的数据包,从而导致发送端错误地认为数据包丢失,触发不必要的重传行为。即之前确认的SACK选项信息和后面的ACK或者SACK选项信息产生了冲突,导致发送端误认为数据包丢失

1. 故意不发送SACK

攻击者利用TCP协议的漏洞:攻击者可能会发送特制的TCP数据包,故意不发送SACK选项,以此来干扰正常的数据传输,导致发送端频繁地进行不必要的重传,从而消耗网络资源和带宽。

2.SACK选项丢失

网络设备或防火墙的干预:有些网络设备或防火墙可能会过滤或修改TCP选项字段,导致SACK选项被删除或篡改,从而触发SACK seneging。
还有一种有可能导致SACK reneging:

3.丢弃已确认接收的数据包

在这里插入图片描述

总结

场景触发条件
/proc/aya/net/ipv4/tcp_sack=0dup ACK三次后会触发快速重传
/proc/aya/net/ipv4/tcp_sack=1但不带SACK块信息dup ACK三次后会触发快速重传
/proc/aya/net/ipv4/tcp_sack=1且携带SACK块信息SACK块个数三个后会触发快速重传

REF

SACK下的重传
SACK reneging

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1549226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv9改进策略:IoU优化 | Wasserstein Distance Loss,助力小目标涨点

💡💡💡本文独家改进:基于Wasserstein距离的小目标检测评估方法 Wasserstein Distance Loss | 亲测在多个数据集能够实现涨点,对小目标、遮挡物性能提升明显 💡💡💡MS COCO和PASC…

性价比高一点的diy台式主机怎么搭配?

怎么搭配一台性价比高一点的台式机 建议: 选择合适的CPU和GPU。根据实际需求选择相对较新的CPU和GPU型号,以确保能够运行目标应用程序和游戏。 合理选择内存和存储。根据预算选择适当的内存和存储容量。8GB或16GB内存对于一般计算和游戏使用足够了&…

USART发送单字节数据原理及程序实现

硬件接线: 显示屏的SCA接在B11,SCL接在B10,串口的RX连接A9,TX连接A10。 新建Serial.c和Serial.h文件 在Serial.c文件中,实现初始化函数,等需要的函数,首先对串口进行初始化,只需要…

全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的,对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律,既受制于自然环境,又与人类活动有关,往往是人类与自然界相互作用的结果。…

easyx查找算法可视化--顺序查找/二分查找/分块查找

💂 个人主页:pp不会算法^ v ^ 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 概述演示源码获取 概述 #顺序存储的顺序查找 √ #链式存…

验证码/数组元素的复制.java

1,验证码 题目:定义方法实现随机产生一个5位的验证码,前面四位是大写或小写的英文字母,最后一位是数字 分析:定义一个包含所有大小写字母的数组,然后对数组随机抽取4个索引,将索引对应的字符拼…

Qt C++ | QTimer经验总结

QTimer Class QTimer类提供重复计时器和单次计时器 头文件: #include <QTimer> qmake: QT += core 继承自: QObject 定时器信号 void timeout() 公共函数 Qt::TimerType 枚举定义了 Qt 中不同类型的定时器。它包含以下值: **Qt::PreciseTimer:**高精度定时器,用…

WPF —— DockPanel、ProgressBar 控件详解

ProgressBar 控件详解 1Progress bar简介 ProgressBar&#xff1a;进度条控件。 WPF带有一个方便的控件用于显示进度&#xff0c;称ProgressBar。它的工作原理就是设置最小值和最大值然后通过递增一个值&#xff0c;这样就可以直观的显示当前进度情况。 2 Progress bar常用的…

腾讯VS网易:一场不见终局的游戏未来之战

国内游戏霸主腾讯最近赚足了眼球。 总体上看&#xff0c;腾讯手握“游戏社交”两大王牌&#xff0c;最近发布的财报十分亮眼&#xff0c;其2023年总营收和净利润分别同比增长10%和36%&#xff0c;展现了互联网巨头的强劲活力。 然而巨头亦有焦虑&#xff0c;增值服务营收同比…

AMEYA360代理 | 江苏长晶科技FST2.0高性能 IGBT产品介绍

江苏长晶科技股份有限公司是一家专业从事半导体产品研发、生产和销售的企业。自2019年起&#xff0c;连续4年被中国半导体行业协会评为 “功率器件十强企业”。2021年开始自主研发有着“工业CPU”之称的IGBT&#xff0c;截至2023年Q3在家电/工业/新能源等行业实现8款产品市场应…

Windows python多版本共享方案

1、先安装好python3.11 2、安装好python3.7 这时默认版本是python3.7&#xff0c; A、如果要切换回python3.11则修改环境变量即可 B、 如果想使用3.7&#xff0c;找到python3.7的安装路径 如果想使用3.7 C:\Users\用户\AppData\Local\Programs\Python\Python37 复制python…

Lua热更新(xlua)

发现错误时检查是否:冒号调用 只需要导入asset文件夹下的Plugins和Xlua这两个文件即可,别的不用导入 生成代码 和清空代码 C#调用lua using Xlua; 需要引入命名空间 解析器里面执行lua语法 lua解析器 LuaEnv 单引号是为了避免引号冲突 第二个参数是报错时显示什么提示…

点赋科技教你无人自助咖啡机选什么品牌?不选贵的,只选对的!

随着社会的发展和人们生活水平的提高&#xff0c;咖啡文化在全球范围内越来越受到重视。无人自助咖啡机作为一种便捷、高效的咖啡供应方式&#xff0c;逐渐受到了市场的青睐。在众多品牌中&#xff0c;我们为何应选择智能咖啡机呢&#xff1f;下面就让D咖带大家来一探究竟。 D咖…

Spring Cloud - Openfeign 实现原理分析

OpenFeign简介 OpenFeign 是一个声明式 RESTful 网络请求客户端。OpenFeign 会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign 会将函数的参数值设置到这些请求模板中。虽然 OpenFeign 只能支持基于文本的网络请求,但是它可以极大简化网络请求的…

腾讯云服务器多少钱一年?最新价格4核8G服务器646元15个月

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

【C语言进阶篇】编译和链接

【C语言进阶篇】编译和链接 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C语言&#x1f353; &#x1f33c;文章目录&#x1f33c; 编译环境与运行环境 1. 翻译环境 2. 编译环境&#xff1a;预编译&#xff08;预处理&#xff09;编…

2024年腾讯云4核8G配置服务器一年多少钱?价格超便宜

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

代码随想录刷题随记7-字符串1

代码随想录刷题随记7-字符串1 文章目录 代码随想录刷题随记7-字符串1344.反转字符串541. 反转字符串II替换数字151.翻转字符串里的单词右旋字符串 344.反转字符串 leetcode链接 主要的难点在于使用 O(1) 的额外空间解决这一问题 反转字符串依然是使用双指针的方法 swap可以有两…

【算法刷题day4】Leetcode:24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

24. 两两交换链表中的节点 文档链接&#xff1a;[代码随想录] 题目链接&#xff1a;24. 两两交换链表中的节点 状态&#xff1a;ok 题目&#xff1a; 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#…

老壁灯带你入门动态规划

1. 什么是动态规划 动态规划(dynamic programming)是运筹学的一个分支&#xff0c;是求解决策过程(decision process)最优化的数学方法。 从字面意义上来理解&#xff0c;就是走一步看一步&#xff0c;边解决问题&#xff0c;边对问题进行整体规划。 其实&#xff0c;动态规…