http协议多版本差异
2023-05-10 22:12:45 1 举报
AI智能生成
http与https多版本间的差异
作者其他创作
大纲/内容
应⽤层协议HTTP版本差异
应⽤协议HTTP的从0到1核⼼内容
什么是http协议
超⽂本传送协议(Hypertext Transfer Protocol ),是Web联⽹的基础,也是⼿机PC联⽹常⽤的协议之⼀
建⽴在TCP协议之上的⼀种应⽤,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响
应
从建⽴连接到关闭连接的过程称为“⼀次连接”
HTTP经过 20 多年的演进出现过 0.9、1.0、1.1、2.0、3.0 五个主要版本
版本
子主题
快速掌握基础知识点
Http请求消息结构
请求⾏
请求⽅法
URL地址
协议名
请求头
报⽂头包含若⼲个属性 格式为“属性名:属性值”,
服务端据此获取客户端的基本信息
请求体
请求的参数,可以是json对象,也可以是前端表单⽣成的key=value&key=value的字符串
Http响应消息结构
响应⾏
报⽂协议及版本、状态码
响应头
报⽂头包含若⼲个属性 格式为“属性名:属性值”
响应正⽂
响应报⽂体,我们需要的内容,多种形式⽐如html、json、图⽚、视频⽂件等
响应码
1XX: 收到请求,需要请求者继续执⾏操作,⽐较少⽤
2XX: 请求成功,常⽤的 200
3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会⾃动跳转到⼀个新的URL地址,这个地址
可以从响应的Location⾸部中获取;
301
永久重定向
302
临时重定向
4XX: 客户端出错,请求包含语法错误或者⽆法完成请求
必须记住
400:请求报错
403:没权限访问
404:找不到页面或者接口
405:方法不允许Method not allowed
5XX: 服务端出错,服务器在处理请求的过程中发⽣了错误
500:服务器内部出错
503:服务器宕机
迭代历史/版本迭代讲解
HTTP/0.9
只⽀持 GET 请求⽅式,不⽀持其它
不⽀持请求头 Header,只⽀持HTML字符串
TCP连接特性
服务端相响应完成,⽴刻关闭 TCP 连接
HTTP/1.0
请求⽅式新增了 POST、HEAD 等多种⽅法
增加请求头和响应头,⽀持更丰富的内容,定制化更强(⼤部分⽬前使⽤)
拓展数据传输内容格式,⽀图⽚,⾳频,视频,⼆进制流等(⼤部分⽬前使⽤)
TCP连接特性
建⽴ TCP 连接不能复⽤,每个 TCP 连接只能发送⼀个请求,数据发送完毕连接就关闭
还要请求其他资源,须重新建⽴连接, 由于建⽴连接成本很⾼,性能不理想
HTTP/1.1 (⽬前使⽤最⼴泛)
⽀持更多请求⽅法,增加了PUT、PATCH、OPTIONS、DELETE 等请求⽅式;(⼤部分⽬前使⽤)
TCP连接特性
请求头新增 Connection 字段,设置 Keep-Alive 值保持连接不断开,即响应头加⼊这⾏代
码:Connection:keep-alive
Keep-Alive 不会永久保持连接,有⼀个保持时间,实现⻓连接需要客户端和服务端都⽀
持⻓连接
HTTP 协议的⻓连接和短连接,实质上是 TCP 协议的⻓连接和短连接。
TCP 连接默认不关闭,可以被多个请求复⽤,是此版本最重要的优化
同⼀个 TCP 连接中,客户端可以同时发送多个请求,提升了 HTTP 协议的传输效率
HTTP/2.0
多路复⽤,可以在单⼀的TCP连接上同时传输多个请求/响应消息,从⽽节省连接时间。
服务器推送,允许服务器主动推送资源给客户端,从⽽提⾼⽹⻚加载速度
Header压缩,使⽤HPACK压缩格式对头部进⾏压缩,从⽽减少请求/响应消息的体积。
之前每次发送都要带相同的 Header,冗余⽐较多,新版对头部信息进⾏增量更新,有效减少
了头部数据的传输
每个⽹⻚平均包含 100 多个 HTTP 请求,每个请求头平均有 300-500 字节,数据量达到⼏⼗
KB 以上
上述说的多个请求头之间通常⼏乎没有变化,但是过多重复的头导致性能下降
在 2版本的 HPACK 算法出现前,旧版使⽤HTTP的gzip 去压缩请求
HPACK算法简单说明
客户端和服务端共同维护⼀个 key-value 的数据存储结构
如果两端有发⽣变化时则更新传输,否则就不⽤重复传输
在⾸次全量传输,后续交互就是增量更新传输,更省空间
⽇常项⽬开发⾥⾯也很多采⽤的⽅案
HTTP/3.0
本质就是谷歌不满足http2.0的传输效率,从而开发了一款比2.0效率还高的传输协议
核心就是根据UDP基础上改造了一个具备TCP协议优点的新的协议
核心就是根据UDP基础上改造了一个具备TCP协议优点的新的协议
采⽤QUIC协议,Quick UDP Internet Connections 的缩写【快速 UDP 互联⽹连接,】可以更快的建⽴
连接,提⾼传输效率;
⾕歌不满⾜HTTP2,想继续提升 HTTP 的性能,基于 UDP 来开发新⼀代 HTTP 协议
采⽤ TCP和UDP的优点,在 UDP 基础上改造⼀个具备 TCP 协议优点的新协议
QUIC 直接把以往的 TCP的3次 和 TLS的 3握⼿,总共6 次交互合并成了 3 次,减少了交互次数
⽀持更多的头部字段,如X-Forwarded-For,X-Real-IP等;
⽀持更多的加密技术,如TLS 1.3,DTLS 1.2等;
⽀持更多的数据传输形式,如⽂件传输,流式传输,管道传输等;
建议:新技术都需要时间推移逐步推⼴
HTTP/2.0 和 HTTPS 协议的普及度都没有预想⾼
IPv4不够⽤,早就出现IPv6 ,但是现在依旧很少
各个版本http协议之间的一些异同点
子主题
如何让数据传输更安全HTTPS的⼯作原理
什么是HTTPS
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer安全超⽂本传输协议,是身披SSL外壳
的HTTP
主要由两部分组成:HTTP + SSL / TLS
HTTPS是⼀种通过计算机⽹络进⾏安全通信的传输协议,经由HTTP进⾏通信,利⽤SSL/TLS建⽴全信
道,加密数据包。
优缺点
优点
数据传输安全可靠
缺点
因为多了一层加密解密操作,需要额外消耗计算资源,以及页面解析时间
https 的工作流程:在http的基础上完成三次握手,然后再次进行SSL/TLS协议的三次握手
为什么要⽤呢
HTTPS 协议是由 SSL+HTTP 协议构建的可进⾏加密传输、身份认证的⽹络协议
要⽐ HTTP 协议安全,可防⽌数据在传输过程中被窃取、改变,确保数据的完整性
流程
Server端有⼀套权威机构颁布的数字证书(证书内容有公钥、证书颁发机构、失效⽇期等)
Client端发起 HTTPS 请求,连接到服务端的 443 端⼝。
Server端把⾃⼰的数字证书发送给Client端,公钥在证书⾥⾯,私钥由服务器⾃⼰存储
Client端收到数字证书验证证书的合法性。如果证书验证通过,⽣成⼀个随机的对称密钥,⽤证书的公
钥加密并发送给Server端
Server端接收到Client端发来的密⽂后,⽤⾃⼰的私钥进⾏⾮对称解密,解密之后就得到Client端的对称
加密的密钥
然后⽤Client端的对称加密的密钥对数据进⾏对称加密
Server端将加密后的密⽂返回到Client端
Client端收到后,⽤⾃⼰的对称密钥进⾏对称解密,得到服务器返回的数据
总结:客户端发送一次请求给服务端获取公钥,服务端返回公钥,客户端对公钥进行校验
假如公钥不对直接抛警告,公钥正确则生成一个随机key由公钥加密传给服务端解析,服务端解析完成
获取key返回响应内容通过key加密,key可以看成是secret 盐
假如公钥不对直接抛警告,公钥正确则生成一个随机key由公钥加密传给服务端解析,服务端解析完成
获取key返回响应内容通过key加密,key可以看成是secret 盐
说明
服务端的证书是由 CA (Certificate Authority,证书认证机构)颁布的,CA机构类似⽹络世界⾥的公安
部⻔
客户端内置 CA 对应的证书称为根证书,颁发者和使⽤者相同,⾃⼰为⾃⼰签名
客户端⾸先在本地电脑寻找是否有这个服务器证书上的ca机构的根证书
如果有继续下⼀步,如果没有弹出警告认为证书是⾮法的
客户端会内置信任CA的证书信息,包括CA的公钥,证书颁布验证过程也是使⽤⾮对称加密进⾏
HTTPS⾮对称加密只作⽤在证书验证阶段
内容传输的加密上使⽤的是对称加密
既保证了秘钥的安全性,⼜保证了后继数据传输的数据加解密的性能
简单说:秘钥交换使⽤⾮对称加密,内容传输使⽤对称加密的⽅式
0 条评论
下一页