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

news2024/11/15 8:27:45

🧑‍💻 写在开头
点赞 + 收藏 === 学会🤣🤣🤣

什么是HTTP

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

HTTP1.0 时代

影响一个 HTTP 网络请求的因素主要有两个:带宽和延迟。

一.带宽
如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担心由带宽而影响网速,那么就只剩下延迟了。

二.延迟

  1. 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。
  2. DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。
  3. 建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

主要区别

HTTP1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。 主要区别主要体现在:

  1. 缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  2. 带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(PartialContent),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
  3. 错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  4. Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homedWebServers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400Bad Request)。
  5. 长连接,HTTP1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

Https

HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式.

Strict Transport Security解决了这个问题;只要你通过HTTPS请求访问银行网站,并且银行网站配置好Strict Transport Security,你的浏览器知道自动使用HTTPS请求,这可以阻止黑客的中间人攻击的把戏。

启用 Strict Transport Security
开启HSTS只需要当通过HTTPS方式访问你的网站时,返回 Strict-Transport-SecurityHTTP 头信息: Strict-Transport-Security: max-age=expireTime [; includeSubdomains]

HTTPS与HTTP的一些区别

  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
    在这里插入图片描述

使用SPDY加快你的网站速度

2012年google如一声惊雷提出了SPDY的方案,大家才开始从正面看待和解决老版本HTTP协议本身的问题,SPDY可以说是综合了HTTPS和HTTP两者有点于一体的传输协议,主要解决:

  1. 降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,降低了延迟同时提高了带宽的利用率。
  2. 请求优先级(requestprioritization)。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。
  3. header压缩。前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。
  4. 基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。
  5. 服务端推送(server push),采用了SPDY的网页,例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了。SPDY构成图:
    在这里插入图片描述
    SPDY位于HTTP之下,TCP和SSL之上,这样可以轻松兼容老版本的HTTP协议(将HTTP1.x的内容封装成一种新的frame格式),同时可以使用已有的SSL功能。

HTTP2

HTTP2.0可以说是SPDY的升级版(其实原本也是基于SPDY设计的),但是,HTTP2.0 跟 SPDY 仍有不同的地方,主要是以下两点

● HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS

● HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE

http2 新特性
● 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

● 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。多路复用原理图:
在这里插入图片描述
●header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

● 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。目前,有大多数网站已经启用HTTP2.0,例如YouTuBe,淘宝网等网站,利用chrome控制台可以查看是否启用H2:

chrome=>Network=>Name栏右键=>√Protocol

http升级为https

前提准备

1.已申请了自己的域名
2.注册阿里云账号
3.当然要有自己的服务器, 装一下 Nginx, 待会域名校验会用到

申请阿里云免费证书

选购证书
控制台搜索 SSL, 点击"选购证书"
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

申请证书

进入证书控制台, 点击证书申请, 填写信息
域名校验方式我选择的是 手动"文件校验"的方式,
如果你的服务器是阿里云的, 选择 "自动DNS验证"会很方便, 在这里咱们就按照常规方式来, 也算了解一下运维过程
在这里插入图片描述
准备校验文件
在这里插入图片描述

这里所谓验证, 其实就是通过上面的域名能访问到, 校验文件, 访问不到当然没法让你使用啦
Nginx 配置这里可能要注意下, 也没什么难度

在这里插入图片描述
下载证书

根据自己的服务器类型下载, 这里咱们选择Nginx

在这里插入图片描述
上传证书, 配置Nginx

咱们把ssl证书放到/ssl(目录随意吧), 把下载的证书文件解压之后, 上传到该目录
在这里插入图片描述

贴一下Nginx配置, 记得改完配置要重启Nginx哦

server {
    #listen    80;       #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
    listen    443 ssl;
    server_name  xxx.com;             #域名
 
    # 增加ssl
    #ssl on;        #如果强制HTTPs访问,这行要打开
    ssl_certificate /ssl/xxxx.pem;
    ssl_certificate_key /ssl/xxxxx.key;
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
     # 指定密码为openssl支持的格式
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;
 
     ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
     ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
 
     # 定义首页索引目录和名称
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
     }
 
    #重定向错误页面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

然后就可以愉快的访问体验HTTPS了

干货赠送: Nginx 排错小技巧

在配置过程中, 可能会出现访问没反应, 等各种问题,

这时候, 不要慌, 咱们有思路

此时一定要观察Nginx的 access.log 和 error.log, 从error.log 一般能找到有效信息, 可以拿到error关键字, 再取搜索引擎去分析解决

我刚才配置就失败了一次, Nginx配置完证书之后, 重启, 输入url访问未反应,

随即看下error.log,

2020/05/10 03:11:39 [emerg] 1#1: cannot load certificate "/ssl/xxx.key": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

带着关键字去搜索, 随便点进去一篇, 突然注意点, 我证书配置对应错了, 哈哈, 尴尬

马上改正, 重启, 验证有效, OK !
在这里插入图片描述
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
在这里插入图片描述

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

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

相关文章

《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-02-广域网网络架构

