关于持久连接
HTTP/1.1允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。在事务处理结束之后仍然保持在打开状态的TCP连接被称为持久连接。持久连接会在不同事务之间保持打开状态,直到客户端或服务器决定将其关闭为止。
优点:重用已对目标服务器打开的空闲持久连接,可以避开缓慢的连接建立阶段,更快速地进行数据的传输。
缺点:管理不当可能会积累出大量的空闲连接,耗费本地客户端以及远程服务器上的资源。
非持久连接会在每个事务处理结束之后关闭。普通模式,即非Keep-Alive模式时,每个请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接(http为无连接的协议);
当使用Keep-Alive模式(又称为持久连接、连接重用)时,客户端到服务器的连接持续有效,之后又出现对服务器的请求时,避免了重新建立连接。
HTTP连接实际上就是TCP连接和一些使用连接的规则。
假设要访问 http://www.joes-hardware.com:80/power-tools.html,在浏览器中输入这个URL时,会执行下图中所示的步骤:
第(1)~(3)会将服务器的IP地址和端口号从URL中分离出来;
在第(4)步中建立到Web服务器的TCP连接,并在第(5)步通过这条连接发出一条请求报文,在第(6)步读取响应,并在第(7)步关闭连接。
套接字API允许用户创建TCP的端点数据结构,将这些端点与远程服务器的TCP端点进行连接,并对数据流进行读写。TCP API 隐藏了所有底层网络协议的握手细节,以及TCP数据流与IP分组之间的分段和重装细节。