HTTP到HTTPS的发展及优化

news/2024/7/12 3:18:50 标签: http, https, 服务器
http://www.w3.org/2000/svg" style="display: none;">

HTTP到HTTPS的发展及优化

    • 一、HTTP/0.9
    • 二、HTTP/1.0
    • 三、HTTP/1.1
    • 四、HTTP/2
    • 五、HTTP/3
    • 六、未来可能的发展

一、HTTP/0.9

  1. 只有get请求;
  2. 服务器返回的格式只能是html格式;
  3. 服务器响应数据之后自动关闭连接;

总结:http/0.9只是一个草案,纯文本格式。这时候还不支持传输图片、文件等超文本,并且是短连接。

二、HTTP/1.0

  1. 图像、视频等文本信息都能传输 ;
  2. 新增了post、put等请求;
  3. 新增了http header,状态码,缓存等基本功能;
  4. 依旧是短连接;

总结:http/1.0是http正式发布的第一个版本,这时候就属于超文本传输协议。

三、HTTP/1.1

  1. 新增Keep-alive选项,可自定义长短连接;
  2. 新增了head、options、delete等请求方式;
  3. 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求
    出去,可以减少整体的响应时间;
  4. 允许响应数据分块(chunked),利于传输大文件;

总结:http1.1功能基本完善,接下来的版本主要考虑性能的优化;

在这里总结一下影响http/1.1性能的因素:

  1. 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。
  2. 发送冗长的首部。每次互相发送相同的首部造成的浪费较多 。
  3. 服务器是按请求的顺序响应的。尽管支持管道传输,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞
  4. 没有请求优先级控制;
  5. 请求只能从客户端开始,服务器只能被动响应。

四、HTTP/2

  1. HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的;
  2. 引入HPACK头部压缩机制,通信双方同时维护一张映射表,如果之前发送过这个头部,那么头部信息改为对应的键值发送出去;
  3. 头部信息和数据体改为二进制格式,有利于加快计算机的解析速度;
  4. 数据流形式发送信息;
    每个请求或回应的所有数据包,称为一个数据流( Stream );
    HTTP/2 的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应;
  5. 多路复用技术,HTTP/2 是可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应。解决了队头阻塞文题;
  6. 服务器能主动推送,静态资源能主动发给客户端,减少延时的等待;

总结:HTTP/2 主要的问题在于,多个 HTTP 请求在复用一个 TCP 连接,下层的 TCP 协议是不知道有多少个HTTP 请求的。所以一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来。

五、HTTP/3

  1. 加入QUIC协议。HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!UDP 发生是不管顺序,也不管丢包的,所以不会出现 HTTP/1.1 的队头阻塞 和 HTTP/2 的一个丢包全部重传问题。
  2. 头部压缩算法升级成了 QPack
  3. TLS升级成了最新的 1.3 版本
    总结:QUIC 是新协议,对于很多网络设备,根本不知道什么是 QUIC,只会当做 UDP,这样会出现新的问题。所以 HTTP/3 现在普及的进度非常的缓慢,不知道未来 UDP 是否能够逆袭 TCP。
    https://img-blog.csdnimg.cn/75f14b8b77964f8dbd45bbc59919c152.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN5aSn55qE56iL5bqP5ZGY,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />

六、未来可能的发展

#待完善


http://www.niftyadmin.cn/n/1371581.html

相关文章

C++普通继承、多继承、虚继承内存空间排布分析

C普通继承、多继承、虚继承内存空间排布分析一、普通继承二、多继承三、菱形继承四、虚继承1.部分虚继承2.完全虚继承总结一、普通继承 代码 class A { public:virtual void virtualfunA(){}virtual void virtualfunAA(){}void funA(){} public:int a; };class B : public A …

vue3 setup中 shallowReactive 和shallowRef

修改name和age时有效修改habbits中的new_hits和new_hits时无效 替换 可以替换

UDP的广播与组播代码实现+解析

UDP的广播与组播代码实现解析一、UDP广播1.流程图2.直接广播与受限广播3.代码实现3.1代码说明3.2服务器代码3.3客户端二、UDP组播1.基础知识2.代码实现服务器客户端一、UDP广播 1.流程图 说明:服务器发送数据报的时候源ip地址为广播地址,交换机解析到广…

vue3的一些改变

当你有一个子组件时 在里面添加click时候会默认他是emit发送的事件,你在那边接收,也就是一个自定义的事件,不会把他解析成一个onclick事件需要加.click.native才能被解析成原生事件 vue3中取消了native默认click就是原生事件,在…

HTTPS的安全性是如何保证的

HTTPS的安全性是如何保证的保证安全需要做到哪些点?1. 不能让第三方获取到明文消息1.1对称加密:指的就是加密和解密使用同一个秘钥1.2非对称加密:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密1.2.1公钥和私钥的…

前端面试题 v-if和v-show的区别

简单来说,v-if 的初始化较快,但切换代价高;v-show 初始化慢,但切换成本低 v-if是动态的向DOM树内添加或者删除DOM元素; v-show是通过设置DOM元素的display样式属性控制显隐;

计算机网络面试高频考点

计算机网络面试高频考点 1.TCP三次握手过程 ①首先握手过程是建立在被动方处于监听状态。 ②客户端发送syn报文并随机一个序列号发送给服务器,此时客户端为syn_send状态, ③服务器收到syn报文后,发送给客户端一个synack报文,并随…

面试题 理解防抖及实现input的防抖

策略是当事件被触发时,设定一个周期延迟执行动作,若期间又被触发,则重新设定周期,直到周期结束,执行动作。 这是debounce的基本思想,在后期又扩展了前缘debounce,即执行动作在前,然后…