首先这里简单说起一下HTTP协议,HTTP协议是位于应用层面向对象的协议,如今WWW中使用的是HTTP/1.1版本,关于HTTP/1.0也是今天要说的内容。css
HTTP1.1比特HTTP1.0相比而言,最大的区别就是增长了持久链接支持。
数据库
在HTTP/1.0中,默认使用的是短链接。即浏览器和服务器每进行一次HTTP操做,就会创建一次链接,任务结束就断开链接。当浏览器访问的某个HTML或其余类型的Web页中包含有其余的Web资源(Js文件、css文件等),就会创建一个HTTP会话。
浏览器
在HTTP/1.1起,默认使用长链接。用以保持链接特性。【长链接一般在响应头会添加 Connection:keep-alive 】。使用长链接的状况下,当某个网页打开完毕以后,客户端和服务器之间的TCP链接不会关闭,若是客户端再次访问该服务器上的网页,会使用上一次已经创建的链接。长链接不是永久保持链接,它有一个保持时间。实现长链接的前提是客户端和服务器端都须要支持长链接。安全
咱们都知道,HTTP是基于TCP的应用层协议。HTTP的长链接和短链接,本质上是 TCP长链接和短链接。服务器
基于TCP的协议,在数据通讯以前须要完成三次握手,结束通讯须要完成四次挥手。每次创建链接都是须要时间代价的。
socket
一、短链接ide
模型:链接-----传输数据-----关闭链接网站
短链接是指三次握手创建链接以后,client向server发送消息,而后server回复client消息,一次读写操做完成以后,发起断开链接请求。通常状况下,close动做是由client发起的。ui
二、长链接spa
链接-----传输数据-----保持链接-----传输数据-----保持链接.....关闭链接
长链接指三次握手创建链接后,完成一次读写操做,一段时间内,该链接不会关闭,以后若是还有向该server发起的数据读写,仍然使用该该链接。这与以前提到的TCP通讯过程相似,由于要考虑在链接保持期间client始终处于正常状态(防止server端保存大量的半链接状态的socket),这就要牵扯到以前的TCP维护的四个定时器中的保活寄存器。相对于短链接而言,长链接安全性通常。
三、长链接和短链接的特色
对于短链接而言,管理起来较为简单,由于短链接存在的链接都是有效的,不需使用额外的方法来维护;带来的缺点就是屡次创建链接的请求,时间代价较大,占用的带宽也是一个很大的问题。
对于长链接,client端一般不会主动关闭链接,而是由服务器决定的。所以server须要提供一套机制来管理这些保持的链接。若是client链接server以后,长时间没有进行传递,大量的client链接会使server的负担加剧,所以server须要提供一种机制,用来关闭即便client处于正常状态但长时间没有进行数据通讯的链接,若是条件容许,能够在server端限制最大链接数,来避免个别客户端对服务器的拖累。
四、使用场合
长链接多用于操做频繁,点对点的通讯,且链接数不太多的状况。如数据库的链接使用长链接。短链接要求每次数据处理以前,都须要创建链接,对于须要大量访问数据库的操做,创建链接是对资源极大的浪费,并且容易致使socket错误。
短链接一般用于大型网站的访问。缘由很简单,成千上万的client访问server,若是每一个client保持一个链接,服务器是难以负荷的。即便能够调度,代价也是很大的。
-----muhuizz整理