首页 > 试题广场 >

TCP协议的流量控制和拥塞控制

[问答题]
TCP协议的流量控制和拥塞控制 
推荐

TCP协议的流量控制是什么?

得分点

​ 流量控制就是让发送方的发送速率不要过快、让接收方来得及接收所有的数据。

参考答案

标准回答

​ 如果发送方把数据发送得过快,接收方可能就来不及接受到所有的数据,中间可能会丢失数据报。流量控制就是让发送方的发送速率不要过快,让接收方来得及接收所有的数据。

加分回答

​ 一般都希望数据能传输得越快越好,但是如果发送方把数据发送得过快,接收方可能就来不及接受到所有的数据,中间可能会丢失数据报。而TCP的流量控制就是让发送方的发送速率不要过快,让接收方来得及接收所有的数据,利用滑动窗口这个机制可以很方便的实现在TCP连接上控制对方发送数据报的速率。例如:客户端和服务器端建立TCP连接的时候,客户端告诉服务器“我的接收窗口,cwnd= 400”,这时候服务器端的发送窗口发送的数据报总大小不能超过客户端给出的接收窗口的数值,这里要注意的是,这个数值的单位是字节,而不是报文段。当客户端可以继续接收新的数据报时,发送ACK=1 ack=(上一个报文段序号)+1 cwnd = 100,再接收100个字节的数据报。

延伸阅读

​ 糊涂窗口综合症(silly window syndrome)。这里出现一种情况:TCP接收方的缓存已满,而应用进程一次只从接收缓存中读取1个字节(这样就使接收缓存空间仅腾出1个字节),然后向发送方发送确认,并把窗口设置为1个字节(但发送的数据报是40字节长)。接着,发送方又发来1个字节的数据(这里需要注意,发送方发送的IP数据报是41字节长)。接收方发回确认,仍然将窗口设置为1个字节。这样进行下去,使网络的效率很低。要解决这个问题,可以让接收方等待一段时间,使得或者接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一半空闲的空间。只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小。此外,发送方也不要发送太小的报文段,而是把数据积累成足够大的报文段,或达到接收方缓存的空间的一半大小。

TCP协议的拥塞控制是什么?

得分点

​ 防止太多的数据进入到网络中、慢开始、拥塞避免、快重传、快恢复。

参考答案

标准回答

​ 拥塞控制就是防止太多的数据进入到网络中,这样可以使网络中的路由器或者链路不会过载,首先要求当前的网络可以承受住现有的网络负荷,它是一个全局性的过程,拥塞控制的算法有以下四种:慢开始、拥塞避免、快重传、快恢复。

加分回答

​ 在计算机网络中,宽带、每个路由器节点中的缓存和处理机等,都是网络资源。当在某个时间段中,某一个网络资源的需求量超过了这个资源所能提供的量,网络性能就会变差,这种情况就是拥塞。网络拥塞是由许许多多的因素引起的,比如当某个节点的缓存容量太小时、或者处理机处理的速率太慢等,如果只是简单的扩大缓存和提高处理及处理速率,虽然可以暂时的解决部分问题,但是整个网络生态的瓶颈却无法突破。只有整个网络所有的部分都平衡加强,问题才能解决。拥塞控制就是防止太多的数据进入到网络中,这样可以使网络中的路由器或者链路不会过载,首先要求当前的网络可以承受住现有的网络负荷,它是一个全局性的过程,拥塞控制的算法有以下四种:

  • 慢开始(slow-start):当客户端发送数据的时候,如果一次性把大量的数据字节发送到网络中,就有可能引起网络拥塞,因为并不清楚网络的负荷状态。所以较好的方法是先探测一下,由小到大逐渐增大发送窗口,也就是慢慢地增大窗口数值。通常刚开始发送报文段时先把拥塞窗口cwnd设置为一个最大报文段MSS的值,每收到一对新的报文段确认后,把拥塞窗口的数值再加一个MSS。
  • 拥塞避免(congestion avoidance):让拥塞窗口cwnd缓缓地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,让拥塞窗口按照线性规律慢慢增长,比慢开始算法的拥塞窗口增长速率慢很多。
  • 快重传(fast retransmit):要求接收方每收到一个失序的报文段之后就立即发出重复确认而不是等待自己发送数据时捎带确认,为的就是让发送方能尽早地知道有报文段没有到达接收方。
  • 快恢复(fast recovery):两个要点,一是当发送方连续收到三个重复确认时,就执行”乘法减小“算法,把慢开始门限ssthresh减半,这是为了预防网络发生拥塞。二是发送方认为网络很可能没有发生阻塞,因此不会执行慢开始算法,而是把cwnd值设置成慢开始门限ssthresh减半之后的数值,然后执行拥塞避免算法,使拥塞窗口呈线性增长。

