Http和Http2和Https 的特性总结

Http1.0 到Http2.0 的升级

场景: 浏览器访问网页,网页内有 5张图片。五个图片资源存在同一台服务器上。按照HTTP1.0的做法,这需要建立五个TCP连接,每个连接负责一个资源请求。创建一个TCP连接需要3次握手,而释放连接则需要4次挥手手。重复的创建和释放连接极大地影响了网络效率。

Http1.1 升级:
HTTP/1.1提出了Keep-Alive机制:当一个HTTP请求的数据传输结束后,TCP连接不立即释放,如果此时有新的HTTP请求,且其请求的Host通上次请求相同,则可以直接复用为释放的TCP连接,从而省去了TCP的释放和再次创建的开销,减少了网络延时。

Http1.x 到Http 2.0 升级

  • 报头压缩:HTTP/2使用HPACK压缩格式压缩请求和响应报头数据,减少不必要流量开销
  • 请求与响应复用:HTTP/2通过引入新的二进制分帧层实现了完整的请求和响应复用,客户端和服务器可以将HTTP消息分解为互不依赖的帧,然后交错发送,最后再在另一端将其重新组装
  • 数据流的优先级 。与流控制。

HTTP/2引入了三个新的概念

数据流:基于TCP连接之上的逻辑双向字节流,对应一个请求及其响应。客户端每发起一个请求就建立一个数据流,后续该请求及其响应的所有数据都通过该数据流传输
消息:一个请求或响应对应的一系列数据帧
帧:HTTP/2的最小数据切片单位

Http2 的多路复用机制

  • TCP 连接复用
  • 帧复用 ,相于一个对象池。

OkHttp 连接池

OKHttp 通过连接池来实现,KeepAlive 与 多路复用。

OkHttp内部通过ConnectionPool来管理连接池。

  • 连接实现,java.net.Socket
  • 重用机制
  • 清除机制使用 线程池,线程的工厂方法设置为 Daemon 线程
  • 清除机制使用的是 计数法加弱引用 。 空闲socket连接超过5个且 keepalive时间大于5分钟。就会清理掉idle 连接。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值