Skip to content

Latest commit

 

History

History
196 lines (122 loc) · 13.1 KB

HTTP、HTTPS、HTTP2、HTTP3.md

File metadata and controls

196 lines (122 loc) · 13.1 KB

1、HTTP特点
2、HTTP1.0、HTTP1.1、HTTP2、HTTP3的区别

4、https连接建立过程
5、http 和 tcp 的区别
6、
7、


1、HTTP1.0:TCP协议(三次握手四次挥手)
HTTP协议是HyperText Transfer Protocol(超文本传输协议)的缩写
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

2、HTTP1.1:

3、HTTP/1.x的缺陷:
1、连接无法复用
2、Head-Of-Line Blocking(HOLB)
3、协议开销大
4、安全因素

HTTP特点:
1、无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
2、无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
3、基于请求和响应:基本的特性,由客户端发起请求,服务端响应
4、简单快速、灵活
5、通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

4、HTTPS:HTTP + SSL或TLS(TLS两次交换:非对称+对称)

HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

通过抓包可以看到数据不是明文传输,而且HTTPS有如下特点:
1、内容加密:采用混合加密技术,中间者无法直接查看明文内容
2、验证身份:通过证书认证客户端访问的是自己的服务器
3、保护数据完整性:防止传输的内容被中间人冒充或者篡改

运用与总结:
1、安全性考虑:
1、HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用
2、SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行

中间人攻击(MITM攻击)是指,黑客拦截并篡改网络中的通信数据。又分为被动MITM和主动MITM,被动MITM只窃取通信数据而不修改,而主动MITM不但能窃取数据,还会篡改通信数据。最常见的中间人攻击常常发生在公共wifi或者公共路由上。

2、成本考虑:
1、SSL证书需要购买申请,功能越强大的证书费用越高
2、SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用)。
3、根据ACM CoNEXT数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。
4、HTTPS连接缓存不如HTTP高效,流量成本高。
5、HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本。
6、HTTPS协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验。比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息等方面使用HTTPS。

5、HTTP2:SPDY协议
1、二进制传输:流、消息(多个帧)、帧
2、多路复用:同域名下所有通信都在单个连接上完成、单个连接可以承载任意数量的双向数据流、数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
3、Header 压缩:指的是header复用,header重复的不需要重复传送,只传送不重复的
4、Server Push:Server Push即服务端能通过push的方式将客户端需要的内容预先推送过去,也叫“cache push”。

6、HTTP3:QUIC协议
1、0-RTT
2、多路复用
3、加密认证的报文:包括报文头header
4、向前纠错机制:单个包的丢失

版本 产生时间 内容 发展现状
HTTP/0.9 1991年 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 没有作为正式的标准
HTTP/1.0 1996年 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 正式作为标准
HTTP/1.1 1997年 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 2015年前使用最广泛
HTTP/2 2015年 多路复用、服务器推送、头信息压缩、二进制协议等 逐渐覆盖市场
HTTP3 2018年 0-RTT、多路复用、加密认证报文、向前纠错机制等


1、HTTP协议

HTTP协议是HyperText Transfer Protocol(超文本传输协议)的缩写,它是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,例如TCP建立连接的3次握手和断开连接的4次挥手以及每次建立连接带来的RTT延迟时间。

2、HTTP/1.x的缺陷
1、连接无法复用:连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对大量小文件请求影响较大(没有达到最大窗口请求就被终止)。
HTTP/1.0传输数据时,每次都需要重新建立连接,增加延迟。
HTTP/1.1虽然加入keep-alive可以复用一部分连接,但域名分片等情况下仍然需要建立多个connection,耗费资源,给服务器带来性能压力。
2、Head-Of-Line Blocking(HOLB):导致带宽无法被充分利用,以及后续健康请求被阻塞。HOLB是指一系列包(package)因为第一个包被阻塞;当页面中需要请求很多资源的时候,HOLB(队头阻塞)会导致在达到最大请求数量时,剩余的资源需要等待其他资源请求完成后才能发起请求。
HTTP 1.0:下个请求必须在前一个请求返回后才能发出,request-response对按序发生。显然,如果某个请求长时间没有返回,那么接下来的请求就全部阻塞了。
HTTP 1.1:尝试使用 pipeling 来解决,即浏览器可以一次性发出多个请求(同个域名,同一条 TCP 链接)。但 pipeling 要求返回是按序的,那么前一个请求如果很耗时(比如处理大图片),那么后面的请求即使服务器已经处理完,仍会等待前面的请求处理完才开始按序返回。所以,pipeling 只部分解决了 HOLB。
3、协议开销大: HTTP1.x在使用时,header里携带的内容过大,在一定程度上增加了传输的成本,并且每次请求header基本不怎么变化,尤其在移动端增加用户流量。
4、安全因素:HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,这在一定程度上无法保证数据的安全性。

