TCP的流量控制

TCP流量控制 TCP流量控制为什么要TCP流量控制?TCP流量控制不是为了减少网络压力,那是TCP拥塞控制的作用。下面简单介绍一下TCP流量控制的目的: 作用对象:相互连接着的两个终端(发送端与接收端)。 解决问题:解决发送端与接收方吞吐量不匹配的问题,比如当一个发送端A每秒发10个数据包,而接收端B每秒只能接受1个数据包,那么就会出现丢包的情况,所以发送端与接收端要的吞吐量要匹配。 目的:让发送端根据接收 阅读详情
 
1. 前言
 
TCP是具备流控和可靠连接能力的协议,为防止TCP发生拥塞或为提高传输效率,在网
络发展早期就提出了一些相关的TCP流控和优化算法,而且也被RFC2581规定是每个
TCP实现时要实现的。
 
本文中,为求方便把将“TCP分组段(segment)”都直接称为“包”。
 
2. 慢启动(slow start)和拥塞避免(Congestion Avoidance)
 
慢启动和拥塞避免是属于TCP发送方必须(MUST)要实现的,防止TCP发送方向网络传入大量的突发数据造成网络阻塞。

先介绍几个相关参数,是在通信双方中需要考虑但不在TCP包中体现的一些参数:

拥塞窗口(congestion window,cwnd),是指发送方在接收到对方的ACK确认前向允许网络发送的数据量,数据发送后,拥塞窗口缩小;接收到对方的ACK后,拥塞窗口相应增加,拥塞窗口越大,可发送的数据量越大。拥塞窗口初始值的RFC2581中被规定为不超过发送方MSS的两倍,而且不能超过两个TCP包,在RFC3390中更新了初始窗口大小的设置方法。

通告窗口(advertised window,rwnd),是指接收方所能接收的没来得及发ACK确认的数据量,接收方数据接收后,通告窗口缩小;发送ACK后,通告窗口相应扩大。

慢启动阈值(slow start threshold, ssthresh),用来判断是否要使用慢启动或拥塞避免算法来控制流量的一个参数,也是随通信过程不断变化的。

当cwnd < ssthresh时,拥塞窗口值已经比较小了,表示未经确认的数据量增大,需要启动慢启动算法;当cwnd > ssthresh时,可发送数据量大,需要启动拥塞避免算法。

拥塞窗口cwnd是根据发送的数据量自动减小的,但扩大就需要根据对方的接收情况进行扩大,慢启动和拥塞避免算法都是描述如何扩大该值的。

在启动慢启动算法时,TCP发送方接收到对方的ACK后拥塞窗口最多每次增加一个发送方MSS字节的数值,当拥塞窗口超过sshresh后或观察到拥塞才停止算法。

启动拥塞避免算法时,拥塞窗口在一个连接往返时间RTT内增加一个最大TCP包长度的量,一般实现时用以下公式计算:
      cwnd += max(SMSS*SMSS/cwnd, 1)            (2.1)
SMSS为发送方MSS。

TCP发送方检测到数据包丢失时,需要调整ssthresh,一般按下面公式计算:
      ssthresh = max (FlightSize / 2, 2*SMSS)    (2.2)
其中FlightSize表示已经发送但还没有被确认的数据量。
 
3. 快速重传(fast retransmit)和快速恢复(fast recovery)

TCP接收方收到错序的TCP包时要发送复制的ACK包回应,提示发送方可能出现网络丢包;发送方
收到连续3个重复的ACK包后启动快速重传算法,根据确认号快速重传那个可能丢失的包而不必等
重传定时器超时后再重传,普通的重传是要等到重传定时器超时还没收到ACK才进行的。这个算
法是TCP发送方应该(SHOULD)实现的,不是必须。TCP发送方进行了快速重传后进入快速恢复阶段
,直到没再接收重复的ACK包。

