浏览器和web服务器如何建立连接?
在HTTP/1.0中,默认使用短连接。也就是说,浏览器和服务器每执行一次HTTP操作,都建立了一个连接,但在任务结束时连接断开。如果客户端浏览器访问的HTML或其他网页包含其他Web资源,如JavaScript文件、图像文件、CSS文件等。当浏览器遇到这样的Web资源时,它会建立一个HTTP会话。
但是,从HTTP/1.1开始,默认使用长连接来保持连接特征。使用长连接的HTTP协议,这行代码将被添加到响应头中:
连接:保持活动状态
在长连接的情况下,当打开一个网页时,客户端与服务器之间传输HTTP数据的TCP连接不会关闭。如果客户端再次访问此服务器上的网页,它将继续使用此已建立的连接。Keep-Alive不会永久保持连接。它有一个保持时间,可以在不同的服务器软件中设置(比如Apache)。要实现长连接,客户端和服务器端都应该支持长连接。
HTTP协议的长连接和短连接本质上是TCP协议的长连接和短连接。
我们来模拟一下TCP短连接的情况。客户端向服务器发起连接请求,服务器接收请求,然后双方建立连接。客户端向服务器发送消息,服务器响应客户端,然后一次读写完成。此时,任何一方都可以发起关闭操作,但一般是客户端先发起关闭操作。为什么?一般服务器在回复客户端后不会立即关闭连接。当然也不排除特殊情况。从上面的描述来看,短连接一般只在客户机/服务器之间传递一次读写操作。
短连接的优点是:管理起来相对简单,现有的连接都是有用的连接,不需要额外的控制手段。