这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
本节课的知识要点:
- HTTP 协议的基本定义
- HTTP 协议分析
- HTTP 协议常见场景
- HTTP 协议实际应用以及更多了解
本节课的知识要点:
- HTTP协议是指超文本传输协议
- HTTP协议是应用层协议,是基于TCP协议
- TCP协议的特点:
1、面向连接
2、点对点(一对一)、
3、可靠交付
4、面向字节流(把上层协议传递过来的数据当成字节传输)
为了实现TCP上述的特点,TCP协议需要解决的事情是面向连接(建立连接和关闭连接的方式)、可靠传输(错误确认和重传)、流量控制(发送方和接收方的传输率协调)、拥塞控制四个方面
- HTTP协议的发展历程:
HTTP/0.9:单行协议,响应只有HTML文档
--> HTTP/1.0:构建可扩展性,增加了Header,有了状态码,支持多种文档类型
--> HTTP/1.1:标准化协议,链接复用,缓存,内容协商
--> HTTP/2:有了更优异的表现,二进制协议,压缩header,服务器推送
--> HTTP/3:草案
-
状态码
1xx:指示信息,表示请求已接收,继续处理 2xx:成功,表示请求已被成功接收、理解、接收 3xx:重定向,要完成请求必须进行更进一步的操作 4xx:客户端错误,请求有语法错误或请求无法实现 5xx:服务器端错误,服务器未能实现合法的请求
200 OK - 客户请求成功 301 - 资源(网页等)被永久转移到其它URL 302 - 临时跳转 401 Unauthorized - 请求未经授权 404 - 请求资源不存在,可能是输入了错误的URL 500 - 服务部内部发生了不可预期的错误 504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应
-
RESTful API
一种API设计风格;REST-Representational State Transfer
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
- 常用请求头
- 常用响应头
- 强缓存与协商缓存
- 应用场景案例:【今日头条】浏览器 今日头条 (toutiao.com)
- 实战 --- 浏览器/nodejs、常用库
- 扩展 --- WebSocket、QUIC
(1)WebSocket:
‣ 浏览器与服务器进行全双工通讯的网络技术
‣ 典型场景:对实时性有高要求,如聊天室
‣ URL 使用 ws:// 或 wss:// 等开头
(2)QUIC:Quick UDP Internet Connection
‣ O-RTT建联(首次建联除外)
‣ 类似TCP的可靠传输
‣ 类似TLS的加密传输,支持完美前向安全
‣ 用户空间的拥塞控制,最新的BBR算法
‣ 支持h2的基于流的多路复用,但没有TCP的HOL问题
‣ 前向纠错FEC
‣ 类似MPTCP的Connection migration
新年快乐!