HTTP2和HTTPS来不来了解一下?

HTTP和HTTPS HTTP协议经历了1.0、1.1和2三个主要版本的演进。HTTP1.0采用无状态短连接,每次请求需建立新TCP连接,效率低下且存在队头阻塞问题。HTTP1.1引入持久连接、管道机制和分块传输,提升了效率,但仍有顺序处理的限制。HTTP2采用二进制协议、完全多路复用和报头压缩技术,有效解决了队头阻塞问题,并支持服务器主动推送。HTTPS则在HTTP基础上加入SSL/TLS加密层,通过对称和非对称加密结合的方式保障数据传输安全。这些改进使HTTP协议在性能、效率和安全性等方面不断优化。 阅读详情

一、前言

只有光头才能变强

HTTP博文回顾:

本文力求简单讲清每个知识点,希望大家看完能有所收获

二、HTTP协议的今生来世

最近在看博客的时候,发现有的面试题已经考HTTP/2了,于是我就顺着去了解一下。

到现在为止,HTTP协议已经有三个版本了:

  • HTTP1.0
  • HTTP1.1
  • HTTP/2

下面就简单聊聊他们三者的区别,以及整理一些必要的额外知识点。

2.1HTTP版本之间的区别

2.1.1HTTP1.0和HTTP1.1区别

HTTP1.0和HTTP1.1最主要的区别就是:

  • HTTP1.1默认是持久化连接!

在HTTP1.0默认是短连接:

简单来说就是:每次与服务器交互,都需要新开一个连接!

试想一下:请求一张图片,新开一个连接,请求一个CSS文件,新开一个连接,请求一个JS文件,新开一个连接。HTTP协议是基于TCP的,TCP每次都要经过三次握手,四次挥手,慢启动…这都需要去消耗我们非常多的资源的!

在HTTP1.1中默认就使用持久化连接来解决:建立一次连接,多次请求均由这个连接完成!(如果阻塞了,还是会开新的TCP连接的)

相对于持久化连接还有另外比较重要的改动:

  • HTTP 1.1增加host字段
  • HTTP 1.1中引入了Chunked transfer-coding,范围请求,实现断点续传(实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输)
  • HTTP 1.1管线化(pipelining)理论,客户端可以同时发出多个HTTP请求,而不用一个个等待响应之后再请求
    • 注意:这个pipelining仅仅是限于理论场景下,大部分桌面浏览器仍然会**选择默认关闭**HTTP pipelining!
    • 所以现在使用HTTP1.1协议的应用,都是有可能会开多个TCP连接的!

参考资料:

2.1.2HTTP2基础

在说HTTP2之前,不如先直观比较一下HTTP2和HTTP1.1的区别:

上面也已经说了,HTTP 1.1提出了管线化(pipelining)理论,但是仅仅是限于理论的阶段上,这个功能默认还是关闭了的。

管线化(pipelining)和非管线化的区别:

HTTP Pipelining其实是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应!


