RTT的时间组成

                                               preview

首先我们先看下TCP握手的过程:

  1. 客户端向服务端发送 SYN,传输 seq = X
  2. 服务端向客户端发送 ACK X+1,表示收到,客户端可以从 X+1 作为 seq 发送消息。同时发送 SYN,seq = Y,把自己设置成 established 状态(可接收数据)
  3. 客户端向服务端发送 ACK Y+1,表示收到,服务端可以从 Y+1 作为 seq 发送消息,把自己设置成 established 状态(可接收数据)

由于第三次握手的时候,client发完ACK Y+1后就可以直接发送http数据了,所以我们主要关注步骤1和2所花费的时间。步骤1和步骤2所花费的时间是1RTT,主要组成:RTT = 传播时延 + 排队时延 + 处理时延。

传播时延:数据在通讯链路上的传播时间,在上图中包括两部分,client --> server 和 server --> client;

排队时延:数据在经过网络传输时,要经过许多的路由器。但分组在进入路由器后要在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。 

处理时延:应用程序从接收到数据到发出确认信号ACK的这段时间。