这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
1. 初识
什么是 HTTP?
Hyper Text Transfer Protocol,超文本传输协议。HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol (通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
一次完整 HTTP 请求过程
- 对 www.taobao.com 这个网址进行DNS域名解析,得到对应的IP地址(处理输入的信息)
- 根据这个IP,找到对应的服务器,发起TCP的三次握手
- 建立TCP连接后发起HTTP请求(发起请求)
- 服务器响应HTTP请求,浏览器得到html代码(读取响应)
- 浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)
- 浏览器对页面进行渲染呈现给用户(渲染、页面加载完成)
HTTP 的基本特点
- 应用层协议,基于TCP协议
- 分为请求 响应
- 简单无扩展
- 无状态
2. 协议分析
报文结构
HTTP 请求方法
| 序号 | 方法 | 描述 |
|---|---|---|
| 1 | GET | 请求指定的页面信息,并返回实体主体。 |
| 2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
| 3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
| 4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
| 5 | DELETE | 请求服务器删除指定的页面。 |
| 6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
| 7 | OPTIONS | 允许客户端查看服务器的性能。 |
| 8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
| 9 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
Safe(安全的):不会修改服务器的数据的方法 GET HEAD OPTIONS Idempotent(幂等):同种的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。GET HEAD OPTIONS PUT DELETE 所有的 Safe 方法都是 Idempotent 的
HTTP 状态码分类
| 分类 | 分类描述 |
|---|---|
| 1** | 信息,服务器收到请求,需要请求者继续执行操作 |
| 2** | 成功,操作被成功接收并处理 |
| 3** | 重定向,需要进一步的操作以完成请求 |
| 4** | 客户端错误,请求包含语法错误或无法完成请求 |
| 5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
发展历程
3. 常见场景
静态资源 登录
4. 实际应用
浏览器与 node 的使用
5. 了解更多
WebSocket
- 浏览器与服务器进行全双工通讯的网络技术
- 典型场景:实时性要求高,例如聊天室
- URL 使用 ws:// 或 wss:// 等开通
QUIC:Quick UDP Internet Connection
- 0-RTT 建联(首次建联除外)
- 类似 TCP 的可靠传输
- 类似 TLS 的加密传输,支持完美前向安全
- 用户空间的拥塞控制,最新的BBR算法
- 支持 h2 的基于流的多路复用,但没有 TCP 的HOL问题
- 前向纠错 FEC
- 类似 MPTCP 的 Connection migration