HTTP连接

HTTP

HTTP(HyperText Transfer Protocol) 是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如果向浏览器进行响应。
目前主要使用HTTP/1.0、HTTP/1.1和HTTP/2.0,尤其以HTTP/1.1为主流。
浏览器在向服务器发送请求之前,首先需要建立TCP连接,然后才能发送HTTP请求报文,并接受HTTP响应报文。
根据HTTP使用TCP连接的策略不同,可以分为非持久连接的HTTP和持久连接的HTTP,HTTP/1.0默认使用非持久连接。

HTTP客户端进程向服务器请求建立连接。从客户端发送连接请求,到收到服务器连接确认,用时一个往返时间(Roud Trip Time,RTT)。作为一个时间单位来使用。

非持久连接

非持久连接是指HTTP服务器建立TCP连接后,通过该连接发送HTTP请求保温,接收HTTP响应报文,然后断开连接。
HTTP1.0默认使用非持久连接。
非持久连接HTTP的响应时间
以请求浏览一个引用了3个JPEG小图像的Web页面为例
URL地址:https://www.albinwong.com/72OoMBDe2XwbJ506.html

HTTP/1.0使用非持久连接传输过程
图1 HTTP/1.0使用非持久连接传输过程
1、一共8个RTT时间(往返时间)
2、请求每个对象时,都要重新建立TCP连接,都要经历TCP拥塞控制的慢启动阶段。
典型的优化技术:并行连接和持久连接

并行连接

通过建立多条并行TCP连接,并行发送HTTP请求和并行接收HTTP响应。

HTTP/1.0使用并行连接传输过程
图2 HTTP/1.0使用并行连接传输过程

1、一共四个RTT。通常情况下,并行连接可以有效提高HTTP性能,减少Web页加载时间。
2、并行连接会增加客户端主机的资源开销,如内存开销。因此系统通常同时建立的并行TCP连接数有限制。
3、服务器通常也会对来自同一客户的并行TCP连接数有所限制。

非流水方式持久连接

也称为非管道方式持久连接,客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文。
使用非流水方式持久连接传输过程
图3 使用非流水方式持久连接传输过程

流水方式持久连接

也称为管道方式持久连接,客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文。
HTTP/1.1使用流水方式持久连接传输过程
图4 HTTP/1.1使用流水方式持久连接传输过程