|
|
51CTO旗下网站
|
|
移动端

HTTP也有长短之分?HTTP的长连接 vs. 短连接

你一定听说过关于http所谓的 长连接和短连接之说。但是,什么是长连接?什么是短连接,我想很多人都是懵懵懂懂的,不能完全说出他们的区别。今天就带你们完全了解他们,从此再也不会忘记了。

作者:老王谈运维来源:今日头条|2019-04-15 14:37

你一定听说过关于http所谓的 长连接和短连接之说。

但是,什么是长连接?什么是短连接,我想很多人都是懵懵懂懂的,不能完全说出他们的区别。今天就带你们完全了解他们,从此再也不会忘记了。

HTTP也有长短之分?HTTP的长连接vs短连接

什么是长连接

HTTP长短连接的区别在于使用的TCP的长连接还是短连接。

在HTTP 1.0中默认使用的是短连接,而从HTTP 1.1 之后默认的连接都变为长连接。长短连接的区别?本质上是有TCP连接来决定的,为什么这么说呢?因为TCP是一个向双通道,他可以保持一段时间不关闭,这样就有了长连接和短连接的区别了。比方说:在数据的传输完成后,保持TCP连接不中断,等待相同域名再次请求时,继续使用这个TCP连接通道进行数据传输。这个就是长连接。

举个例子吧,比如你需要邮件一个东西给你的朋友,HTTP协议指的就是你需要填写的那个快递单,你寄件的时候填写的那个快递单的动作就相当于进行了一次HTTP请求。而你的快递需要通过交通运输工具来运送吧,可以是货车、货车、高铁、飞机等等。而TCP协议指的就是那个运送快递的运输工具。因为需要运输啊,就需要有道路啊,地上是公路或者铁路,天上是航线。那么这个运输道路就是TCP连接,因为这个道路是双向的,可以运过来也可以运过去。所以,TCP连接也叫作双向的数据通道。

如果这个道路长时间都有车来运送货物,那就叫作长连接。如果运送一段时间后,需要休整没有车经过了,那么就叫做短连接。

因此我们可以看出来,所谓的HTTP连接指的就是TCP的连接。TCP连接是可以保持一段时间不中断的就是长连接,发起一次请求后就主动断开的就是短连接,所以就有了长连接和短连接一说。

那么问题来了,怎么样的连接才能被称之为 ----长连接呢?

长连接的条件:

  • 第一, 需要将HTTP 的头部,Connection设置为 keep-alive,但是这里有一个问题出现了,是不是只需要设置Connection 为 keep-alive就算是长连接了呢?这个问题很明显,当然不是的,你需要在服务器和客户端都要进行设置。
  • 第二, 我们日常生活中所用的HTTP请求是不是长连接呢?答案很明显,当然是的了。因为现在的HTTP使用的都是1.1协议了,你细心观察一下就会发现,它的Connection 都是设置为keep-alive.

那么现在你是不是对keep-alive,很好奇啊。什么是Connection 设置为keep-alive 呢?接下来,我就带你们来揭开它神秘的面纱。

Keep-alive 又为何方神圣?

我们知道啊,HTTP协议采用的都是“请求-应答”模式,当Connection 为非keep-alive模式,则每一次的 请求-应答任务,服务器和客户端都需要重新建立一次连接。任务完成后,断开连接。而当Connection为keep-alive模式,会使服务器与客户端一直保持连接的状态。当再有新的请求任务发生时,就不需要重新建立。节约时间,也不用耗费资源。

非keep-alive:

有上面的图可以看出来:

短连接的步骤:

HTTP也有长短之分?HTTP的长连接vs短连接

长连接的步骤:

HTTP也有长短之分?HTTP的长连接vs短连接

接下来我们就聊一聊 长连接和短连接分别在什么场景下使用?

  • 长连接使用场景:长连接多用于频繁操作,多次请求的网络应答响应,而且是一对一,点对点的通信。 例如:数据库的连接用长连接,如果使用短连接频繁的应答响应会造成socket报错,同时也会浪费资源。
  • 短连接的使用场景:短连接怎不会那么耗费资源,因为不需要长时间占用TCP连接。因此,像Web网站中的http服务一般都是用的短连接。因为长连接会占用一定的资源,而像淘宝,京东等网站这样频繁的被用户访问,赶上双十一都是上亿规模的访问量,如果使用长连接,每个用户都占用一个TCP连接通道,那么服务器的压力可想而知。所以,这种情况下 使用短连接效果比较好。

因为上面我们说到HTTP的连接实际上就是TCP的连接,那么在这里我们就不得不来详细说一下,TCP的连接有什么特色呢?

TCP 连接

在网络应答请求时,客户端与服务器端之间必须建立一个连接,当网络请求完成之后,双方就不再需要这个连接时就可以将连接释放。 而这里采用的是TCP连接,TCP的协议里面的连接,依靠是“三次握手”,释放时依靠“四次分手”。

因此每一次的连接都是需要耗费资源和时间的。

1. TCP 的“三次握手”:

TCP 的“三次握手”

TCP 的三次握手的示意图

详细解释:

  • 第一次握手:客户端想服务器发送一个SYN 标志位为1的包,以及初始序号X,包装在包的头的序列号字段里。
  • 第二次握手:服务器发回ACK(确认包),即将SYN和ACK标志位都命名为1,同时将序列号修改为X+1.
  • 第三次握手:客户端向服务器再次发送确认包(ACK),SYN标志位为0.ACK标志位为1.同时把服务器发过来的ACK包序列号字段+1.放在包中,发给服务器即ACK=Y+1

2. TCP 的“四次分手”:

因为TCP的断开需要发送四个包,因此被称之为 四次挥手。客户端或服务器端均可主动断开。在socket 编程中,任何一方执行close()操作即可产生分手操作。

HTTP 协议的长连接和短连接,实质上就是TCP协议的长连接和短连接。

短连接和长连接的工作原理是啥,有啥优势呢?

  • 短连接:client向server发送请求,server收到请求,双方建立连接。Client向server发送消息,server响应client.然后一次连接就完成了。此时,双方都可以发起close操作。
  • 短连接的优点:管理简单,发起的连接都是有效的连接。不需要额外的控制手段。
  • 长连接:client向server发送请求,server响应client的连接,双方建立连接。然后完成一次成功的响应请求,之后他们的连接不会主动关闭,后面的读写响应请求还会继续使用这个连接通道。

【编辑推荐】

  1. HTTP协议安全相关header详解
  2. OSI与TCP/IP你了解多少?带你走进通信世界的大门
  3. TCP/IP网络模型入门
  4. HTTP协议是如何实现“秘密交互”的?
  5. HTTP 2还没上手,HTTP 3已经箭在弦上
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+新用户注册送47元彩金

CentOS文件服务的最佳实战

CentOS文件服务的最佳实战

涨薪跳槽必备技能
共15章 | 追风蚂蚁

79人订阅学习

小白网工宝典

小白网工宝典

一次搞定思科华为
共15章 | 思科小牛

294人订阅学习

防火墙大佬修炼手册

防火墙大佬修炼手册

网工达人必备
共20章 | 捷哥CCIE

323人订阅学习

读 书 +新用户注册送47元彩金

黑客入侵的主动防御

本书是一本非常全面地讲述黑客入侵主动防御技术的网络安全工具书。本书的重点是介绍黑客的攻击手段和提供相应的主动防御保护措施,在组织结...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客

博聚网