TCP窗口控制、流量控制、拥塞控制

一、窗口控制

TCP以1个段为单位,每发一个数据段进行一次ACK确认应答的处理,这样的传输方式由一个缺点,就是包的往返时间越长通信的性能越差。

一发一答

 

 

解决这个问题,提高速度,TCP引入了窗口控制这个概念。具体做法就是连续发送上限为窗口大小的数据,然后再一个一个ACK确认。即使在往返时间较长的情况下,它也能控制网络性能的下降,提高速率。

窗口控制的多发多答

多发多答

 

窗口大小:

指无需等待确认应答而可以继续发送数据的最大值。如上图窗口大小为4个段。

 

滑动窗口:

收到确认应答的情况下,将窗口滑动到确认应答中的序号的位置。这样可以顺序地将多个段同时发送提高通信性能。

滑动窗口

 

再窗口控制中,出现段丢失怎么办呢?

重发控制:

情况一:A向B发数据,A的数据已经发送到B端,B返回确认应答信号ACK未能到达A端情况下,是不需要进行重发的。

重发控制1

 

注意:如果是没有使用窗口控制的时候,如果没收到确认应答,数据是会重发的

 

情况2:A发数据到B,如果A发的数据丢失没有达到B端,接收端B会返回没收到数据的ACK给发送端A,来告诉A端接收数据失败,要重新发送。

因此,在窗口比较大,又出现报文丢失的情况下,同一个序号的确认应答将会被重复不断地返回,而发送端如果连续3次收到同一个确认应答,将会重新发送数据段。

重发控制2

 

 

二、流量控制

双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。

如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。 

对数据发送方发送速率的控制,我们称之为流量控制

具体做法:

接收端向发送端通知自己接收数据的大小,于是发送端会发送不超过这个限度的数据,该大小限度就是窗口大小。

注意:窗口大小由接收方决定

           TCP首部中有一个字段用来通知窗口大小

 

步骤:

1.通信双方主机上都分别有一个“发送窗口”和一个“接收窗口”
2.TCP连接阶段,双方协商窗口尺寸
3.发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认,等待确认机制
4.发送方根据确认信息,改变窗口的尺寸
 

流量控制

 

窗口探测:如果接收端返回的窗口大小为0,即发送端会停止发送数据。要等接收到返回窗口大小不为0的ACK(更新通知),发送端才会继续发送数据。

为了避免更新通知在传送途中丢失而导致发送端和接收端都处于互相等待状态中。发送端会是不是发送一个叫窗口探测的数据,来查询接收端的(更新通知)ACK应答。

 

三、拥塞控制

 

参考文献:图解TCP/IP

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章