HTTP 和 HTTPS
一.HTTP
HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本(Hypertext)和其他资源的应用层协议。HTTP是Web中最常用的协议之一,它使得浏览器可以请求和显示网页,也允许服务器传送网页内容和其他资源给客户端浏览器。以下是HTTP的详细介绍:
-
HTTP的工作方式:
- 请求-响应模型:HTTP基于客户端-服务器模型工作。客户端(通常是Web浏览器)向服务器发送HTTP请求,服务器然后返回HTTP响应,其中包含所请求的数据。
-
HTTP的版本:
- HTTP/1.0:最早的HTTP版本,已经过时,不再广泛使用。
- HTTP/1.1:广泛使用的版本,支持持久连接,提高了性能。
- HTTP/2:引入了多路复用和头部压缩等性能优化特性。
- HTTP/3:基于UDP协议的新一代HTTP版本,旨在进一步提高性能和安全性。
-
URL(Uniform Resource Locator):HTTP使用URL来定位和标识要获取的资源。URL包括协议(例如http://)、主机名(服务器地址)、端口号(默认80)、路径和查询参数等组件。
-
HTTP请求:
- HTTP请求由请求行、请求头部、空行和请求体组成。
- 请求行包括请求方法(GET、POST、PUT等)、URL和HTTP协议版本。
- 请求头部包括一系列键值对,用于传递附加信息,如用户代理、Cookie、和其他自定义头部。
- 请求体通常用于POST请求,包含要发送给服务器的数据,如表单数据或JSON。
-
HTTP响应:
- HTTP响应由状态行、响应头部、空行和响应体组成。
- 状态行包括协议版本、状态码和状态消息。
- 响应头部包括服务器信息、响应时间、内容类型和其他元数据。
- 响应体包含实际的数据,如HTML文档、图像、JSON等。
-
HTTP状态码:
- HTTP状态码指示了请求的处理结果。常见状态码包括200(成功)、404(未找到)、500(服务器内部错误)等。
-
持久连接:
- HTTP/1.1引入了持久连接,允许在单个连接上发送多个HTTP请求和响应,提高了性能,减少了连接建立和断开的开销。
-
安全性:
- HTTP本身是不安全的,数据在传输过程中可以被拦截和窃取。为了提高安全性,应使用HTTPS(HTTP over SSL/TLS),它通过加密通信内容来保护数据的机密性和完整性。
-
Cookie和Session:
- HTTP通过Cookie和Session来跟踪用户的会话状态。Cookie是存储在客户端的小数据片段,而Session是存储在服务器上的会话信息。
HTTP是Web通信的基础,它使得客户端能够向服务器请求资源,包括HTML文档、图像、CSS样式表、JavaScript脚本等。同时,HTTP还支持不同的请求方法,允许客户端执行各种操作,例如获取资源、提交表单数据、上传文件等。随着Web的发展,HTTP的版本和特性也在不断演进,以适应现代Web应用的需求。
二.HTTPS和HTTP的区别
HTTPS和HTTP是两种不同的网络通信协议,它们之间存在以下几个主要区别:
-
安全性:HTTPS通过使用SSL或TLS协议对传输的数据进行加密,从而提供了更高的安全性。这意味着在传输过程中,HTTPS能够防止恶意第三方窃听、篡改和伪造数据。
-
数据完整性:由于HTTPS使用了加密算法,它还可以确保传输的数据在传输过程中没有被篡改。接收方可以使用证书验证数据的完整性,以确保数据的真实性和一致性。
-
认证机制:HTTPS还提供了认证机制,用于验证网站的真实身份。当用户访问一个使用HTTPS的网站时,浏览器会检查网站的SSL证书,并与受信任的证书颁发机构(CA)进行验证。这样可以确保用户正在与合法的网站建立连接,避免了中间人攻击的风险。
-
默认端口号:HTTP使用默认的端口号80,而HTTPS使用默认的端口号443。这样可以让服务器和客户端识别使用的是哪种协议。
总结起来,HTTPS相比HTTP提供了更高的安全性和数据完整性,并且具备认证机制,可以确保用户与网站之间的安全通信。因此,在涉及敏感信息的场景下,如网上银行、电子商务等,使用HTTPS是非常重要和必要的。
二.HTTPS的加密原理
HTTPS(Hypertext Transfer Protocol Secure)是一种用于安全传输数据的网络通信协议,它建立在HTTP之上,通过加密通信内容来保护数据的机密性和完整性。HTTPS的加密原理主要涉及以下几个关键技术和概念:
-
密钥交换协议:在HTTPS通信开始之前,客户端和服务器之间需要建立一个安全的通信渠道,这通常涉及到密钥交换。最常见的密钥交换协议是TLS(Transport Layer Security)或其前身SSL(Secure Sockets Layer)。TLS使用了不同的版本,如TLS 1.2和TLS 1.3,来提供不同级别的安全性。
-
非对称加密:一旦通信双方建立了安全连接,它们使用非对称加密算法来交换会话密钥。非对称加密使用一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密数据。在密钥交换阶段,服务器向客户端提供其公钥,客户端使用这个公钥来加密一个会话密钥,并将其发送给服务器。
-
会话密钥:一旦客户端和服务器都拥有了相同的会话密钥,它们就可以使用对称加密算法来加密和解密数据。对称加密算法使用相同的密钥进行加密和解密,因此速度更快,但密钥的分发通常更具挑战性。会话密钥是临时生成的,通常只在一次通信中使用。
-
数字证书:为了验证服务器的身份,客户端会请求服务器提供数字证书。数字证书包含了服务器的公钥以及一些关于服务器的信息,并由数字证书颁发机构(Certificate Authority,CA)签名。客户端会使用内置的CA根证书来验证服务器的数字证书的有效性。这确保了客户端连接到正确的服务器而不是恶意的中间人攻击者。
-
安全通信通道:一旦安全连接建立,客户端和服务器之间的通信将通过TLS或SSL进行加密和解密。这意味着即使第三方能够拦截通信,也无法轻松地解密其中的内容。
总的来说,HTTPS的加密原理依赖于密钥交换、非对称加密、对称加密和数字证书等技术,以确保数据在传输过程中的保密性和完整性,同时还提供了身份验证机制,确保客户端连接到合法的服务器。这些安全性措施帮助防止各种网络攻击,如中间人攻击和数据窃取。
相关文章:
HTTP 和 HTTPS
一.HTTP HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本(Hypertext)和其他资源的应用层协议。HTTP是Web中最常用的协议之一,它使得浏览器可以请求和显示网页,也允许服务器传送网页内容和其…...
linux使用stress命令进行压力测试cpu
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
创建vue3项目并引用elementui
1.创建vu3项目: vue3官网:简介 | Vue.js 执行命令 npm create vuelatest 2.终端会出现如下选项,不确定的直接enter键进入下一步; 3.然后再执行下方命令: cd <your-project-name> npm install4.安装依赖成功…...
《C++ Primer》第2章 变量(二)
参考资料: 《C Primer》第5版《C Primer 习题集》第5版 2.4 const限定符(P53) 由于 const 对象在创建后不能修改,所以其必须初始化。 const 对象的常量特征仅在执行改变该变量的操作时才会发生作用。 const 对象默认仅在文件…...
Vue3统一导出局部组件和全局组件
局部组件统一导出 components新增ComponentA.vue、ComponentB.vue两个组件 新增index.js进行组件统一导入 import ComponentA from ./ComponentA.vue import ComponentB from ./ComponentB.vueexport {ComponentA,ComponentB }使用 <template><ComponentA /><…...
【笔试强训选择题】Day36.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言一、Day…...
【软考】系统架构设计师 - 知识扩展 - “区块链技术“
目录 一 简介👑 1 比特币❤️ 2 区块链的特点❤️ 3 共识算法❤️ 二 练习题👑 三 扩展👑 1 哈希算法❤️ 2 哈希指针❤️ 3 UTXO❤️ 4 参考资料❤️ 一 简介👑 1 比特币❤️ 比特币底层采用了区块链技术。 比特币交易…...
Pytorch 分布式训练(DP/DDP)
概念 PyTorch是非常流行的深度学习框架,它在主流框架中对于灵活性和易用性的平衡最好。 分布式训练根据并行策略的不同,可以分为模型并行和数据并行。 模型并行 模型并行主要应用于模型相比显存来说更大,一块 GPU 无法加载的场景…...
替换滚珠螺杆需要了解哪些参数?
滚珠螺杆具有定位精度高、高寿命、低污染和可做高速正逆向的传动及变换传动等特性,因具上述特性,滚珠螺杆已成为近来精密科技产业及精密机械产业的定位及测量系统上的重要零组件之一。 众所周知,滚珠螺杆是可以替换的,不仅同品牌之…...
CentOS系统环境搭建(十九)——CentOS7安装chat GPT
centos系统环境搭建专栏🔗点击跳转 CentOS7安装chat GPT Welcome to the AI era! 基于上一篇文章CentOS系统环境搭建(十八)——CentOS7安装Docker20.10.12和docker compose v2,你已经安装了docker20以上的版本。那么࿰…...
【办公类-19-03】办公中的思考——Python批量制作word单元格照片和文字(小照片系列)
背景需求: 工会老师求助:如何在word里面插入4*8的框,我怎么也拉不到4*8大小(她用的是我WORD 文本框) 我一听,这又是要手动反复黏贴“文本框”“照片”“文字”的节奏哦 我问:你要做几个人&…...
【Spring】Spring Bean的4种依赖注入方式
文章目录 前言1. 构造方法注入2. set方法注入3. 自动装配4. 注解 前言 所谓依赖注入,其实就是给对象里的属性赋值,因为对象里有其他对象,因此就形成了依赖。Spring有4种方式来给属性赋值: 构造方法注入set方法注入自动装配注解 …...
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
目录 1 创建一个Overleaf项目 2 导入或创建 .bib 文件 2.1 导入 .bib 文件: 参考文献的 .bib文件获取步骤 (1)打开谷歌学术 (2)输入文献题目 (3)点击引用,然后选择BibTex格式…...
算法通关村第十八关:青铜挑战-回溯是怎么回事
青铜挑战-回溯是怎么回事 回溯,最重要的算法之一 主要解决一些暴力枚举也搞不定的问题,例如组合、分割、子集、排列、棋盘等 从性能角度来看回溯算法的效率并不高,但对于这些暴力都搞不定的算法能出结果就很好了,效率低点没关系…...
【Redis】深入探索 Redis 的数据类型 —— 字符串 string
文章目录 前言一、string 类型的操作命令设置和获取相关命令1. SET 和 GET2. MSET 和 MGET3. SETNX、SETEX、SETPX 计数相关命令1. INCR 和 INCRBY2. DECR 和 DECRBY3. INCRBYFLOAT 字符串操作相关命令1. APPEND2. GETRANGE3. SETRANGE4. STRLEN string 相关命令总结 二、strin…...
Linux操作命令笔记
Linux Linux的字母大小写下载和卸载软件更新查看空间使用情况当前目录所在的位置查看文件中的内容查看目录下的文件重启关机移动文件磁盘管理软件修改权限删除文件或文件夹新建文件夹移动一个文件夹文件重命名编译C和C文件VIM编辑器的相关操作 Linux的字母大小写 Linux的文件以…...
1.8 工程相关解析(各种文件,资源访问
目录 1.8 工程相关解析(各种文件,资源访问) 分类 Android 基础入门教程 本节引言: 1.工程项目结构解析: 1.res资源文件夹介绍: 2.如何去使用这些资源 2.深入了解三个文件: MainActivity.java: 布局…...
unity 前后左右 移动
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public float moveSpeed 5f; // 移动速度 public float rotateSpeed 180f; // 旋转速度 // Start is called before the firs…...
计算机视觉传统图像处理库opencv的使用
人工智能领域的图像处理分支,整理了计算机视觉传统图像处理库opencv的使用网址链接。 opencv使用范围,主要用在计算机视觉、视频分析、机器学习、医学影像处理、自动驾驶、工业检测、游戏开发上。 1):opencv效果视频 opencv10个应…...
【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate
目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法࿱…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
