长连接

1、HTTP协议与TCP/IP协议的关系

HTTP的长连接和短连接本质上是TCP/IP的长连接和短连接。

HTTP:应用层协议

TCP:传输层协议 =》 主要解决如何在IP层之上可靠的传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的,面向连接的。

IP:协议 =》 主要解决网络路由和寻址问题。

2、HTTP协议是无状态的

指的是协议对于事务没有记忆能力,服务器不知道客户端是什么状态,(打开服务器上的一个网页和上次打开这个网页之间没有任何联系)。

3、长连接和短连接

HTTP/1.0,默认短链接。客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。每遇到一个web资源,浏览器就会重新建立一个HTTP会话。

HTTP/1.1,默认长链接。

会在响应头加 Connection:keep-alive

当打开一个网页完成后,客户端和服务端之间用于传输HTTP的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这条连接。keep-alive不会保持永久连接,它有一个保持时间,可以在不同的服务器软件(如apache)设置这个时间。实现长连接和服务端都支持长连接。

3.1、TCP连接

建立连接 -----“三次握手”

释放  ----- ”四次握手“

3.2、TCP短连接

client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次请求就完成了。这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。

3.3、TCP长连接

       client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次请求就完成了。这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。
       客户主机依然正常运行,且服务器可达。此时客户的TCP响应正常,服务器将保活定时器复位。
       客户主机已经崩溃,并且关闭或者正在重新启动。上述情况下客户端都不能响应TCP。服务端将无法收到客户端对探测的响应。服务器总共发送10个这样的探测,每个间隔75秒。若服务器没有收到任何一个响应,它就认为客户端已经关闭并终止连接。
       客户端崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
       客户机正常运行,但是服务器不可达。这种情况与第二种状态类似。

4、长连接和短连接的优缺点

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

5、学习资料

HTTP keep-alive模式:http://www.cnblogs.com/skynet/archive/2010/12/11/1903347.html

浏览器允许并发请求资源 https://www.zhihu.com/question/20474326

TCP长连接与短链接:http://blog.csdn.net/weiwangchao_/article/details/7225613

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值