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

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS

HTTP协议概述
  • HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式
    • 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。
    • 基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。
    • 请求-响应模型:客户端发起请求,服务器返回响应。
HTTP协议工作方式
  1. 建立TCP连接:客户端与服务器通过三次握手建立TCP连接。
  2. 发送HTTP请求:客户端构造HTTP请求报文并发送。
  3. 服务器处理请求:服务器解析请求,执行逻辑,生成响应。
  4. 返回HTTP响应:服务器构造响应报文并返回。
  5. 关闭TCP连接:默认HTTP/1.1使用持久连接(Connection: keep-alive),可复用连接。
    在这里插入图片描述
HTTP报文格式
  • HTTP报文分为请求报文应答报文,均由起始行首部字段空行实体主体(可选)组成

  • HTTP request

    GET /index.html HTTP/1.1		//起始行:方法+URL+协议版本
    Host: www.example.com			//首部字段:客户端、请求参数
    User-Agent: Mozilla/5.0
    Content-Type: application/x-www-form-urlencodedusername=admin&password=123		//实体主体:get、post等方法携带的参数
    
  • HTTP response

    HTTP/1.1 200 OK				//起始行:协议版本+状态码
    Content-Type: text/html		//首部字段:服务器信息、响应参数等
    Content-Length: 1234
    Set-Cookie: sessionid=abc123<html>...</html>			//实体主体:返回的数据HTML/json等
    
HTTP请求方法(函数体)
  • get(安全,幂等,url可见):获取资源
  • post(不安全,不幂等):提交数据,参数在请求体中(表单)
  • put(幂等,不安全):更新资源
  • delete(幂等,不安全):删除资源
    在这里插入图片描述
HTTP状态码
  1. 1XX:信息类状态码,100继续发送请求体
  2. 2XX:成功状态码,200请求成功
  3. 3XX:重定向状态码,301/302资源永久重定向
  4. 4XX:客户端错误,401未授权须身份验证;403服务器拒绝请求(权限不足);404资源不存在(隐藏资源),
  5. 5XX:服务器错误,500服务器内部错误
HTTP历史演变
  1. HTTP/1.1:支持持久连接,管道化
  2. HTTP/2.0:二进制分帧,多路复用,首部压缩
  3. HTTP/3.0:基于UDP的QUIC协议,减少延迟
HTTPS(安全通信)
  1. HTTPS通信特性:
    • 数据机密性:防止数据传输过程中被窃听
    • 数据完整性:防止数据在传输过程中被篡改
    • 身份验证:确认服务器(及客户端)身份真实性,避免中间人攻击,依赖数字证书和CA(证书颁发机构)
    • 不可否认性:通过数字签名实现行为可回溯
  2. 对称加密与非对称加密:
    1. 对称加密(如AES、ChaCha20)
      • 特点:加密与解密使用同一密钥,速度快,适合大数据传输。
      • 问题:密钥分发需安全通道,否则可能被截获。
    2. 非对称加密(如RSA、ECC)
      • 特点:公钥加密、私钥解密,解决密钥分发问题,但速度慢(比对称加密慢1000倍以上)。
      • 用途:主要用于交换对称密钥或数字签名。
  3. HTTP优缺点:
    • 优点:数据加密,防窃听与篡改;支持HTTP/2、HTTP/3现代协议,提升网站性能
    • 缺点:需购买和维护SSL/TLS证书;解密加密消耗额外CPU资源;握手延迟增加(可通过TLS 1.3优化)
  4. HTTP与HTTPS
  5. TLS 1.3握手过程
    1. ClientHello(客户端问候)
      • 发送支持的 TLS 版本
      • 列出加密套件(如 ECDHE-RSA-AES256-GCM-SHA384)
      • 生成随机数(Client Random)
    2. ServerHello(服务器响应)
      • 选择 TLS 版本和加密套件
      • 发送服务器证书(含公钥)
      • 生成随机数(Server Random)
    3. 密钥交换
      • 客户端使用服务器公钥加密 “预主密钥”
      • 双方通过 Client Random + Server Random + 预主密钥生成对称会话密钥
    4. 身份验证
      • 客户端验证证书有效性(检查 CA 签名、有效期、CN 是否匹配)
      • 服务器验证客户端证书(可选双向认证)
    5. 加密通信
      • 使用对称密钥加密后续数据
      • 通过 HMAC 保证数据完整性

