HTTP 实用指南 | 青训营笔记

109 阅读3分钟

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

HTTP 实用指南

一、什么是HTTP

全称 Hyper Text Transfer Protocol,超文本传输协议。是基于TCP协议的应用层协议。

特点:

  • 请求 -> 响应
  • 简单可扩展
  • 无状态

从请求网址到页面显示,整个过程发生了什么?

image-20220804210710494

二、协议分析

1. HTTP的发展

image-20220804213201575

2. Method

image-20220804213325507

3. 状态码

image-20220804213540468

  • 200 OK-客户端请求成功。
  • 301 资源(网页等)被永久转移到其它URL。
  • 302 临时跳转。
  • 401 Unauthorized - 请求未经授权。
  • 404 请求资源不存在,可能是输入了错误的URL。
  • 500 服务器内部发生了不可预期的错误。
  • 504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应。

4. RESTful API

全称 Representational State Transfer,一种API设计风格

特点:

  • 每一个URI代表一种资源。
  • 客户端和服务器之间,传递这种资源的某种表现层。
  • 客户端通过HTTP method, 对服务器端资源进行操作,实现"表现层状态转化"。

image-20220804214212373

5. 常用请求头

image-20220804214239495

6. 常用响应头

image-20220804214307418

7. 缓存

流程图:

image-20220804214446936

属性:

image-20220804214521249

8. cookie

Set-Cookie - response

image-20220804214617018

9. HTTP/2

概述:更快、更稳定、更简单

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

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

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

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

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

image-20220805150659704

10. HTTPS

全称 Hypertext TransferProtocol Secure,安全超文本传输协议。

  • 经过TSL/SSL加密。
  • 对称加密:加密和解密都是使用同一个密钥。
  • 非对称加密:加密和解密需要使用两个不同的密钥,公钥(public key)和私钥( private key)。

image-20220805150950112

image-20220805151017226

三、场景实战

各种网络请求:

image-20220805151344830

image-20220805151411738

image-20220805151455627

image-20220805151509604

网络优化:

image-20220805151815815

image-20220805151911082

  • 预解析、预连接

image-20220805152005912

用户体验:

  • 重试是保证稳定的有效手段,但要防止加剧恶劣情况。
  • 缓存合理使用,作为最后一道防线。

image-20220805151658555

四、了解更多

1. WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 典型场景:实时性要求高,例如聊天室
  • URL使用Ws://或WSs://等开头

image-20220805152126313

2. QUIC:

全称Quick UDP Internet Connection,快速UDP互联网连接

  • 0-RTT建联(首次建联除外)。
  • 类似TCP的可靠传输。
  • 类似TLS的加密传输,支持完美前向安全。
  • 用户空间的拥塞控制,最新的BBR算法。
  • 支持h2的基于流的多路复用,但没有 TCP的HOL问题。
  • 前向纠错FEC。
  • 类似MPTCP的Connection migration。