网络编程:HTTP:长短链接
Posted mbf330
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程:HTTP:长短链接相关的知识,希望对你有一定的参考价值。
长短链接
文章名字虽然叫HTTP:长短链接,但HTTP本身是无状态,无连接的,长短连接属于通信细节,由传输层TCP协议负责建立。
HTTP分为长连接和短连接,其实本质上是TCP连接。TCP连接是一个双向的通道,它可以保持一段时间不关闭,因此TCP连接才有真正的长连接和短连接的说法。
- 在互联网发展早期,一个网页中只包含文本,甚至没有图片,在传输数据时使用短链接便足够,但如今在一个网页中包含多种“元素“,如:文本,图片,视频,音频,各种链接等等;使用短链接效率大大不足支持数据的传输。
- 现如今我们平时用的基本上都是长连接。
短链接
- 长短连接的长短指的是时间的长短。
短连接只保持在数据传输过程(请求发起,连接建立,数据返回,连接关闭)。它适用于一些实时数据请求。短连接的流程就是:建立连接->发送数据->断开连接。一次发送之后立即断开连接。
短连接的优点是,存在的连接都是有用的连接,管理起来比较简单。
- 但是如果网页有很多资源,如果建立一次连接只传输一个资源,建立连接的时间便大大增加,影响传输效率。这是便需要长链接来解决该问题。
长链接
- 长链接主要解决传输中的效率问题
长连接建立后,在请求关闭连接前客户端与服务端一直保持连接,实质是保持这个通信管道,之后便可以对其进行复用。
长连接并不是永久连接的。如果一段时间内(header内可设置超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。即长时间没有响应,超时会自动断开。
它适用于涉及消息推送,请求频繁的场景(比如一个网页有很多资源)。连接建立后,在该连接下的所有请求都可以重用这个长连接管道,避免了频繁了连接请求,提升了效率。
长连接的优点是,不用重复建立连接关闭连接,但随着客户端连接越来越多,服务端的压力也会越大。
长链接如何建立
keep-alive
在在HTTP进行request(请求)时,会像服务器发送请求报文,在报文的Header部分,Connection代表支持的链接属性,keep-alive代表支持长链接。
长链接的可靠性
数据乱序问题
- 属于通信细节,由TCP协议负责解决。
在HTTP进行request(请求)时,因为请求是并行发送,因此可能造成数据乱序问题,但是在服务器进行response(响应)时,会将乱序的request进行校正,会以正确的顺序进行response。
以上是关于网络编程:HTTP:长短链接的主要内容,如果未能解决你的问题,请参考以下文章