如何保证TCP的稳定性和流速控制

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: TCP粘包和拆包中保证顺序的具体算法是TCP滑动窗口算法。TCP作为一个传输层协议,最核心的能力是传输。传输需要保证可靠性,还需要控制流速,这两个核心能力均由滑动窗口提供。滑动窗口数据结构

TCP粘包和拆包中保证顺序的具体算法是TCP滑动窗口算法。

TCP作为一个传输层协议,最核心的能力是传输。传输需要保证可靠性,还需要控制流速,这两个核心能力均由滑动窗口提供。

滑动窗口数据结构
image.png

如何保证TCP的稳定性和流速控制
如上图所示:

深色代表已经收到ACK的段

浅色代表发送了,但是还没有收到ACK的段

白色代表没有发送的段

紫色代表暂时不能发送的段

假设一次最多发送5个封包,也就是窗口大小=5,窗口中的数据被同时发送出去,然后等待ACK。如果一个封包ACK到达,就标记为已接收。
image.png

如何保证TCP的稳定性和流速控制
然后滑动窗口向右侧滑动,如图所示:
image.png

如何保证TCP的稳定性和流速控制
重传,如果发送过程中,部分数据没有收到ACK,这样就会发生重传。

如果发生下面的这样情况,段4一直没有收到ACK,
image.png

如何保证TCP的稳定性和流速控制
这个时候滑动窗口只能右移一个位置,如图所示
image.png

如何保证TCP的稳定性和流速控制
在这个过程中,如果段4重传成功接收了ACK,然后窗口才会继续右移。如果段4还是没有收到ACK,那么接收方会抛弃段5、段6、段7。这样从段4开始之后的数据都需要重发。

流速控制,发送、接收窗口的大小可以用来控制TCP协议的流速。窗口越大,同时可以发送、接收的数据就越多,支持的吞吐量也就越大。同时窗口越大,数据发生错误,损失也越大。因为需要重传越多的数据。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5月前
|
网络协议 算法 网络性能优化
|
弹性计算 网络协议 算法
记一次典型的TCP传输吞吐效率问题
客户在ECS上实现了一个供小图片上传的接口,通过高防->SLB->ECS的网络链路将接口发布给终端用户,但是发现上传的速率很不理想。初看起来像是高防问题,但是通过排查最终发现这是一个典型的TCP传输吞吐量问题,并且是由于后端服务器端的配置而引起,在此记录下排查过程和相关原理。
记一次典型的TCP传输吞吐效率问题
|
5月前
|
监控 负载均衡 网络协议
TCP重传与超时机制:解锁网络性能之秘
TCP重传与超时机制:解锁网络性能之秘
1178 0
|
4月前
|
网络协议
UDP服务器的并发方案
UDP服务器的并发方案
51 0
|
5月前
|
网络协议 Linux 网络架构
TCP中的两类故障模式
【4月更文挑战第10天】故障分为两大类,一类是对端无 FIN 包,需要通过巡检或超时来发现;另一类是对端有 FIN 包发出,需要通过增强 read 或 write 操作的异常处理,帮助我们发现此类异常。
|
5月前
|
存储 网络协议 Java
【TCP 连接手段】C++编程视角下的TCP:短连接与长连接深度解析
【TCP 连接手段】C++编程视角下的TCP:短连接与长连接深度解析
158 1
|
5月前
|
监控 网络协议 算法
TCP 拥塞控制对数据延迟的影响
TCP 拥塞控制对数据延迟的影响
|
5月前
|
网络协议 Linux 网络性能优化
TCP如何保证可靠性
TCP如何保证可靠性
54 0
|
5月前
|
网络协议
计网 - TCP重传策略大揭秘:确保数据可靠传输的秘诀
计网 - TCP重传策略大揭秘:确保数据可靠传输的秘诀
87 0
|
11月前
|
存储 缓存 网络协议
TCP vs UDP:揭秘可靠性与效率之争
在网络通信中,TCP和UDP是两种最常用的传输层协议。本文将深入探讨TCP和UDP之间的区别,包括连接方式、服务对象、拥塞控制、流量控制和首部开销等方面,帮助读者在不同应用需求下选择适合的协议。无论你是技术爱好者还是网络工程师,这篇文章定能帮助你了解并应用TCP和UDP的差异,提升你的网络传输效率和可靠性。
996 1