HTTP 全称 Hyper Text Transfer Protocol,译为超文本传输协议。
HTTP 最初的设计目的是提供一种发布和接收 HTML (Hyper Text Markup Language,超文本标记语言)页面的方法。
HTTP 有多个版本,目前广泛使用的是 HTTP/1.1 版本。
网络协议:通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
HTTP 特点
- HTTP 协议支持客户端/服务端模式,是一种请求/响应模式的协议
- 实现简单:客户端向服务端发送请求时,只需传送请求方法、请求路径和参数,常用的请求方法有 GET、HEAD、POST 等等
- 应用广泛:HTTP 允许传输任意类型的数据对象,传输的类型类型由 Head 中的 Content-Type 标记
- 无连接:每次连接只处理一个请求,服务器处理完请求,并收到客户端的应答后,即断开连接。这种模式不利于客户端和服务器保持会话连接,为了弥补这项不足,产生了两种记录 HTTP 状态的技术 —— Cookie 和 Session
- 无状态:服务端不会存储事务处理结果,后续的处理如果需要前面的信息,则必须把前面的信息再传过来
HTTP 存在的问题
- 请求信息通过明文传输,容易被窃听、截取
- 通信双方没有校验数据的完整性,容易被篡改
- 通信双方没有验证对方身份,容易出现中间人攻击
HTTPS 就是为了解决这些问题而诞生的,HTTPS 的全称是 Hyper Text Transfer Protocol over Secure Socket Layer,意思是 HTTP + SSL/TLS。
SSL 是指 Secure Socket Layer(安全套接字层),它位于 TCP/IP 协议和应用层协议之间,为数据通信提供安全支持,SSL 依靠证书来验证服务器的身份,并为客户端和服务器之间的通信加密。TLS 是指 Transport Layer Security(传输层安全),它是 SSL 的优化版。目前使用最广泛的是 TLS 1.1、TLS 1.2。
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般 SSL 证书需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。SSL 证书其实就是一对公钥和私钥,加上一些其他信息,如证书的颁发机构,过期时间等等。
也有一些开源、免费的证书,如 Let's Encrypt。
HTTPS 传输流程
- 客户端通过 URL 访问服务器建立 SSL 连接
- 服务器收到客户端请求后,将网站支持的证书信息(证书中包含公钥)传送一份给客户端
- 客户端与服务器协商 SSL 连接的安全等级,也就是信息加密的等级
- 客户端根据双方同意的安全等级,建立会话密钥,利用服务器的公钥将会话密钥加密,并传送给服务器
- 服务器用自己的私钥解密出会话密钥
- 服务器利用会话密钥与客户端进行加密通信
HTTPS 的缺点
- HTTPS 多次握手,导致页面加载时间延长
- HTTPS 连接的缓存不如 HTTP 高效,会增加数据开销和功耗
- SSL 证书是收费的,功能越强大的证书费用越高
- SSL 涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗大
总结:HTTP 与 HTTPS 的区别
- 安全方面:HTTP 采用明文传输,HTTPS 采用加密传输,并且通过 SSL 证书验证服务器的身份,所以 HTTPS 更安全
- 性能方面:HTTPS 需要先建立 SSL 连接,并传输加密通信所需的密钥,导致握手次数较多;而且加密解密算法对服务器的 CPU 消耗较大。所以 HTTP 性能更高
- 价格:HTTPS 用到的 SSL 证书一般是收费的,不同的证书收费也不同,但也有免费的证书,如 Let's Encrypt,HTTP 是免费的
- SEO(Search Engine Optimization):通常采用 HTTPS 加密的网站在搜索结果中的排名比同等的 HTTP 网站的排名更高
- 默认端口:HTTP 默认端口是 80,HTTPS 默认端口是 443
网友评论