TCP之 流量控制(滑动窗口)和 拥塞控制(拥塞控制的工作过程)

一、流量控制

1.什么是流量控制

Sender won’t overflow receiver’s buffer by transmitting too much, too fast. (防止发送方发的太快,耗尽接收方的资源,从而使接收方来不及处理)

2.流量控制的一些知识点

(1)接收端抑制发送端的依据:接收端缓冲区的大小
(2)流量控制的目标是接收端,是怕接收端来不及处理
(3)流量控制的机制是丢包

3.怎么样实现流量控制?

使用滑动窗口
滑动窗口
1.滑动窗口是什么?
滑动窗口是类似于一个窗口一样的东西,是用来告诉发送端可以发送数据的大小或者说是窗口标记了接收端缓冲区的大小,这样就可以实现
ps:窗口指的是一次批量的发送多少数据

2.为什么会出现滑动窗口?

在确认应答策略中,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段,这样做有一个比较大的缺点,就是性能比较差,尤其是数据往返的时间长的时候

使用滑动窗口,就可以一次发送多条数据,从而就提高了性能

3.滑动窗口的一些知识点

(1)接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK来通知发送端
(2)窗口大小字段越大,说明网络的吞吐率越高
(3)窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要接收端的应答,可以一次连续的发送数据
(4)操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有那些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉

ps:发送缓冲区如果太大,就会有空间开销

(5)接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端,发送端收到这个值后,就会减慢自己的发送速度
(6)如果接收端发现自己的缓冲区满了,就会将窗口的大小设置为0,此时发送端将不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端
ps:在TCP的首部中,有一个16为窗口字段,此字段就是用来存放窗口大小信息的

这里写图片描述

4.滑动窗口的优点

可以高效可靠的发送大量的数据

二、拥塞控制
1.什么是拥塞控制

too many sources sending too much data too fast for network to handle
防止发送方发的太快,使得网络来不及处理,从而导致网络拥塞
###2.拥塞控制使用的机制:AIMD\slow start
slow start: 慢启动
A: additive(加法的)
I: increase(增加)
M: multiplicative(乘法的)
D: decrease(减少)
即就是加法增加,乘法减少---->加增乘减

加法增加

是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞

乘法减少

出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5

ps:当网络频繁出现拥塞时,ssthresh值就下降的很快,以大大减少注入到网络中的分组数

3.发送端如何知道已经丢包?
这里写图片描述
4.为什么会有拥塞控制?

流量控制虽然可以高效可靠的传送大量的数据,但是如果在刚开始阶段就发送大量的数据,可能会导致网络拥堵,因为网络上的计算机太多了

5.拥塞控制的表现?

丢包
延时变长

6.拥塞控制的工作过程
初始化阶段
这里写图片描述
慢开始阶段
阶段(一)
这里写图片描述
阶段(二)
这里写图片描述
阶段(三)
这里写图片描述
阶段(四)
这里写图片描述
拥塞避免阶段
这里写图片描述
拥塞调整阶段
阶段(一)
这里写图片描述
阶段(二)
这里写图片描述
阶段(三)
这里写图片描述

三、流量控制和拥塞控制的区别
1.相同点

(1)现象都是丢包;
(2)实现机制都是让发送方发的慢一点,发的少一点

2.不同点

(1)丢包位置不同
流量控制丢包位置是在接收端上
拥塞控制丢包位置是在路由器上
(2)作用的对象不同
流量控制的对象是接收方,怕发送方发的太快,使得接收方来不及处理
拥塞控制的对象是网络,怕发送发发的太快,造成网络拥塞,使得网络来不及处理
3.联系

拥塞控制
     拥塞控制通常表示的是一个全局性的过程,它会涉及到网络中所有的主机、
     所有的路由器和降低网络传输性能的所有因素
流量控制
     流量控制发生在发送端和接收端之间,只是点到点之间的控制

这里写图片描述

