天天上网都会在地址栏输入http://——,可不要说你不知道http哦,那就不应该了,多对不起这么多年耗在网页上的时光和输入的http啊!来,小编给童鞋们普及一下http相关的知识!

名词解释

“HTTP”是干嘛用滴?

  • 首先,HTTP 是一个网络协议,是专门用来帮你传输 Web 内容滴。关于这个协议,就算你不了解,至少也听说过吧?比如你访问实验楼主页,浏览器地址栏会出现http://www.shiyanlou.com/;

  • 加了粗体的部分就是指 HTTP 协议。大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东东(图片、CSS 样式、JS 脚本)。

“SSL/TLS”是干嘛用滴?

  • SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”);

  • 为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明SSL 协议,就是为了解决这些问题;

  • 到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。

  • 很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

“HTTPS”是啥意思?

解释完 HTTP 和 SSL/TLS,现在就可以来解释 HTTPS 啦。咱们通常所说的 HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。你可以把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差不多)。

HTTP与TCP

HTTP 和 TCP 之间的关系

  • 简单地说,TCP 协议是 HTTP 协议的基石——HTTP 协议需要依靠 TCP 协议来传输数据。

  • 在网络分层模型中,TCP 被称为“传输层协议”,而 HTTP 被称为“应用层协议”。

  • 有很多常见的应用层协议是以 TCP 为基础的,比如“FTP、SMTP、POP、IMAP”等。
    TCP 被称为“面向连接”的传输层协议。关于它的具体细节,俺就不展开了(否则篇幅又失控了)。你只需知道:传输层主要有两个协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 协议想象成某个水管,发送端这头进水,接收端那头就出水。并且 TCP 协议能够确保,先发送的数据先到达(与之相反,UDP 不保证这点)

HTTP 协议如何使用 TCP 链接

  • HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”);

  • 假设有一个网页,里面包含好多图片,还包含好多【外部的】CSS 文件和 JS 文件。在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开);

  • 相反,如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。

  • 在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大);到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了)。这时候再用短连接的方式,效率太低下了(因为建立 TCP 连接是有“时间成本”和“CPU 成本”滴)。所以,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式。

“对称/非对称加密”

啥是“加密”和“解密”?

  • 通俗而言,你可以把“加密”和“解密”理解为某种【互逆的】数学运算。就好比“加法和减法”互为逆运算、“乘法和除法”互为逆运算。

  • “加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东东——叫做“密钥”——来参与数学运算。

啥是“对称加密”?

所谓的“对称加密技术”,意思就是说:“加密”和“解密”使用【相同的】密钥。这个比较好理解。就好比你用 7zip 或 WinRAR 创建一个带密码(口令)的加密压缩包。当你下次要把这个压缩文件解开的时候,你需要输入【同样的】密码。在这个例子中,密码/口令就如同刚才说的“密钥”。

啥是“非对称加密”?

所谓的“非对称加密技术”,意思就是说:“加密”和“解密”使用【不同的】密钥。这玩意儿比较难理解,也比较难想到。当年“非对称加密”的发明,还被誉为“密码学”历史上的一次革命。

各自有啥优缺点?

  • 看完刚才的定义,很显然:(从功能角度而言)“非对称加密”能干的事情比“对称加密”要多。这是“非对称加密”的优点。但是“非对称加密”的实现,通常需要涉及到“复杂数学问题”。所以,“非对称加密”的性能通常要差很多(相对于“对称加密”而言)。

  • 这两者的优缺点,也影响到了 SSL 协议的设计。

转载于:https://blog.51cto.com/29498359/1748789

