HTTP实用指南笔记 | 青训营

78 阅读3分钟

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。