【知识科普】一篇文章带你了解什么是http以及https

文章目录

    • 什么是HTTP协议
      • HTTP的主要特性:
      • HTTP的工作原理:
      • HTTP的局限性:
      • HTTP/2和HTTP/3:
    • HTTP状态码的含义
      • 1xx(信息性状态码):
      • 2xx(成功状态码):
      • 3xx(重定向状态码):
      • 4xx(客户端错误状态码):
      • 5xx(服务器错误状态码):
      • 6xx(其他状态码):
    • 什么是HTTPS
      • HTTPS的工作原理:
      • HTTPS的优势:
      • HTTPS的劣势:

什么是HTTP协议

HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统应用层的无状态请求/响应协议。HTTP是互联网中用于传输网页数据的主要协议。以下是HTTP协议的一些关键特性和工作原理:

HTTP的主要特性:

  1. 无状态:HTTP协议本身不保留任何用户请求的信息。每个请求都是独立的,服务器无法识别两个请求是否来自同一用户。

  2. 无连接:HTTP/1.0协议中,每个请求/响应周期都建立一个新的TCP连接,完成后立即断开。HTTP/1.1引入了持久连接(Connection: keep-alive),允许在一个TCP连接上发送多个请求和响应。

  3. 基于文本:HTTP消息由ASCII编码的文本组成,易于阅读和调试。

  4. 可扩展性:HTTP头字段可以自定义,允许在不影响协议核心的情况下添加新的功能。

  5. 方法:HTTP定义了一系列方法(如GET、POST、PUT、DELETE等),以指示对资源的操作。

  6. 状态码:HTTP响应包含一个状态码,用于表示请求的成功、失败或其他状态。

HTTP的工作原理:

  1. 建立连接

    • 客户端(通常是浏览器)通过TCP/IP协议与服务器建立连接。
  2. 发送请求

    • 客户端发送一个HTTP请求,该请求包含请求方法(如GET、POST)、请求的资源路径、HTTP版本和请求头信息。
  3. 服务器处理请求

    • 服务器接收到请求后,根据请求的资源路径和方法进行处理。
  4. 发送响应

    • 服务器返回一个HTTP响应,该响应包含HTTP版本、状态码(如200表示成功)、响应头和响应体(即请求的资源内容)。
  5. 关闭连接

    • 对于非持久连接,服务器在发送响应后会关闭TCP连接。对于持久连接,连接可以保持打开状态,以便发送更多的请求。

HTTP的局限性:

  1. 明文传输:HTTP协议不加密传输的数据,因此不适合传输敏感信息。

  2. 无状态:由于HTTP是无状态的,它不能识别用户的状态,这意味着每次请求都需要携带所有必要的信息。

  3. 性能问题:HTTP/1.1的持久连接虽然减少了建立和关闭连接的开销,但在高延迟网络中,每个请求/响应都需要等待前一个完成才能开始,这可能导致性能瓶颈。

HTTP/2和HTTP/3:

为了解决HTTP/1.1的局限性,HTTP/2和HTTP/3被引入:

  • HTTP/2:引入了二进制帧层,支持头部压缩、多路复用、服务器推送等特性,显著提高了性能。
  • HTTP/3:基于QUIC协议,提供了更低的延迟和更好的连接迁移支持。

HTTP协议是互联网上最重要的协议之一,它定义了客户端和服务器之间的通信规则,使得网页和其他资源能够在互联网上被访问和传输。

HTTP状态码的含义

HTTP状态码是服务器在响应客户端请求时返回的三位数字代码,用于表示请求的处理结果。以下是一些常见的HTTP状态码及其含义:

1xx(信息性状态码):

  • 100 Continue:服务器已收到请求的一部分,客户端应继续发送剩余部分。
  • 101 Switching Protocols:服务器根据客户端的请求切换协议。

2xx(成功状态码):

  • 200 OK:请求成功,服务器正常返回响应。
  • 201 Created:请求成功,并创建了新的资源。
  • 202 Accepted:服务器已接受请求,但尚未处理。
  • 204 No Content:请求成功,但服务器不返回任何内容。

3xx(重定向状态码):

  • 301 Moved Permanently:请求的资源已永久移动到新位置。
  • 302 Found:请求的资源临时移动到新位置。
  • 303 See Other:请求的资源在另一个URI下可找到。
  • 304 Not Modified:自从上次请求后,请求的资源没有更改,可以使用缓存。

4xx(客户端错误状态码):

  • 400 Bad Request:服务器无法理解请求的格式。
  • 401 Unauthorized:请求未授权,需要身份验证。
  • 403 Forbidden:服务器拒绝执行请求。
  • 404 Not Found:请求的资源不存在。
  • 405 Method Not Allowed:请求的方法不允许。
  • 408 Request Timeout:请求超时,服务器等待时间过长。

5xx(服务器错误状态码):

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 501 Not Implemented:服务器不支持请求的功能。
  • 502 Bad Gateway:作为网关或代理工作的服务器,从上游服务器收到无效响应。
  • 503 Service Unavailable:服务器当前不可用(过载或维护)。
  • 504 Gateway Timeout:作为网关或代理工作的服务器,未及时从上游服务器收到请求。

6xx(其他状态码):

  • 600 Unparseable Response Headers:响应头无法解析。

这些状态码提供了关于请求处理结果的信息,帮助客户端开发者了解请求是否成功,以及不成功的原因。服务器也可以根据这些状态码来决定如何处理客户端的请求。

什么是HTTPS

HTTPS(全称为 HyperText Transfer Protocol Secure)是一种安全的通信协议,它在传统的HTTP协议上增加了SSL/TLS协议,用于在客户端和服务器之间建立一个加密的通信通道,确保数据传输的安全性。

HTTPS的工作原理:

  1. 密钥交换

    • 当用户通过浏览器访问一个HTTPS网站时,浏览器首先会向服务器请求其SSL证书。
    • 服务器响应并发送其SSL证书,其中包含了服务器的公钥。
  2. 证书验证

    • 浏览器接收到证书后,会检查证书的有效性,包括证书是否由受信任的证书颁发机构(CA)签发,证书是否过期,以及证书的域名是否与请求的域名匹配。
    • 如果证书验证通过,浏览器会信任服务器的身份。
  3. 加密通信

    • 浏览器生成一个随机的对称加密密钥,用于本次会话的加密通信。
    • 浏览器使用服务器的公钥对这个对称密钥进行加密,然后将其发送给服务器。
    • 服务器使用自己的私钥解密这个信息,得到对称加密密钥。
    • 至此,浏览器和服务器都有了相同的对称密钥,可以用它来加密和解密它们之间传输的数据。
  4. 数据传输

    • 浏览器和服务器使用对称密钥对所有传输的数据进行加密。这意味着即使数据在传输过程中被截获,没有密钥的第三方也无法解密数据。
  5. 会话结束

    • 当用户离开网站或关闭浏览器时,会话结束,对称密钥被销毁。

HTTPS的优势:

  1. 数据加密:HTTPS通过加密传输的数据,保护用户数据不被窃听或篡改。

  2. 身份验证:SSL证书提供了服务器的身份验证,帮助用户确认他们正在与正确的服务器通信,而不是一个中间人攻击者。

  3. 数据完整性:HTTPS确保数据在传输过程中不被篡改。

  4. 信任:由受信任的CA签发的证书可以增加用户对网站的信任。

HTTPS的劣势:

  1. 性能开销:加密和解密数据需要额外的计算资源,可能会增加服务器的负载和响应时间。

  2. 成本:获取和维护SSL证书需要一定的费用。

  3. 配置复杂性:正确配置HTTPS和SSL证书可能涉及到一些技术挑战。

尽管如此,考虑到安全性,大多数现代网站和应用程序都推荐使用HTTPS。事实上,许多浏览器和搜索引擎已经开始将HTTP网站标记为不安全,以鼓励网站采用HTTPS。

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

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

相关文章

