HTTP实用指南(上)| 青训营笔记

104 阅读3分钟

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

👋本文分为2部分:1. 初识HTTP 2. 协议分析(报文解析/发展——HTTP/2、发展——HTTPS)

初识HTTP

😁 背景知识 | 概念 | 特点

🤔我们来想一个问题,当我们在地址栏里输入地址到页面内容呈现,这个过程发生了什么?

流程分析:

Snipaste_2022-08-01_10-02-31.png

而我们今天要讲的是与网络请求相关的那一部分(红色框框包裹起来的那一部分)

初识HTTP——什么是HTTP

  • Hyper Text Transfer Protocol超文本传输协议(所谓的超文本其实他能承载多种体裁)
  • 应用层协议,基于TCP协议

Snipaste_2022-08-01_10-10-00.png

  • 请求响应
  • 简单可扩展
  • 无状态(每个请求都是孤立的)

协议分析

😁 持续发展 | 报文解析

发展历程

Snipaste_2022-08-01_10-14-17.png

报文解析

👋HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。

结构(以HTTP/1.1为例)

Snipaste_2022-08-01_10-18-09.png

Method

Snipaste_2022-08-01_10-25-00.png
Method的特点: Safe(安全的):不会修改服务器的数据的方法(GET HEAD OPTIONS)
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的(GET HEAD OPTIONS PUT DELETE)

状态码

Snipaste_2022-08-01_10-55-43.png

RESTful API

RESTful API:一种APl设计风格;REST-Representational State Transfer
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”。 Snipaste_2022-08-01_10-59-52.png

常用请求头

Snipaste_2022-08-01_11-02-51.png

常用响应头

Snipaste_2022-08-01_11-03-00.png

👋接下来我们来结合具体的场景来了解一下请求头和响应头

场景一:缓存

缓存可以分为两类:强缓存和协商缓存
强缓存:需要的资源本地有的,就直接用就好了
协商缓存:本地有一段缓存,但要确定这段缓存能不能用、是不是最新的,就要跟服务端进行通信,彼此印证一下(有一段通信协商的过程)

Snipaste_2022-08-01_11-15-44.png

🤔跟缓存相关有这么多的请求头,在浏览器中这些请求头有什么优先顺序或者处理顺序的概念呢?

Snipaste_2022-08-01_11-15-58.png

场景二:cookie

很多情况下我们会借助cookie来携带一些用户身份相关的信息

Snipaste_2022-08-01_11-35-30.png

发展——HTTP/2

HTTP/2概述:更快、更稳定、更简单

基本概念

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

    • 帧的传输过程中是使用二进制编码的形式(效率更高)

Snipaste_2022-08-01_11-43-42.png

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

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

    • 交错发送,接收方重组织

Snipaste_2022-08-01_11-48-06.png

HTTP/2特性

  • HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制
  • 服务器推送

Snipaste_2022-08-01_11-53-14.png 服务器推送:我们在浏览器端请求了一个/page.html,在服务器端接收到了请求并返回/page.html给我们,但是服务器端分析了/page.html发现里面引用了/script.js和/style.css,它就很智能地分析出来我们大概率会请求这两个文件,为了加快效率,它就会提前把这两份文件POST给我们(服务器有着主动推送信息给我们接收端的能力)

发展——HTTPS

在HTTP的基础上经过一个数据加密的过程,使数据传输的过程中安全性更高

基本概述

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

Snipaste_2022-08-01_12-05-53.png