关于http的keep-alive的一些实现细节

http的keep-alive主要就是http的连接复用,它是在tcp之上的,利用的是同一个tcp连接,我这里要说的是关于http的连接复用之中涉及到的客户端和服务端的一些细节问题,摘录了一些相关的文章。

tcp的连接识别我理解主要就是通过请求的ip+port,http的连接复用以及服务端的识别主要是靠的http提供的一些特殊的字段(这里提到的http是指的http2.0,因为http2.0才开始支持keep-alive)。同时还需要知道关于client和server对连接复用的开启(协商以及确认server是否支持)和关闭的控制问题(client还是server谁来控制的问题);以及在复用连接后分包请求时包的控制问题(通过content-length或者transfer-encoding:chunk来控制)

HTTP/2是一个二进制协议,其基于“帧”的结构设计,改进了很多HTTP/1.1痛点问题。下面列举一些改进之处:

多路复用的流(流: 存在于连接中的一个虚拟通道。HTTP/2连接上独立的、双向的帧序列交换。流ID(帧首部的6-9字节)用来标识帧所属的流
头部压缩
资源优先级和依赖设置
服务器推送
流量控制
重置消息

参考文章:HTTP/2协议“多路复用”实现原理Http系列(二) Http2中的多路复用;其他关于http的keep-alive的文章介绍1介绍2

基于以上的一些文章,我们主要需要弄清楚的就是http的keep-alive的实现方式,针对该实现中client和server都需要做一些什么事情,以及http的keep-alive和tcp的keepAlive的区别

猜你喜欢

转载自blog.csdn.net/jayxujia123/article/details/108028824
今日推荐