长连接、短连接

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包。

  • HTTP协议是无状态的

HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,也不能代表HTTP使用的是UDP协议(无连接)。无状态,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。

  • 长连接、短连接

在HTTP/1.0中,默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如图像文件、CSS文件等,当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
从 HTTP/1.1起,默认使用长连接,用以保持连接特性。
使用长连接的HTTP协议,在响应头有加入这行代码:Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

  • 长连接短连接操作过程
  1. 短连接的操作步骤是:

建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接

  • 长连接的操作步骤是:

建立连接——数据传输…(保持连接)…数据传输——关闭连接

  • 长连接和短连接的优点和缺点


    1)长连接可以省去较多建立连接和关闭连接的操作,比较节省资源和时间,但长连接如果一直存在的话,需要很多探测包的发送来维持这个连接;对服务器将是很大的负荷相对而言,
    2)短连接则不需要服务器承担太大负荷,只要存在的连接就都是有用连接,但如果客户端请求频繁,就会在TCP的建立连接和关闭连接上浪费较大的资源和时间

  • 什么时候用长连接,短连接?

长连接:长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,处理时直接发送数据包就好,不用建立 TCP 连接。(例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成 socket 错误,而且频繁的 socket 创建也是对资源的浪费。)

短连接:网站的 http 服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,像 WEB 网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,服务器负荷很大,并发量大,但每个用户无需频繁操作情况下需用短连接好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章