就像在超市收银台或者银行柜台排队时一样,你并不知道前面的顾客是干脆利索的还是会跟收银员/柜员磨蹭到世界末日(不管怎么说,服务器(即收银员/柜员)是要按照顺序处理请求的,如果前一个请求非常耗时(顾客磨蹭),那么后续请求都会受到影响。

  • 在HTTP1.0中,发送一次请求时,需要等待服务端响应了才可以继续发送请求。
  • 在HTTP1.1中,发送一次请求时,不需要等待服务端响应了就可以发送请求了,但是回送数据给客户端的时候,客户端还是需要按照响应的顺序来一一接收
  • 所以说,无论是HTTP1.0还是HTTP1.1提出了Pipelining理论,还是会出现阻塞的情况。从专业的名词上说这种情况,叫做线头阻塞(Head of line blocking)简称:HOLB

2.1.3HTTP1.1和HTTP2区别

HTTP2与HTTP1.1最重要的区别就是解决了线头阻塞的问题!其中最重要的改动是:多路复用 (Multiplexing)

  • 多路复用意味着线头阻塞将不在是一个问题,允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息,合并多个请求为一个的优化将不再适用。
    • (我们知道:HTTP1.1中的Pipelining是没有付诸于实际的),之前为了**减少**HTTP请求,有很多操作将多个请求合并,比如:Spriting(多个图片合成一个图片),内联Inlining(将图片的原始数据嵌入在CSS文件里面的URL里),拼接Concatenation(一个请求就将其下载完多个JS文件),分片Sharding(将请求分配到各个主机上)……

使用了HTTP2可能是这样子的:

HTTP2所有性能增强的核心在于新的二进制分帧层(不再以文本格式来传输了),它定义了如何封装http消息并在客户端与服务器之间传输。

看上去协议的格式和HTTP1.x完全不同了,实际上HTTP2并没有改变HTTP1.x的语义,只是把原来HTTP1.x的header和body部分用frame重新封装了一层而已

HTTP2连接上传输的每个帧都关联到一个“流”。流是一个独立的,双向的帧序列可以通过一个HTTP2的连接在服务端与客户端之间不断的交换数据。

实际上运输时:

HTTP2还有一些比较重要的改动:

  • 使用HPACK对HTTP/2头部压缩
  • 服务器推送
  • 流量控制
    • 针对传输中的流进行控制(TCP默认的粒度是针对连接)
  • 流优先级(Stream Priority)它被用来告诉对端哪个流更重要。

2.2HTTP2总结

HTTP1.1新改动:

  • 持久连接
  • 请求管道化
  • 增加缓存处理(新的字段如cache-control)
  • 增加Host字段、支持断点传输等

HTTP2新改动:

  • 二进制分帧
  • 多路复用
  • 头部压缩
  • 服务器推送

参考资料:

2.3HTTPS再次回顾

之前在面试的时候被问到了HTTPS,SSL这样的知识点,也没答上来,这里也简单整理一下。

首先还是来解释一下基础的东东:

  • 对称加密:
    • 加密和解密都是用同一个密钥
  • 非对称加密:
    • 加密用公开的密钥,解密用私钥
    • (私钥只有自己知道,公开的密钥大家都知道)
  • 数字签名:
    • 验证传输的内容是对方发送的数据
    • 发送的数据没有被篡改过
  • 数字证书(Certificate Authority)简称CA
    • 认证机构证明是真实的服务器发送的数据。

3y的通讯之路:

  • 远古时代:3y和女朋友聊天传输数据之间没有任何的加密,直接传输
    • 内容被看得一清二楚,毫无隐私可言
  • 上古时期:使用对称加密的方式来保证传输的数据只有两个人知道
    • 此时有个问题:密钥不能通过网络传输(因为没有加密之前,都是不安全的),所以3y和女朋友先约见面一次,告诉对方密码是多少,再对话聊天。
  • 中古时期:3y不单单要跟女朋友聊天,还要跟爸妈聊天的哇(同样不想泄漏了自己的通讯信息)。那有那么多人,难道每一次都要约来见面一次吗?(说明维护多个对称密钥是麻烦的!)—>所以用到了非对称加密
    • 3y自己保留一份密码,独一无二的(私钥)。告诉3y女朋友,爸妈一份密码(这份密码是公开的,谁都可以拿—>公钥)。让他们给我发消息之前,先用那份我告诉他们的密码加密一下,再发送给我。我收到信息之后,用自己独一无二的私钥解密就可以了!
  • 近代:此时又出现一个问题:虽然别人不知道私钥是什么,拿不到你原始传输的数据,但是可以拿到加密后的数据,他们可以改掉某部分的数据再发送给服务器,这样服务器拿到的数据就不是完整的了。
    • 3y女朋友给3y发了一条信息”3y我喜欢你“,然后用3y给的公钥加密,发给3y了。此时不怀好意的人截取到这条加密的信息,他破解不了原信息。但是他可以修改加密后的数据再传给3y。可能3y拿到收到的数据就是”3y你今晚跪键盘吧“
  • 现代:拿到的数据可能被篡改了,我们可以使用数字签名来解决被篡改的问题。数字签名其实也可以看做是非对称加密的手段一种,具体是这样的:得到原信息hash值,用私钥对hash值加密,另一端用公钥解密,最后比对hash值是否变了。如果变了就说明被篡改了。(一端用私钥加密,另一端用公钥解密,也确保了来源)
  • 目前现在:好像使用了数字签名就万无一失了,其实还有问题。我们使用非对称加密的时候,是使用公钥进行加密的。如果公钥被伪造了,后面的数字签名其实就毫无意义了。讲到底:还是可能会被中间人攻击~此时我们就有了CA认证机构来确认公钥的真实性!

对于数字签名和CA认证还是不太了解参考一下


回到我们的HTTPS,HTTPS其实就是在HTTP协议下多加了一层SSL协议(ps:现在都用TLS协议了)

HTTPS采用的是混合方式加密:

过程是这样子的:

  • 用户向web服务器发起一个安全连接的请求
  • 服务器返回经过CA认证的数字证书,证书里面包含了服务器的public key(公钥)
  • 用户拿到数字证书,用自己浏览器内置的CA证书解密得到服务器的public key
  • 用户用服务器的public key加密一个用于接下来的对称加密算法的密钥,传给web服务器
    • 因为只有服务器有private key可以解密,所以不用担心中间人拦截这个加密的密钥
  • 服务器拿到这个加密的密钥,解密获取密钥,再使用对称加密算法,和用户完成接下来的网络通信

所以相比HTTP,HTTPS 传输更加安全

  • (1) 所有信息都是加密传播,黑客无法窃听。
  • (2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
  • (3) 配备身份证书,防止身份被冒充。

参考资料:

三、总结

我只是在学习的过程中,把自己遇到的问题写出来,整理出来,希望可以对大家有帮助。如果文章有错的地方,希望大家可以在评论区指正,一起学习交流~

参考资料:

  • 《图解HTTP》

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航:

http2https:一个哑代理,将请求从http重定向到https 自述文件 docker build -t grocerest/http2https . docker run -e PORT=4000 -p 4000:4000 grocerest/http2https 立即下载

相关推荐

DICOM三维重建:基于VTK实现三种面绘制算法

版本:VS2019、VTK9.0.1 #define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) #define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2) #include "vtkDICOMImageReader.h" #include "vtkRenderWindowInteractor.h" #i

一直在笑的博客 5923

http http2 https的区别

http/http2/https HTTP 协议是互联网的基础协议,HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。HTTPS 默认使用443端口 我们目前主要是使用的http1.1协议,可以参考阮一峰的HTTP协议入门 http/1.0的缺点 线程阻塞,在同一时间内,同一域名的请求有一定数量的限制(浏览一般限定在6个),超过数量的请求会被阻塞,(这样服务器的最大连接数如果为300的话,就最多只能50个人同时访

weixin_43548179的博客 841

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程

本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。

weixin_30627341的博客 324

2.https的工作流程

Https工作流程 浏览器发起往服务器的443端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。 服务器收到请求,选择浏览器支持的加密算法和哈希算法。 服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的,也可以是自制的。 浏览器进入数字证书认证环节,这一部分是浏览器内置的TLS完成的: 1.首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有...

LiuWei 1560

解读区块链在制药和物流管理中具备的优势

供应链透明度是建立药品弹性供应链的关键,如何更好地促进端到端的透明度,促进合作伙伴和消费者之间的信任度是当前医药和物流行业高管们关注的话题,区块链技术可以很好的帮助他们。 链集市 · 让区块链落地更简单 《区块链行业观察》专栏·第 31 篇 作者丨Shams Rahman 图片丨来源于网络 作者介绍:本文作者为Shams Rahman教授,是RMIT大学商业IT和物流学院的供应链管理教授、研究与创新部门副主任。本文中文版本由链集市团队编译整理,英文版权归原作者所有,中文转载请联系编译。 新冠肺炎疫情的爆发

CECBC的博客 623

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

HTTP1、HTTP2、HTTPS详解

HTTP1 HTTP 协议老的标准是HTTP/1.0,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,假如一个网页中包含很多图片和请求,每次都要断开重新连接,严重影响客户机和服务器的性能。基于此会发现,http1...

weixin_44273311的博客 3534

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5598

HTTP和HTTPS协议,看一篇就够了

一、前言: 我们上网很简单,只需要通过网络服务商开通端口就可以了,每天都在上网,有留意到访问网站链接有什么共同点吗?为什么需要但是为什么要讲HTTP和HTTPS呢? 二、HTTP和HTTPS发展历史 当我们打开谷歌浏览器输入www.12306.cn,回车很快在浏览器上就看到页面,其中的浏览器就是客户端,负责接受浏览器的是服务器,两者的通信是通过HTTP协议。 什么是HTTP? ...

不一样的博客 147万+

破盾实录|Vueling航空阿卡迈防护逆向:从503挑战到Cookie生成的全流程拆解

摘要:文章分享了作者在爬取西班牙伏林航空(Vueling)机票数据时,遭遇阿卡迈(Akamai)防护系统的实战经历。起初简单的请求被拦截返回503错误,分析发现阿卡迈通过混淆JS代码实施"挑战-验证"机制,需模拟真实浏览器环境才能获取有效Cookie。作者详细拆解了逆向过程:从抓包分析JS挑战流程,到破解代码混淆和控制流平坦化,最终用Python+Pyppeteer成功模拟浏览器特征,突破防护获取数据。整个过程涉及JS反混淆、环境检测绕过和Cookie生成验证等关键技术点,为类似防护系统

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1643

2、集中式MIMO雷达研究进展:正交波形设计与信号处理

集中式多输入多输出(Multiple Input Multiple Output,MIMO)雷达通常利用正交波形增加发射波形 自由度,采用数字阵列拓展空间收发自由度,使得雷达接收机的天线孔径获得明显扩展,最终带来空间分辨率、 测角精确度、杂波抑制能力等大幅度提升。但是,这些性能提升的前提是发射波形具有正交特性。事实上,在 实际应用中,在不牺牲时域/频域资源情况下,受限于时宽带宽积,无法获得完全正交的波形集合,从而限制了 MIMO雷达系统性能。本文对集中式MIMO雷达正交波形复用的技术原理进行了系统回顾,分别

qq_43416206的博客 2772

这些你需要了解的http 和 https

HTTP与HTTPS详解:核心区别与转换指南 HTTP和HTTPS是网络数据传输的核心协议,主要区别在于安全性:HTTP以明文传输数据,而HTTPS通过SSL/TLS加密确保数据安全。HTTPS结合非对称加密(密钥交换)和对称加密(高效数据传输),并提供身份验证,适用于电商、金融等敏感场景。 关键差异: 安全性:HTTPS加密传输,HTTP明文传输。 端口:HTTP默认80,HTTPS默认443。 证书:HTTPS需CA颁发SSL证书。 SEO:搜索引擎优先收录HTTPS网站。 判断协议方法: 地址栏前缀(

前端技术的学习整理 3115

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2708

【http和https】 简单入门了解

我将从以下几个方面介绍HTTP和HTTPS协议,并通过示例来说明它们的工作原理。

大龄烤红薯的博客 1578

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Http1,Http2与Https区别和联系

本文详细解析了HTTP协议及其演进版本的核心特性。HTTP1作为基础协议具有无连接、无状态特性,通过Cookie/Session/Token等应用层方案实现状态管理,但存在明文传输缺陷。HTTP2通过二进制分帧、多路复用、头部压缩等技术大幅提升性能,保持语义不变。HTTPS则在HTTP基础上加入TLS/SSL加密层,实现数据加密、身份验证和完整性保护。三者形成技术演进链条:HTTP1奠定基础架构,HTTP2优化性能,HTTPS保障安全。实际应用中需根据场景选择协议组合,如敏感数据必须采用HTTPS,状态管理

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 2942

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HTTP2和HTTPS介绍说明

作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处还请指出。

Harlan的专栏 6457

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

一起深入了解HTTP和HTTPS的区别

从最初的HTTP/0.9,仅支持GET方法,到后来的HTTP/1.0引入了POST等更多方法,并最终演变成我们今天所熟知的HTTP/1.1,这一版本加入了持久连接(persistent connection)等功能,使得浏览器和服务器之间的对话更加高效。于是,在1994年,Netscape公司推出了一项名为SSL(Secure Sockets Layer,安全套接层)的技术,为HTTP披上了第一件“隐身衣”,这便是HTTPS的雏形。的确,在早期,由于计算资源有限,加密确实是一项耗时的工作。

master_chenchen的博客 1367

http http2和https的区别

作为一个经常和web应用程序打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处还请指出。 一. web始祖HTTP 全称:超文本传输协议(HyperText Transf...

上善若水 5425

简单比较 http https http2,我们要如何把http升级为https

超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用;也就是说,一个不会静默丢失消息的协议,如UDP。

林恒的博客 1929

了解Http和Https的区别

HTTP 是超文本传输协议,用于在 Web 浏览器与服务器之间传输数据。它是一个无状态、应用层的协议,专门为传输 HTML 文档、图片、视频等 Web 资源设计。

Crazy_shark的博客 1387
上一篇: Java多线程打辅助的三个小伙子
下一篇: 【Java】几道让你拿offer的面试题
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值