每个人都应该了解的HTTPS知识相关推荐

  1. 99%的人都不知道的品牌冷知识

    现在OPPO和VIVO是各自独立发展他们既是同行,也是对手. 农夫山泉和娃哈哈也有一腿? 娃哈哈当年的海南和广西总代理因为跨区域串货跟公司起冲突,该总代离职后,先后创办了养生堂.农夫山泉,做出养生堂龟 ...

  2. 网络知识:路由器要不要每天重启?很多人都做错了,难怪网速慢

    家里用的路由器 长时间运行容易出现网络卡顿现象 很多人习惯重启下 甚至还有人专门关掉路由器让其休息一下 那么路由器到底要不要关? 多久关一次? 路由器到底关不关? 问过很多朋友,很多人都说家里装的路由 ...

  3. 每个人都应该了解的金融小知识 -- 利率计算 (含一道码农面试题)

    本文包含每个人都应该了解的金融小知识 -- 利率的计算方法, 以及在推导过程中衍生出的一道码农面试题. 欢迎大家留言讨论(本文首发于微信公众号 "唐磊Coder"(微信ID: ta ...

  4. 全栈工程师?并没有什么卵用。每个人都应该去创业,不为别的,就为了健全你的人格(转)...

    困境: 全栈工程师在实际工作中,意义并不大. 从员工角度说,工作中几乎不存在需要你全栈能力的项目或岗位,项目本身的技术跨度就不会特别大,人员配备一般也会比较健全,你的技术力通常难以得到体现,虽然你也可 ...

  5. 90%的人都不会做的一道笔试题

    关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 数组操作的题目,有的确实比较容易,但并非每个问题都是如此.今天就来看道90%的人都不会做的笔试题 ...

  6. mvc2 mvc_每个人都知道MVC…

    mvc2 mvc 从一个最近的博客中,您可能会发现我最近一直在进行一些采访,就像他们对Web应用程序开发人员所说的那样,我问的一个问题是"您能解释一下MVC模式是什么吗?",值得赞 ...

  7. 微软想让所有人都成为开发者?

    "作为一家科技公司--我们的核心目标是,如何利用这项技术,使其平民化,让更多的人都能够掌握它,以便让所有人都从技术中获益." 作者 | Mike Murphy 译者 | 苏本如,责 ...

  8. 为什么所有人都对 HTML、CSS 失望了?

    作者 | Rachel Andrew,Web 开发者 译者 | 罗昭成 责编 | 沭   七 出品 | CSDN(ID:CSDNnews) 所有的人再一次对 CSS 失望.我不打算去总结这些让人失望的 ...

  9. 每个人都可以用的开源微信机器人

    经历过UOS web协议的重放荣光,又经过一段时间的封禁,又有大神把UOS web协议救回来了.免费的快乐又重新回来了,不是吗? 这意味着每个人都可以用Wechaty搞事情了,什么服务器通知,定时给女 ...

最新文章

  1. 安卓照片迁移苹果_转区功能终于上线,安卓苹果可互相迁移,20块一次,每天限量5000名额!...
  2. 基于linux的ARM设备升级,烧写Nand flash总结
  3. 序列化加密字段_自动加密可序列化的类
  4. eclipse中使用git回到之前的版本
  5. 入门微信小程序[第六篇]微信小程序 -- 大樱桃的安排
  6. python模块之httplib(在py3中功能进一步强大,请详看文档)
  7. UVA 11044
  8. h5在线游戏制作开发:h5模板打地鼠小游戏怎么制作?
  9. 闸机常用通讯协议(韦根,485等),或者开关量输出(继电器)直接控制
  10. kali linux怎么入侵手机,Kali Linux-Metasploit入侵Android手机
  11. linux系统 插上硬盘认不到,关于Linux系统增加SCSI硬盘不识别的问题及解决办法
  12. android开发学习:打电话和发短信
  13. python比较重要的模块_python中重要的模块--asyncio 转载
  14. 面试官:说说left join和left semi join 两者有什么区别?
  15. 计算机组成原理——微程序控制器
  16. OSG 自定义场景漫游示例
  17. 知识图谱实战开发案例剖析(22)Protege开发环境安装部署
  18. 立冬穿短袖,生活不将就 2020.11.18日记
  19. SourceTec.Sothink.SWF.Decompiler.v5.1.516.Cracked-NGEN
  20. 什么是百度特效搜索?百度搜索什么有特效?---黑洞

热门文章

  1. Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
  2. ubuntu16.04没有声音解决方案( 通俗易懂)
  3. Zabbix监控解决方案
  4. 解决idea的html代码中使用es6语法报错的问题
  5. idea解决tomcat控制台中文乱码问题
  6. 在github上托管Maven存储库
  7. 电脑删除文件需要管理员权限怎么办
  8. ifpc币_劳力士手表价格表一览表
  9. 最长公共子串(10分)
  10. 二维数组鞍点问题(C++)