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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
22天前
|
缓存 网络协议 安全
你以为你了解TCP协议?这些你可能不知道的细节才是关键!
【6月更文挑战第1天】 这篇文章探讨了TCP协议的深入细节,包括SYN/FIN包为何消耗序列号以确保连接可靠性,半连接队列和SYN Flood攻击的概念及其防御策略。此外,文章还介绍了TCP Fast Open(TFO)技术,它通过减少握手次数提升连接速度和安全性。最后,文章讨论了TCP时间戳的作用,它用于精确计算往返时延和防止序列号回绕问题。通过理解这些概念,读者能更好地掌握TCP协议并应对相关面试。
你以为你了解TCP协议?这些你可能不知道的细节才是关键!
|
24天前
|
网络协议 算法 程序员
网络原理(4)——TCP协议的特性
网络原理(4)——TCP协议的特性
15 1
|
6天前
|
网络协议 IDE 开发工具
TCP通信协议及代码细节
TCP通信协议及代码细节
13 0
|
24天前
|
网络协议 前端开发 Java
网络原理(3)——TCP协议的特性
网络原理(3)——TCP协议的特性
12 0
|
1月前
|
缓存 网络协议 程序员
TCP协议的相关特性
TCP协议的相关特性
33 0
|
1月前
|
缓存 网络协议
【网络原理】TCP 协议中比较重要的一些特性(二)
【网络原理】TCP 协议中比较重要的一些特性(二)
21 0
|
1月前
|
网络协议
【网络原理】TCP 协议中比较重要的一些特性(一)
【网络原理】TCP 协议中比较重要的一些特性(一)
21 0
|
1月前
|
网络协议 程序员 网络性能优化
【网络原理】TCP 协议中比较重要的一些特性(三)
【网络原理】TCP 协议中比较重要的一些特性(三)
19 0
|
8月前
|
网络协议 Java API
网络基础编程:TCP协议
网络基础编程:TCP协议
33 0