青训营课程(一)——http实用指南课堂学习笔记 | 青训营笔记

158 阅读3分钟

青训营打卡

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

1. 初始http

输入信息 -> 浏览器 -> 浏览器内核(发起请求给Internet网络,读取响应,渲染)-> 页面加载完成

当然这里有很复杂的dom树构建等,但是这里主要将浏览器内核与Internet的交互中的细节

这里经过了三个大体过程

  • browser进程
  • 浏览器内核
  • Internet网络server服务器

从输入到输出经历层面可以简化为:是从1到2到3到2到1的过程

什么是HTTP

这里是http的一些特点:

  • Hyper Text Transfer Protocol超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态(每一个请求之间是孤立的,与前后请求不相关)

2. 协议分析

发展历程

  1. HTTP/0.9:单行协议,请求只有GET/mypage.html,响应只有HTML文档
  2. HTTP/1.0:增加了Header,有了状态码,支持了更多语义,支持多种文档类型
  3. HTTP/1.1:标准化协议,最经典的协议。连接复用,缓存,内容协商
  4. HTTP/2:二进制协议,压缩header,服务器推送

协议分析

HTTP/1.1

vEpHWF.png

Method

vEpLQJ.png

safe(安全的):不会修改服务器数据的方法

ldempotent(幂等):同样的请求被执行一次和执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是ldepotent的

状态码

状态码的设置3位

1xx表示指示信息,表示请求已被接受,继续梳理

2xx成功,表示请求已被成功接收,理解(例如200 OK - 客户端请求成功)

3xx重定向,要完成请求必须进行更进一步的操作(301 - 资源、网页等被永久转移到其他URL,302 - 临时跳转)

4xx客户端错误,请求有语法错误或请求无法实现(404 - 请求资源不存在,可能是输入了错误的URL)

5xx服务器端错误,服务器未能实现合法的请求(504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应)

RESTful API

一种API设计风格

(1)每一个URI代表一种资源

(2)客户端和服务器之间,传递这种资源的某种表现层

(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”

vE9wpF.png

常用请求头

vE9B6J.png

常用响应头

vE9gk6.png

缓存

强缓存:内容有,直接用即可

协商缓存:内容有无需要和服务器协商沟通,然后再使用

image-20220802101832473

cookie

image-20220802102034421

HTTP/2

HTTP/2重要概念:

  • 帧(frame):HTTP/2 通信的最小单位,每个帧都包含帧头,至少也会

标识出当前帧所属的数据流。

  • 消息:与逻辑请求或响应信息对应的完整的一系列帧
  • 数据流:已建立的链接内的双向字节流,可以承载一条或多条消息
  • HTTP/2 链接都是永久的,而且仅需要每个来源一个链接
  • 流控制:组织发送方向接收方发送大量数据的机制

HTTPS

https是在http基础上进行了一个TSL/SSL加密

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

vEPzoq.png