• HTTP协议


    HTTP协议

    H T T P ,全称是 H y p e r T e x t T r a n s f e r P r o t o c o l HTTP,全称是 HyperText Transfer Protocol HTTP,全称是HyperTextTransferProtocol ,中文叫做超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议。

    url: 平常看见的网页就是URL。
    在这里插入图片描述

    urlencode和urldecode: 在url中一些特殊的字符不能显现出来,需要通过转义进行表达。

    HTTP请求与响应

    请求一般是客户端向服务端发送的,格式:

    1. 首行: [方法] + [url] + [版本]
      在这里插入图片描述

    2. H e a d e r Header Header : 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示 H e a d e r Header Header 部分结束

    3. B o d y Body Body : 空行后面的内容都是 B o d y Body Body . B o d y Body Body 允许为空字符串. 如果 B o d y Body Body 存在, 则在 H e a d e r Header Header 中会有一个 C o n t e n t − L e n g t h Content-Length ContentLength 属性来标识 B o d y Body Body 的长度;

    在这里插入图片描述

    响应一般是服务端给客户端发送的,格式:

    1. 首行: [版本号] + [状态码] + [状态码解释]

    在这里插入图片描述

    1. H e a d e r Header Header : 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示 H e a d e r Header Header 部分结束
    2. B o d y Body Body : 空行后面的内容都是 B o d y Body Body . B o d y Body Body 允许为空字符串. 如果 B o d y Body Body 存在, 则在 H e a d e r Header Header 中会有一个 C o n t e n t − L e n g t h Content-Length ContentLength 属性来标识 B o d y Body Body 的长度; 如果服务器返回了一个 h t m l html html 页面, 那么 h t m l html html 页面内容就是在 b o d y body body 中.

    在这里插入图片描述

    HTTP中常见的HEAD属性:常见HEAD属性

    HTTPS协议

    HTTP传输内容是按照文本的方式明文传输的,没有安全性极低,所以HTTPS就是对在HTTP的基础上对传输内容进行了加密。

    对称加密

    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

    特点: 算法公开、计算量小、加密速度快、加密效率高

    非对称加密

    公钥加密,也叫非对称(密钥)加密(public key encryption),指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。在公钥加密体制中,没有公开的是私钥,公开的是公钥。

    公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多.

    • 通过公钥对明文加密, 变成密文
    • 通过私钥对密文解密, 变成明文

    也可以反着用

    • 通过私钥对明文加密, 变成密文
    • 通过公钥对密文解密, 变成明文

    特点: 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

    MITM中间人攻击

    中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且当今仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

    所以需要先通过CA证书对收到的信息进行验证。

    HTTPS通讯流程

    所以一般的HTTPS通讯流程是:
    在这里插入图片描述

    总结
    HTTPS 工作过程中涉及到的密钥有三组:

    1. 第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在形成CSR文件与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器在客户端请求是,返回携带签名的证书. 客户端通过这个公钥进行证书验证, 保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。
    2. 第二组(非对称加密): 用于协商生成对称加密的密钥. 客户端用收到的CA证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.
    3. 第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.
  • 相关阅读:
    博客目录导读
    linux之运维性能命令
    人机与元宇宙
    07_用队列实现栈
    Python语言学习:Python语言学习之数据类型/变量/字符串/操作符/转义符的简介、案例应用之详细攻略
    201、RabbitMQ 之 Exchange 典型应用模型 之 工作队列(Work Queue)
    uboot源码分析(基于S5PV210)之启动第一阶段
    SpringBoot使用AOP记录接口操作日志
    京东商品如何同步主图到长主图
    股票复盘思路
  • 原文地址:https://blog.csdn.net/weixin_54202947/article/details/133811702