一、"http连接"的说法不准确
http 属于 网络层协议,实际上网络层协议只是发起请求和响应请求,解决路由寻址等问题,所以http连接这个说法应该是不准确的。
本质上的连接是传输层的TCP连接,所以长连接短链接是针对TCP连接而言的。TCP主要负责可靠地传输数据包,保证数据包顺序的发送和接收。
二、http1.0 , http1.1,http2 的TCP长短连接
http1/.0版本,默认使用TCP短链接,客户端每发起一次请求,就与服务器建立一次连接,本次任务结束,连接断开。
http /1.1版本,默认使用TCP长连接,connect-type: keep-alive,长连接不会一致存在,会有生存周期,在空闲一段时间后会失效,这个时间可以设置,beego里可设置idletimeout。并发时,一个客户端可与同一个域名产生多个长连接
http2 版本,一个客户端与一个域名只会产生一个长连接。
- 同域名下所有通信都在单个连接上完成。
- 单个连接可以承载任意数量的双向数据流。
- 数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
这一特性,性能会有极大的提升,因为:
- 同个域名只需要占用一个TCP连接,消除了因多个TCP连接而带来的延时和内存消耗。
- 单个连接上可以并行交错的请求和响应,之间互不干扰。
关于http2.0可查看