网络基础-应用层协议-HTTP/HTTPS

HTTP/HTTPS

  • HTTP
    • 基本概念
    • 协议格式
      • 请求报文
        • 请求方法
        • 请求资源地址
        • 协议版本
      • 应答报文
    • 常见Header
    • 常见状态码与状态描述
    • Cookie&Session
    • http协议特点
  • HTTPS
    • 基本概念
    • 对称加密与非对称加密
    • 数据摘要&数据指纹
    • HTTPS工作过程探究
      • 只采用对称加密
      • 只采用非对称加密
      • 双方都采用非对称加密
      • 对称加密+非对称加密
      • 中间人攻击
      • 证书/CA认证
        • 数据签名
        • CA认证过程
      • 最终方案
      • 使用最终方案的一些问题
        • 中间人篡改证书怎么办?
        • 中间人掉包整个证书怎么办?
        • 为什么使用数据签名?
        • 为什么不直接加密,而是对摘要加密?
        • HTTPS协议使用到的密钥

HTTP

基本概念

🚀超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
🚀HTTP协议默认使用的80号端口。
🚀什么是URL:

URL(Uniform Resource Locator)是指统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法,也被称为"网址"。

🚀URL中的encode与decode:

encode:
像/ ?# &等这种符号在url中有特殊的意义。如果某个参数中存在这些符号,就要对这些字符进行转义。转义规则:将字符转化为对应的16进制,然后从右往左取4位,每2位做一位,前面加上%->%AB%CD
decode:就是encode的逆过程

协议格式

请求报文

🚀请求报文主要分为四个部分:

  1. 请求行
  2. 请求头信息
  3. 空行(用于分割报头与有效载荷)
  4. 有效载荷

每一部分通过换行符分隔

🚀请求行的格式:请求方法 请求资源地址 协议版本

请求方法

其中请求方法包括GET/POST/PUT/DELETE等
GET:获取一个静态网页/也能用于提交参数
POST:创建新的资源/提交某种数据例如,登录注册都是用POST方法提交参数
PUT:用于更新服务器上的某种资源
DELETE:用于删除服务器上的某种资源

GET与POST的异同
相同点:二者都可以用于提交参数。
不同点:GET方法提交的参数是通过URL的方式,且提交的参数大小上限为1024字节。POST方法提交参数是放到报文的有效载荷中的,相比于GET方法POST提参的方式更加私密但是二者都是不安全的,至少要经过加密处理。

请求资源地址

请求资源地址:/a/b/c/d.html
本质就是Web服务器下的某种资源的路径,其中第一个/,并不是我们服务器的根目录,而是Web根目录。

协议版本

协议的版本通常为HTTP1.0或者HTTP1.1

应答报文

🚀应答报文主要分为四个部分

  1. 状态行
  2. 响应头信息
  3. 空行(由于报头与有效载荷分离)
  4. 有效载荷

每一部分通过换行符分隔

🚀状态行的格式:协议版本 状态码 状态描述

常见Header

🚀无论是请求头信息还是响应头信息,其格式都是采用Key:Value的形式进行组织的。
🚀下面展示一些常见的头信息字段:

Content-Type:正文数据类型(text/html…) — 根据需要进行查询即可
Content-Length:正文的长度
Host:ip地址+端口号 — 客户端告诉服务器,它所请求的是哪个主机的哪个端口
User-Agent:声明客户端的操作系统和浏览器版本
Location:通常与状态码3XX搭配使用,告诉客户端接下来去哪里访问
Cookie:将用户的信息告诉客户端,客户端将信息临时存储在本地,通常与Session搭配使用。
Set-Cookie:在响应报文中服务器设置Cookie信息返回给客户端
Etag:将请求资源的唯一标识返回给客户端

断点续传功能的实现
所谓断点续传就是客户端从服务器上下载某种资源时,由于网络出现问题导致下载终止,那么网络恢复时只需接上上次下载的位置继续下载即可,不用从头开始下载。
🚀实现逻辑:

