1.什么是网络拥塞:
对网络中的某一资源的需求超过了资源所能提供的可用部分,网络性能就要变坏;这种情况就叫拥塞(网络资源包括带宽,交换节点中的缓存和处理机等),拥塞会导致网络的性能随着负荷的增大而下降。所以如何减少拥塞是网络重中之重的问题。
2.TCP拥塞控制算法:
以下算法都是建立在数据只是单方向传递,接收方有足够的缓存空间,以报文为单位而不是以字节为单位的基础上
cwnd:拥塞控制窗口,取决于网络的拥塞控制程度并且动态变化。
swnd:发送窗口,用来发送数据包的窗口。
ssthresh:慢开始门限,是发送窗口与拥塞窗口的一个转折点,也是慢开始算法和拥塞避免算法的一个临界点
即:当cwnd<ssthresh时,开始慢开始算法。
当cwnd>ssthresh时,开始拥塞避免算法
当cwnd=ssthresh时,既可以慢开始也可以
拥塞避免
如何确定是否发生重传:
倘若接收方确认收到报文段,发送方就会认为报文段丢失,于是就会发生重传。
重传分为以下几种:
超时重传:当发送方发送数据包后,一定时间内没有收到ACK信号,就会认为数据丢失,就会启动超时重传机制从而适应当前网络的延迟和拥塞情况。
快速重传:当发送方收到对同一序列号的数据包的三次重复确认,它就会立即重传该数据包,而不是等待超时,这样就可以快速的恢复丢失的数据包,从而提高数据的传输效率。
四种拥塞优化算法:
慢开始:用于控制网络流量的算法,核心思想是从小到大逐渐增大发送窗口的大小,避免一开始就向网络中注入过多的数据导致网络拥塞。
开始传输时先将拥塞窗口设置为1,然后每经过一轮传输拥塞窗口就会呈指数倍率增长即 2,4,8,16....
这样就可以避免一次性传输大量数据从而导致网络拥塞。
拥塞避免:当cwnd>ssthresh时,开始拥塞避免算法,即每轮次cwnd的数值只能线性加1,一旦超过拥塞窗口最大值,发生了数据丢失时,就会将拥塞窗口的ssthresh值变为最大值的一半,并且将cwnd值重新赋值为1,重新进入慢开始算法。
快重传和快恢复的作用:
有时,数据或报文段在网络中丢失但是实际上并未发生拥塞,而这导致了发送方发生超时重传时,会误以为发生了网络拥塞,就会错误的使用慢开始算法,又会把cwnd设置为1,从而降低了传输效率。
快重传:使发送方尽快的重传而不是等待计时器超时再重传,即不是捎带确认而是立即确认,即使收到失序报文段也要立即发出对已收到的报文段的重复确认。发送方一旦收到连续的3个重复的确认请求,就会立即重传而不是超时重传。
快恢复:将慢开始门限ssthresh的值和拥塞窗口cwnd值调整为当前窗口的一半,开始执行拥塞避免算法
也有的是将ssthresh+3再开始执行拥塞避免算法
标签:ssthresh,重传,网络,计算机网络,算法,拥塞,cwnd From: https://blog.csdn.net/weixin_74968157/article/details/139295829