由于iOS即将强制使用HTTPS,所以最近花时间再次深入研究了一下HTTPS。
该篇主要先讲一些HTTPS术语。
1、HTTP是什么
首先,HTTP 是一个网络应用层协议,是专门用来帮你传输 Web 内容。
2、HTTP 和 TCP 之间的关系
在网络分层模型中,TCP 被称为“传输层协议”,而 HTTP 被称为“应用层协议”。
传输层主要有两个协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 协议想象成某个水管,发送端这头进水,接收端那头就出水。并且 TCP 协议能够确保,先发送的数据先到达(UDP 不保证这点)。
简单地说,HTTP 协议需要依靠 TCP 协议来传输数据。
3、HTTP 协议如何使用 TCP 连接?
HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”。
在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开)
如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。
在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大);
到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了)。这时候再用短连接的方式,效率太低下了。所以,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式。
4、“SSL/TLS”又是什么?
SSL(Secure Sockets Layer),中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。
为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。
后来SSL 因应用广泛,便被标准化。且名称改为 TLS(Transport Layer Security),中文叫做“传输层安全协议”。
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。
5、“HTTPS”是啥意思?
解释完 HTTP 和 SSL/TLS,现在就可以来解释 HTTPS 啦。咱们通常所说的 HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。
你可以把 HTTPS 大致理解为——“HTTP over SSL/TLS”
Https的作用:
身份认证 认证用户和服务器,确保数据发送到正确的客户机和服务器;(通道端可靠)
内容加密 建立一个信息安全通道,来保证数据不被窃听;(通道加密)
数据完整性 防止内容被第三方篡改;(避免通道劫持)
6、HTTPS和HTTP的区别
1、HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者使用的端口是80,后者使用的端口是443。
4、HTTPS的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
此文到此结束!
请继续关注下文,深入HTTPS系列二(加密&证书)
参考资料:
1.HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事