这是我参与「第四届青训营 」笔记创作活动的第7天
初识HTTP
Hyper Text Transfer Protocol 超文本传输协议
应用层协议,基于TCP协议
请求 响应
简单可扩张
无状态
协议分析
协议分析-发展过程
HTTP/0.9 单行协议
请求GET/mypage.html
相应只有HTML文档
HTTP/1.0构建可扩展性
增加了Header
有了状态码
支持多种文件类型
HTTP/1.1 标准化协议
链接复用
缓存
内容协商
HTTP/2 更优异的表现
二进制协议
压缩header
服务器推送
帧:HTTP/2 通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
消息:与逻辑请求或响应消息对应的完整的一系列的帧。
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
HTTP/2连接都是永久的,而且仅需要每个来源一个连接
流控制:组织发送方向接收方发送大量数据的机制。
HTTPS概述
HTTPS: Hypertext Transfer Protocol Secure
经过TSL/SSL加密
对称加密:加密和解密都是使用同一个密钥
非对称加密。加密和解密需要使用两个不同的密钥:公钥 (public key) 和私钥 (private key)
协议分析-报文
200 OK - 客户端请求成功
301 - 资源等被永久转移到其他URL
302 - 临时跳转
401 Unauthorized - 请求未经授权
404 请求资源不存在 可能是加入了错误的URL
500 - 服务器内部发生了不可预期的错误
504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应
场景分析-静态资源
静态资源方案:缓存 + CDN + 文件名hash
CDN:Content Delivery Network
通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
实战
AJAX之Fetch
XMLHttpRequest的升级版
使用Promise
模块化设计,Response,Request,Header对象
通过数据流处理对象,支持分块读取
标准库:HTTP/HTTPS
默认板块,无需安装其他依赖
功能有限/不是十分友好
常用的清求库:axios
支持浏览器、nodejs环境
丰富的拦截器
扩展-通信方式
WebSocket
浏览器与服务器进行全双工通讯的网络技术
典型场景:实时性要求高,例如聊天室
URL使用 ws:// 城 wss:// 等开头
QUIC: Quick UDP Internet Connection
O-RTT 建联(首次建联除外)
类仪TCP的可靠传输。
类似TLS的加密传输,支持完美前向安全。
用户空间的拥塞控制,最新的BBR算法
支持h2的基于流的多路复用,但没有TCP的HOL问题。
前向纠错FEC.
类似MPTCP的Connection migration。