相关文章:

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP&#xff08;超文本传输协议&#xff09;&#xff1a;工作在OSI顶层应用层&#xff0c;用于客户端&#xff08;浏览器&#xff09;与服务器之间的通信,B/S模式 无状态&#xff1a;每次请求独立&#xff0c;服务器不保存客户端状态&#xff08;通…...

GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程

源码仓库&#xff1a; https://gitcode.com/youlai/vue3-element-admin 后端仓库&#xff1a; https://gitcode.com/youlai/youlai-boot 开源助力&#xff0c;开启中后台快速开发之旅 vue3-element-admin 是一款精心打造的免费开源中后台管理前端模板&#xff0c;它紧密贴合…...

网络HTTP

HTTP Network Request Library A Retrofit-based HTTP network request encapsulation library that provides simple and easy-to-use API interfaces with complete network request functionality. 基于Retrofit的HTTP网络请求封装库&#xff0c;提供简单易用的API接口和完…...

Qt常用控件之表格QTableWidget

表格QTableWidget QTableWidget 是一个表格控件&#xff0c;行和列交汇形成的每个单元格&#xff0c;是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个&#xff1a; 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…...

FFmpeg入门:最简单的音视频播放器

FFmpeg入门&#xff1a;最简单的音视频播放器 前两章&#xff0c;我们已经了解了分别如何构建一个简单和音频播放器和视频播放器。 FFmpeg入门&#xff1a;最简单的音频播放器 FFmpeg入门&#xff1a;最简单的视频播放器 本章我们将结合上述两章的知识&#xff0c;看看如何融…...

【Python爬虫】爬取公共交通路网数据

程序来自于Github&#xff0c;以下这篇博客作为完整的学习记录&#xff0c;也callback上一篇爬取公共交通站点的博文。 Bardbo/get_bus_lines_and_stations_data_from_gaode: 这个项目是基于高德开放平台和公交网获取公交线路及站点数据&#xff0c;并生成shp文件&#xff0c;…...

009---基于Verilog HDL的单比特信号边沿检测

文章目录 摘要一、边沿检测二、时序逻辑实现2.1 rtl2.2 tb 三、组合逻辑实现3.1 rtl3.2 tb 摘要 文章为学习记录。采用时序逻辑和组合逻辑实现边沿检测的核心逻辑。组合逻辑实现的上升沿和下降沿的脉冲比时序逻辑实现的上升沿和下降沿的脉冲提前一拍。 一、边沿检测 边沿检测…...

Trae IDE新建C#工程

目录 1 结论 2 项目结构 3 项目代码 1 结论 新建C#工程来说&#xff0c;Trae的Chat比DeepSeek的Coder好用。 2 项目结构 MyWinFormsApp/ │ ├── Program.cs ├── Form1.cs ├── Form1.Designer.cs ├── MyResources/ │ └── MyResources.resx └── MyWin…...

前端快速搭建Node服务(解决跨域问题)

服务搭建应用场景 前端模块化基本成为了不可或缺的一步了&#xff0c;最近学习的时候&#xff0c;使用了EsModule语法&#xff0c;但使用import和export&#xff0c;会产生跨域问题&#xff0c;故自己本地搭建一个服务&#xff08;不需要下载npm包&#xff09;&#xff0c;一步…...

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了&#xff0c;下面创建多模块&#xff1a; 填好之后点击create 不删了&#xff0c;直接改包名&#xff0c;看自己喜欢 修改包名和启动类名&#xff1a; 打开ServiceApplication启动类&#xff0c;修改如下&#xff1a; …...