服务器设置Etag字段,告诉客户端它请求资源的唯一标识
当遇到突发情况下载中断,然后恢复时,继续下载
客户端设置If-Range字段,内容就是下载资源的唯一标识
客户端还会设置Range字段,Range字段的格式:bytes=xxx-yyy/文件总大小
xxx和yyy:请求资源的开始字节位置和结束字节位置
服务器收到If-Range字段时,会去检查客户端传来的If-Range对应的value内容与其请求的资源的唯一标识是否一致,如果一致那么再读取其Range字段,知晓具体请求的部分,返回即可,并设置状态码206。

常见状态码与状态描述

1XX:信息性状态码:通常表示请求正在处理
2XX:成功状态码

200:OK 表示请求成功。
202:Accepted 服务器已经接收到请求但是尚未处理完成

3XX:重定向状态码

301:Moved Permanently:永久重定向表示请求的资源已经重新分配URL,以后使用资源现有的URL去访问
302:Found:表示资源分配了新的URL,希望客户端本次使用新的URL去访问
307:Temporary Redirect :与302相同都是临时重定向,下次客户端还是使用老的URL进行访问,但是302可能会使老的请求方法POST重定向为GET方法,但是307会禁止将POST方法重定向为GET方法。

4XX:客户端错误状态码

404:Not Found:表示请求的资源不存在
403:Forbidden:表示请求的资源被拒绝

5XX:服务器错误状态码:

500:Internal Server Error:表示请求时服务器内部发生错误

Cookie&Session

🚀Http本身是无状态的,但是用户希望有会话保持的功能。Cookie实现原理:用户在第一次访问服务器时,服务器会通过设置Set-Cookie字段的方式将用户的信息,返回给客户端,浏览器会将用户的信息进行本地保存(可能是内存,也可能是文件级),当再次访问服务器时,浏览器会在本地读取用户信息,将用户信息提交给服务器,免去了用户再次认证的工作。
🚀Cookie&Session:单纯使用Cookie的方式可能中途被黑客劫持信息的情况,那么黑客就能获取用户的账号密码等信息,如果用户的其他应用使用的也是同样的账号密码,那么造成用户的损失是较大的,进而产生了Cookie+Session的方式,用户在第一次访问服务器的时候,在服务器端会创建一个Session对象(用于存储用户信息)存储在服务器端(内存级或者是文件级),并且产生与Session对象一一对应的Sessionid,通过设置Set-Cookie字段将Sessionid返回给客户端,这样在客户端存储就是一个Sessionid并没有直接存储用户的信息。

http协议特点

1.Http协议是明文传送,是不安全的,后面的Https协议就是对Http协议进行加密处理
2.Http是无连接的:指的是只有当客户端请求时才会建立连接,请求完毕后就是释放连接。这样可以把资源尽快的释放出来,服务于其他客户端。Http及时的释放连接可以大大提高服务器的执行效率
3.Http是无状态的:Http协议本身是无状态的,即服务器不会保留与客户端交易时的任何状态信息,每一次请求都是独立的。这样能够减轻服务器的记忆负担,提高响应速度。

HTTPS

基本概念

🚀HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。

🚀HTTPS协议默认使用的是443端口。

对称加密与非对称加密

🚀对称加密:同一个密钥可以同时作用于信息的加密和解密。
🚀对称加密的特点:计算量小,速度快,效率高。常见算法:DES。

例如,客户端发送一个数字6,使用对称加密算法,加密后的密文为6^8,服务器得到这个密文后,用同样的密钥进行解密,6 ^ 8 ^ 8 = 6.通过异或来加密就是典型的对称加密。
🚀非对称加密:用两个密钥进行加密和解密:公钥和私钥。并且用公钥加密的密文只能用私钥来解密,反之通过私钥加密的数据只能通过公钥来解密。
🚀非对称加密的特点:算法强度复杂,加密速度没有对称加密速度快。常见算法:RSA

数据摘要&数据指纹

🚀数据摘要&数据指纹:原理就是通过单项的散列函数对数据进行运算,生成一段固定长度的数据摘要。但是这并不是一种加密机制,因为没有解密,但是可以用来判断一份数据有没有被篡改,一份数据中只要有一个字母被修改那么形成的数据摘要就有很大的差距。常见算法:MD5。

