HTTP指南 | 青训营笔记

98 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

初识HTTP

Hyper Text Transfer Protocol 超文本传输协议

应用层协议,基于TCP协议

请求 响应

简单可扩张

无状态

image.png

协议分析

协议分析-发展过程

HTTP/0.9 单行协议

请求GET/mypage.html

相应只有HTML文档

HTTP/1.0构建可扩展性

增加了Header

有了状态码

支持多种文件类型

HTTP/1.1 标准化协议

链接复用

缓存

内容协商

HTTP/2 更优异的表现

二进制协议

压缩header

服务器推送

帧:HTTP/2 通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。

消息:与逻辑请求或响应消息对应的完整的一系列的帧。

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

HTTP/2连接都是永久的,而且仅需要每个来源一个连接

流控制:组织发送方向接收方发送大量数据的机制。

image.png

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 - 网关或者代理的服务器无法在规定的时间内获得想要的响应

image.png

场景分析-静态资源

静态资源方案:缓存 + CDN + 文件名hash

CDN:Content Delivery Network

通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务

image.png

实战

AJAX之Fetch

XMLHttpRequest的升级版

使用Promise

模块化设计,Response,Request,Header对象

通过数据流处理对象,支持分块读取

image.png

标准库:HTTP/HTTPS

默认板块,无需安装其他依赖

功能有限/不是十分友好

image.png

常用的清求库:axios

支持浏览器、nodejs环境

丰富的拦截器

image.png

扩展-通信方式

WebSocket

浏览器与服务器进行全双工通讯的网络技术

典型场景:实时性要求高,例如聊天室

URL使用 ws:// 城 wss:// 等开头

image.png

QUIC: Quick UDP Internet Connection

O-RTT 建联(首次建联除外)

类仪TCP的可靠传输。

类似TLS的加密传输,支持完美前向安全。

用户空间的拥塞控制,最新的BBR算法

支持h2的基于流的多路复用,但没有TCP的HOL问题。

前向纠错FEC.

类似MPTCP的Connection migration。

image.png