原问转载于https://www.mysubmail.com/chs/blog/view/47

这两天闲来无事,在网上看了一下,发现 HTTP 和 HTTPS 的区别很受关注,多位大牛做了很详细的阐述,非常深刻全面。但是小编还是发现一个问题,大牛们的描述太过于专业了,对于专业人士来说当然很容易看明白,可是真正需要了解的往往是一些小白,小白们一开始就接触这些专业术语其实是很难理解的。你们说是不是这个理。所以小编决定联系实际来聊聊这个话题。

首先我们还是简单的描述一下专业定义。 HTTP 是怎么定义的? HTTPS 又是怎么定义的?

HTTP (全称 Hyper Text Transfer Protocol ),一般称为超文本传输协议,也是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计 HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。一种详细规定了浏览器和万维网服务器之间互相通信的规则。 HTTPS (全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是 HTTP 的安全版。

俗话讲:无规矩不成方圆。只有遵循一定规则通信才能有序正常的进行。本质上来说 HTTP 和 HTTPS 是相同的,都是一种传输协议,一种通信规则。只不过 HTTPS 是从 HTTP 的基础上发展而来的,加入了独特的安全机制。

接下来我们联系现实,举个例子为大家描述一下。

就拿打电话来说吧,如果你用自己的手机去给朋友手机拨打电话。看上去这很简单,可能有人会问,这打电话还能有规则?怎么没有呢,我们简单看一下打电话的过程,拨号码》接通电话》交流》结束挂电话。这不正是打电话的一套规则吗。

前面我们说过了, HTTP 规定了浏览器和万维网服务器之间互相通信的规则,比如我们通过浏览器去浏览一个网页,第一步是打开浏览器,浏览器好比是你的手机,在浏览器输入 URL 地址,进行请求,实际上我们输入 URL 后,我们的浏览器给 Web 服务器发送了一个 Request , Web 服务器接到 Request 后进行处理,生成相应的Response ,然后发送给浏览器, 浏览器解析 Response 中的 HTML ,这样我们就看到了网页,这里的URL就相当于你打电话时输入朋友的手机号码,而朋友手机可以看作是你访问的服务器。而 Request 和 Response 大致可以看作是你和朋友的通话内容吧。有些时候访问网页会出现提示找不到服务器等现象,这就说明对方服务器出了问题,也许是关闭了,也许是故障了。这又可以看作是拨打朋友电话,结果朋友手机关机或者损坏,自然无法接通。最后我们关闭浏览器结束访问也就好比通话结束,挂掉电话一样。

我们再看 HTTPS 规则, HTTPS 是运行在 SSL/TLS 之上的HTTP协议, SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。如果同样用打电话来理解,可以看作是你和朋友通电话的内容进行了加密处理,中国电信有一项特别定制的加密通信业务,内置国家密码管理局指配加密算法的手机终端,向客户提供实现商密级的端到端手机话音通信加密功能、手机终端信息保护以及手机终端加密信息的远程擦除等安全服务。而 HTTPS 协议使用的对称加密就好比是加密电话中添加的加密算法。可以防止被窃取和监听。

我们有必要解释一下 HTTPS 的证书,采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一把锁,这把锁只有你一个人有这把钥匙,你可以把锁给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

证书类别可以分为以下:按证书认证等级分类有 DV SSL 证书、 IV SSL 证书、 OV SSL 证书、 EV SSL 证书。按适用域名数量分类有通配符型 SSL 证书、万能型 SSL 证书、单域名 SSL 证书、多域名 SSL 证书。按照签发主体分类有:自签名 SSL 证书和 CA 机构签发 SSL 证书(各类证书的区别和申请方法因篇幅有限这里就不详细描述了。)

最后我们通过前面的讲述具体来概括一下 HTTP 和 HTTPS 的区别

1、HTTP 的 URL 以 HTTP:// 开头,而 HTTPS 的 URL 以 HTTPs:// 开头;

2、HTTP 是不安全的,而 HTTPS 是安全的,比如一些银行、政府、平台网站会使用 HTTPS,就拿小编现在所在的SUBMAIL赛邮云通信来说, 我们的官网 API 就采取了 HTTPS 协议,提高其安全性。示例HTTPs://api.submail.cn/message/xsend;

3、传输效率上 HTTP 要高于 HTTPS ,因为 HTTPS 需要经过加密过程,过程相比于 HTTP 要繁琐一点,效率上低一些也很正常;

4、HTTP 无需证书,而 HTTPS 必需要认证证书;

5、从 SEO 方面来参考,发现百度和谷歌是不同的。谷歌在 HTTPS 站点的收录问题上与对 HTTP 站点态度并无什么不同之处,甚至把“是否使用安全加密”(HTTPS)作为搜索排名算法中的一个参考因素,采用 HTTPS 加密技术的网站能得到更多的展示机会。百度曾表示不主动抓取 HTTPS 网页,所以目前采取 HTTPS 的网站是很难被百度收录的,不过有消息称百度接下来可能会向谷歌靠拢,对于 HTTPS 页面同样主动抓取。

6、还有一点也不能忽视,使用 HTTPS 需要证书,申请证书是要费用的,相比于 HTTP 不需要证书来说,HTTPS 这笔费用是无法避免的。

以上就是对 HTTP 和 HTTPS 的一些简述,从个人角度来说,我是希望将来采用 HTTPS 的站点越多越好,毕竟现在网站上购物支付这种活动已经非常频繁了,安全是我们不得不去重视的问题。如何提高站点信息的安全,目前最简单的解决方案就是站点采用 HTTPS 协议,进行 web 安全访问。

理解HTTP和HTTPS的区别的更多相关文章

  1. 大前端学习笔记整理【七】HTTP协议以及http与https的区别

    前言 还是老样子,新博客开始前总是想先啰嗦几句...HTTP协议其实在当初学习java时老师就有提过...但是...反正就那么过去了... 这段时间公司的项目正好要求做https的转换和迁移,然后自己 ...

  2. HTTP协议与HTTPS的区别

    permike 原文 HTTP协议与HTTPS的区别 HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成, ...

  3. css基础--深入理解opacity和rgba的区别

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 首先这两个都与透明度有关,那么他们之间有什么具体的区别呢?在实际工作中我们需要注意什么呢?请您接着往下看 语法 1. rg ...

  4. 3个问题:MySQL 中 character set 与 collation 的理解;utf8_general_ci 与 utf8_unicode_ci 区别;uft8mb4 默认collation:utf8mb4_0900_ai_ci 的含义

    MySQL 中 character set 与 collation 的理解 出处:https://www.cnblogs.com/EasonJim/p/8128196.html 推荐: 编码使用 uf ...

  5. [菜鸟]HTTP 与 HTTPS 的区别

    HTTP 与 HTTPS 的区别 分类 编程技术 基本概念 HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式.协作式和超媒体信息系统的应用层协议. 简 ...

  6. HTTP和HTTPS的区别(转)

    原文链接:HTTP和HTTPS的区别 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和 ...

  7. 详细解析 HTTP 与 HTTPS 的区别

    详细解析 HTTP 与 HTTPS 的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览 ...

  8. 面试基础试题 一 http和HTTPS的区别

    作为老生常谈的问题,我主要给出我自己的理解和结合大牛的叙述的综合看法,来检验自己学习 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何 ...

  9. HTTP和HTTPS的区别和常见的面试题

    本篇会着重介绍http和https的区别和常见的面试题 常见的http和https面试题: Http与Https的基本概念和他们的区别 HTTPS工作原理 常用的HTTP方法有哪些 GET方法与POS ...

随机推荐

  1. asp.net sqlite 当插入数据后的第一次访问会变的很慢!

    <add key="ConnectionStringSQLite" value="data source=|path|DB/XXX.db;Version=3;&qu ...

  2. 在ABP模板工程中使用MySql

    1 下载一个新的ABP模板项目 http://www.aspnetboilerplate.com/ 2 在Windows上安装MySql, 创建一个新的数据库 sampledb https://dev ...

  3. cmd常用命令符

    想成为电脑高手必须掌握的八个cmd 命令 http://www.cr173.com/html/3917_1.html ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值 ...

  4. eclipse安装插件

    http://blog.csdn.net/powmxypow/article/details/11553395

  5. TOAD和PLSQL 默认日期显示、rowid显示、TNSNAME的修改

    先说下要解决的问题: select rowid,acct_id,state_date from acct; 修改后,1)sql指明rowid,可以显示出来 2)时间格式显示为YYYYMMDD HH24 ...

  6. linux的whoami, who指令

    who 这个命令重点在用来查看当前有那些用户登录到了本台机器上 whoami 显示的是有效用户用户名 ,是当前操作用户的用户名 who am i == who -m 显示的是实际用户的用户名,即用户登 ...

  7. JSON对象转换问题

    今天调用别人接口遇到一个问题,原本约定的data格式为:JSON字符串,但本次返回了一个空字符串"", 大概是这样的 字符串类型的httpResult.data值为字result: ...

  8. Mybatis select返回值为map时,选取表字段的两列作为key,value

    项目需要从ibatis升级到MyBatis,dao中有一个方法返回Map类型,具体是查询语句查询两个字段,将结果列表字段A的值作为key字段B的值作为value存入Map中作为结果返回: ibatis ...

  9. EF连接ORACLE

    1.nuget引用Oracle.ManagedDataAccess.EntityFramework的dll文件 2.安装Oracle Developer Tools for Visual Studio ...

  10. VS2012一打开就停止工作的解决方法

    昨天刚装好VS2012,用得好好的,嘿,今早儿 一打开程序,就告诉我 VS2012停止工作,只有关闭程序或者调试程序. 小主酸菜郁闷不已,必须找到解决方法啊,错误提示如图: 错误原因:        ...