写点什么

一文带你搞懂 HTTP 和 HTTPS

作者:Barry Yan
  • 2022 年 10 月 07 日
    北京
  • 本文字数:1967 字

    阅读完需:约 6 分钟

一文带你搞懂HTTP和HTTPS

1 二者简单介绍和各自在 ISO 七层网络模型中的位置

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。


HTTPS:是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。


两者在七层网络模型中的位置(图片来源于大涛网络神图):


2 HTTP 协议报文详解

2.1 发展阶段

  • HTTP/0.9

  • 0.9 协议是适用于各种数据信息的简洁快速协议,但是远不能满足日益发展的各种应用的需要。0.9 协议就是一个交换信息的无序协议,仅仅限于文字。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容是什么,也就是图片是无法显示和处理的。

  • HTTP/1.0

  • HTTP1.0 定义了三种请求方法:GET、POST 和 HEAD 方法

  • HTTP/1.1(当前主流)

  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

  • HTTP/2.0

  • HTTP2.0 大幅度的提高了 web 性能,在 HTTP1.1 完全语义兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。

2.2 请求方法

2.3 报文格式

wireshark 抓取报文:


请求报文:



响应报文:



由此我们可以看出 HTTP 报文的大致格式:


3 HTTPS 协议报文详解

3.1 区别于 HTTP 的主要作用

HTTPS 协议的主要作用可以分为两种:


  • 建立一个信息安全通道,来保证数据传输的安全

  • 确认网站的真实性

3.2 报文格式

HTTPS 的协议名称并不是 HTTPS,而是 TSL,我们再次利用 whireshark 进行抓包:



我们点开一个报文组可以发现,TLS 的上层就是 HTTP,并且利用了 SHA-256 加密算法进行了加密。


3.3 TLS 和 SSL

我们经常说,HTTPS=HTTP+SSL/TLS,那么我们就来一探究竟,什么是 TLS 和 SSL


  • SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL 通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL 记录协议和 SSL 握手协议。

  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS 记录协议和 TLS 握手协议。


两者区别:


最新版本的 TLS(Transport Layer Security,传输层安全协议)是 IETF(Internet Engineering Task Force,Internet 工程任务组)制定的一种新的协议,它建立在 SSL 3.0 协议规范之上,是 SSL 3.0 的后续版本。在 TLS 与 SSL3.0 之间存在着显著的差别,主要是它们所支持的加密算法不同,所以 TLS 与 SSL3.0 不能互操作。


1.TLS 与 SSL 的差异


1)版本号:TLS 记录格式与 SSL 记录格式相同,但版本号的值不同,TLS 的版本 1.0 使用的版本号为 SSLv3.1。


2)报文鉴别码:SSLv3.0 和 TLS 的 MAC 算法及 MAC 计算的范围不同。TLS 使用了 RFC-2104 定义的 HMAC 算法。SSLv3.0 使用了相似的算法,两者差别在于 SSLv3.0 中,填充字节与密钥之间采用的是连接运算,而 HMAC 算法采用的是异或运算。但是两者的安全程度是相同的。


3)伪随机函数:TLS 使用了称为 PRF 的伪随机函数来将密钥扩展成数据块,是更安全的方式。


4)报警代码:TLS 支持几乎所有的 SSLv3.0 报警代码,而且 TLS 还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知 CA(unknown_ca)、拒绝访问(access_denied)等。


5)密文族和客户证书:SSLv3.0 和 TLS 存在少量差别,即 TLS 不支持 Fortezza 密钥交换、加密算法和客户证书。


6)certificate_verify 和 finished 消息:SSLv3.0 和 TLS 在用 certificate_verify 和 finished 消息计算 MD5 和 SHA-1 散列码时,计算的输入有少许差别,但安全性相当。


7)加密计算:TLS 与 SSLv3.0 在计算主密值(master secret)时采用的方式不同。


8)填充:用户数据加密之前需要增加的填充字节。在 SSL 中,填充后的数据长度要达到密文块长度的最小整数倍。而在 TLS 中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为 255 字节),这种方式可以防止基于对报文长度进行分析的攻击。


2.TLS 的主要增强内容


TLS 的主要目标是使 SSL 更安全,并使协议的规范更精确和完善。TLS 在 SSL v3.0 的基础上,提供了以下增强内容:


1)更安全的 MAC 算法


2)更严密的警报


3)“灰色区域”规范的更明确的定义


3.TLS 对于安全性的改进

4 HTTP 和 HTTPS 两者最终对比

4.1 相同点

  • 都是基于 TCP 的面向连接的应用层协议并且都为无状态连接

  • 都是主要应用于浏览器端

4.2 不同点

  • HTTP 端口默认为 80,HTTPS 端口默认为 443

  • HTTP 为明文传输,HTTPS 为加密传输,因此 HTTPS 相比 HTTP 更安全

  • HTTP 更为简单快速,HTTPS 更为复杂


参考文章:


https://www.cnblogs.com/wqhwe/p/5407468.html


https://www.runoob.com/http/http-methods.html


https://baike.baidu.com/item/HTTP/243074?fr=aladdin


https://www.cnblogs.com/klguang/p/4618526.html


https://kb.cnblogs.com/page/197396/

发布于: 刚刚阅读数: 4
用户头像

Barry Yan

关注

做兴趣使然的Hero 2021.01.14 加入

Just do it.

评论

发布
暂无评论
一文带你搞懂HTTP和HTTPS_10月月更_Barry Yan_InfoQ写作社区