快速重传和快速恢复具体过程为:
1. 当收到第3个重复的ACK包时,ssthreh值按公式2.2重新设置;
2. 重传丢失的包后,将拥塞窗口cwnd设置为sshresh+3*SMSS,人工扩大了拥塞窗口;
3. 对于每个接收到的重复的ACK包,cwnd相应增加SMSS,扩大拥塞窗口;
4. 如果新的拥塞窗口cwnd值和接收方的通告窗口值允许的话,可以继续发新包;
5. 当收到下一个ACK确认了新数据时,将cwnd大小调整为sshresh,减少窗口;对接收方
   来说,接收到重发的TCP包后就要发此ACK确认当前接收的数据。
 
4. 结论
这些算法重点在于保持网络的可靠性和可用性,防止网络阻塞造成的网络崩溃,是相对
比较保守的。 
tcp的流量控制 为了防止这种情况发生,当主机A收到零窗口通知时就会启动一个持续计时器,每隔一段时间就发送一个只有1字节数据的探测报文段,主机B对这条报文进行确认并发送ack和自己的接收窗口大小,如果还是0那么主机A还会重复上述操作直到主机B发送的窗口大小不为0。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。接收方将自己接收窗口的大小通知给发送方,发送方调整自己的发送窗口为同样大小,这样就算发送方未收到接收方的回应也可以将自己发送窗口内的数据全部发送,下图中发送方的发送窗口为400。 阅读详情

相关推荐

库卡机器人外部轴配置全流程:从接线到WorkVisual 6.0实战(附避坑指南)

本文详细解析了库卡机器人外部轴配置的全流程,涵盖从硬件接线到WorkVisual 6.0软件配置的实战步骤。重点介绍了KPP驱动模块连接、电机参数匹配、安全配置激活及零点标定等关键环节,并提供了实用的避坑指南,旨在帮助工程师高效、安全地完成外部轴集成,提升工作站柔性。

weixin_29161785的博客 505

计算机网络协议,TCP数据报的分析

一、TCP协议的特点 TCP是面向连接的运输层协议;即应用程序在使用TCP协议通信之前,要先建立TCP连接,通信结束后必须释放已建立的TCP连接 每一条TCP连接只能有两个端点;即TCP是点对点(一对一)的通信 TCP提供全双工通信;即TCP的接收端和发送端都设有缓存,用来临时存放双方的通信数据;在发送时,应用程序将数据传送给TCP缓存后就可以做自己的事,TCP选择合适的时间把数据发送出去;...

愿你饱经冷暖,仍保纯真 9372

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信

本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。

tea88的博客 750

TCP的流量控制和拥塞控制详解

TCP的流量控制和拥塞控制详解 1、流量控制 1.1 为什么要进行流量控制 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。 如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发...

烟雨gps 1448

博图HMI多语言文本列表一键生成攻略:从Excel模板到TIA Portal的完整流程

本文详细介绍了如何利用Excel模板和TIA Portal API实现博图HMI多语言文本列表的一键生成。通过标准化Excel模板设计、解析TIA Portal的XML结构,并结合C#代码实现自动化导入,大幅提升多语言项目的开发效率。特别适用于需要支持多语言版本的自动化设备HMI界面开发。

weixin_26934905的博客 219

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6633

计算机网络TCP协议详解

我们知道,TCP采用了累积确认的方式,如果某个报文段发生了丢失,即便收到了后面的数据,接收方返回的ACK也是一样的。最常见的选项字段是MSS(Maximum Segment Size最长报文大小),每个连接方通常都在通信的第一个报文段(SYN标志为1的那个段)中指明这个选项字段,表示当前连接方所能接受的最大报文段的长度。在ESTABLISHED(建立连接后),序列号的变化规则为,seq=上一条已方发送报文段的seq+TCP报文的净荷字节数(不包含TCP头)=上一条已方收到报文段的ACK number。

Ricardo_yu的博客 1334

结构光三维重建2——多频外差解包裹

本文深入解析了结构光三维重建中的多频外差解包裹技术。针对四步相移法产生的相位包裹问题,该方法通过投影多组不同频率的条纹光,利用外差原理逐级解算,最终获得精确、连续的绝对相位值,是实现高精度、稳健三维重建的关键步骤。

