TCP协议中的几个核心特性(下)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: TCP协议中的几个核心特性(下)

🍑滑动窗口

滑动窗口存在的意义就是在保证可靠性的前提下,尽量提高传输效率!!!

先来看如果不使用滑动窗口,传输是怎样进行的

4f95888df5934d76873d766c0fdbddfc.png

如上图所示,我们这样发送一次,收到确认后再发送一次,这样重复的操作是很费时间的。我们把大量的时间都花费在了等待ACK响应上。

于是就有了滑动窗口这样一个机制——一次发送一波数据,然后等待接收方的响应ACK(表示当前接收方已经收到了第xxx个字节的数据,你接着发送就好,窗口就进行了滑动)

上面这段话,你可能不同理解,没关系,接着往下看就好——让我们看看什么是窗口?什么是滑动?


611ff7fba0a044149717be82e7d41eb6.png

看到这里,想必你已经对滑动窗口这个概念有了一个初步的认识,但是这里还是有些小问题。滑动窗口是提示了发送效率。但是如果出现了丢包该怎么办?

丢包分为两种情况

第一种:ACK丢了

1146fe3b3fad427fa7dff7c1f14b887a.png第二种:数据包丢了


1501806b6ac04aeea1c4371b60fb7b57.png

总结:

滑动窗口提高发送效率(但可能会影响数据的可靠性)

于是就有了流量控制、拥塞控制来对滑动窗口的发送速率做一个限制(让滑动窗口的大小在一个合理的范围,让他别一次发那么多数据,接收方可以来不及接收,容易造成丢包)


那么具体是怎样来限制呢?


🍑流量控制

对于流量控制——就是根据接收方的处理能力(接收缓冲区剩余空间大小)通过ACK确认报文段来告知发送方当前接收缓冲区中的剩余空间大小是多少,然后发送方就根据这个数据来不断的改变当前滑动窗口的大小。


那么问题来了,这个所谓的接收缓冲区大小是个什么东东?


6b4c1c915ea64a8195d07c77b2478909.png

那么如何让我们的发送方知道当前接收方的接收缓冲区的大小呢?


088b3d5c52164d86bc03f7158cc39f03.png

理论说完了,我我们来看一个例子 

39a938b281ec4defa83ec78e963833ca.png

如上图所示:第一次收到接收方的ACK时候,此时的接收缓冲区的大小还是3000字节,然后随着发送方数据的不断发送,这个值不断的减小。终于当接收发收到了发送方的第4000个字节(下一个要接收的字节是4001的时候,此时接收缓冲区满了,发送方就会暂停发送数据.....就这样通过接收缓冲区来动态的调整发送方滑动窗口的大小。


🍑拥塞控制

流量控制是站在接收方的角度来控制发送速率的(滑动窗口大小)的, 但是对于整体的网络传输而言,不光有发送方和接收方,还有中间各自转发设备。


8c6b795eef2a4b8397a792f353581529.png


既然知道了拥塞控制—— 就是从中间这一系列的转发设备来考虑,进而来限制发送方的发送速率(滑动窗口大小)的,那么他处理的具体流程是什么呢?


中间可是有很多设备的,又多又杂,不好处理呀!


aa58d6afa4f24c6781f9f919faea408f.png

总结:

04fd6d211d7e4199a4f5a005da3eb273.png

总结

TCP三大核心特性:

面向连接

可靠传输(通过确认应答、超时重传、流量控制、拥塞控制、延迟捎带应答等机制实现)

字节流传输


a75958d411b44d53916af69bc85809cc.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
网络协议 算法 程序员
网络原理(4)——TCP协议的特性
网络原理(4)——TCP协议的特性
29 1
|
5月前
|
网络协议 IDE 开发工具
TCP通信协议及代码细节
TCP通信协议及代码细节
31 0
|
5月前
|
网络协议 前端开发 Java
网络原理(3)——TCP协议的特性
网络原理(3)——TCP协议的特性
39 0
|
6月前
|
缓存 网络协议 程序员
TCP协议的相关特性
TCP协议的相关特性
78 0
|
6月前
|
网络协议
【网络原理】TCP 协议中比较重要的一些特性(一)
【网络原理】TCP 协议中比较重要的一些特性(一)
51 0
|
6月前
|
缓存 网络协议
【网络原理】TCP 协议中比较重要的一些特性(二)
【网络原理】TCP 协议中比较重要的一些特性(二)
42 0
|
6月前
|
网络协议 程序员 网络性能优化
【网络原理】TCP 协议中比较重要的一些特性(三)
【网络原理】TCP 协议中比较重要的一些特性(三)
44 0
|
网络协议 Java API
网络基础编程:TCP协议
网络基础编程:TCP协议
51 0
|
网络协议 网络性能优化
TCP协议的相关特性(续)
TCP协议的相关特性(续)