HTTP的长连接与短连接

2020-09-02 17:36:22 云杰通信 99

HTTP的长连接与短连接

  你一定听说过关于http所谓的长连接和短连接之说。但是,什么是长连接?什么是短连接?

  什么是长连接?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协议了。

  长连接和短连接分别在什么场景下使用?

  长连接使用场景:长连接多用于频繁操作,多次请求的网络应答响应,而且是一对一,点对点的通信。 例如:数据库的连接用长连接,如果使用短连接频繁的应答响应会造成socket报错,同时也会浪费资源。

  短连接的使用场景:短连接怎不会那么耗费资源,因为不需要长时间占用TCP连接。因此,像Web网站中的http服务一般都是用的短连接。因为长连接会占用一定的资源,而像淘宝,京东等网站这样频繁的被用户访问,赶上双十一都是上亿规模的访问量,如果使用长连接,每个用户都占用一个TCP连接通道,那么服务器的压力可想而知。所以,这种情况下使用短连接效果比较好。