Open zonglang opened 5 years ago
掘金文章
HTTP的缺点:明文、无法校验来源、无法验证完整性 都存在安全私密问题: 来源 => 传输 => 内容 HTTPS = HTTP + SSL/TLS HTTP先跟SSL通信,再由SSL和tcp通信 不能保证不被窃听 => 加密 => 公开密钥加密(更安全) + 共享密钥加密(处理快) 不能保证来源可靠 => 认证 => 权威机构的证书 不能保证报文完整 => 摘要 =>
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的概念) 加密认证 向前纠错(解决不可靠)
TCP和UDP的比较 一文读懂HTTP2,HTTP3 MDN HTTP1.x
掘金文章
HTTPS
HTTP的缺点:明文、无法校验来源、无法验证完整性 都存在安全私密问题: 来源 => 传输 => 内容 HTTPS = HTTP + SSL/TLS HTTP先跟SSL通信,再由SSL和tcp通信 不能保证不被窃听 => 加密 => 公开密钥加密(更安全) + 共享密钥加密(处理快) 不能保证来源可靠 => 认证 => 权威机构的证书 不能保证报文完整 => 摘要 =>
HTTP的进阶史
TCP和UDP的比较 一文读懂HTTP2,HTTP3 MDN HTTP1.x