http
http的发展
- http/0.9时代 纯文本格式、‘get’、响应之后连接就断了
- http 1.0时代 增加head、post等新方法,增加响应状态码,引入头部,申请http版本号,引入content-Type
- http 1.1时代 新增连接管理,允许持久连接、新增缓存控制和管理,允许响应数据分块,有利传输大文件
- http 2时代 二进制协议,支持一个TCP连接发起多请求,利用hpack压缩头部,减少数据传输量,允许服务端主动推送数据
- http 3时代 quic协议实现自己的丢包重传和拥塞控制
http2.0的多路复用和http1.x中的长连接复用有啥区别?
为什么要头部压缩
- 减少多次请求,从而加快资源加载速度。http2.0可以维护一个字典,差量更新http头部,大大降低因头部传输产生的流量
http多路复用有多好
http的性能优化的关键并不在于高宽带,而是低延迟。
TCP连接会随时间进行自我调节,如果数据成功传输,会随着时间的推移提高传输的速度。这种被称为TCP慢启动
http/2通过让所有的数据流共用同一个连接,可以更加有效地使用TCP连接,让高宽带也能真正地服务于http的性能提升
http和https的区别
http协议的缺点
通信使用明文,内容可能被窃听
不验证通信方身份,有可能遭遇伪装
无法证明报文的完整性,有可能已遭篡改
https的好处
https时在http协议基础上加入加密处理和认证机制以及完整性保护,即http+加密+认证+完整性保护
https是具有安全性的ssl加密传输协议
http协议是运行在TCP之上,https运行在ssl/tls之上。
http网络端口80、https是443
https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议。
https的缺点
https是协议握手阶段比较费时,会使得页面加载时间延长近50%
https连接缓存不如http高效,会增加数据开销和功效
ssl证书需要钱,功能越强大的证书费用越高。
ssl证书通常需要绑定IP,不能在同一个IP上绑定多个域名。
https协议加密范围比较有限。
SSL与TLS的区别
SSL:(secure socket layer,安全套接字)位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。互相认证、使用数字签名确保完整性。
TLS:(transport layer security,传输层安全协议)用于两个应用程序之间提供保密性和数据完整性
TLS的主要目的是使得SSL更安全,并使协议的规范更精准和完善。
如何去优化https的速度
- hsts重定向技术:自动将http转化为https进行访问,省去301跳转的出现,缩短访问时间,阻止基于ssl strip的中间人攻击
- TLS握手优化:采用False Start技术,在TLS握手前,就开始发送请求数据。缩短数据传输时间
- Session Identifier(会话标识符)复用:利用会话的ID,减少握手的时间,减少交互时间
- 开启OSCP stapling,提升TLS握手效率:服务器模拟浏览器向CA发起请求,然后将带有CA机构签名的OCSP响应保存到本地,在发给客户端
- 完全向前加密PFS,保护用户数据,预防私钥泄露:长期使用的主密钥泄露不会导致过去的会话密钥泄露