一.背景:
在HTTP协议的初始版本中,每进行一次HTTP通信就要建立和断开一次TCP连接。(如果对TCP连接不熟悉可以参考1.2和1.4节)如图:
对该图解释一下,客户端与服务器端要进行通信,TCP协议为了保证通信的准确性,会进行“三次握手”来保证信息传递的准确性(详见1.2节),确认完之后才会进行HTTP请求和响应的传输,传输完之后服务器端发出终止信号FIN,断开TCP连接。
.................................................................背景/问题分割线
二.问题的产生:
因为当年都是些很小的文本传输,所以这样也没有多大问题,但是,随着HTTP的普及,文档中包含大量图片的情况多了起来,问题也就产生了:
比如,当我们使用浏览器浏览一个包含多张图片的HTML页面时,就会出下以下问题,
获取文档
获取图片
...
获取图片
因此,每次的请求都会造成无谓的TCP的连接与断开,增加通信量的开销。
......................................................问题/解决办法分割线
三.解决办法
1.为了解决上述TCP连接的问题,HTTP/1.1想出了持久连接的方法,持久连接就是只要任意一端没有明确提出断开连接,则保持TCP连接状态。如图:
持久连接的好处:
(1)减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
(2)减少开销的那部分时间,使HTTP请求和响应能够更早的结束,因此Web页面显示速度也就相应提高了。
2.管线化
持久连接使得多数请求以管线化方式发送称为可能。从前发送请求后需等待并受到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。
如图:
比如当请求一个包含10张图片的HTML Web页面,与挨个连接相比,用持久连接可以让请求更快,而管线化技术则比持久连接还要快。请求越多,时间差就越明显!