延伸阅读

图片说明

编辑于 2021-09-15 14:51:26 回复(0)
TCP的流量控制是基于窗口机制实现的:
在建立连接时, 发送方和接收方都会建立一个缓存区,在两端进行通信时,数据包头部会有一个窗口字段,标识了接收端剩余的缓存空间。发送方根据窗口字段的值去判断发送数据的大小,从而避免了缓存溢出。
TCP的拥塞控制算法包含了:
慢启动,拥塞避免,快速重传,快速恢复
慢启动指的是发送数据的量从较低的起始值,如一个报文段慢慢指数增长
拥塞避免是指当拥塞的窗口小于阈值时,又指数增长降低为线性增长
快速重传是指超过三次重复确认即视为传输失败,立即重传
快速恢复是指发生快速重传后,立刻减低窗口阈值,并进行拥塞避免的线性增长算法,避免因为拥塞阻碍了重传
发表于 2021-10-11 17:14:11 回复(0)
  1. 流量控制:

流量控制的主要目的是防止发送者发送数据过快,接收者来不及接收,从而导致分组丢失。这是通过控制发送者的发送速度,使接收者能够来得及接收数据来实现的。流量控制是构成TCP可靠性的一方面。

TCP协议通过滑动窗口协议(连续ARQ协议)实现流量控制。在这个过程中,接收方返回的ACK中会包含自己的接收窗口的大小,并且利用这个大小来控制发送方的数据发送。当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。然而,如果这个窗口不为0的应答在传输过程丢失,发送者会一直等待,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。为了避免这种流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。

  1. 拥塞控制:

与流量控制不同,拥塞控制的研究对象是整个网络,包括网络中的各个路由器和线路。这是一个全局性的角度,考虑的是如何避免短时间内由于大量流量的注入引起的网络拥塞。

TCP的拥塞控制主要有四种方式:慢启动、拥塞避免、快重传和快恢复。这四种方式结合使用,试图使得整个网络达到一个平衡均衡的状态。拥塞窗口控制的基本原则是:当网络通畅时,增大拥塞窗口;当网络拥堵时,减少拥塞窗口。此外,发送窗口的大小总是不超过拥塞窗口的大小。

编辑于 2023-12-23 15:16:50 回复(0)
tcp流量控制基于窗口机制实现;
建立连接时,发送方和接收方都会建立一个缓存区,通信时,数据包头中会有一个窗口片段,标识了接收方缓存的剩余空间,发送方通过窗口片段反馈的值,调整发送数据的大小,从而避免缓存溢出。
tcp拥塞控制算法包含慢启动,拥塞避免,快速重传,快速恢复。
慢启动,即发送的数据量从较低的起始值开始,如报文段是妈那美女指数增长的;
拥塞避免,就是当拥塞的窗口小于阈值时,由指数增长降低为线性增长,
快速重传是指超过三次重复确认即视为传输失败,立即重传;
快速恢复即发生快速重传后,立即降低窗口阈值,并更改增值为线性增长算法。
发表于 2021-12-22 15:22:16 回复(0)
TCP流量控制:
tcp流量控制通过窗口机制实现,发送方维护一个发送窗口,接口方维护一个接收窗口,接收方将自己可以接收数据的窜口大小通过TCP报文发送给发送方,发送方调整自己的发送窗口和接收方的一致,发送为发送的数据,使得接收方的接收窗口不会溢出,进而进行流量控制。当接收方的接收窗口的容量为0时,发送方也会将自己的发送窗口调整为0,但会周期性的发送探测报文,来询问接收方的滑动串口大小,尽管接收方的接收窗口容量为0,但也要处理这个探测报文,给出回应,如果发生方接收回应超时,将重新发送探测报文
TCP拥塞控制
TCP拥塞控制通过:慢开始,拥塞避免,快重传,快恢复算法实现
起初会有个初始的慢开始门限值,拥塞窗口值为1
然后运行慢开始算法:拥塞窗口值呈指数级增长(1,2,4,8),直到达到慢开始门限值,
接着运行拥塞避免算法:拥塞窗口呈线性增长
当发生超时时,慢开始门限值减低为当前拥塞窗口值的一半,拥塞串口值变为1,重新运行慢开始算法
当拥塞窗口值达到慢开始门限时,运行拥塞避免算法,当收到3个冗余的ACK时,运行快重传算法:不等超时计数器到时,将丢失的tcp报文段发送出去,
然后运行快恢复算法:慢开始门限值降低为当前拥塞窗口值的一般,拥塞窗口值和慢开始门限值相同运行拥塞避免算法
发表于 2023-07-12 00:09:48 回复(0)
TCP的流量控制是基于窗口机制实现的:
在建立连接时, 发送方和接收方都会建立一个缓存区,在两端进行通信时,数据包头部会有一个窗口字段,标识了接收端剩余的缓存空间。发送方根据窗口字段的值去判断发送数据的大小,从而避免了缓存溢出。
TCP的拥塞控制算法包含了:
慢启动,拥塞避免,快速重传,快速恢复
慢启动指的是发送数据的量从较低的起始值,如一个报文段慢慢指数增长
拥塞避免是指当拥塞的窗口小于阈值时,又指数增长降低为线性增长
快速重传是指超过三次重复确认即视为传输失败,立即重传
快速恢复是指发生快速重传后,立刻减低窗口阈值,并进行拥塞避免的线性增长算法,避免因为拥塞阻碍了重传
发表于 2022-04-06 16:04:57 回复(0)
都是在背八股文吗?没必要哈哈。拥塞控制和流量控制是两个不同的概念。
发表于 2023-05-03 15:40:08 回复(0)
Tcp的流量控制是基于滑动窗口实现的:
建立连接后,接收方和发送方建立一个缓存空间,通信的时候,数据包头部会有一个字段,标识了接收端剩余的缓存空间,发送端根据这个字段,来控制发送的数据的大小,避免缓存溢出。
拥塞控制:
慢启动,拥塞避免,快重传,快恢复
:从一个较小的数据开始发送,指数增长。
:在拥塞的窗口达到阈值的时候,会变成线性增长。
:快重传指的是超过三次重复确定的话就视为传输失败,就会立即重传。
:在快重传以后,立即降低窗口阈值,就要执行拥塞避免算法,避免拥塞阻碍了重传。
发表于 2023-02-12 02:51:39 回复(0)
TCP的流量控制是基于窗口机制实现的:
在建立连接时, 发送方和接收方都会建立一个缓存区,在两端进行通信时,数据包头部会有一个窗口字段,标识了接收端剩余的缓存空间。发送方根据窗口字段的值去判断发送数据的大小,从而避免了缓存溢出。
TCP拥塞控制包含:
慢启动、拥塞避免、快重传、快恢复

发表于 2022-11-23 15:06:01 回复(0)
TCP流量控制是基于窗口实现的:
在建立连接时,发送方和接收方都会建立一个缓存区,在两端进行通信时,数据报头部会有一个窗口字段,标识了接收端剩余的缓存空间。发送方根据窗口字段值判断发送数据的大小,避免缓存溢出。
TCP拥塞控制包含:
慢启动、拥塞避免、快重传、快恢复

发表于 2022-09-16 13:42:50 回复(0)