[ HTTP | 青训营笔记]

65 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

1. 初识

什么是 HTTP?

Hyper Text Transfer Protocol,超文本传输协议。HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol (通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。

一次完整 HTTP 请求过程

  1. www.taobao.com 这个网址进行DNS域名解析,得到对应的IP地址(处理输入的信息)
  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手
  3. 建立TCP连接后发起HTTP请求(发起请求)
  4. 服务器响应HTTP请求,浏览器得到html代码(读取响应)
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)
  6. 浏览器对页面进行渲染呈现给用户(渲染、页面加载完成)

image.png

HTTP 的基本特点

  • 应用层协议,基于TCP协议
  • 分为请求 响应
  • 简单无扩展
  • 无状态

2. 协议分析

报文结构

HTTP 请求方法

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

Safe(安全的):不会修改服务器的数据的方法 GET HEAD OPTIONS Idempotent(幂等):同种的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。GET HEAD OPTIONS PUT DELETE 所有的 Safe 方法都是 Idempotent 的

HTTP 状态码分类

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

发展历程

image.png

3. 常见场景

静态资源 登录

4. 实际应用

浏览器与 node 的使用

5. 了解更多

WebSocket

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

QUIC:Quick UDP Internet Connection

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

image.png