RTT:发送一个数据包到收到对应的ACK,所花费的时间。
就是Server发送一个数据包然后对方回应一个ACK的时间,当Server接收到ACK之后,就能计算出从Server发出包到接收到回应的时间。
RTO:重传时间间隔。
TCP在发送一个数据包之后,会启动一个重传定时器,RTO就是这个定时器的重传时间。如果收到回复的ACK,重传时间就自动失效,如果没有收到回复的ACK,RTO定时器的时间也到了,发送方就重传。由于RTO是本次发送当前数据包所预估的超时时间,那么RTO就需要一个很好的算法来统计,来更好的预测这次超时时间。RTO不是固定写死的配置,而是经过RTT计算出来的。有了RTT才能计算出RTO。
TCP会将数据拆分成段进行传输,处于效率和传输速率的考虑,我们不可能等数据一段一段的发送,等到上一段数据被确认收到之后在发送下一段数据,这个效率是很低的,我们是要实现对数据进行批量发送,TCP必须要解决数据的可靠传输,以及包括乱序的问题。所以TCP需要知道网络实际的数据处理带宽或数据处理速度,这样才不会引起网络拥塞,导致丢包。
TCP使用滑动窗口做流量控制与乱序重排,TCP的滑动窗口主要有两个作用:
- 保证TCP的可靠性。
- 保证TCP的流控特性。
WIndow用于发送方通知接收方还有多少缓冲区可以接收数据。发送方根据接收方的处理能力来发送数据,不会导致接收方处理不过来,这便是流量控制。同时滑动窗口机制还提供了TCP面向字节流的设计思路。
窗口大小可以动态调整。