了解HTTP | 青训营笔记

89 阅读5分钟

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

一、初识 HTTP

1.1 概念

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP协议,即超文本传输协议(Hypertext transfer protocol)。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议,所有的传输都是通过TCP/IP进行的。HTTP协议通常承载于TCP协议之上,有时也承载于TLSSSL协议层之上,这个时候,就成了我们常说的HTTPS

1.2 特点

HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

二、HTTP 协议分析

2.1 协议发展史

HTTP 协议发展主要经历下面几个阶段,最主要也是最常用的 HTTP 协议是 1.1 版本,该版本对 HTTP 进行了标准化规范

image.png

2.2 HTTP 报文分析

HTTP/1.1 以及更早的 HTTP 协议报文都是语义可读的。在 HTTP/2 中,这些报文被嵌入到了一个新的二进制结构,帧。帧允许实现很多优化,比如报文头部的压缩和复用。即使只有原始 HTTP 报文的一部分以 HTTP/2 发送出来,每条报文的语义依旧不变,客户端会重组原始 HTTP/1.1 请求。因此用 HTTP/1.1 格式来理解 HTTP/2 报文仍旧有效。

HTTP 报文类型分为两种 请求报文(Request) 响应报文(Response) 每种都有其特定的格式

请求报文举例:

image.png 请求由以下元素组成:

  • Method 请求方式
  • Path 请求资源路径
  • Version of the protocol HTTP 协议版本号
  • Headers 给服务端传递其它信息

响应报文举例

image.png

  • Version of the protocol HTTP 协议版本号
  • Status code 状态码,用于表明请求执行成功或失败
  • Status message 状态信息
  • Headers 与请求头类似

2.3 HTTP 状态码

image.png

HTTP 常见的状态码解释

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

2.4 RESTful API

RESTful API 是一种互联网软件架构的设计规范,设计指南,设计风格,设计原则(类似于web标准,并不是标准【规范,原则】)

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

常用 RESTful API

MethodDescription
GET请求一个指定资源的表示形式.使用GET的请求应该只被用于获取数据
POST用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
PUT用请求有效载荷替换目标资源的所有当前表示
DELETE删除指定的资源

三、简述 HTTPS 协议

3.1 初识 HTTPS

image.png

HTTPS (安全的HTTP)是 HTTP协议的加密版本。它通常使用 SSL 或者 TLS 来加密客户端和服务器之间所有的通信。这安全的链接允许客户端与服务器安全地交换敏感的数据,例如网上银行或者在线商城等涉及金钱的操作。

HTTPS 加密方式

对称加密︰加密和解密都是使用同一个密钥

对称加密即使用同一个密钥对数据进行加密解密,算法速度快,常用来加密大量内容(比如有两个人持续地进行聊天)。 image.png

非对称加密,加密和解密需要使用两个不同的密钥︰公钥(public key)和私钥(private key)

非对称加密即:解密和加密用不同的密钥。 使用非对称加密时用户拥有两个密钥:公钥和私钥。公钥进行对外公开,而私钥自己保存。使用公钥加密后的密文可以使用私钥来解密;反之使用私钥加密后的密文可以使用公钥来解密。 加密和解密的速度相对对称加密要慢一些。 image.png

总结

  • HTTP(Hyper Text Transfer Protocol)名叫超文本传输协议
  • 早期的 HTTP 只有 GET 请求,只用来获取一些简单的 HTML 页面
  • 在 HTTP 1.0 时代,在单一GET方式中增加了POST、HEAD命令、引入了请求头和响应头、增加了HTTP版本号、增加了响应状态码、引入Content-Type使传输不限于文本
  • 在 HTTP 1.1 时代,增加缓存管理,允许响应数据分块,允许长连接等,也是目前使用最广泛的
  • HTTP是一个基于TCP/IP协议来传递数据的协议
  • HTTPS由HTTP+SSL/TLS组成,通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密
  • HTTPS 具有对称加密与非对称加密两种加密方式,还要就是浏览器内置的CA公钥对证书进行验证