Http长连接和管线化及Http2.0

我好像上了个假的网络!

一、http长连接

HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;持久连接可以设置过期时间,也可以不设置。

1,同一个客户端可以使用这个长连接处理其他求情,避免http重新链接和断开所消耗的时间。

然后在请求头中设置Connection:keep-alive,为什么响应之后,还是断开了呢?原来connection字段只有服务端设置才有效。

Keep-Alive: timeout=60 连接建立之后,空闲时间超过60秒之后,就会失效
Connection:keep-alive 连接永久有效

二、管线化

管线化也可以理解为流水线。在长连接的基础上,将客户端的其他请求都交给这一个连接去处理(HTTP/1.0不支持)。

三、长连接和管线化的区别

长连接的一个缺点是请求和响应式是顺序执行的,只有在请求1的响应收到之后,才会发送请求2;而管线化不需要等待上一次请求得到响应就可以进行下一次请求。实现并行发送请求。

长连接:某个连接消息的传递类似于
请求1 -> 响应1 -> 请求2 -> 响应2

管线化:某个连接上的消息变成了类似这样
请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3

四、HTTP协议的keep-alive和TCP的keep-alive的差别

HTTP的keep-alive 是为了维持连接,以便复用连接,以减少tcp连接建立次数。

TCP的 keep-alive 是检测TCP连接状况的机制。当网络两端建立了TCP连接之后,空闲时,服务器就会向客户端发送侦测包,直到收到对方的回答(ack包),如果一直不回答,则会丢弃该TCP连接。TCP连接默认闲置时间是2小时,一般设置为30分钟足够了

五、Http2.0

Http2.0 同个域名并发请求,半双工变成全双工

  • 多路复用 :一次TCP握手,多个同域并行请求,请求和响应同时发送接受,然后再拼装组合,不阻塞;
  • 优先级和依赖性(Priority) :可以请求的时候告知服务器端,资源分配权重,优先加载重要资源;
  • 服务器推送(Server Push) :根据客户端需求,服务端主动推送资源,减少请求耗时;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值