首页 > 编程知识 正文

tcp如何判断网络出现拥塞,什么是拥塞控制

时间:2023-05-05 20:59:42 阅读:32155 作者:3201

在一段时间内,在对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏的情况下,这种情况被称为网络拥塞

计算机网络中的数字链路的容量,即带宽、交换节点中的缓存、处理器等,都是网络的资源。

出现拥塞而不进行控制的话,就是整个网络的吞吐量将随输入负荷的增大而下降

如果所输入的负载即使达到某个吞吐量也不增加,即,一些网络资源丢失,则网络吞吐量保持其可控最大值,并且由于转发节点的缓存不足,所以分组丢失是拥塞的征兆。TCP的四种拥塞控制算法

1 .慢慢开始

2 .拥塞控制

3 .请重新发送

假定

1 .数据单向传输,另一个方向只传输确认

2 .因为接收方总是具有足够的缓存区域,所以发送和接收窗口的大小由网络的拥塞程度来决定

3 .以TCP段数为讨论单位,以字节为单位示例如下:

循环:发送方向接收方发送数据段后,接收方向发送方返回对应的确认消息段。 一个循环所需的时间是往返时间RTT(RTT不是恒定值)。 使用循环机制是为了连续地发送拥塞窗口cwnd允许发送的段,并在发送的最后一个分组段的确认后强调拥塞窗口cwnd遵循网络拥塞程度和要使用的消息段

在tcp双方建立逻辑链路关系的情况下,也需要将拥塞窗口cwnd的值设定为1,并设定慢启动阈值ssthresh。 在执行慢启动算法时,发送方在每次接收到新的分段确认时,先将拥塞窗口cwnd的值递增1,然后开始传输下一回合,在拥塞窗口cwnd达到慢启动阈值时使用拥塞避免算法。

慢开始:

假设当前发送方拥塞窗口cwnd的值为1,发送方窗口swnd等于拥塞窗口cwnd,则发送方当前只能发送一个数据段(如果拥塞窗口cwnd的值为0,则可以发送几个数据段) 向发送方返回确认消息段,发送方在收到该确认消息后,将拥塞窗口的值更改为2,

发送方现在可以连续发送两个数据段,接收方接收到该数据段后,一次向发送方发送回两个确认消息,发送方接收到这两个确认消息后,将拥塞窗口的值加倍并改为4 发送方此时可以连续发送4个消息段,接收方接收到4个确认消息后,依次向发送方返回4个确认消息,发送方将拥塞窗口乘以4并设为8,发送方此时连续发送8个数据段接收方接收到这8个数据段后,一次向发送方发送回8个确认消息段,发送方接收到这8个确认消息后,拥塞窗口值加8,为16,

当前拥塞窗口cwnd的值已经等于慢启动阈值,然后转移到拥塞避免算法。

拥塞避免:

也就是说,对于每个传输周期,拥塞窗口cwnd只能线性地加一个,而不是如慢启动算法那样,对于每个传输周期,拥塞窗口cwnd呈指数增加。 类似地,假设在到达16 1……之前,24个段在传输中丢失4个,接收方仅接收20个段并且向发送方顺序地发送20个确认段。 一段时间后,丢失的四个段的重发计时器超时,发送方判断有可能出现拥塞,更改cwnd和ssthresh .重新开始低速开始算法。 如图所示: 333333

发送端发送第一段,接收端接收到第一段后,向发送端返回第一段的确认。 在第一段到达发送方之前,发送方发送发送窗口中的第二段,接收方接收到第二段,然后向发送方返回第二段的确认,在第二段到达发送方之前,发送方发送发送窗口中的第三段

如果此消息丢失,发送方不会向发送方发送对该消息的确认消息。 发送方还可以发送发送窗口中的第四个数据段。 接收方收到后,注意到这不是按顺序到达的报文段。 因此,向发送方发送对第二个消息段的重复确认,我现在想接收的是第三个消息段,但我没有接收到第三个消息段,正在接收没有按顺序到达的消息段发送方还可以发送发送窗口中的5号段。 接收方收到后,发现这不是按顺序到达的路段。 因此,向发送方发送了对2号段的重复确认,现在我想接收的是3号段,但我没有收到3号段,按顺序收到了没有到达的段。 因为发送方发送发送窗口中最后一个数据段——第六段,接收方接收后发现这不是按顺序到达的消息段,所以向发送方发送对第二个消息段的重复确认,让我现在想接收的消息段我没有收到第三个短信段,表示收到了没有按顺序到达的短信段。

此时,发送方从累计接收到对连续的3个第2段的重复确认,立即重发第3段,接收方接收后向发送方发送对第6段的确认,表示接收到了从号码到6的消息,从而

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。