HTTP 1.1

对比 1.0,HTTP 1.1 主要区别主要体现在:

  • 缓存处理:在 HTTP 1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。

- 带宽优化及网络连接的使用:HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),避免带宽浪费。

- 错误通知管理:HTTP 1.1 新增了 24 个错误状态响应码,410(Gone)表示服务器上的某个资源被永久性的删除。

- Host 头处理:HTTP 1.1 的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

- 长连接:HTTP 1.1 支持长连接和请求的流水线理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive。

HTTP 2.0

Okhttp 支持配置使用 HTTP 2.0 协议,HTTP 2.0 相对于 Http1.x 来说提升是巨大的,主要有以下几点:

  • 二进制格式:http1.x 是文本协议,而 http2.0 是二进制以帧为基本单位,是一个二进制协议,一帧中除了包含数据外同时还包含该帧的标识:Stream Identifier,即标识了该帧属于哪个 request,使得网络传输变得十分灵活。

- 多路复用:多个请求共用一个 TCP 连接,多个请求可以同时在这个 TCP 连接上并发,一个request 对应一个 id。

- header 压缩:HTTP2.0 使用 encoder 来减少需要传输的 header 大小,通讯双方各自cache一份 header fields 表,避免了重复传输,流量消耗,提高效率。

- 支持服务端推送

https

HTTPS 的产生是为了解决 HTTP 的不安全性,它包括三个方面,机密性、完整性和身份验证。它在 HTTP 之下 TCP 之上加了一个 TLS 层。

http2

HTTP2 有三个核心概念,Strem 流、Message 消息、Frame 帧。

在一个 TCP 连接上可以有多个流,也就是并发多请求,实现多路复用;

以前浏览器是只能对一个域名开启 6 个并发链接;同时流还可以设置优先级,让服务器优先处理;一条流上可以有多个 Message 消息,每个 Message 都可以携带多个 Frame 帧,帧类型包括 HEADER 帧和 DATA 帧,也就对应于 HTTP/1.1 中的 header 和 data。在 HTTP/1.1 中,服务端是没法主动向客户端推送信息的,客户端只能以轮询的方式去请求,在 HTTP2 中有了服务器推送,也就是服务端可以提前将资源推送至浏览器缓存。

HTTP2 只在应用层解决了队头阻塞问题,并未在 TCP 层解决队头阻塞问题。

TCP 的报文传输时无序,接收时组装。如果队头包没有到达,即使后序数据包已经接收到了也是没办法交给上层应用程序处理的,只能等待重发。

http3

HTTP3 采用了 UDP,UDP 先天没有队列的概念,自然就解决了队头阻塞的问题,但是它仍然保留了 TCP 的可靠性,这也需要 QUIC 协议自己去实现重传机制、拥塞控制等机制。

https http2 http3的更多相关文章

  1. Nginx上部署HTTPS + HTTP2

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so ...

  2. http & https & http2.0

    一.http状态码 1xx(信息性状态码,接受的请求正在处理) 2xx(成功状态码,请求正常处理完毕)200 OK204 No Content:请求成功但没有资源返回206 Partial Conte ...

  3. caddy server 默认https && http2的验证

    1. 下载     https://caddyserver.com/   注意选择应该包含的模块,此次包含了git 插件   2. 配置    使用 Caddyfile    内容如下:     ro ...

  4. 网站通信协议升级到HTTPS&HTTP2

    为何要升级到HTTPS和HTTP2? http://baijiahao.baidu.com/s?id=1602041305989767011&wfr=spider&for=pc htt ...

  5. Http缓存知识;HTTPS, HTTP2相关知识;百度统计和即时线上客服。

    安装 : 百度统计 来统计用户流量, Intercom 来做即时线上客服. 这两个是 JavaScript 插件放在 HTML 上的. HTTP缓存: https://developers.googl ...

  6. HTTP,HTTPS,HTTP2笔记

    HTTP 网络协议分层 应用层 -> HTTP FTP 为应用软件提供了很多服务 构建于TCP协议之上 屏蔽网络传输的相关细节 传输层 -> TCP UDP 向用户提供可靠的端对端的服务( ...

  7. wireshark 调试 https/http2和grpc流量

    本文浏览器以 Chrom 为例 平常需要抓包的场景比较少,记录一下防止下次忘记配置 1. 解析 TLS 在本地创建用于保存 ssl logfile 的文件(文件可以存放到任意位置), 并添加到环境变量 ...

  8. 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)

    简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...

  9. HTTP协议图文简述--HTTP/HTTPS/HTTP2

    01.准备 1.1.先了解下网络模型/TCP HTTP 连接是建立在 TCP* 协议之上的,其数据传输功能是由TCP完成的,那TCP又是什么呢? TCP 是一个单纯用来建立通信连接,并传输数据的基础协 ...

  10. http协议之报文详解

    一. 概述 用于HTTP协议交互的信息被称为HTTP报文.请求端(客户端)的http报文叫做请求报文,响应端的叫做响应报文. 报文,是网络中交换和传输的数据单元,即站点一次性要发送的数据块.报文包含了 ...

随机推荐

  1. mysql中innodb创建表的一些限制

    1. 背景 在新创建mysql数据表的时候.不太确定表能创建多少个字段,多少个索引.索引多少有限制么?mysql的数据是怎么存储的存在在哪里. 2.基本个数限制 在MySQL5.6.9以后的版本,一个 ...

  2. [.Net]使用Soa库+Abp搭建微服务项目框架(一):Abp与DDD相关知识回顾

    ​ 在企业中大型项目中,随着业务的不断拓展,项目发展到一定程度,需要寻求项目的各模块解耦,独立成为微服务.如何实现呢? 首先我们先来简单回顾一下Abp框架怎样实现(DDD)领域驱动设计的,Abp框架的 ...

  3. PowerShell alias - cmd中设置别名 快捷的执行命令

    Step. 1: 发现需求 最近学nest.js发现,都是用命令创建工程文件,然后教程里面都是用的快捷命令 比如 pd = pnpm run dev pb = pnpm run build 但是我这里 ...

  4. Rabbit算法:轻量高效的加密利器

    Rabbit算法起源: Rabbit算法是由Martin Boesgaard和Mette Vesterager提出的一种流密码算法,其设计初衷是为了提供高性能和高度安全性的加密方案.Rabbit算法结 ...

  5. KETTLE4个工作中有用的复杂实例--2、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)

    附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~ kettle实战第一讲-文件和数据库表的互相转换处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili kettle实战第二讲-数据库单 ...

  6. 【stars-one】B站视频下载通

    一键下载B站的普通视频.番剧.电影的小工具 获取软件 由于软件还未完善,目前打赏价定位5.88元,后面软件完善价格会提高 >>>点击跳转打赏页面 目前Android版还在开发中 电脑 ...

  7. java list转set用法

    参考:https://blog.csdn.net/kye055947/article/details/80561633 之前一直被这两list转set,set转list所烦恼,今天整理了下两者之间怎么 ...

  8. [模板]01trie,维护异或最大值

    // 查询异或最大值,每次插入和查询时间都是log(C) template<class T> class trie01 { vector<vector<T>> tr ...

  9. 说说你对vue的mixin的理解,有什么应用场景?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.mixin是什么 Mixin是面向对象程序设计语言中的类,提供了方法的实现.其他类可以访问mixin类的方法而不必成为其子类 Mixi ...

  10. c# WPF制作百度网盘资源搜索工具

    界面如下 1.搜索中 2.搜索成功 源码地址:https://github.com/BruceQiu1996/BaiduDiskSearcher 希望有用的学到的或者对此感兴趣的可以给一个star,谢 ...