Unity光照之Halo组件

简介 Halo 组件 是一种用于在游戏中创建光晕效果的工具&#xff0c;主要用于模拟光源周围的发光区域&#xff08;如太阳、灯泡等&#xff09;或物体表面的光线反射扩散效果。 核心功能 1.光晕生成 Halo 组件会在光源或物体的周围生成一个圆形光晕&#xff0c;模拟光线在空气…...

电容与电感以及其典型的电路

一、电容与电感的基本关系 1. 定义公式 电容&#xff08;C&#xff0c;单位&#xff1a;法拉F&#xff09; C Q / V &#xff08;电荷量Q与电压V的比值&#xff09; 电感&#xff08;L&#xff0c;单位&#xff1a;亨利H&#xff09; L Φ / I &#xff08;磁通链Φ与电流I…...

在昇腾GPU上部署DeepSeek大模型与OpenWebUI:从零到生产的完整指南

引言 随着国产AI芯片的快速发展&#xff0c;昇腾&#xff08;Ascend&#xff09;系列GPU凭借其高性能和兼容性&#xff0c;逐渐成为大模型部署的重要选择。本文将以昇腾300i为例&#xff0c;手把手教你如何部署DeepSeek大模型&#xff0c;并搭配OpenWebUI构建交互式界面。无论…...

递归专题刷题

文章目录 递归合并两个有序链表题解代码 反转链表题解代码 两两交换链表中的节点题解代码 Pow(x, n)&#xff08;快速幂&#xff09;题解代码汉诺塔题解代码 总结 递归 1. 重复的子问题宏观看待递归问题 合并两个有序链表 题目链接 题解 1. 重复的子问题 -> 函数头的设…...

电商项目-秒杀系统(四)秒杀异步下单防止重复秒杀

一、 防止恶意刷单解决 在生产场景下&#xff0c;可能会有一些人会恶意访问当前网站&#xff0c;来进行恶意的刷单。这样会造成当前系统出现一些业务上的业务混乱&#xff0c;出现脏数据&#xff0c;或者造成后端访问压力大等问题。 一般要解决这个问题的话&#xff0c;前端可…...

Android Studio 一直 Loading devices

https://stackoverflow.com/questions/71013971/android-studio-stuck-on-loading-devices...

摄相机标定的基本原理

【相机标定的基本原理与经验分享】https://www.bilibili.com/video/BV1eE411c7kr?vd_source7c2b5de7032bf3907543a7675013ce3a 相机模型&#xff1a; 定义&#xff1a; 内参&#xff1a;就像相机的“眼睛”。它描述了相机内部的特性&#xff0c;比如焦距&#xff08;镜头的放…...

CentOS 7 安装 Redis6.2.6

获取资源、下载安装 Redis6.2.6 安装Redis6.2.6 上传到服务器或直接下载&#xff08;wget http://download.redis.io/releases/redis-6.2.6.tar.gz&#xff09;、再解压安装 tar -zxvf redis-6.2.6.tar.gz 进入redis解压目录 cd redis-6.2.6先编译 make再执行安装 make PREFI…...

在CentOS系统上安装Conda的详细指南

前言 Conda 是一个开源的包管理系统和环境管理系统&#xff0c;广泛应用于数据科学和机器学习领域。本文将详细介绍如何在 CentOS 系统上安装 Conda&#xff0c;帮助您快速搭建开发环境。 准备工作 在开始安装之前&#xff0c;请确保您的 CentOS 系统已经满足以下条件&#x…...

3D数字化:家居行业转型升级的关键驱动力

在科技日新月异的今天&#xff0c;家居行业正经历着一场前所未有的变革。从传统的线下实体店铺到线上电商平台的兴起&#xff0c;再到如今3D数字化营销的广泛应用&#xff0c;消费者的购物体验正在发生翻天覆地的变化。3D数字化营销不仅让购物变得更加智能和便捷&#xff0c;还…...

