HTTP之长连接与短连接

HTTP长连接,也称持久连接(HTTP persistent connection/HTTP keep-alive/HTTP connection reuse)是使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每个新的请求/应答打开新的连接方法。


HTTP短连接,浏览器和服务器每进行一次HTTP操作,就会建立一次连接,但任务结束后就中断连接,不会像长连接那样保持连接。


操作:

长链接在HTTP1.0中,没有官方的keepalive的操作。通常是在现有协议上添加一个指数。如果浏览器支持keep-alive,它会在请求的包头中添加:

Connection: Keep-Alive

然后当服务器收到请求,做出回应的时候,它也添加一个头在响应中:

Connection: Keep-Alive

这样做,连接就不会中断,而是保持连接。当客户端发送另一个请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。

在HTTP1.1中所有的连接默认都是持续连接,除非特殊声明不支持。HTTP持久连接不适用独立的keepalive信息,而是仅仅允许多个请求使用单个连接。然而,Apache 2.0 httpd 的默认连接过期时间是仅仅15秒,对于Apache2.2 只有5秒。短的过期时间的优点是能够快速的传输多个web页组件,而不会绑定多个服务器进程或线程太长时间。


短连接的包头则是Connection值为close

Connection: Close


长连接的操作步骤:

建立连接――数据传输――保持连接(心跳)――数据传输――保持连接(心跳)…――关闭连接


短连接的操作步骤:

建立连接――传输数据――关闭连接



长连接优势:

1.由于同时打开的连接的减少,会使用较少的CPU和内存。

2.允许请求和应答的HTTP 管线化(将多个HTTP request 整批提交的技术,而在传送过程中不需要先等待服务器的回应)。

3.降低网络阻塞(TCP连接减少)

4.不需要进行握手,减少了后续请求的延迟。

5.报告错误无需关闭TCP连接。


用户客户端与任何服务器和代理服务器之间不应该维持超过2个链接。代理服务器应该最多使用2 * N个持久连接到其他服务器或者代理服务器,其中N 是同时活跃的用户数。旨在提高HTTP响应时间并避免阻塞。


短连接优势:

web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿的客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。总之:长连接和短连接的选择要根据需求而定。


长连接劣势:

对于现在的广泛普及的宽带连接来说,Keep-Alive也许并不像以前一样有用。web服务器会保持连接若干秒(Apache中默认15秒),这与提高的性能相比也许会影响性能。

对于单个文件被不断请求的服务(例如图片存放网站),Keep-Alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。


短连接劣势:

如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也是对资源的浪费。




你可能感兴趣的:(浏览器,服务器,客户端,信息,包头)