一、HTTP1.0和HTTP2.0的区别
-
HTTP/2采用二进制格式而非文本格式
-
HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
-
使用报头压缩,HTTP/2降低了开销 (消息发送端和消息接受端共同维护一份静态表和一份动态表(这两个合起来充当字典的角色), 每次请求时,发送方根据字典的内容以及一些特定指定,编码压缩消息头部, 接收方根据字典进行解码,并且根据指令来判断是否需要更新动态表)
-
HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
二、HTTP和HTTPS的区别
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 (https加密方式是:对称与非对称结合)
三、1.0和1.1的区别
1 HTTP1.0和HTTP1.1的区别 1.1 长连接(Persistent Connection) HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。
1.2 节约带宽 HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
1.3 HOST域 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。
1.4缓存处理 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-modified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
1.5错误通知的管理 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
四、HTTP3
HTTP/3 是一项新的开发标准,它将影响 Web 浏览器和服务器的通信方式,并显著提升用户体验,包括性能、可靠性和安全性。
HTTP/3是第三个主要版本的HTTP协议。 与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。
QUIC 的使用意味着 HTTP/3 依赖于用户数据报协议 (UDP),而不是传输控制协议(TCP)线浏览时的连接速度和用户体验更快。此变化主要为了解决HTTP/2中存在的队头阻塞问题。
QUIC 将帮助修复 HTTP/2 的一些重大缺点:
- 开发一种方法来解决当智能手机从 WiFi 切换到蜂窝数据时(例如离开家或办公室时)性能缓慢的问题
- 减少丢包的影响——当一个信息包没有到达目的地时,它不会再阻塞所有的信息流(称为“队头阻塞”的问题)
其他好处包括:
- 更快的连接建立: QUIC 允许 [TLS] 版本协商与加密和传输[握手]同时发生
- 零往返时间 (0-RTT): 对于它们已经连接的服务器,客户端可以跳过握手要求(互相确认和验证以确定它们将如何通信的过程)
- 更全面的加密: QUIC 的新握手方式将默认提供[加密],这是对 HTTP/2 的巨大升级,并将有助于减轻攻击的风险
默认加密
要求在传输层而不是在应用程序层进行加密对安全具有重要意义。这意味着连接将始终被加密。以前,在 HTTPS 中,加密和传输层连接是分开发生的。TCP 连接可以携带加密或未加密的数据,TCP 握手和 TLS 握手是不同的事件。但是,QUIC 默认在传输层设置加密连接——应用程序层数据将始终被加密。
QUIC 通过将两次握手合并为一个动作来实现这一点,从而减少延迟,因为应用程序在发送数据之前只需等待一次握手完成。它还加密有关每个连接的元数据,包括数据包编号和标头的其他一些部分,以帮助防止攻击者掌握有关用户行为的信息。HTTP/2 中不包含此功能。加密这些数据有助于防止攻击者掌握有关用户行为的可操作信息。
HTTP 对请求和响应的使用[明文]的传统做法对安全性有负面影响,因为任何监控通信的人都可以读取它们。默认加密将有助于让每个人都更安全并保护敏感数据。