如何理解http与https协议,他们有什么区别?

news2024/11/15 9:14:00

写在前面的话,关于 HTTP 和 HTTPS 的问题,常常会被很多学习者忽略,HTTP、HTTPS 不就是网址的开头吗,有啥好了解的,浏览器的引擎实现了这个协议,在开发关系不大,但想要深入一些理解数据传输原理,了解这两个概念是必须的,以下的内容为概念性,帮助小伙伴们了解 HTTP 和 HTTPS 的关键点。

HTTP(HyperText Transfer Protocol,超文本传输协议)和HTTPS(HTTP Secure,安全超文本传输协议)都是用于从网络传输超文本到本地浏览器的传输协议,它们是互联网上应用最为广泛的协议之一。以下是它们的主要区别和各自解决的问题:

HTTP(超文本传输协议)

  1. 定义:HTTP是一种用于分布式、协作式、超媒体信息系统的应用层协议,它是万维网数据通信的基础。
  2. 特点:
  • 明文传输:数据在传输过程中以明文形式存在,容易被截获和篡改。
  • 无状态:HTTP协议本身不保留之前客户端和服务器的通信状态。
  • 连接无限制:HTTP协议没有对连接的数量和频率进行限制。
  1. 使用场景:适用于不需要安全加密的普通网页数据传输,如新闻、博客等。

HTTPS(安全超文本传输协议)

  1. 定义:HTTPS是在HTTP的基础上通过SSL/TLS协议进行加密的数据传输方式。
  2. 特点:
  • 安全加密:通过SSL/TLS协议对数据进行加密,保护数据传输过程中的安全性,防止数据在传输过程中被窃取或篡改。
  • 身份验证:通过证书对服务器进行身份验证,确保数据发送到正确的服务器。
  • 完整性校验:确保数据在传输过程中未被篡改。
  1. 使用场景:适用于需要高安全性的场合,如网上银行、在线支付、登录认证、敏感数据传输等。

区别

  • 安全性:HTTPS比HTTP更安全,因为数据在传输过程中被加密。
  • 加密方式:HTTP不加密,而HTTPS使用SSL/TLS进行加密。
  • 端口:HTTP默认端口是80,HTTPS默认端口是443。
  • 性能:由于加密和解密的开销,HTTPS通常比HTTP慢一些,但这种差异随着技术的发展越来越小。
  • SEO影响:搜索引擎如Google倾向于优先索引HTTPS网站,因为它们提供了更安全的数据传输。

解决的问题

  • HTTP:解决了如何在互联网上传输超文本数据的问题,但因为其明文传输的特性,无法保证数据的安全性和完整性。
  • HTTPS:解决了数据传输过程中的安全性问题,通过加密确保数据的机密性、完整性和身份验证,从而保护用户的隐私和数据安全。

随着网络安全意识的提高,越来越多的网站选择使用HTTPS来保护用户数据和提高网站的可信度。

HTTP协议是如何工作的

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于客户端(如浏览器)和服务器之间的通信。以下是HTTP协议的基本工作原理:

  1. 建立连接:
  • 客户端通过TCP协议与服务器建立一个连接。HTTP/1.1默认使用持久连接,即TCP连接在传输完一个对象后不会关闭,可以被用来传输下一个对象。
  1. 发送请求:
  • 客户端发送一个HTTP请求到服务器。请求通常包含请求行(如GET /index.html HTTP/1.1),请求头(包含请求的附加信息,如User-Agent、Accept等),以及可选的请求体(如POST请求中的数据)。
  1. 服务器处理请求:
  • 服务器接收到请求后,根据请求行中的HTTP方法(如GET、POST、PUT等)、资源路径(如/index.html)和HTTP版本等信息,确定如何处理请求。
  1. 生成响应:
  • 服务器处理请求后,生成一个HTTP响应。响应包括状态行(如HTTP/1.1 200 OK),响应头(包含响应的附加信息,如Content-Type、Content-Length等),以及响应体(即请求的资源内容,如HTML页面)。
  1. 客户端接收响应:
  • 客户端接收到服务器的响应后,根据响应的状态码(如200 OK、404 Not Found等)和响应头中的信息,处理响应体中的数据。
  1. 关闭连接:
  • 在HTTP/1.0中,每个请求/响应对完成后,连接就会关闭。而在HTTP/1.1中,默认使用持久连接,可以在同一个连接上发送多个请求/响应对,直到客户端或服务器端明确关闭连接。
  1. 内容展示:
  • 客户端(通常是浏览器)将接收到的内容展示给用户。如果是HTML页面,浏览器会解析HTML并渲染页面。
  1. 资源加载:
  • 对于HTML页面中的其他资源(如图片、CSS、JavaScript等),浏览器会再次通过HTTP协议发起请求,重复上述过程,直到页面完全加载。

HTTP协议是无状态的,即服务器不会在请求之间保存任何会话信息。为了解决这个问题,引入了Cookie和Session机制来保持状态。

此外,HTTP协议还有一些扩展,如HTTP/2,它引入了头部压缩、多路复用等特性,以提高传输效率和性能。

HTTPS协议是如何工作的

HTTPS(HTTP Secure)协议是在HTTP协议的基础上,通过SSL/TLS(Secure Socket Layer/Transport Layer Security)协议进行数据加密和安全认证的网络协议。以下是HTTPS的工作原理:

  1. 建立TCP连接:
  • 客户端(通常是浏览器)首先通过TCP协议与服务器建立一个安全的连接。
  1. 客户端发起HTTPS请求:
  • 客户端通过HTTPS URL(以https://开头)发起请求,这个请求会被发送到服务器的443端口(或其他配置的端口)。
  1. 服务器响应证书:
  • 服务器接收到客户端的HTTPS请求后,会向客户端发送其SSL证书。这个证书通常由受信任的证书颁发机构(CA)签发,包含了服务器的公钥和其它身份信息。
  1. 证书验证:
  • 客户端接收到证书后,会检查证书的有效性,包括证书是否过期、证书颁发机构是否受信任等。如果证书验证失败,客户端会警告用户连接可能不安全。
  1. 密钥交换:
  • 如果证书验证通过,客户端会生成一个随机的对称加密密钥,用于本次会话的加密通信。然后,客户端使用服务器证书中的公钥对这个对称密钥进行加密,并将加密后的密钥发送给服务器。
  1. 服务器解密密钥:
  • 服务器使用自己的私钥解密客户端发送的加密信息,得到对称加密密钥。
  1. 加密通信:
  • 从此时开始,客户端和服务器都会使用这个对称密钥对所有传输的数据进行加密和解密,确保数据的机密性和完整性。
  1. 发送和接收数据:
  • 客户端和服务器现在可以安全地交换数据。所有通过HTTPS传输的数据都会被加密,只有通信双方才能解密和理解数据内容。
  1. 会话结束:
  • 当通信结束时,客户端和服务器可以安全地关闭连接,或者保持连接以供后续通信使用(HTTP持久连接)。
  1. 安全性特性:
  • HTTPS提供了数据完整性校验和身份验证,确保数据在传输过程中没有被篡改,并且确认了通信双方的身份。

HTTPS协议通过在HTTP协议之上增加SSL/TLS层,提供了数据加密、身份验证和数据完整性校验等安全特性,从而保护了用户数据和隐私安全,尤其适用于需要高安全性的场合,如网上银行、在线支付、电子邮件等。

最后

了解 HTTP 和 HTTPS 的概念,连接客户端与服务端请求响应的知识空白,不用太多,V 哥觉得以上的内容够了,如果还需要更深入了解,需要从网络七层协议,浏览器的TCP实现细节入手。求个关注,威哥爱编程,一起热爱技术。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NPDP有什么价值?究竟值不值得去考?

NPDP其实就是产品经理国际资格认证,是美国产品开发管理协会发起的,集理论、方法和实践一体,在新产品开发方面有一个很全面的知识体系。是国际公认的新产品开发专业认证,具有权威性。 NPDP能够很好地帮你在做新产品的道路上少走弯…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

RK3588开发笔记(四):基于定制的RK3588一体主板升级镜像

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140288662 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

多次执行相同的push问题(如何解决)

下面这个问题如何解决 1.为什么会出现这个问题 原因&#xff1a;push是一个promise&#xff0c;promise需要传递成功和失败两个参数&#xff0c;我们的push中没有传递。 goSearch() {//路由传参//第一种&#xff1a;字符串形式// this.$router.push(/search/this.keyword&quo…

【Linux进阶】文件系统3——目录树,挂载

前言 在Windows 系统重新安装之前&#xff0c;你可能会事先考虑&#xff0c;到底系统盘C盘要有多大容量&#xff1f;而数据盘D盘又要给多大容量等&#xff0c;然后实际安装的时候&#xff0c;你会发现其实C盘之前会有个100MB的分区被独立出来&#xff0c;所以实际上你就会有三个…

ATA-5420前置微小信号放大器如何进行半导体测试

半导体测试是电子行业中至关重要的环节&#xff0c;它对于保证产品质量、提高生产效率起着至关重要的作用。在半导体测试过程中&#xff0c;我们需要采用一系列的方法和原理来确保芯片的可靠性和性能稳定性&#xff0c;而前置微小信号放大器在半导体测试中起着至关重要的作用。…

C++ Qt 自制开源科学计算器

C Qt 自制开源科学计算器 项目地址 软件下载地址 目录 0. 效果预览1. 数据库准备2. 按键&快捷键说明3. 颜色切换功能(初版)4. 未来开发展望5. 联系邮箱 0. 效果预览 普通计算模式效果如下&#xff1a; 科学计算模式效果如下&#xff1a; 更具体的功能演示视频见如下链接…

Python酷库之旅-第三方库Pandas(012)

目录 一、用法精讲 28、pandas.HDFStore.keys函数 28-1、语法 28-2、参数 28-3、功能 28-4、返回值 28-5、说明 28-6、用法 28-6-1、数据准备 28-6-2、代码示例 28-6-3、结果输出 29、pandas.HDFStore.groups函数 29-1、语法 29-2、参数 29-3、功能 29-4、返回…

9.2 栅格图层符号化单波段灰度渲染

文章目录 前言单波段灰度QGis设置为单波段灰度二次开发代码实现单波段灰度 总结 前言 介绍栅格图层数据渲染之单波段灰度显示说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 单波段灰度 以“3420C_2010_327_RGB_LATLNG.tif”数据为例&#xff0c;在QGis中…

论坛系统--测试报告(部分)

前言 逆水行舟&#xff0c;不进则退&#xff01;&#xff01;&#xff01; 目录 项目背景 接口测试 性能测试 压力测试 UI测试 项目背景 项目名称&#xff1a; 论坛系统 项目概述&#xff1a; 论坛系统是一个基于Spring Boot和MySQL的Web应用程序…

Nginx理论篇与相关网络协议

Nginx是什么&#xff1f; Nginx是一款由C语言编写的高性能、轻量级的web服务器&#xff0c;一个线程能处理多个请求&#xff0c;支持万级并发。 优势&#xff1a;I/O多路复用。 I/O是什么&#xff1f; I指的是输入&#xff08;Input&#xff09;,O是指输出&#xff08;Outp…

poi-tl、aspose实现word中表在每页携带表头表尾

实现word中表在每页携带表头表尾&#xff08;第一版&#xff09; word中的表格如果只有一页时表头表尾都很好处理&#xff0c;当中间内容足够多时&#xff0c;表尾只会出现在最后一页&#xff0c;表头也只会出现在第一页&#xff0c;之前想过用word自带的页眉页尾来处理但是&a…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构③ | 4.6

前言 第4章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于技术相关的内容&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 4.6 网络架构 4.6.1 基本原则 4.6.2 局域网架构 4.6.3 广域网架构 4.6.4 移动通信网架构 4.6.5 软件定义网络 4.6…

云动态摘要 2024-07-09

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起&#xff01; [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

【面试】高频面试点:从源码角度一篇文章带你搞懂128陷阱!

要理解什么是“128陷阱”&#xff0c;首先来看一段代码&#xff1a; public static void main(String... strings) {Integer integer1 3;Integer integer2 3;if (integer1 integer2)System.out.println("integer1 integer2");elseSystem.out.println("inte…

07-7.3.2 平衡二叉树(AVL)

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

【Linux】:服务器用户的登陆、删除、密码修改

用Xshell登录云服务器。 1.登录云服务器 先打开Xshell。弹出的界面点。 在终端上输入命令ssh usernameip_address&#xff0c;其中username为要登录的用户名&#xff0c;ip_address为Linux系统的IP地址或主机名。 然后输入密码进行登录。 具体如下&#xff1a; 找到新建会话…

提高项目效率必备:探索2024年10大最佳需求管理系统

本文将分享2024年10款高效需求管理工具&#xff1a;PingCode、Worktile、Tapd、禅道、Teambition、ClickUp、Tower、Asana、Jira 和 monday.com。 在快速变化的软件开发环境中&#xff0c;选择合适的需求管理工具变得至关重要。项目失败往往源于需求不明确或管理不善&#xff0…

linux权限深度解析——探索原理

前言&#xff1a;本节内容主要讲述的是linux权限相关的内容&#xff0c; linux的权限如果使用root账号是感受不到的&#xff0c; 所以我们要使用普通账号对本节相关内容进行学习&#xff0c;以及一些实验的测试。 然后&#xff0c; 通过linux权限的学习我们可以知道为什么有时候…

记一次 .NET某酒业业务系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序每次关闭时就会自动崩溃&#xff0c;一直找不到原因让我帮忙看一下怎么回事&#xff0c;这位朋友应该是第二次找我了&#xff0c;分析了下 dump 还是挺经典的&#xff0c;拿出来给大家分享一下吧。 …