概述
1、什么是拥塞?什么是拥塞控制?
在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就称为拥塞。简单的说拥塞产生的原因有两点:(1)接收方容量不够(2)网络内部有瓶颈
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
2、检测网络拥塞的方法?
检测网络拥塞的指标是:由于缺少缓存空间而被丢弃的分组的百分数、平均队列长度、超时重传的分组数、平均分组时延、分组时延的标准差等,这些指标的上升都标志着拥塞的增长。
可以使用这种方法来检测,在路由转发的分组中保留一个比特或字段,用该比特或字段的值表示网络有没有拥塞或产生了拥塞。也可以由一些主机或路由器周期性的发出探测分组,以询问拥塞是否发生。
3、网络拥塞的表现?
(1)收到重复的ACK。发送的包可能有些丢失,但是接收方没有接收到,而发送方由于发送窗口还可以发送,还在继续发,而接收方由于没有收到丢失的那个包,只能不断请求发送那个包对应的序列号。
(2)出现了超时。当网路发生拥塞的时,路由器就要丢弃分组。因此只要发送方没有按时收到应当到达的确认报文,也就是说,只要出现了超时,就可以猜想网络可能出现了拥塞。(现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率都很小,远小于1%)(这也是发送方如何知道网络发生了拥塞的方法)
4、TCP/IP协议的拥塞控制?
TCP进行拥塞控制的四种算法:慢开始、拥塞避免、快速重传、快速恢复。
拥塞窗口的大小取决于网络的拥塞程度,并且在动态的变化,发送方让自己的发送窗口等于拥塞窗口。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提高网络的利用率,但只要网络出现拥塞或可能出现拥塞,就必须把窗口减小一些,以减少注入到网络中的分组数,以便缓解网络出现的拥塞。
慢开始算法思想:当主机开始发送数据时,由于并不清楚网络的负荷情况,如果立即把大量数据字节注入到网络,那么就有可能引起网络发生拥塞,所以由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值,试探一下网络的拥塞情况。慢开始规定,在发送方每收到一个新的报文段的确认后,拥塞窗口的值就增大1,刚开始我们先设置拥塞窗口值为1,发送方收到一个新的确认报文之后,cwnd变为2,发送方接收到两个新的确认报文之后cwnd加2变成。即拥塞窗口的增长每次都是收到确认报文段数量的2倍。为了防止拥塞窗口增长多大引起网络阻塞,为其设置了一个慢启动门限,当到达门限时,就进入到拥塞避免阶段
拥塞避免算法的思路:不再以指数形式增长拥塞窗口,而是每经过一个往返时间RTT就将发送方的拥塞窗口+1,使其增长缓慢,按照线性方式增长,如果发生网络拥塞,比如丢包时,就将慢启动门限设为原来的一半,然后将拥塞窗口设置为1,开始执行慢启动算法。
快速重传算法思想:快速重传要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。快速重传规定,发送方只要一连接收到3个重复确认,就知道接收方确实没有收到该报文段,因而应当立即进行重传,这样就不会出现超时,发送方也就不会误认为出现了网络拥塞。使用快速重传可以使整个网络的吞吐量提高约20%。快速重传后进入快速恢复。
快速恢复的思想:将慢启动门限值设置为原来的一半,然后将拥塞窗口设置为现在的慢启动的门限值,不再执行慢启动而是直接进入拥塞避免阶段。使发送窗口成线性方式增长。【也有的快速恢复实现是把快速恢复时的拥塞窗口cwnd值再增大一些(即3个报文段长度),即等于新的门限值+3个报文段长度。这样做的理由是,既然发送方收到3个重复的确认,就表明3个分组已经离开了网络。这3个分组不再消耗网络的资源,而是停留在接收方的缓冲区种(接收方发送出了3个重复确认就证明了这个事实)。可见现在网络中并不是堆积了分组,而是减少了3个分组。因此可以适当的把拥塞窗口扩大些】
注:在拥塞避免阶段,拥塞窗口是按照线性规律增大的,这常称为加法增大AI。而一旦出现超时或3个确认重复,就要把门限值设置为当前拥塞窗口值得一半,并大大减小拥塞窗口的数值。这称为“乘法减小”MD,二者合并就是AIMD算法
快速重传对应的图解
最后
以上就是纯情香氛为你收集整理的面试题——TCP的拥塞控制的全部内容,希望文章能够帮你解决面试题——TCP的拥塞控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复