【青训营】- HTTP || HTTPS

初识HTTP

什么是HTTP

HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)

  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态,每一个请求是孤立的

发展过程

发展.jpg

报文分析

⭐️HTTP协议组成:
- 起始行(start line):描述请求或响应的基本信息
- 头部字段(header):使用key-vaule形式更详细的说明报文
- 消息正文(entity):实际传输的数据,它不一定是纯文本
复制代码

HTTP协议规定每次发送的报文必须有Header,但可以没有body,而且在header和body中必须有一个空行。

图示大概是这样:

QQ截图20210825005849.jpg

每个报文的起始行都是由三个字符组成:

  • 方法(Method)
  • URL字段
  • HTTP版本字段

Method

method.jpg

⭐️Method根据特点重新分类:
Safe(安全的):不会修改服务器的数据方法
               GET HEAD OPTIONS
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe 的方法都是Idempotent的
                GET HEAD OPTIONS PUT DELETE
复制代码

?状态码

状态码能看出资源请求的结果,常见的状态码:

状态码.jpg

请求头(Header)

起始行和头部并为请求头或响应头
常用请求头:

请求头.jpg

常用响应头:

响应头.jpg

缓存

缓存分为强缓存和协商缓存:
缓存.jpg

浏览器查看更新缓存过程:
缓存2.jpg

cookie

cookie帮我们增强了一些跟状态相关的特性

Set-Cookie – response:
cookie一般以键值对存在,设置时要注意
cookie.jpg

?HTTP/2概述

HTTP/2引入二进制数据帧的概念,更快、更稳定、更简单

  • 帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
  • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息

– HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
– 流控制:组织发送方向接收方发送大量数据的机制
⭐️帧对数据进行顺序标识,浏览器收到数据后安装序列对数据进行合并,不会出现合并后数据错乱的情况,有了序列,服务器就可以并行数据传输

HTTP的优缺点

HTTP优点

  • 简单、灵活、易于扩展
  • 应用广泛、环境成熟
  • 无状态
    既是是优点也是缺点,因为服务器没有记忆功能,不需要额外的资源来记录状态信息,实现简单,减轻服务器负担,能把更多的CPU和内存用来对外提供服务

HTTP缺点

  • 无状态
    既然服务器没有记忆功能,无法支持需要连续多个步骤的实务操作。由此出现cookie技术

  • 明文不安全
    HTTP协议可以被监听和被窥探,无法判断双方身份,不能判断报文是否被更改过

HTTPS概述

?什么是HTTPS

  • HTTPS Hypertext Transfer Protocol Secure,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication)
  • 经过TSL/SSL加密

⭐️相当于:HTTP+SSL(TLS)=HTTPS

QQ截图20210825020241.jpg
HTTPS的一些特性:

  • 可靠性:加密
  • 完整性:MAC验证
  • 不可抵赖性:数字签名

?TSL/SSL

TSL是SSL的后续版本,用于在互联网两台计算机之间用于身份验证和加密的一种协议。位于会话层

加密

TSL在根本上使用使用对称加密非对称加密:

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

QQ截图20210825023308.jpg

完整性-MAC验证

MAC 的全称是message authentication code,它通过 MAC 算法从消息和密钥生成,MAC 值允许验证者(也拥有秘密密钥)检测到消息内容的任何更改,从而保护了消息的数据完整性

QQ截图20210825024157.jpg

不可抵赖性-数字签名

私钥(private key)——加密
公钥(public key)——解密
QQ截图20210825024432.jpg
数字签名在HTTPS中的工作:

QQ截图20210825025118.jpg

⭐️!当签名算法不够健壮,签名算法被暴力破解,中间人会攻击

?HTTPS到底做了什么?

HTTPS协议提供了三个关键的指标

  • 加密(ENCRYPTION)
    HTTPS通过对数据加密来使其免受窃听者对数据的监听
  • 数据一致性(Data integrity)
    数据在传输过程中不会被窃听者所修改,用户发送的数据会完整的发送到服务端
  • 身份验证(Authentication)
    可以确认对方真实身份,防止中间人攻击并建立用户信任

HTTP Strict-Transport-Security(HSTS)

将HTTP主动升级到HTTPS:

http-https.jpg

必须现有HTTPS才有HSTS!

最后

本学习笔记介绍了HTTP的发展过程和一些有关知识点,以及HTTPS的产生与一些特性。标记了一些重点部分。
如有错误,欢迎指正~!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享