以前的误解
HTTP连接经常被人提及,特别是长连接与短连接的概念。很多人认为HTTP协议分为长连接与短连接,而我们日常使用的HTTP1.1默认就是长连接。然而,这种理解实际上只对了一半。HTTP协议,作为应用层协议,实际上并没有长连接与短连接的概念。真正的长连接与短连接与TCP协议相关,TCP协议负责传输层的连接,可以保持一段时间不关闭,从而区分出真正的长连接与短连接。
HTTP请求与响应通过TCP连接传输,而HTTP本身只关注请求与响应。理解了这一点后,会发现“HTTP连接”这个词并不准确,HTTP协议与连接概念无关。类似地,FTP协议也是应用层协议,但并没有“FTP连接”的说法。
一个疑问
设置Connection为keep-alive是否就意味着把HTTP变为长连接?答案是这样的。HTTP1.1默认使用长连接,浏览器请求的HTTP头部通常包含Connection: keep-alive。但这并不意味着长连接适用于所有场景。长连接意味着连接可以被复用,以提高资源利用效率。对于频繁交互的应用场景,长连接确实有用。但对普通的Web应用如博客园或个人博客而言,长连接的使用场景可能并不明显。
理解长连接实际上是TCP连接之后,疑问变得清晰。长连接的复用机制与HTTP协议本身无关,而是通过TCP的特性实现的。HTTP请求与响应通过TCP连接传输,而长连接与短连接的概念是基于TCP。
长短轮询与长短连接的区别
长短轮询与长短连接的区别在于决定方式与实现方式。TCP连接是否为长连接,由HTTP的Connection Header决定,需要客户端与服务器两端都设置。而轮询方式是否为长轮询,取决于服务器的处理方式,与客户端无关。实现上,连接长短由协议规定,轮询的长短则由服务器编程实现。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。