01 初识HTTP
当我们在浏览器的地址栏输入一个字符串,一直到页面渲染出一部分东西,这一个过程发生了什么东西?
我们做一个简单的流程分析:用户输入字符串(如toutiao.com)——>browser进程处理输入信息——>交给浏览器发起请求的内核部分——>经过网络达到部署的服务器——>服务器响应后经由互联网把结果交给浏览器——>浏览器内核读取响应、渲染——>页面加载完成。
背景知识
TCP/IP四层网络模型:由上至下为应用层、传输层、网络层、数据链路层。HTTP协议即是在应用层的协议。
什么是HTTP 其基本特点
-
HTTP(Hyper Text Transfer Protocol)超文本传输协议,
-
是应用层协议,基于TCP协议
-
请求、响应
-
简单可扩展
-
无状态(每一个请求之间都是孤立的)
02 协议分析
发展历程
-
HTTP/0.9 单行协议
请求GET /mypage.html
响应只有HTML文档
-
HTTP/1.0 构建可扩展性
增加了Header
有了状态码
支持多种文档类型
-
HTTP/1.1 标准化协议
链接复用
缓存
内容协商
-
HTTP/2 更优异的表现
二进制协议
压缩header
服务器推送
-
HTTP/3 草案
报文结构
有一个起始行承载信息(例如Requests里面需要声明这次请求用的method方法,在Responses里面需要返回这次请求处理的结果,如状态码)
headers部分
empty line、body
Method
- GET请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据.
- POST用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT用请求有效载荷替换目标资源的所有当前表示
- DELETE删除指定的资源
- …
安全的方法:不会修改服务器数据的方法(GET HEAD OPTIONS)
状态码
- 200 OK 客户端请求成功
- 301资源(网页等)被永久转移到其它URL
- 302临时跳转
- 401 Unauthorized 请求未经授权
- 404 请求资源不存在,可能是输入了错误的URL
- 500 服务器内部发生了不可预期的错误
- 504 Gateway Timeout网关或者代理的服务器无法在规定的时间内获得想要的响应。
RESTful API
一种API设计风格
03 了解更多
通信方式 WebSocket
-
浏览器与服务器进行全双工通讯的网络技术
-
典型场景︰实时性要求高,例如聊天室
-
URL使用ws:1/或wss://等开头
QUIC Quick UDP Internet Connection
- 0-RTT建联(首次建联除外)。
- 类似TCP的可靠传输。
- 类似TLS的加密传输,支持完美前向安全。
- 用户空间的拥塞控制,最新的BBR算法。
- 支持h2的基于流的多路复用,但没有TCP的HOL问题。
- 前向纠错FEC。
- 类似MPTCP的Connection migration。