HTTP 协议
一个浏览器是如何工作的?
URL 从输入到显示的流程
简写:DNS -> HTTP/HTTPS -> 缓存 -> 回馈报文 -> 构建 DOM -> 计算 DOM 上的 CSS -> 回流和重绘
HTTP/HTTPS 协议
HTTP
基于 TCP 协议出现,在 TCP 协议上规定了 Request-Response 的模式,该模式决定了通讯必定是由浏览器端发起的。
HTTPS
流程:
- 客户端向服务端发送 SSL 请求
- 服务端接收到请求后,产生一对公钥和私钥,将公钥发给 CA,拿到数字证书
- 将携带公钥的数字证书发给客户端
- 客户端拿到公钥后,将对称加密的密钥用公钥加密后,发给服务端
- 服务端用私钥解密后拿到对称加密的密钥
- 就可以正常通信了
安全的原因
如果没有数字证书,服务端直接将公钥发给客户端,此时如果有中间人截获,把自己的公钥发给客户端,客户端拿到后将密钥加密,中间人拿到后用自己的私钥解密,拿到了密钥,然后用从服务端拿到的公钥加密后,发给服务端。此时就达成了中间人攻击。
HTTP Head
- Accept:浏览器接受的格式
- Accept-Encoding:浏览器接收的编码方式
- Accept-Language:浏览器接收的语言,用于判断多语言
- Connection:连接方式,如果是 keep-alive,且服务端支持,会复用连接
- ……
HTTP 1.x/2
HTTP/2 前身
谷歌推行的 SPDY
1.x 和 2 区别
- 服务端推送:能够将客户端发送第一个请求到服务端时,提前把一部分内容推送给客户端,放入缓存,可避免客户端请求顺序并行度不高导致的性能问题
- 多路复用:允许同时通过单一的 HTTP/2.0 连接发起多重的请求-响应,而 HTTP/1.1 当同一域名下请求超过一定数量限制,超过的会被阻塞
- 二进制分帧:在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层,在其中会将传输信息分割为更小的消息和帧
- 首部压缩:HPACK 算法
- 感谢你的欣赏!
赞赏名单
因为你的支持,我感受到写文章的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自HDi - 随便记