TCP传输协议如何进行流量控制?

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: TCP流量控制,简单来说就是让数据传输端传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。

tcp

TCP流量控制,简单来说就是让数据传输端传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。TCP的窗口单位是字节,不是报文段,数据传输端的发送窗口不能超过接收端给出的接收窗口的数值,流量控制的机制是控制丢包率,主要目的:让数据传输端了解数据接收端当前的接收能力,可灵活调整传输速率。流量控制机制图如下图所示:

1

滑动窗口:

TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。

数据传输窗口在连接建立时由双方商定。但在通信的过程中,数据接收端可根据自己的资源情况,随时动态地调整对方的传输窗口大小。滑动窗口实例图如下图所示:

2

滑动窗口引进原由:

我们可以把窗口理解为缓冲区(但是有些窗口和缓冲区又不太一样)。

如果没有这些“窗口”,那么TCP每发送一段数据后都必须等到数据接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。

解决的办法就是在发送端等待确认的时候继续发送数据,假设发送到第X个数据段是收到数据接收端的确认信息,如果X在可接受的范围内那么这样做也是可接受的。这就是窗口(缓冲区)引入的缘由。

滑动窗口:

A、数据接收端窗口 X
接收端缓冲区大小。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

B、拥塞窗口 Y
发送端缓冲区大小

C、数据传输窗口 Z
发送窗口的上限值 = Min [X, Y]
① 当 X < Y 时,是接收端的接收能力限制数据传输窗口的最大值。
② 当 Y < X 时,则是网络的拥塞限制数据传输窗口的最大值。

滑动窗口实例介绍:

数据传输端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。还可发送 300 字节。

3

数据传输端收到了对方对前 400 字节数据的确认,但对方通知数据传输端必须把窗口减小到 400 字节。现在数据传输端最多还可发送 400 字节的数据。

滑动窗口需掌握的知识点:

A、数据接收端将自己可以接受的缓冲区大小放入TCP首部中“窗口大小”字段,通过ACK来通知数据传输端。

B、窗口大小字段越大,说明网络的吞吐率越高

C、窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要数据接收端的应答,可以一次连续的发送数据。

D、操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有哪些数据没有应答,只有确认应答过的数据,才能从缓冲区删除。PS:发送缓冲区如果太大,会有空间开销。

E、数据接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给数据传输端,数据传输端收到这个值后,就会减慢自己的发送速度。

F、如果数据接收端发现自己的缓冲区满了,就会将窗口大小设置为0,此时数据传输端不再传输数据,但是需要在定期发送一个窗口探测数据段,使数据接收端把窗口大小告诉数据传输端。

PS:在TCP的首部,有一个16为窗口字段,此字段就是用来存放窗口大小信息的。

TCP报文段发送时机的选择

1、TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中存放的数据达到MSS字节就组装成一个TCP报文段发送出去。

2、由发送方的应用程序指明要求发送报文段,即TCP支持的推送操作。

3、是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段发送出去。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
网络协议 算法 网络性能优化
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
TCP概述 TCP是一种面向连接的协议,在发送数据前通信双方必须在彼此间建立一条连接 所谓的连接其实就是客户端和服务器的内存里保存一份关于对方的信息,如IP地址、端口 TCP是一种字节流,它会处理IP层的丢包、重复以及错误问题 在建立连接的过程中,双方交换的一些参数可以放到TCP的头部 总结 :TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,四次挥手关闭一个连接
293 2
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
|
缓存 网络协议 算法
四十一、TCP可靠传输、流量控制、拥塞控制
四十一、TCP可靠传输、流量控制、拥塞控制
四十一、TCP可靠传输、流量控制、拥塞控制
|
缓存 网络协议 算法
计算机网络学习26:TCP/UDP对比区别、TCP流量控制、拥塞控制、超时重传时间的选择、可靠传输的实现
UDP: User Datagram Protocol 用户数据报协议 TCP: Transmission Control Protocol 传输控制协议 同时这里指的连接是指逻辑连接,而不是物理连接。
计算机网络学习26:TCP/UDP对比区别、TCP流量控制、拥塞控制、超时重传时间的选择、可靠传输的实现
|
缓存 网络协议 算法
TCP 流量控制和拥塞控制
TCP 流量控制和拥塞控制
330 0
TCP 流量控制和拥塞控制
|
缓存 网络协议 算法
你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了
来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席。 迟到的原因,主要是 TCP 巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。 本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文吧,Go!
你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了
|
缓存 网络协议
【计算机网络】传输层 : TCP 流量控制 ( 流量控制过程 | 持续计时器机制 )
【计算机网络】传输层 : TCP 流量控制 ( 流量控制过程 | 持续计时器机制 )
226 0