secoclient隧道保活超时或协商超时_绕不开的TCP之超时重传

secoclient隧道保活超时或协商超时_绕不开的TCP之超时重传_第1张图片

前文介绍了TCP建立连接和断开连接的方式。那在连接建立之后,TCP如何保证数据的可靠传输的呢?毕竟现实的网络环境是这样的复杂,出错、超时和丢包的种种问题时有发生,背后的秘密在哪里呢?跟随我们的文章,一起探究一下吧。

TCP重传机制

TCP协议是一种面向连接的可靠的传输层协议,它保证数据可靠传输的基本原理是在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到刚才发送数据的ACK确认报文(是通过确认序号的方式进行确认,即刚才发送数据的序列号+1),则对该报文进行重传。如果一直失败,满一定次数后就会放弃并发送一个复位信号。

显而易见,这个定时器的时间(RTO)相当关键,关系着网络资源是否被有效利用。

如果RTO设置过小,部分报文可能遇到网络拥堵或者延迟比较大的情形,这样就会频繁重传,浪费带宽。如果RTO设置过大的话,发送端需要等待过长时间才能发现数据丢失,影响网络的传输效率,造成的表象就是后端系统响应时间过长甚至超时,显然会给用户造成恶劣的影响,这是我们需要坚决规避的。

那设置RTO是否有依据呢?

一般RTO是根据网络中的RTT(传输往返时间)来自适应调整的。具体算法这边就不赘叙了。

接下来让我们通过两幅图来了解一下重

你可能感兴趣的:(tcp下载窗口太小的问题)