🚀数据摘要的应用场景举例:

1.账号的登录注册,用户的密码是存储在公司的数据库中的,但是一定不是明文保存,因为一旦数据库泄漏那么产生的影响较大,所以一般在公司数据库中存储的都是用户密码的数据摘要,当用户登陆时,通过对用户输入的密钥进行摘要然后与数据库中存储的数据进行对比。

2.百度网盘的秒传原理:用户在百度网盘上传一份资源后,这份资源会被存储在百度的某个数据库中,并且会给这份资源生成一份数据摘要。例如:用户1在百度网盘中上传了一部电影,用户2上传了一部与用户1同样的电影,百度网盘会先将用户2上传的电影做一次摘要,与数据库中已上传的资源做对比,如果相同证明数据库中已经存在这个数据了,直接建立一个软连接即可。

HTTPS工作过程探究

🚀既然HTTPS协议是对HTTP协议的改进,对数据进行了加密,下面来探究以下HTTPS工作过程。

只采用对称加密

🚀这总方式存在明显的安全漏洞:客户端与服务器如何做到使用同一个密钥?先通过发送一个报文告诉对方使用的密钥是什么?这种方式过于简单,一旦被报文被黑客劫持,那么加密就没有意义。

只采用非对称加密

🚀服务器产生一对密钥,将公钥发送给客户端,客户端以后发送的数据都要先通过公钥加密,这样只有服务器端才能够,对报文解密,同样服务器端发送的数据只有客户端才能解密。这种方式同样存在安全漏洞,无法保证服务器将密钥发送到客户端过程的安全性。

双方都采用非对称加密

🚀客户端与服务器都生成一对密钥,然后交换公钥,这样服务器发送的数据只有客户端能够解密,客户端发送的数据只有服务器能够解密。但是无法避免中间人攻击行为,且都才用对称加密的效率过低。

对称加密+非对称加密

🚀服务器端生成一对密钥,将公钥发送给客户端,客户端在本地生成对称加密密钥,将客户端生成的密钥通过服务器的公钥进行加密发送给服务器,以后双方都采用对称加密的方式进行加密通信,效率对比上一种方式有所提升,但是仍然无法避免中间人攻击的行为。

双方都采用非对称加密&对称加密+非对称加密-共同的弱点

两种方式都存在同样且致命的问题:客户端无法判断收到的公钥确实是来自服务器的,如果这个公钥是来自中间人的,那么这种加密方式就毫无意义。

中间人攻击

🚀以对称加密+非对称加密收到中间人攻击的过程:
🚀服务器生成一对密钥S/S’,服务器将S’密钥发送给客户端,但是不幸报文被黑客截获,这个黑客产生一对密钥R/R’,将R’公钥发送给客户端,这时客户端不能区分这个公钥是否来自于服务器,客户端会生成对称加密密钥,通过R’发送给服务器,实际上是发给了中间人,这时,中间人再生成一个对称加密密钥X,将X发送给服务器,这样这个中间人就夹在了客户端与服务器之间,既可以得到服务器发送给客户端的数据,也可以得到客户端发送给服务器的数据。

受到中间人攻击的本质:客户端无法辨认收到的公钥是否真正的来自服务器端。

在这里插入图片描述

证书/CA认证

数据签名

🚀数据签名是基于非对称加密,对数据摘要进行加密后的结果就叫做数据签名。
🚀CA证书签名形成过程:CA机构有自己的公钥和私钥,私钥是不对外公布的,CA机构的公钥在浏览器中是内置的,CA机构会对服务端申请的证书内容进行Hash运算得到的数据摘要通过CA机构的私钥进行加密,得到数据简明。

CA认证过程

🚀服务端在使用HTTPS协议之前要先向CA机构发送一份CSR文件,来申请证书,证书内容包括,签发机构,有效期,服务端使用的域名,公钥,等信息。证书还需要一个数据签名,数据签名=对证书内容进行摘要后使用CA机构的私钥进行加密后的结果。

最终方案

