了解了工作原理之后,我们就可以分析不能共同使用的原因了。因为最终数据还是由TCP协议封装出去,所以最后的控制还是要依赖TCP协议自己的拥塞机制来处理。
在没有丢包的网络环境下,当刚开始发送数据的阶段,因为HTP的快开始,导致携带的上层应用数据超过了此时TCP的滑动窗口大小,因此必然会有一部分数据进入到本机的TCP缓存队列,随着HTP发送的速率开始增加,数据内容越来越多,而TCP的滑动窗口大小增加的速度跟不上HTP发送数据的速率,因此不断的有数据被送入TCP的缓存队列,直到TCP缓存队列被塞满并开始丢弃数据,此时HTP的速率也跟着降下来。因此,在没有丢包的网络环境下,TCP+HTP结合使用,实际上就等于还是在使用TCP协议,HTP的优势因为受到TCP的限制而完全发挥不出来,效率可能还有小幅下降。
在有丢包的网络环境下,开始阶段跟之前描述的类似,当发生丢包的时候,TCP协议会迅速的把滑动窗口的大小给减小(参见TCP拥塞例子),而此时HTP因为其慢下降,发送速率还可以能维持在一个较高水平(降到原来的8/9),导致大量数据包依旧要么送入TCP缓存,要么被TCP直接丢弃,整个传输过程的效率还是以TCP为准,HTP在丢包情况下的良好适应性完全无法发挥,甚至可能导致传输效率下降。
综合结论:VPN的TCP传输模式和加速的HTP传输模式不能结合在一起使用。