Skip to content
本页目录

HTTP 和 HTTPS

HTTP

HTTP 即超文本传输协议,主要用于 Web 上传输超媒体文本的底层协议,经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进行。

特点

  • 无连接:每一次请求都要连接一次,请求结束就会断掉,不会保持连接

  • 无状态:每一次请求都是独立的,服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,从而减少了网络开销。这既是优点也是缺点。

  • 灵活易于扩展:HTTP 协议中的各种请求方法、URI / URL、状态码、头字段等每个组成都是可以由开发人员自定义和扩充的。

  • 简单快速:基本报文的格式为 header + body,头部信息也是键值对的文本形式,易于理解。当发送请求访问某个资源时,只需传送请求方法和 URL 就可以了,使用简单。正由于http协议简单,使得http服务器的程序规模小,因而通信速度很快

缺点

  • 无状态:服务器不会记忆 HTTP 的状态,所以不需要申请额外的资源,能够减轻服务器的负担。但是也就无法区分多个请求发起者身份是不是同一个客户端的,意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

  • 明文传输:传输的报文 (header部分) 是肉眼可见的,直接将信息暴露给了外界。

  • 不安全:明文传输可能被窃听不安全,缺少身份认证可能遭遇伪装,缺少报文完整性验证可能遭到篡改。

HTTPS

HTTPS 在 HTTP 的基础上添加了 SSL / TLS 安全传输协议,使得报文能够加密传输。

HTTPS 在 TCP 三次握手之后,还需要进行 SSL /TLS 的握手过程,才可进入加密报文传输。

特点

  • 信息加密:浏览器和服务器之间交互的信息无法被窃取。

  • 校验机制:无法篡改通信的内容,因为一旦被篡改就不能正常显示。

  • 身份证书:提供当前报文完整性的证明。

优点

  • 在数据传输过程中,使用密钥加密,安全性更高。

  • 能够认证用户和服务器,确保数据发送到正确的用户和服务器。

缺点

  • 在 TCP 三次握手后,还需要进行 SSL/TLS 握手,导致握手阶段延迟提高。

  • 需要进行加解密计算,占用 CPU 资源,从而导致计算成本提高。

  • 需要购买 SSL 证书,功能越强大,证书价格越贵,导致部署成本升高。

HTTP 和 HTTPS 区别

  1. HTTPS 是 HTTP 协议的安全版本,HTTP 协议的数据传输是明文的,是不安全的,HTTPS 使用了 SSL/TLS 协议进行了加密处理,相对更安全。

  2. HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是 80,HTTPS 是443。

  3. HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP