HTTP和HTTPS的区别
HTTP和HTTPS的区别
1)什么是HTTP
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是一种请求-响应协议,在客户端用户代理(通常是一个 Web 浏览器)和作为信息资源服务的服务器之间进行通信。
2)什么是HTTPS
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性,确保在用户与网站服务器之间传输的数据不会被第三方窃取或篡改。
3)HTTP与HTTPS的区别
HTTP和HTTPS的区别主要有以下6个特性:
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
TCP的三次握手:
- 第一次握手:客户端尝试连接服务器,向服务器发送 SYN包(同步序列编号Synchronize Sequence Numbers),序列号SEQ1=client_isn,客户端进入 SYN_SEND 状态等待服务器确认
- 第二次握手:服务器接收客户端SYN包并确认ACK包,并应答序列号Ack = SEQ1+1,同时向客户端发送一个 SYN包,序列号SEQ2=server_isn,即 SYN+ACK 包,此时服务器进入 SYN_RCVD 状态
- 第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK包,并应答序列号Ack = SEQ2+1,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
4)HTTP的工作原理
- 客户端请求(Request): 用户在浏览器中输入一个 URL 或点击一个链接后,浏览器就会向服务器发送一个 HTTP 请求。一个 HTTP 请求通常包含以下几个部分:请求行(包含方法 GET、POST 等,资源的 URL 和 HTTP 版本),请求头(包含一些客户端环境信息,如接受的内容类型等),以及可选的请求包体(通常用于 POST 请求,包含要发送给服务器的数据)。
- 服务器响应(Response): 服务器收到客户端的请求后,会处理该请求,并返回一个 HTTP 响应。响应通常包含:状态行(包括 HTTP 版本,状态码,和状态说明),响应头(包含服务器信息,内容类型等),和响应包体(实际请求的内容,就是客户端请求的网页或其它数据)。
- 建立连接: 在发送请求之前,客户端需要与服务器建立一个连接。在 HTTP/1.1 和更早的版本中,每个请求/响应对通常都需要一个新的 TCP 连接,这会导致额外的延迟。为了改善性能,HTTP/1.1 引入了持久连接(“keep-alive”),允许在一次连接中发送、接收多个请求/响应,而 HTTP/2 进一步引入了多路复用功能。
- 渲染: 一旦浏览器收到服务器的响应,它将解析该响应,并根据接收到的 HTML、CSS 和 JavaScript 内容渲染页面。
5)HTTPS的工作原理
- 客户端请求(Request):连接服务器的443端口。
- 服务器响应(Response)
- 服务器传送证书(公钥):采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
- 客户端解析证书:这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题;如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密。
- 传送加密信息:这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
- 服务器解密信息:服务端用私钥解密后,得到了客户端传过来的随机值(对称秘钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
- 客户端解密信息:客户端用之前生成的私钥解密服务段传过来的信息,就获取了解密后的内容。
原文链接: