这是我所理解的http流程,从chrome network timing来分析从客户端 - 服务端 - 客户端的完整链条。
Chrome Network Timing截图
DNS Lookup阶段
这个很好理解,就是查找DNS所花费的时间。
Initial Connection阶段
用于客户端与服务端建立连接所花费的时间。
- TCP三次握手以及TCP重连所花费的时间。
- 如果是https,还包括SSL握手花费的时间。
Request Sent阶段
客户端想服务端发送请求
request包括
- 方法
- 请求URL path
- 请求头(User-Agent,Host等)
Waiting (TTFB)阶段
客户端等待服务端处理,相应时间,如果配置了Socket read timeout, 则要注意这个时间段的长度。
Content Download阶段
服务端返回response,服务端解析并下载response body的时间。
response包括
- 状态码
- 消息头
- body
总结
我认为一个完整的http流程为:
DNS解析 –》 建立TCP/SSL连接 –》请求的构造并发送 –》服务端响应 –》服务端返回结果客户端下载解析response body