当前位置: 首页 > news >正文

浅谈HTTP及HTTPS协议

1.什么是HTTP?

HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。

1.1常见应用场景

一.浏览器与服务器之间的交互。
二.手机和服务器之间通信。
三。多个服务器之间的通信。

2.HTTP请求详解

2.1请求报文格式

我们首先看一下协议格式图,再来详细描述各个部分。

在这里插入图片描述

2.2认识请求行

2.2.1认识方法

在HTTP中,常用的方法一般有两个:GET和POST。

GET方法用于获取资源
POST方法用于提交一些数据到服务器

GET方法和POST方法的区别?
1.语义不同,GET方法一般用于获取数据,POST数据一般用于输出数据。
2.GET的body(正文)一般为空,需要传递数据通过query string传递
【GET的URL长度无限制,如果有,也是浏览器或者应用程序规定的】
POST的query string一般为空,需要传递数据通过body传递。
3.GET请求一般是幂等的,POST请求一般不是幂等的
4.GET可以被缓存在本地,(下次访问时就无需联网,而直接从本地缓存获取)POST不可以
【这就是为什么联网时点开看过的手机图片断网后也可以加载出来,而没看过的就不可以】

2.2.2认识URL

URL其实就是统一资源定位符(俗称网址)
例如:https;//www.baidu.com就是一个URL,仅此而已。

2.2.3认识Version

请求行中的version就是指HTTP协议的版本号,用于标识客户端使用的HTTP协议版本。

2.3认识请求报头(header)

HOST:表示服务器主机的地址 和端口号
Content-Length:表示Body中数据长度,单位是字节(在空行后就读取多长)
Content-Type:表示Body中的数据长度
User-Agent(简称UA):表示浏览器/操作系统的属性
Referer:表示当前页面是从那个页面跳转来的

Cookie:它的作用是存储用户在此网站的一些数据,比如登录信息和操作记录,这样用户下次登陆时就不用重新输入账号密码之类的,每个网站都有自己的Cookie,各自之间不能访问。

2.4认识空行

空行就是将请求正文和以上内容分开,但是因为大多数请求都是使用GET方法的,而GET方法的正文一般为空,所以…当我们用抓包工具例如Fidder去看请求报文时,一般到报头就结束了

3.HTTP响应详解

3.1响应报文格式

在这里插入图片描述

3.2认识状态码

状态码;表示访问一个页面的结果。
常见状态码:
200 OK 表示访问成功
404 Not Found 表示没有找到资源【URL写错了】
403 Forbidden 表示无权访问,一般是企业内部网址

状态码总结;
1xx 信息行状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 需要进行附加操作以完成请求
4xx 客户端错误状态码 服务器无法处理请求
5xx 服务器错误状态码 服务器处理请求出错

3.3其余

和请求部分差不多,只不过正文部分不是空,是客户端请求的数据。

4.什么是HTTPS?

HTTPS跟HTTP差不多,只是在其基础上引入了一个“加密层”。HTTP虽然传输效率高,但是数据传输是采用明文形式的,随着互联网技术的发展,这种方式容易造成数据泄露,造成经济损失。

5.对称加密和非对称加密

那么HTTPS是如何给数据进行加密的呢?
有两种方式,分别是对称加密和非对称加密。

5.1对称加密

客户端生成一个密钥发给服务器,两方使用这个密钥对数据进行加密,进行数据传输。
对称加密是指数据加密和解密的密钥是相同的
优点: 数据传输效率高(当然跟明文传输比还差点)
缺点:一旦密钥被掌握,安全性这块也基本等于明文传输了

5.2非对称加密

客户端使用公钥加密数据变成密文,服务器使用私钥解密密文
公钥用来加密,私钥用来解密
优点:相对对称加密安全性高点
缺点:传输效率低下

如何加密数据?

是的,我们合二为一,具体思路为:
首先使用非对称加密的方式将密钥使用公钥加密发送给服务器,服务器使用私钥解密,拿到密钥,然后双方使用密钥来通信,具体如图:
在这里插入图片描述

6.中间人攻击

即使采用了合二为一法,看似天衣无缝,但其实黑客还是有办法去破解的(欸我草黑客怎么这么坏)。中间人攻击就是典型的方法之一
具体如图:
在这里插入图片描述
为什么会造成这种情况呢?

其实主要原因就是公钥这玩意不是客户端自带的,是在客户端向服务器发送连接请求后服务端发给客户端的(明文发送,很容易被截获),而服务器私钥也是根据发给客户端的公钥生成的。

那公钥加密一下不就好了?
这就扯成先有蛋还是先有鸡的问题了,那加密公钥的密钥怎么让服务端知道?服务端不知道怎么解密?

7.破局关键——证书!

问题的关键就在于关键的问题的关键,嗯…那么防止中间人攻击的关键就在于鉴别收到公钥的真假,如果鉴别到假公钥我就不传数据了,嗯…那么最终的解决办法就是把公钥放在证书里,然后传证书(证书由权威机构颁发)!

7.1简单介绍证书

证书长这样:
在这里插入图片描述
可以把它理解为一个结构化的字符串。

那么有没有可能黑客截获证书,将其中公钥修改成自己生成的公钥(欸我草黑客怎么这么坏),进行中间人攻击?
啊还真是有可能的,那么问题就变成了
如何验证证书有没有被修改?
权威机构将证书中所有信息生成一个字符串,然后进行运算(如MD5算法)得到一个值,这个值就是数据签名,客户端拿到证书首先将除签名外所有信息进行运算,算出来值与证书中的数据签名一样即可证明没有被修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。真的可以证明吗?有没有可能黑客根据算法去修改公钥,只要保证最后值不变就行了(欸我草黑客怎么这么坏!!!!)?可行吗?
还真可行!那么问题又变成了
如何验证证书中的数字签名有没有被修改?
那么我们就需要给数字签名加密,具体过程:权威机构用私钥给数字签名加密,公钥则由客户端自带,当客户端收到证书时,使用自带的公钥解密数字签名,再自己根据证书内容算一个数字签名,两者相同则表示数字签名没有被修改。至此,HTTPS数据传输安全就得到了保证。

