专业的IT培训机构|腾科IT教育集团
图片

腾科新闻

TCP协议的拥塞控制

发布时间: 2022-04-15

TCP协议的拥塞控制,互联网络由于自身的复杂性,经常会发生负载超过处理能力的情况,这时便会产生拥塞现象。由于实际环境复杂,真正解决拥塞问题确实很困难。

真正要解决拥塞产生的问题必须降低数据的传输速度,这又和当前互联网络的发展正好矛盾。网络层和传输层都具有解决拥塞问题的能力,但实际上TCP完成了这项工作的大部分。

前面讲述了TCP协议通过滑动窗口机制可以在确保数据包传送可靠性的同时,达到对流量的控制。虽然理论上这是一种较简便的控制拥塞的方法,但实际上这种方法只能进行初步的流量控制,根本不能在复杂的互联网络中避免拥塞的产生。能够很好地检测出拥塞产生的原因是控制拥塞的关键。

以前由于网络传输介质的低可靠性和网络设备的性能不完善,非常容易造成数据包丢失而产生超时,而且对于拥塞的产生很难判断。

现在光纤的广泛使用基本上可以避免数据包丢失,所以互联网络上大部分超时的产生是由拥塞引起的。现在所有的TCP算法都可以通过监控定时器判断互联网络上是否出现了拥塞。

TCP在建立连接时很希望避免拥塞的出现,以保证数据的正常传输。虽然双方可以通过协商一个适合双方的窗口大小来避免接收方的缓冲区由于溢出所造成的超时,可是这样不能防止互联网络内部的拥塞所产生的不良后果。所以,发送方非常希望在保持和接收方缓冲区的一致性的同时,又能够处理来自于网络的拥塞问题。

这不仅需要滑动窗口机制,而且需要另一种窗口机制——拥塞窗口来协调解决。所有的发送方都维持这两个窗口,这两个窗口都指明了发送方可以发送的字节数,但发送方会选择二者当中较小的一个作为最终发送数据包大小的依据。这样,发送数据的主动权落在了发送方手里,非常有利于对拥塞的控制。

如果接收方通知发送方自己可以接收16KB的数据,但发送方通过拥塞窗口得知发送大于8KB的数据就会产生拥塞,那么发送方就会发送最大为8KB的数据;如果接收方通知发送方自己可以接收16KB的数据,而且发送方通过拥塞窗口得知发送32KB的数据不会造成拥塞,那么发送方就会发送16KB的数据。

发送方利用拥塞窗口避免拥塞的发生,其原理是使用一种叫“慢速启动”的算法。在一个连接的建立阶段,发送方会利用在这个连接上所使用的最大数据包的长度设置拥塞窗口的初始大小,第一次发送时会发送一个最大长度的数据包。

如果在超时之前得到了接收方的确认信息,发送方就会在第二次发送数据时,将最大数据包的长度翻倍并发送相当于两倍最大数据包的长度的数据包。当再次成功得到确认信息后,再将上一次的实际数据包长度(两倍最大数据包的长度)翻倍。这样依此类推,只要发送成功,拥塞窗口的大小就会翻倍。直到一次发送后定时器超时,才会停止拥塞窗口的这种指数式增长。

如果发送数据的数据包大小为2N字节,且发生超时,那么发送方会将拥塞窗口的大小重新设定为N字节,即发送失败的前一次,这种操作不会考虑接收方的缓冲区大小。这种算法在TCP实际环境中早已成为默认功能。

上一篇: 什么是RARP协议

下一篇: TCP协议和UDP协议的头格式

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!