CSS—补充:CSS计数器、单位、@media媒体查询

目录 1. CSS计数器 嵌套计数器&#xff1a; 对列表元素&#xff1a; 2.单位 绝对长度&#xff1a; 相对长度&#xff1a; 3.media媒体查询 1. CSS计数器 CSS 计数器就像“变量”。变量值可以通过 CSS 规则递增&#xff08;将跟踪它们的使用次数&#xff09;。 如需使用…...

【JAVA架构师成长之路】【电商系统实战】第10集:电商秒杀系统实战(流量削峰 + 库存预热 + 请求排队)

30分钟课程&#xff1a;电商秒杀系统实战&#xff08;流量削峰 库存预热 请求排队&#xff09; 课程目标 掌握秒杀系统核心架构设计&#xff1a;流量削峰、库存预热、请求排队。实现基于 Redis 的令牌桶限流与库存原子扣减。通过 Redis List 或 Kafka 实现高并发请求的异步处…...

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务&#xff0c;在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外&#xff0c;平台还支持用户自行上传视频文件&#xff0c;也可将上传的点播…...

Logisim实验--计组

每个实验会先讲一下原理再给出答案。 实验一&#xff1a;7段数码管驱动电路设计 实验目的 (1)帮助学生理解真值表方式设计电路的原理&#xff1b; (2)能利用Logisim的真值表生成电路功能自动生成所需电路。 这里我们要看清每个引脚控制的是哪个灯亮&#xff0c;注意看它的线…...

【Linux】软硬链接 | 动静态链接(三)

目录 前言&#xff1a; 一、软硬链接 1.软链接 2.硬链接 3.硬链接数 4.软硬链接的区别 5.使用unlink删除链接的文件 6.目录文件链接数( . 和 .. ) 二、静态库的制作和使用 1.制作静态库 2.使用静态库 2.1方法一 2.2方法二 2.3方法三 三、动态库的制作和使用 1.…...

数据结构(回顾)

数据结构&#xff08;回顾&#xff09; 回顾 不同点顺序表链表存储空间上物理上一定连续逻辑上连续&#xff0c;物理上不一定连续随机访问支持&#xff0c;时间复杂度O(1)不支持&#xff0c;时间复杂度O(N)任意位置插入或者删除元素可能需要挪动元素&#xff0c;效率低&#…...

达梦数据库在Linux,信创云 安装,备份,还原

&#xff08;一&#xff09;系统环境检查 1操作系统&#xff1a;确认使用的是国产麒麟操作系统&#xff0c;检查系统版本是否兼容达梦数据库 V8。可以通过以下命令查看系统版本&#xff1a; cat /etc/os-release 2硬件资源&#xff1a;确保服务器具备足够的硬件资源&#xff0…...

从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动

目录 所以&#xff0c;键盘是如何工作的 说一说我们的8042 输出缓冲区寄存器 状态寄存器 控制寄存器 动手&#xff01; 注册中断 简单整个键盘驱动 Reference ScanCode Table 我们下一步就是准备进一步完善我们系统的交互性。基于这个&#xff0c;我们想到的第一个可以…...

01-简单几步!在Windows上用llama.cpp运行DeepSeek-R1模型

1.llama.cpp介绍 Llama.cpp 是一个开源的、轻量级的项目&#xff0c;旨在实现 Meta 推出的开源大语言模型 Llama 的推理&#xff08;inference&#xff09;。Llama 是 Meta 在 2023 年开源的一个 70B 参数的高质量大语言模型&#xff0c;而 llama.cpp 是一个用 C 实现的轻量化…...

Trae AI 开发工具使用手册

这篇手册将介绍 Trae 的基本功能、安装步骤以及使用方法&#xff0c;帮助开发者快速上手这款工具。 Trae AI 开发工具使用手册 Trae 是字节跳动于 2025 年推出的一款 AI 原生集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在通过智能代码生成、上下文理解和自动化任务…...