3、SPDY 协议(发音"speedy"),
降低延迟,压缩header等等,SPDY的实践证明了这些优化的效果,也最终带来HTTP/2的诞生。

4、HTTP/2 简介
HTTP/2由两个规范(Specification)组成:
1、Hypertext Transfer Protocol version 2 - RFC7540
2、HPACK - Header Compression for HTTP/2 - RFC7541

HTTP/2 新特性:
1.二进制传输:HTTP/2 将请求和响应数据分割为更小的帧,并且它们采用二进制编码。
2.多路复用:同个域名只需要占用一个 TCP 连接、并行交错地发送多个请求 和 响应、
3.Header 压缩:指的是header复用,header重复的不需要重复传送,只传送不重复的
4.Server Push:Server Push即服务端能通过push的方式将客户端需要的内容预先推送过去,也叫“cache push”。

HTTP的问题:
HTTP/2 使用了多路复用,一般来说同一域名下只需要使用一个 TCP 连接。但当这个连接中出现了丢包的情况,那就会导致 HTTP/2 的表现情况反倒不如 HTTP/1 了。

因为在出现丢包的情况下,整个 TCP 都要开始等待重传,也就导致了后面的所有数据都被阻塞了。但是对于 HTTP/1.1 来说,可以开启多个 TCP 连接,出现这种情况反到只会影响其中一个连接,剩余的 TCP 连接还可以正常传输数据。

5、HTTP/3 新特性
QUIC新功能:(Quick UDP Internet Connection)、(发音"quick")
1、0-RTT:1.传输层 0RTT 就能建立连接。2.加密层 0RTT 就能建立加密连接。
2、多路复用:一个连接上的多个stream之间没有依赖,比如下图中stream2丢了一个UDP包,不会影响后面跟着 Stream3 和 Stream4,不存在 TCP 队头阻塞。虽然stream2的那个包需要重新传,但是stream3、stream4的包无需等待,就可以发给用户。
3、加密认证的报文:包括报文头header
4、向前纠错机制:单个包的丢失

参考
http://www.sohu.com/a/299243519_115128
https://blog.csdn.net/xiaoming100001/article/details/81109617
https://www.oschina.net/translate/some-notes-about-http3
https://blog.csdn.net/netease_im/article/details/84307993


听到http https http2 http3,有些人可能会有些头大,这是啥,为啥要搞这么多版本。

任何一种技术的出现都是为了解决一定问题的,http就是为了解决文本传输的,但是万维网发明之后,需要将数据进行传输,于是http就承担了这个任务,这个基于tcp 协议的传输协议让我们可以看到现在的网页。

由于文本传输,http很容易被人窃听,于是人们就研究可不可以在传输的时候对数据进行加密,然后接收的时候在进行解密呢,经过数学算法的推到,对称加密算法出现,https 协议诞生,本质上它是在http 的基础上,对数据进行了加密。

http是文本传输,效率不高,占用了大量传输内容,并且无法双向通信,于是在谷歌人的研究下,http2诞生了,不过它也是基于tcp 的协议。它的出现提升了网络传输效率,现在很多网站都开始部分使用http2.

http2毕竟是基于tcp 的,虽然有多路复用技术,但是还会导致阻塞发生,于是谷歌人就发挥自己的聪明才智,将http 做到基于utp 协议上,于是http3诞生了,效率更好,丢失包也不会导致包阻塞,而且它采用64位uid 作为标识,不会导致我们切换网络时候因为ip的变化导致传输中断。

每一个技术都不是凭空产生的,它一定是为了解决某个或者某种问题才出现的。

科技改变生活,技术成就梦想。


http 和 tcp 的区别

tcp 是传输层协议,http是应用层协议,http在传输层就是使用的 tcp。


https连接建立过程

1、客户端发送请求到服务器端,发送客户端支持的加密协议和版本,SSL、TLS 2、服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在 3、客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端 4、服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端 5、客户端使用共享密钥解密数据 6、SSL加密建立… ———————————————— 版权声明:本文为CSDN博主「QQ_851228082」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wangjun5159/article/details/51510594

https://blog.csdn.net/wangjun5159/article/details/51510594 https://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html https://www.jianshu.com/p/d36e31f664ca https://wetest.qq.com/lab/view/110.html