觉得自己有收获的小伙伴,可以打赏一下博主哦,让小姐姐去买个零食,哈哈哈哈
在这里插入图片描述

  • 148
    点赞
  • 439
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
### 回答1: 是的,TCP 和 UDP 都提供流量控制拥塞控制流量控制是指网络中传输数据的速率与带宽的协调,以防止网络过载。TCP 和 UDP 都使用流量控制来避免发送方发送过多的数据,使接收方的接收能力得到满足。 拥塞控制是指网络中传输数据的速率与带宽的协调,以防止网络拥塞。TCP 和 UDP 都使用拥塞控制来避免网络中的数据流量过多,从而防止网络拥塞。 但是,TCP 和 UDP 的实现方式略有不同。TCP 使用自动重传请求 (ARQ) 协议来实现流量控制拥塞控制,而 UDP 并没有使用 ARQ 协议,而是通过应用层软件来实现流量控制拥塞控制。 ### 回答2: TCP(传输控制协议)和UDP(用户数据报协议)是在互联网中常用的传输层协议。尽管两者都用于在网络上发送数据,但它们在提供流量控制拥塞控制方面存在一些不同。 TCP通过使用滑动窗口协议来提供流量控制滑动窗口协议基于接收方的处理能力和网络的拥塞情况来控制发送方的数据量。接收方向发送方发送确认信息,告诉其可以继续发送数据的数量。这种机制确保了在传输的不同阶段之间的数据流平衡,同时也避免了数据的丢失。通过这种方式,TCP提供了一种有效的机制来控制流量并使得数据传输更可靠。 然而,UDP在流量控制方面则提供了更少的支持。UDP是一种无连接协议,它不具备滑动窗口和确认机制。发送方在将数据发送到网络上之后,并没有受到接收方的反馈信息,也无法判断网络的拥塞情况。因此,它无法提供像TCP那样的精细流量控制。 在拥塞控制方面,TCP也比UDP更强大。TCP使用了一种叫做拥塞避免的算法来控制数据的发送速率,从而避免网络拥塞。当网络出现拥塞时,TCP会调整发送速率并减少数据的发送。这样可以避免网络的过载和数据的丢失。但UDP并没有提供拥塞控制机制,因此在网络拥塞时,UDP会继续以固定的速率发送数据,可能导致丢包和延迟增加。 综上所述,TCP提供了较好的流量控制拥塞控制机制,而UDP在这些方面的支持较少。因此,在需要可靠性和延迟较低的应用场景下,如文件传输和网页访问等,TCP更适合使用。而在对实时性要求较高、数据丢失较少影响的应用场景下,如实时音视频传输和游戏等,UDP可能更适合使用。 ### 回答3: TCP(传输控制协议)和UDP(用户数据报协议)是互联网传输层的两种常见协议。虽然它们都有提供数据传输的功能,但在流量控制拥塞控制方面有一些差异。 TCP提供了可靠的数据传输,流量控制拥塞控制TCP协议的核心功能之一。流量控制指的是在数据发送和接收之间的速率控制,以确保接收方能够处理所接收的数据而不被压倒。TCP使用滑动窗口机制来实现流量控制,发送方根据接收方的处理能力来调整自己的发送速率。 拥塞控制则是为了防止网络拥塞而采取的措施。TCP通过一系列算法来避免网络拥塞的发生和扩散,如拥塞窗口控制、慢启动、拥塞避免和快重传等。通过这些机制,TCP能够根据当前网络状况动态地调整数据发送速率,以保证网络的稳定和公平的分配网络带宽。 相比之下,UDP是一个无连接的传输协议,没有流量控制拥塞控制的机制。UDP是一种简单和快速的传输协议,适用于对实时性要求较高的应用,如音频、视频和游戏等。由于UDP不对数据传输进行流量控制拥塞控制,因此在网络拥塞或不稳定的情况下,UDP的性能可能会受到影响,丢包和延迟的风险较高。 综上所述,TCP通过流量控制拥塞控制机制来保证可靠的数据传输和网络稳定性,而UDP则没有提供这些功能。选择使用TCP还是UDP取决于应用的需求,对于需要可靠性和稳定性的应用,如网页浏览和文件传输,TCP是更合适的选择;而对于实时性要求较高的应用,如实时音视频传输和在线游戏,使用UDP可以提供更低的延迟和更高的传输速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dangzhangjing97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值