🚀客户端在访问服务器时,服务器会首先将证书发送给客户端,其中就包括服务端的公钥。
🚀客户端识别证书的过程:1.判断证书是否还在有效期内。2.判断证书的签发机构是否受信任(操作系统中已经内置了受信任的证书签发机构)3.对证书的数据签名使用CA机构的公钥解密得到证书内容的数据摘要,然后通过同样的Hash算法对本证书的内容做数据摘要,比对两份摘要是否一致。4.还要比对证书上的域名与之前访问的域名是否一致以防中间人掉包整个证书。

使用最终方案的一些问题

中间人篡改证书怎么办?

🚀1.篡改证书内容:客户端收到证书后,会对证书的内容做Hash得到数据摘要,与数据签名解密后的摘要做对比,如果篡改了证书内容,两个摘要就会匹配不成功的。
🚀2.篡改整个证书的内容:中间人将证书的内容修改后,并且对内容做一次摘要,并且对摘要做数据签名,发送给客户端。这样做客户端也是能察觉出来的,因为客户端使用的是CA机构的公钥对数据签名解密的,如果中间人篡改了证书的数据签名的话,是解密不成功的。

中间人掉包整个证书怎么办?

🚀首先中间人没有能力制造假的证书,因为浏览器都是使用的CA机构的公钥对数据签名做解密的,如果使用假的证书,浏览器会解密失败的。那么中间人就要申请真的CA证书,那么中间人就要向CA机构提供自己的各种信息,相信他也不会这么做,即使这么做了之后,同样会出现问题,浏览器识别到证书中的域名与自己想访问的域名不一致,也会识别证书失败的。

为什么使用数据签名?

🚀防止中间人改掉证书的内容,然后重新生成一份摘要。

为什么不直接加密,而是对摘要加密?

🚀缩小密文的长度,加速密文的加密和机密提高效率。

HTTPS协议使用到的密钥

🚀一共设计到三组密钥:1.CA机构的公钥和私钥。2.服务器端生成的一对非对称加密密钥。3.客户端生成的对称加密密钥。 最终服务器与客户端之间使用的是客户端生成的对称加密密钥进行通信的,前两个密钥都是为了保证这个对称加密密钥的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/134228.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT : 仿照QQ 完成弹出登录窗口,并实例化组件

1. 运行效果图 2. Headers #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow(); }; #endif // MAINWINDOW_H 3. mainWindow.cpp &#xff1a…

计算机竞赛 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…

初识Java 9-1 内部类

目录 创建内部类 到外部类的链接 使用.this和.new 内部类和向上转型 在方法和作用域中的内部类 匿名内部类 嵌套类 接口中的类 从多嵌套的内部类中访问外部人员 本笔记参考自&#xff1a; 《On Java 中文版》 定义在另一个类中的类称为内部类。利用内部类&#xff0c;…

C++qt day8

1.用代码实现简单的图形化界面&#xff08;并将工程文件注释&#xff09; 头文件 #ifndef MYWIDGET_H #define MYWIDGET_H //防止头文件冲突#include <QWidget> //父类的头文件class MyWidget : public QWidget //自定义自己的界面类&#xff0c;公共继承…

性能测试 —— Jmeter事务控制器

事务&#xff1a; 性能测试中&#xff0c;事务指的是从端到端&#xff0c;一个完整的操作过程&#xff0c;比如一次登录、一次 筛选条件查询&#xff0c;一次支付等&#xff1b;技术上讲&#xff1a;事务就是由1个或多个请求组成的 事务控制器 事务控制器类似简单控制器&…

页面静态化、Freemarker入门

页面静态化介绍 页面的访问量比较大时&#xff0c;就会对数据库造成了很大的访问压力&#xff0c;并且数据库中的数据变化频率并不高。 那需要通过什么方法为数据库减压并提高系统运行性能呢&#xff1f;答案就是页面静态化。页面静态化其实就是将原来的动态网页(例如通过ajax…

ES6中新增加的Proxy对象及其使用方式

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Proxy对象的基本概念Proxy对象的主要陷阱&#xff08;Traps&#xff09; ⭐ 使用Proxy对象⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来…

八、硬改之设备画像

