http与https的区别
首先不得不介绍一个知识点:TCP/IP
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。 互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。
TCP/IP按照协议层次可以分为应用层,传输层,网络层,数据链路层
http(超文本传输协议):
超文本:不止于文字,还有图片、音频、视频、超链接等,文本的语义被扩大了,这种被语义扩大的 文本就是超文本。
传输:两台计算机(客户端和服务端)之间进行通信,我们存储的超文本会被解析成为二进制数据 包,数据包的从一台电脑传到另一台电脑成为传输。(这里两台电脑的连接涉及到TCP的三次 握手机制,下面会介绍)
协议: http本质上就是一种网络协议。网络协议就是网络中(包括互联网)传递、管理信息的一些规范。
浏览器展示页面:
当在浏览器地址栏中输入URL或是点击一个超链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成网页
TCP的三次握手机制:
TCP是传输层的协议
TCP 的三次握手,就是需要确认双方的两样能力: 发送的能力和接收的能力。于是便会有下面的三次握手的过程:
(左边是客户端,右边是服务端)
起初双方都处于CLOSED状态
服务器开始监听某一个端口,进入LISTEN状态
客户端主动发起连接,发送SYN,自己变成了SYN-SEND状态(第一次)
服务端接收到(服务端确定了客户端有发送的能力),返回SYN和ACK,自己变成了SYN-REVD状态(第二次)
客户端接收到SYN和ACK(客户端确定了服务端有发送和接收的功能),之后客户端再次发送ACK给服务端,自己变成了ESTABLISHED(确定的)状态;服务端接收到ACK之后(服务端确定了客户端有接收的能力),也变成了ESTABLISHED(确定的)状态(第三次)
双方的发送和接收功能都确认之后就可以连接
- http的特点:
-
- 1.永远都是客户端发起请求
- 服务器回送响应 应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色。仅从一条通信线路来说,服务器端和客户端的角色是确定的。HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
- 2.无状态:
- 无状态就是服务器不会记录关于客户端请求的历史信息,这样做减少了服务器的压力。
- 比如登录功能,客户端向服务器发送请求登录,假如服务器记录了每个用户的登录信息, 那么服务器的压力会很大。但是如果用户每次登录都要重新输入账号密码又很麻烦,所以有了cookie和seesion来保存。
- 3.持久连接:
- HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接。比如使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销。 为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。旨在建立一次 TCP 连接后进行多次请求和响应的交互。在 HTTP/1.1 中,所有的连接默认都是持久连接。
- 4.管线化
- 持久连接使得多数请求以管线化方式发送成为可能。以前发送请求后需等待并接收到响应,才能发送下一个请求。管线化技术出现后,不用等待亦可发送下一个请求。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。 比如,当请求一个包含多张图片的 HTML 页面时,与挨个连接相比,用持久连接可以让请求更快结束。而管线化技术要比持久连接速度更快。请求数越多,时间差就越明显。
https:
是 http 的“升级”版本:HTTPS = HTTP+ SSL/TLS
SSL/TLS可以对https传输的数据进行加密。用于解决安全问题,http是有安全隐患的,因为传输的是明文信息,没有进行任何加密。
在微信小程序开发中,官方为了保证安全问题,只允许发送https的请求。
如图:juejin使用https,浏览器显示“连接是安全的”,如果是是使用http的网站就会显示不安全。
- https的工作流程:
-
-
客户端请求 HTTPS 请求并连接到服务器,进行三次握手,此过程和请求 HTTP 请求一样。
-
之后https还进行了大量的加密操作(涉及公钥、私钥、非对称加密、对称加密等很多密码学的概念,有兴趣可以了解),在此过程中如果有证书过期,身份无法验证的问题,就无法连接。
-
https的缺点:
-
HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;
-
https在加密中涉及到一个SSL证书,用于客户端和服务端的身份识别,这个证书不免费,并且功能越强大的证书费用越高。
-
SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名。
-
不过这些缺点也只是说说,现在已经很难找到使用http的网站了。
http和https的区别总结:
- 加密: HTTPS 是 HTTP 协议的更加安全的版本,通过使用SSL/TLS进行加密传输的数据;
- 连接方式: HTTP(三次握手)和 HTTPS (三次握手+数字证书)连接方式不一样;
- 端口: HTTP 默认的端口是 80和 HTTPS 默认端口是 443(端口一般会隐藏起来);
- 证书:HTTPS需要CA申请证书,一般免费证书很少,需要交费