Http协议
Last updated
Was this helpful?
Last updated
Was this helpful?
早期:为了将超文本标记语言(HTML)文档从web服务器输出到客户端;
web2.0: 前端复杂化,HTML页面有了CSS,JAVASCRIPT丰富前端功能,又加入ajax与服务器进行资源交互;
移动互联网:这个时代网络情况更加复杂,需要对HTTP做更多的优化处理;
影响一个HTTP网络请求的因素有两个:带宽,延迟
带宽:主要受限于基础网络及客户段网络情况;
延迟:
浏览器阻塞:浏览器同源请求最大链接数限制(不同浏览器内核最大链接数不同),超过最大数请求被阻塞;
DNS解析:域名解析成对应IP叫DNS解析,知道IP才能请求服务,可以通过DNS缓存减少解析时间;
建立连接:HTTP基于TCP协议,TCP协议需要三次握手,一次完整的HTTP请求需要三次握手才真正建立连接,但是这就导致了多个情况必须每次都三次握手,这些连接无法复用,大量请求的情况下,延迟较大的情况下影响非常明显,能否服用连接可以是一个重要的优化点;
以上:延迟是影响HTTP请求的主要因素,也是HTTP发展可以优化的主要点。
缓存处理
带宽优化及网络连接使用
长连接
Host头处理
错误通知的管理
HTTPS需要到CA申请证书;
HTTPS建立在SSL/TLS之上,SSL/TLS运行在TCP之上;内容经过加密;
HTTP默认端口80,HTTPS默认端口443;
有效防止运营商数据劫持;
描述:google2012年提出的基于TCP的应用层协议:优化http1.x请求延迟,解决http1.x的安全性问题
降低延迟
请求优先级
header压缩
基于https加密协议传输
服务器推送
可以看成是基于spdy的升级版
HTTP2.0支持明文http请求,spdy是强制https请求
新的二进制格式:http1.x的解析基于文本,http2.0的解析基于二进制,实现方便且健壮
多路复用:连接共享,每个request对应一个id,一个连接可以有多个request,不同request可以混杂一起,接收方根据request的id不同再归属到不同的服务端请求中
请求头压缩:通讯双方各自cache一份header fields表,避免重复的header传输,又减少传输header的大小
服务器推送:同SPDY
HTTP2.0 消息头的压缩算法采用HPACK(),而非 SPDY 采用的DEFLATE:()