系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…

听GPT 讲Istio源代码--istioctl

在 Istio 项目的 istioctl 目录中&#xff0c;有一些子目录&#xff0c;每个目录都有不同的作用和功能。以下是这些子目录的详细介绍&#xff1a; /pkg: pkg 目录包含了 istioctl 工具的核心代码和库。这些代码和库提供了与 Istio 控制平面交互的功能&#xff0c;例如获取和修改…

Linux 安装 cuda

【存在问题】 有时候Ubuntu它自己会自动更新&#xff0c;使得之前能用得torch都用不了了。 输入nvidia-smi时&#xff0c;报错如下&#xff1a; NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is…

PowerDesigner 逆向工程以及IDEA中UML插件

1、MySQL数据库连接&#xff08;JDBC方式&#xff09; 1.1 新建一个pdm&#xff0c;dbms选择mysql 1.2 Database - Connect 选择数据库连接 1.3 配置连接信息 数据库连接这里是通过一个配置文件来获取连接信息的&#xff0c;首次的话因为没有&#xff0c;所以我们需要选择…

什么是MQ消息队列及四大主流MQ的优缺点(个人网站复习搬运)

什么是&#xff2d;&#xff31;消息队列及四大主流&#xff2d;&#xff31;的优缺点 小程序要上一个限时活动模块&#xff0c;需要有延时队列&#xff0c;从网上了解到用RabbitMQ可以解决&#xff0c;就了解了下 MQ 并以此做记录。 一、为什么要用 MQ 核心就是解耦、异步和…

Zabbix监控部署项目

为什么选择Zabbix Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 面试常问 你用过哪些监控软件 zabbix …

Python用正则化Lasso、岭回归预测房价、随机森林交叉验证鸢尾花数据可视化2案例|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p33632 机器学习模型的表现不佳通常是由于过度拟合或欠拟合引起的&#xff0c;我们将重点关注客户经常遇到的过拟合情况&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 过度拟合是指学习的假设在训练数据上…

MySQL数据库upsert使用

本文翻译自&#xff1a;MySQL UPSERT - javatpoint&#xff0c;并附带自己的一些理解和使用经验. MySQL UPSERT UPSERT是数据库管理系统管理数据库的基本功能之一&#xff0c;它允许数据库操作语言在表中插入一条新的数据或更新已有的数据。UPSERT是一个原子操作&#xff0c;…

git 远程名称 远程分支 介绍

原文&#xff1a; 开发者社区> 越前君> 细读 Git | 让你弄懂 origin、HEAD、FETCH_HEAD 相关内容 读书笔记&#xff1a;担心大佬文章搬家&#xff0c;故整理此学习笔记 远程名称&#xff08;Remote Name&#xff09; Origin 1、 origin 只是远程仓库的一个名称&#xff…

浅谈C++|类的继承篇

引子&#xff1a; 继承是面向对象三大特性之一、有些类与类之间存在特殊的关系&#xff0c;例如下图中: 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少…

【Selenium】webdriver.ChromeOptions()官方文档参数

Google官方Chrome文档&#xff0c;在此记录一下 Chrome Flags for Tooling Many tools maintain a list of runtime flags for Chrome to configure the environment. This file is an attempt to document all chrome flags that are relevant to tools, automation, benchm…

竞赛 基于机器视觉的行人口罩佩戴检测

简介 2020新冠爆发以来&#xff0c;疫情牵动着全国人民的心&#xff0c;一线医护工作者在最前线抗击疫情的同时&#xff0c;我们也可以看到很多科技行业和人工智能领域的从业者&#xff0c;也在贡献着他们的力量。近些天来&#xff0c;旷视、商汤、海康、百度都多家科技公司研…

红外检漏技术

SF6气体绝缘设备发生泄漏后会造成运行开关闭锁、 内部绝缘击穿&#xff0c; 泄漏到空气中会造成环境污染&#xff0c; 并严重危害现场人员安全。 再加之SF6气体成本高&#xff0c; 频繁补气&#xff0c; 使维护成本增加&#xff0c; 造成经济损失。 红外检漏是依据SF6气体对红外…