文章目录 1. 概念和组成2. 网络架构2.1 单核心广域网3.2 双核心广域网3.3 环型广域网3.4 半冗余广域网3.5 对等子域广域网3.6 层次子域广域网 1. 概念和组成 组成(以功能看) 通信子网:将分布在不同地区的局域网或计算机系统互连起来资源子网&…

阿里P7大牛整理自动化测试高频面试题

最近好多粉丝咨询我,有没有软件测试方面的面试题,尤其是Python自动化测试相关的最新面试题,所以今天给大家整理了一份,希望能帮助到你们。 接口测试基础 1、公司接口测试流程是什么? 从开发那边获取接口设计文档、分…

vscode 使用git bash,路径分隔符缺少问题

window使用bash --login -i 使用bash时候,在系统自带的terminal里面进入,测试conda可以正常输出,但是在vscode里面输入conda发现有问题 bash: C:\Users\marswennaconda3\Scripts: No such file or directory实际路径应该要为 C:\Users\mars…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题,目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Live800:全方位客户服务:从售前到售后的无缝衔接

在现今这个瞬息万变的商业世界里,企业与客户之间的关系已经超越了简单的买卖交易,转而成为了一种更加紧密、持久的互动。全方位客户服务正是这一趋势下的产物,它如同一条温暖的纽带,将企业的关怀与客户的需求紧密相连,…

搭贝低代码平台:工程项目管理系统的智能化变革

在现代建筑工程中,项目管理的复杂性和挑战不断增加,传统的项目管理方式往往难以满足快速变化的市场需求和高效管理的要求。搭贝低代码平台的工程项目管理系统(EPM)通过智能化和自动化手段,帮助企业克服这些挑战&#x…

GitHub图床

GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…

跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准

随着物联网、大数据、云计算等技术的飞速发展,视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础,其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…

基于时序差分的无模型强化学习:Q-learning 算法详解

目录 一、无模型强化学习中的时序差分方法与Q-learning1.1 时序差分法1.2 Q-learning算法状态-动作值函数(Q函数)Q-learning 的更新公式Q-learning 算法流程Q-learning 的特点 1.3 总结 一、无模型强化学习中的时序差分方法与Q-learning 动态规划算法依赖…

人工智能时代,程序员如何保持竞争优势?

在当前人工智能技术飞速发展的背景下,程序员的工作方式与职业角色正经历着前所未有的深刻变革。随着 ChatGPT、Midjourney、Claude 等 AIGC 技术的迅速崛起,AI 辅助编程工具的应用日益广泛,极大地改变了编程的传统模式。这一趋势不仅提升了编…

moonlight串流配置太复杂?推荐一款无需配置的宝藏串流软件GameViewer远程

moonlight支持将PC游戏实时串流到安卓、iOS、Apple TV、Chromebook、PS Vita甚至Raspberry Pi等设备上,让用户无需携带笨重的游戏设备,即可随时随地进行游戏。 但是moonlight的门槛较高,很多串流新手不懂得如何配置,同时如果没有I…

云计算之云原生(下)

目录 接上文 二、消息队列Kafka 2.1 消息队列 Kafka:企业级大数据消息通道 2.2 系统架构 2.3 更稳定Kafka – 自研双引擎支持 2.4 更高性能Kafka – 秒级分区扩容 2.5 客户端报错及解决方案 三、云原生可观测体系 3.1 可观测性是系统稳定性保障的必要手段 …

计算机毕业设计推荐-基于Java的乡村农家乐管理系统

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于Java的乡村农家乐管理系…

算法基础-快速排序

快速排序 i、j不相邻时&#xff0c;指向同一个下标 i、j相邻时&#xff0c;j 比 i 小 不管是否相邻&#xff0c;最后一次循环的if条件一定是 i>j 来退出循环&#xff0c;即最后一次的 if(i<j) 不执行 按照 j 来划分,x a[l r >> 1]&#xff0c;分为 [ l&#xff0…

QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(二)疑难杂症

疑难杂症1 1.问题&#xff1a; 设置场景的背景图片时&#xff0c;采用setBackgroundBrush()方法和重写drawBackground()函数得到的结果很不一样&#xff0c;而且通过setSceneRect设置场景原点位置之后得到的结果也有很大区别。 如下图 第一个和第三个中重写了QGraphicsScene…

论文解读:《LAMM: Label Alignment for Multi-Modal Prompt Learning》

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文细节理解 VL模型和下游任务…

Python输出多位数

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 1.第一种:正常直接用循环 以三位数为例: for i in range(100, 1000):print(i) 运行结果( 展示一部分 ): 图1-1 2.第二种:特定位数 以三位数为例: for i in range(1, 5): # 括号内指定那个位的范围for j in r…

MySQL基础(5)- 运算符

目录 一、算数运算符 1.加法运算符 2.乘除运算符 3.取模运算 二、比较运算符 1. <> <> ! < < > > 2.IS NULL \ IN NOT NULL \ ISNULL 3.LEAST() \ GREATEST() 4.BETWWEEN 条件下界1 AND 条件上界2 5.in (set)\ not in (set) 6.LIKE :模糊查…

96.游戏的启动与多开-窗口多开检测与破解

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;95.游戏的启动与多开-信号量多开检测与破解 以 95.游戏的启动与多开-信号量多开检测与破…