8.小结

8.1HTTPS中涉及的三个密钥

1.正常通讯使用的密钥
2.用于保证发送密钥安全的非对称加密的公钥和私钥
3.证书机构和客户端使用的用于保证证书真伪的公钥和私钥

8.2HTTPS的通讯过程

1.三次握手
2.客户端发送连接请求
3.服务器发送证书,包含公钥
4.客户端使用自带私钥解密数字签名的值,并验证证书真伪
5.若证书为真则发送之后通讯用的密钥,用公钥加密
6.服务器用私钥解密获得密钥,发送响应,用密钥加密。

.

相关文章:

浅谈HTTP及HTTPS协议

1.什么是HTTP? HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…...

GTID的基本概念

1.1 GTID的基本概念 1.1.1 GTID的作用 GTID的全称为Global Transaction Identifier,是MySQL的一个强大的特性。MySQL会为每一个DML/DDL操作都增加一个唯一标记,叫作GTID(每个事务一个GTID)。这个标记在整个复制环境中都是唯一的…...

.NET Core MVC IHttpActionResult 设置Headers

最近碰到调用我的方法要求返回一个代码值,但是要求是不放在返回实体里,而是放在返回的Headers上 本来返回我是直接用 return Json(res) 这种封装的方法特别简单,但是没有发现设置headers的地方 查询过之后不得已换了个返回 //原来方式 //…...

数据结构与算法面试专题——桶排序

引入 桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 桶排序…...

深度学习奠基作 AlexNet 论文阅读笔记(2025.2.25)

文章目录 训练数据集数据预处理神经网络模型模型训练正则化技术模型性能其他补充 训练数据集 模型主要使用2010年和2012年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)提供的 ImageNet 的子集进行训练,这些子集包含120万张图像。最终&#xff…...

MongoDB 数据库简介

MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...

Transformer LLaMA

一、Transformer Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。 Transformer 架构摆脱了RNNs,完全依靠 Attention的优…...

【DeepSeek开源:会带来多大的影响】

DeepSeek 开源,震撼登场对云计算行业的冲击 巨头云厂商的新机遇 DeepSeek 开源后,为云计算行业带来了巨大的变革,尤其是为巨头云厂商创造了新的发展机遇。以阿里云为例,它作为云计算行业的领军者,与 DeepSeek 的合作…...

Redis7——基础篇(七)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...

边缘计算:通俗易懂的全方位解析

1. 什么是边缘计算? 边缘计算(Edge Computing)是一种数据处理方式,它将计算任务从云端或数据中心下放到更靠近数据源(边缘)的设备上。 通俗理解: 想象你住在一个偏远的村庄,而最近…...

Flink 中的滚动策略(Rolling Policy)

在 Apache Flink 中,滚动策略(Rolling Policy)是针对日志(或数据流)文件输出的一种管理策略,它决定了在日志文件的大小、时间或其他条件满足特定标准时,如何“滚动”生成新的日志文件。滚动策略…...

GPU和FPGA的区别

GPU(Graphics Processing Unit,图形处理器)和 FPGA(Field-Programmable Gate Array,现场可编程门阵列)不是同一种硬件。 我的理解是,虽然都可以用于并行计算,但是GPU是纯计算的硬件…...

网易云音乐分布式KV存储实践与演进

随着网易云音乐业务的快速发展,推荐和搜索场景对分布式KV存储的需求日益增长。本文将深入探讨网易云音乐在分布式KV存储方面的实践和演进,分析其技术选型、架构设计以及未来发展方向。 一、业务背景 网易云音乐的业务场景对分布式KV存储提出了高并发、…...

WordPress平台如何接入Deepseek,有效提升网站流量

深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...

【嵌入式】STM32内部NOR Flash磨损平衡与掉电保护总结

1. NOR Flash与NAND Flash 先deepseek看结论: 特性Nor FlashNAND Flash读取速度快(支持随机访问,直接执行代码)较慢(需按页顺序读取)写入/擦除速度慢(擦除需5秒,写入需逐字节操作&…...

什么是磁盘阵列(RAID)?如何提高磁盘阵列的性能

什么是磁盘阵列 ‌磁盘阵列(RAID)是一种将多个独立的硬盘组合成一个逻辑存储单元的技术,旨在提高数据存储的性能、容量、可靠性和冗余性‌。‌磁盘阵列通过将数据分割成多个区段并分别存储在不同的硬盘上,利用个别磁盘提供数据加…...

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki?架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...

k8s集群部署

集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型,差别主要在设备树和数据传输上,由于SPI是由4根线实现主从机的通信,在设备树上配置时需要对SPI进行设置。 原理图可知,数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…...

系统基础与管理(2025更新中)

‌一、Linux 核心架构与组件‌ ‌内核架构‌ ‌核心职责‌: 管理进程生命周期、内存分配、硬件驱动交互及文件系统操作。 模块化设计支持动态加载硬件驱动(如modprobe加载内核模块),提升灵活性和扩展性。 ‌内存管理‌&#xff1a…...

EtherNet/IP转DeviceNet协议网关详解

一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【Linux】Linux 系统默认的目录及作用说明

博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xf…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...