weixin_29056101的博客 352

TCP协议原理(二)TCP数据传输

本文归纳介绍TCP协议在数据传输方面的处理方案。首先明确了TCP协议是基于字节流的传输,发送接受端都有缓冲池。之后介绍了TCP协议传输两种数据,一种是要及时响应的交互数据流,一种是延迟响应的大文件传输。最后介绍TCP协议的异常处理机制,以及进行拥塞控制的四种算法。

Big_Tree712的专栏 1164

深度学习---双层神经网络中矩阵的运算及其含义记录

深度学习---双层神经网络中矩阵的运算及其含义记录神经网络的正向传播与反向传播正向传播第一层的权重矩阵第一层的输入矩阵Z^1^ = W^1^X^1^ + b^1^A^1^ = σ(Z^1^)第二层的权重矩阵第二层的输入矩阵Z^2^ = W^2^A^1^ + b^2^反向传播dz^2^ = A^2^ - Ydw^2^ = 1/n dz^2^A^1T^db^2^ = 1/n np.sum(dz^2...

qq_43228441的博客 3748

Planet explorer:免费获取高分辨率影像的网站

该软件提供了高质量的卫星图像和地形数据,用户可以使用该软件来查看地球上任何地方的详细地图信息,包括地形、道路、建筑物等。在接下来的30天里,你可以点击应用顶部的切换按钮,在新的和当前的应用之间进行切换。如果在你感兴趣的地区没有高分辨率图像,可以通过我们的SkySat卫星为你采购。如果你还没有与我们的50厘米图像合作,请在这里下载我们的高分辨率图像样本,或联系销售,在你的合同中增加任务访问。你可以在 "我的订单 "中订购你的数据以供下载。你也可以点击双方按钮,将图像的足迹锁定在地图上,以获得更好的。

此星光明博客 1690

TCP可靠传输原理

TCP数据段作为IP数据报的数据部分来传输的,IP层提供尽最大努力服务,却不保证数据可靠传输。TCP想要提供可靠传输,需要采取一定的措施来让不可靠的传输信道提供可靠传输服务。比如:出现差错时,让发送方重传数据;接收方来不及处理数据时,让发送方降低传输速度。 一、数据流传输方式 TCP传输的数据一般分为两类:交互数据、成块数据。交互数据一般较小,比如发送1个字节的交互数据,加上TCP数据段首部以及IP数据报首部,至少需要41个字节。在广域网,数量众多的交互数据会增加拥塞出现的可能。而成块数据的报文段基本上都

rqaz123的博客 1647

虚拟网络的“隐形盾”:C#如何用代码把DDoS踢出门?

本文分享了如何用C#防御DDoS攻击的实战经验。通过三种核心防御策略:1)基于IP的速率限制中间件,使用滑动时间窗口算法控制请求流量;2)自动IP封禁服务,通过特征检测识别恶意IP并加入黑名单;3)优化数据库连接池和HTTP客户端连接池,合理配置资源参数。文中提供了详细的C#代码实现,包括限流中间件、IP封禁服务和连接池优化方案,并分享了生产环境中的调优经验,如配合Redis实现分布式限流、使用fail2ban自动封禁等技巧,帮助开发者构建更健壮的防御体系。

墨夶的博客 329

TCP协议-TCP的流量控制

一、前言 一般来说,我们总是希望数据传输能尽可能快一点。但如果发送方把数据发送得过快的话,接收方就可能来不及接收,这就会造成数据的丢失。而TCP的流量控制机制就是为了解决这个端到端的数据传输速率问题。 所谓流量控制就是根据接收方的接收数据能力,来控制发送方的数据发送速率。从而让发送方的发送速率不要太快,要让接收方来得及接收。 流量控制解决的是一个端到端的问题,是接收端控制发送端发送数据的速率,以便使接收端来得及接收。 TCP协议使用滑动窗口机制来实现对发送方的流量控制。 二、滑动窗口机制 2..

yunfan 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【图解】小白入门TCP流量控制

上篇文章讲了TCP拥塞控制机制的原理,没看过的不妨看下:三分钟读懂拥塞控制,这篇文章讲讲TCP流量控制机制。 一、为什么需要流量控制? 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。 如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,...

帅地 6595

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TCP中的流量控制

TCP流量控制通过滑动窗口机制防止发送方数据过快导致接收方缓冲区溢出。接收方通过窗口大小字段告知可用缓冲区空间,发送方据此动态调整发送窗口。窗口分为已确认、已发送未确认、可发送和禁止发送区域,通过ACK和窗口更新动态滑动边界。当接收方窗口减小时,发送方收缩窗口避免溢出;窗口增大时,发送方扩大窗口提高效率。流量控制与拥塞控制协同工作,确保点对点通信的速度匹配与网络资源合理利用。

2302_80908313的博客 1486

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TCP拥塞控制和TCP流量控制

TCP拥塞控制 提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是拥塞控制。 拥塞控制包括四部分:慢启动、拥塞避免、快速重传、快速恢复 发送端向网络一次连续写入的数据量,我们称为SWND(Send Window,发送窗口).但是发送端最终以TCP报文段来发送数据,所以SWND的大小限制了能连续发送的TCP报文段数量。这些TCP报文段的最大长度(仅数据部分)称为SMSS(S...

静沐暖阳的博客 1万+

TCP的流量控制的实现

流量控制机制的益处防止过载:流量控制可以防止发送方发送数据的速度超过接收方处理数据的能力,从而避免接收方的缓冲区溢出。提高资源利用率:通过允许接收方根据其当前的处理能力和可用资源来调整窗口大小,流量控制有助于更有效地利用网络资源。避免数据丢失:如果接收方无法及时处理数据,流量控制可以减少因缓冲区溢出导致的数据丢失。适应不同网络条件:流量控制机制可以根据网络的当前状况(如带宽、延迟和拥塞)动态调整数据传输速率,以适应不同的网络环境。提高传输效率。

weixin_74994990的博客 1102

什么是TCP流量控制?(解释说明+过程+示例)

基本上从名字就能看出它的作用,比如接收窗口的大小就是指,接收方当前能接收的数据量大小,发送窗口的大小就指发送方当前能发的数据量大小。“通俗点讲,就是接受方每次收到数据包,在发送确认报文的时候,同时告诉发送方,自己的缓存区还有多少空余空间,缓冲区的空余空间,我们就称之为接受窗口大小。接收方接收到数据报段后,会返回一个ACK确认报文给接收方,ACK就是他期待收到的下一个数据报的序列号;如果报文中win=0,发送方停止发送,开启一个定时任务,每隔一段时间,就去询问接受方,直到 win 大于 0,才继续开始发送;

qq_46631497的博客 9257

TCP详解之流量控制

TCP可靠性之流量控制

Janonez的博客 1745

tcp 流量控制

TCP流量控制是TCP/IP协议中用于控制发送方和接收方之间数据传输速率的一种机制,以防止网络拥塞和确保网络资源的有效利用。流量控制主要通过调整TCP窗口大小来实现,确保发送方不会发送超出接收方处理能力的数据量。

坚定目标,超越自我 1103

linux TCP流量控制

I.流量控制 TCP使用流量控制来管理数据流量。流量控制限制发送字节大小,防止接收方接收缓存溢出。   1.发送方发送数据速度比接收方处理速度高;这种情况会使接收方缓存溢出,引起数据段被丢弃   2.应用取socket中的缓存数据存在间隔,所以只会偶尔出现缓存为空的情况;比如多媒体数据的接收速度高于播放速度 所以流量控制可以避免因接收方缓存溢出而产生的数据包丢弃,引起不必要的重传 TCP

永无止境 4271
上一篇: samba 详解
下一篇: SSL加密
proing
博客等级 码龄19年 2092粉丝 94原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值