C++ | Leetcode C++题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; class Solution { public:int singleNonDuplicate(vector<int>& nums) {int low 0, high nums.size() - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid…

Python练习7

Python日常练习 题目&#xff1a; 编写程序&#xff0c;输出由1、2、3、4这四个数字组成的每位数都不相同的所有三位数 要求&#xff1a; 每个数字用换行隔开 --------------------------------------------------------- 注意&#xff1a; 部分源程序给出如下。请勿改动…

RK3568开发板静态IP地址配置

1. 连接SSH MYD-LR3568 开发板设置了静态 eth0:1 192.168.0.10 和 eth1:1 192.168.1.10&#xff0c;在没有串口时调试开发板&#xff0c;可以用工具 SSH 登陆到开发板。 首先需要用一根网线直连电脑和开发板&#xff0c;或者通过路由器连接到开发板&#xff0c;将电脑 IP 手动设…

MySQL45讲 第八讲 事务到底是隔离的还是不隔离的?

文章目录 MySQL45讲 第八讲 事务到底是隔离的还是不隔离的&#xff1f;MVCC 实现原理事务 ID 与数据版本一致性视图 总结 MySQL45讲 第八讲 事务到底是隔离的还是不隔离的&#xff1f; 在 MySQL 的事务处理中&#xff0c;事务隔离级别与数据一致性是至关重要的概念。可重复读隔…

【工具变量】中国制造2025试点城市数据集(2000-2023年)

数据简介&#xff1a;《中国制造2025》是中国ZF于2015年5月8日印发的一项战略规划&#xff0c;旨在加快制造业的转型升级&#xff0c;提升制造业的质量和效益&#xff0c;实现从制造大国向制造强国的转变。该规划是中国实施制造强国战略的第一个十年行动纲领&#xff0c;明确提…

任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布

2024年11月5日&#xff0c;MeterSphere开源持续测试工具正式发布v3.4版本。 在这一版本中&#xff0c;系统设置方面&#xff0c;任务中心支持实时查看系统即时任务与系统后台任务&#xff1b;接口测试方面&#xff0c;新增接口文档分享功能、接口场景导入导出功能&#xff0c;…

CUDA下载和安装

CUDA下载和安装 前言下载安装后续添加参考链接 前言 由于我需要运行的代码与我当前的CUDA版本不兼容,所以我现在需要进行CUDA的更新,下载一个低版本的CUDA以匹配我的Pytorch 下载 CUDA下载地址:CUDA下载链接 选择适合自己的版本 由于我是要运行一个开源项目,我选择对应的CU…

Multimodal Reasoning with Multimodal Knowledge Graph

摘要 大型语言模型&#xff08;llm&#xff09;的多模态推理常常存在幻觉和llm中存在缺陷或过时的知识。一些方法试图通过使用文本知识图来缓解这些问题&#xff0c;但其单一的知识形态限制了全面的跨模态理解。本文提出了多模态推理与多模态知识图&#xff08;MR-MKG&#xf…

Git代码托管(三)可视化工具操作(1)

常见的可视化操作工具有 一、官方网页 如码云、gitlab&#xff0c;自带了常见的git操作。 以码云为例&#xff1a; 1、创建分支&#xff1a; 进入分支目录&#xff0c;点击 新建分支 按钮&#xff0c; 在弹出框中输入新分支名称&#xff0c;点击确定即可一键创建分支&…

go中Println和Printf的区别

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…

项目审核系统 ---(连接数据库---项目模拟)

本章主要是查询方法和修改方法 编写查询方法&#xff0c;查询所有项目审核信息并返回查询结果&#xff0c;需实现分页功能&#xff0c;注意必要的异常处理。编写查询方法&#xff0c;根据项目编号查询指定项目的审核信息&#xff0c;注意必要的异常处理。编写修改方法&#xf…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.MySQL 索引 1.DQL数据查询语言 分为五大基本查询语法 1.1基本查询 -- 查询特定字段 s…

【STL栈和队列】:高效数据结构的应用秘籍

前言&#xff1a; C 标准模板库&#xff08;STL&#xff09;为我们提供了多种容器&#xff0c;其中 stack&#xff08;栈&#xff09;和 queue&#xff08;队列&#xff09;是非常常用的两种容器。 根据之前C语言实现的栈和队列&#xff0c;&#xff08;如有遗忘&#xff0c;…

LWIP通信协议UDP发送、接收源码解析

1.UDP发送函数比较简短&#xff0c;带操作系统和裸机一样。以下是udp_sendto源码解析&#xff1b; 2.LWIP源码UDP接收数据 2.1.UDP带操作系统接收数据&#xff0c;以下是源码解析&#xff1b; 2.2.UDP裸机接收数据&#xff0c;以下是源码解析

小菜家教平台:基于SpringBoot+Vue打造一站式学习管理系统

前言 现在已经学习了很多与Java相关的知识&#xff0c;但是迟迟没有进行一个完整的实践&#xff08;之前这个项目开发到一半&#xff0c;很多东西没学搁置了&#xff0c;同时原先的项目中也有很多的问题&#xff09;&#xff0c;所以现在准备从零开始做一个基于SpringBootVue的…

【优选算法 — 双指针】双指针小专题

和为 s 的两个数 和为s的两个数 题目描述 解法一&#xff1a;暴力枚举 暴力枚举&#xff0c;先固定一个数&#xff0c;然后让这个数和另一个数匹配相加&#xff0c; 如果当前的数 所有剩余的数 target&#xff0c;则返回这两个数&#xff0c;否则固定下一个数&#…

轻松理解操作系统 - 轻松了解 inode 是如何管理文件的

Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此&#xff0c;学习Linux 系统相关知识在后端开发等岗位中变得越来越重要&#xff0c;甚至可以说是必不可少的。 因为它的广泛应用&#xff0c;所以在程序员的日常工作和面试中&#xff0c;它都是经常出现的。它的开源特…

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格&#xff0c;并且求第二列所有价格的和方法一&#xff1a;通过添加文件输入元素上传csv完整&#xff08;正确&#xff09;代码之前的错误部分因为价格是小数&#xff0c;所以下面的代码出错。如果把parseFloat改成parseInt&#xff0c;那么求和没有意义…

微信小程序-事件总线

一.事件总线的概念和作用 事件总线是对发布-订阅模式的一种实现&#xff0c;是一种集中式事件处理机制&#xff0c;允许不同组件之间进行彼此通信&#xff0c;常用于两个非父子组件和兄弟组件之间的通讯。 在日常开发过程中&#xff0c;我们可以使用第三方的发布订阅 JS 包来实…

成都郝蓉宜恺文化传媒:引领大数据应用新篇章

在信息化浪潮汹涌的今天&#xff0c;大数据被誉为新时代的“石油”&#xff0c;正在以前所未有的速度改变着我们的生活和工作方式。成都郝蓉宜恺文化传媒&#xff0c;作为大数据领域的领军企业&#xff0c;始终站在创新的前沿&#xff0c;引领着大数据应用的新篇章。 作为大数…