计算机网络传输层(tcp滑动窗口与流量控制、拥塞控制) 您所在的位置:网站首页 滑动窗口协议如何进行流量控制 计算机网络传输层(tcp滑动窗口与流量控制、拥塞控制)

计算机网络传输层(tcp滑动窗口与流量控制、拥塞控制)

2024-07-10 18:12| 来源: 网络整理| 查看: 265

④ TCP的滑动窗口 TCP的滑动窗口是以字节为单位的,是缓存的一部分,用来暂时存放字节流。为了便于理解,我们只考虑A向B发送数据,B给出确认的场景。即A有发送窗口,B有接收窗口。当发送方收到接收方的确认后,根据确认报文段中窗口字段的值和其它信息设置自己的窗口大小。比如B发送的确认报文段窗口字段的值为20,确认序号为31,则A可以构造出自己的发送窗口。 在这里插入图片描述对于发送窗口,发送窗口内的字节都允许被发送。如果发送窗口左侧的字节都已发送并收到确认,则窗口后沿可以向前移动,到达不是已发送并收到确认状态的字节处。对于接收窗口,接收窗口内的字节都允许被接收。如果接收窗口左侧的字节已发送确认并交付主机,则窗口后沿向前移动,到达不是以发送确认并交付主机的字节处。 在这里插入图片描述接收窗口只会对窗口内最后一个按序到达的最高序号给出确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 给出确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 ⑤ TCP的流量控制 TCP 采用大小可变的滑动窗口进行流量控制,流量控制(flow control)是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文段中窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。 3. TCP的拥塞控制 ① 拥塞与拥塞控制 计算机网络中的链路带宽、交换结点中的缓存和处理机等,都是网络的资源。如果网络中对某一资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏。这种情况就是拥塞。 ∑ 资 源 的 需 求 > 可 用 资 源 \sum资源的需求>可用资源 ∑资源的需求>可用资源拥塞控制和流量控制的区别: 拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不致过载。流量控制所要做的就是抑制发送端的发送速率,使得接收端来得及接收。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。流量控制往往指点对点的通信量控制,即接收端控制发送端,是端到端的问题。 拥塞控制所起的作用如下图所示。注意: 如果不进行拥塞控制,当网络的负载到达一定数值时,吞吐量将会下降为0,这就是所谓的死锁。 在这里插入图片描述 ② 如何进行拥塞控制? TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护一个叫做拥塞窗口(cwnd) 的状态变量,拥塞窗口与发送窗口的区别: 拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送窗口。为了便于讨论,做如下假设: 接收方有足够大的接收缓存,因此不会发生流量控制;虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段,即以报文段作为数据传输的单位。 ③ 慢开始与拥塞避免 发送的最初,执行慢开始:令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍。因此之后发送方能够发送的报文段数量为:2、4、8 ...,以指数 2 n − 1 2^{n-1} 2n−1进行增长。这样的指数增长速度是非常快的,从而使得发送方发送速率增长速度过快,发生拥塞的可能性更高。于是,设置一个慢开始门限 ssthresh: 当 c w n d = s s t h r e s h cwnd = ssthresh cwnd=ssthresh 时,慢开始算法和拥塞避免算法都可以使用;当 c w n d > s s t h r e s h cwnd > ssthresh cwnd>ssthresh 时,停止使用慢开始算法,进入拥塞避免,每个轮次只将 cwnd 加 1。于是,发送方能够发送的报文段数量成了 16, 17, 18, 19 ... 如果出现了超时(即很可能出现网络拥塞),则令 s s t h r e s h = c w n d / 2 ssthresh = cwnd / 2 ssthresh=cwnd/2,然后重新执行慢开始。进入拥塞避免时,cwnd的值+1被称为加法增大;发生超时时,将ssthreash的值减半,叫乘法减小。这两种算法合称为AIMD(即加法增大乘法减小)。 在这里插入图片描述 ③ 快重传与快恢复 快重传的几个要求: 接收方每次收到报文段后,要对已接收到的有序报文段的最高序号进行确认。例如,已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。发送方如果连续收到三个重复的确认,就可以知道下一个序号的报文段丢失。发送方立即重传丢失的报文段,而不必等待为丢失报文段设置的重传计时器到期。例如收到三个 M2,则 M3 丢失,立即重传 M3。这种方式叫做快重传,采用快重传可以使整个网络的吞吐量提高约20%。 在这里插入图片描述 在这种情况下,发送方认为网络很可能没有发生拥塞,因此执行快恢复:令 s s t h r e s h = c w n d / 2 ssthresh = cwnd / 2 ssthresh=cwnd/2 , c w n d = s s t h r e s h cwnd = ssthresh cwnd=ssthresh,然后开始执行拥塞避免算法(加法增大),使拥塞窗口缓慢的线性增大。

为什么叫慢开始、快恢复?

慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 c w n d = 1 cwnd = 1 cwnd=1,而快恢复 c w n d = s s t h r e s h cwnd=ssthresh cwnd=ssthresh。 4. 常见面试问题

1. TCP和UDP的区别?

2. TCP的三次握手?为什么不是两次或者四次,而是三次?

3. TCP的四次挥手?什么时候发生TIME-WAIT,为什么要进行TIME-WAIT?

4. TCP的五层(四层模型)?OSI的7七层模型?

5. 给出IP地址,判断它是哪一类地址?子网掩码是多少?

6. TCP如何实现可靠传输的?

TCP通过三次握手建立连接,四次挥手断开连接TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。TCP的滑动窗口、流量控制、拥塞控制

7. TCP的拥塞控制?

8. UDP发生用户数据报丢失,如何处理?

添加seq/ack机制,确保数据端到端添加超时重传机制,重传时最好报文分片,降低重传大报文对性能的影响可以加大接收缓冲区,降低发送方的发送频率


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有