HTTP也有长短之分?HTTP的长连接 vs. 短连接
副标题[/!--empirenews.page--]
你一定听说过关于http所谓的 长连接和短连接之说。 但是,什么是长连接?什么是短连接,我想很多人都是懵懵懂懂的,不能完全说出他们的区别。今天就带你们完全了解他们,从此再也不会忘记了。 什么是长连接 HTTP长短连接的区别在于使用的TCP的长连接还是短连接。 在HTTP 1.0中默认使用的是短连接,而从HTTP 1.1 之后默认的连接都变为长连接。长短连接的区别?本质上是有TCP连接来决定的,为什么这么说呢?因为TCP是一个向双通道,他可以保持一段时间不关闭,这样就有了长连接和短连接的区别了。比方说:在数据的传输完成后,保持TCP连接不中断,等待相同域名再次请求时,继续使用这个TCP连接通道进行数据传输。这个就是长连接。 举个例子吧,比如你需要邮件一个东西给你的朋友,HTTP协议指的就是你需要填写的那个快递单,你寄件的时候填写的那个快递单的动作就相当于进行了一次HTTP请求。而你的快递需要通过交通运输工具来运送吧,可以是货车、货车、高铁、飞机等等。而TCP协议指的就是那个运送快递的运输工具。因为需要运输啊,就需要有道路啊,地上是公路或者铁路,天上是航线。那么这个运输道路就是TCP连接,因为这个道路是双向的,可以运过来也可以运过去。所以,TCP连接也叫作双向的数据通道。 如果这个道路长时间都有车来运送货物,那就叫作长连接。如果运送一段时间后,需要休整没有车经过了,那么就叫做短连接。 因此我们可以看出来,所谓的HTTP连接指的就是TCP的连接。TCP连接是可以保持一段时间不中断的就是长连接,发起一次请求后就主动断开的就是短连接,所以就有了长连接和短连接一说。 那么问题来了,怎么样的连接才能被称之为 ----长连接呢? 长连接的条件:
那么现在你是不是对keep-alive,很好奇啊。什么是Connection 设置为keep-alive 呢?接下来,我就带你们来揭开它神秘的面纱。 Keep-alive 又为何方神圣? 我们知道啊,HTTP协议采用的都是“请求-应答”模式,当Connection 为非keep-alive模式,则每一次的 请求-应答任务,服务器和客户端都需要重新建立一次连接。任务完成后,断开连接。而当Connection为keep-alive模式,会使服务器与客户端一直保持连接的状态。当再有新的请求任务发生时,就不需要重新建立。节约时间,也不用耗费资源。 非keep-alive: 有上面的图可以看出来: 短连接的步骤: 长连接的步骤: 接下来我们就聊一聊 长连接和短连接分别在什么场景下使用?
因为上面我们说到HTTP的连接实际上就是TCP的连接,那么在这里我们就不得不来详细说一下,TCP的连接有什么特色呢? TCP 连接 在网络应答请求时,客户端与服务器端之间必须建立一个连接,当网络请求完成之后,双方就不再需要这个连接时就可以将连接释放。 而这里采用的是TCP连接,TCP的协议里面的连接,依靠是“三次握手”,释放时依靠“四次分手”。 因此每一次的连接都是需要耗费资源和时间的。 1. TCP 的“三次握手”: TCP 的三次握手的示意图 详细解释:
(编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |