-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
- HTTP请求的方法有哪些
- HTTP请求响应报文
- HTTP状态码
- HTTP缓存
- HTTP2.0
HTTPS
HTTP的缺点:明文、无法校验来源、无法验证完整性
都存在安全私密问题: 来源 => 传输 => 内容
HTTPS = HTTP + SSL/TLS
HTTP先跟SSL通信,再由SSL和tcp通信
不能保证不被窃听 => 加密 => 公开密钥加密(更安全) + 共享密钥加密(处理快)
不能保证来源可靠 => 认证 => 权威机构的证书
不能保证报文完整 => 摘要 =>
- 服务器 =公钥=> 权威机构
- 权威机构 =私钥加密生成数字证书=> 服务器
- 服务器 =数字证书=> 客户端
- 客户端内置权威机构公钥校验通过
- 客户端 =使用服务器公钥加密私钥=> 服务器
- 开始使用共享密钥通信
HTTP的进阶史
http1.x的缺陷
1. 连接无法复用
三次握手的延时已经慢启动对大量小文件影响比较大
1.0默认每次请求都需要重新建立连接
2.0采用keep-alive可以复用一部分连接,
但是域名分片的情况还是要建立多个连接
2. HOLB(Head-Of-Line Blocking)
1.0必须一个请求之后才能下一个请求
1.1使用流水线(pipeline),即同一域名,同一tcp中可以发送多个请求
但是返回的请求必须是按顺序的,所以前一个可能也会阻塞后一个
3. 协议开销大
header携带的内容过大,并且header基本上不怎么变化
4. 安全性
明文传输,客户端服务端无法验证对方身份
二进制分帧,多路复用(stream的概念),
实际上,http1.x的问题出现在了同步请求上,
http1.0的请求必须是一个接一个的同步请求,
有一种hack的方法就是域名分片(利用多个tcp进行异步)
http1.1从协议层次上进行了优化,加入流水线(pipeline),可以实现异步发送请求,但是响应还是同步的,并且不能设置优先级。
http2又从协议的层次上优化,利用二进制分帧,实现了并行交错的请求与响应,并且可以设置优先级。
对header进行处理,
客户端与服务端共同维护一个‘首部表’,指发送header的差异
server push,
服务器主动推送,遵守同源策略,客户端可以拒绝
http2是从http协议上进行优化,
而http3是从传输层上优化,基于UDP实现了QUIC协议
由于stream的概念还是在http层次,所以tcp一旦丢包,就得全部重传,
在udp的层次实现stream的概念
0-RTT(减少了TCP握手和TLS握手)(利用无连接的特性)
多路复用(实现stream的概念)
加密认证
向前纠错(解决不可靠)
Metadata
Metadata
Assignees
Labels
No labels