一文速通,带你快速了解各个版本的HTTP与HTTPS(你的HTTP面试指南)

一、前言

HTTP协议 是一个老生常谈的话题,在计算机网络这个领域,最常被前端同学提起的无外乎就是HTTP各个版本的特性 、以及HTTPS与HTTP的区别 ,那么今天就让我们从头开始,看看到底计算机网络http们都是怎么跑起来的。

二、计算机网络与HTTP

2.1 计算机网络

2.1.1 OSI

当谈到计算机网络的架构时,常常会提到七层模型,即OSI(Open Systems Interconnection)模型。这个模型将计算机网络的功能分为七个不同的层级。

  1. 物理层(Physical Layer)

    物理层是网络模型的最底层,它负责传输比特流(bitstream),即0和1的电信号,通过物理介质(如电缆、光纤等)进行传输。物理层的主要任务是定义传输介质的特性、传输速率和物理连接的规范。

  2. 数据链路层(Data Link Layer)

    数据链路层位于物理层之上,它负责将比特流划分为数据帧(data frame),并在相邻节点之间传输。数据链路层还处理错误检测和纠正,以确保可靠的数据传输。它还负责对物理地址(MAC地址)进行管理和寻址。

  3. 网络层(Network Layer)

    网络层负责数据包的路由和转发,它使用逻辑地址(IP地址)来确定数据包的最佳路径。网络层还处理分组的分片和重新组装,以及网络拥塞控制和流量管理。

  4. 传输层(Transport Layer)

    传输层负责提供端到端的可靠数据传输,它将数据分割为较小的数据段,并为每个数据段添加序列号和检验和,以确保数据的完整性和顺序。传输层还处理数据的流量控制和拥塞控制。

  5. 会话层(Session Layer)

    会话层负责建立、管理和终止会话(session)或连接,它提供了数据交换的机制,包括会话的开始、同步和结束。会话层还处理会话的安全性和权限控制。

  6. 表示层(Presentation Layer)

    表示层负责数据的格式转换和加密解密,以确保数据在不同系统之间的互操作性。它处理数据的压缩、加密、解密和格式化,以便应用层能够正确解释和处理数据。

  7. 应用层(Application Layer)

    应用层是最高层,它提供了网络服务和应用程序之间的接口。应用层包括各种协议和服务,如HTTP、FTP、SMTP等。应用层协议定义了数据的格式和交换规则,使得不同的应用程序能够相互通信。

每个层级都有特定的功能和责任,通过层与层之间的协作,实现了可靠的数据传输和应用程序之间的通信。

2.1.2 不同层级的协议与功能

计算机网络七层模型是一种将网络通信划分为不同层级的框架,每个层级负责不同的功能和任务。下面是每个层级及其对应的协议和主要区别的简要介绍:

  1. 物理层(Physical Layer)

    • 协议:Ethernet、RS-232等
    • 功能:负责传输比特流,处理物理介质和电信号传输。
  2. 数据链路层(Data Link Layer)

    • 协议:Ethernet、Wi-Fi、PPP等
    • 功能:负责将比特流转换为数据帧,提供可靠的点对点通信,进行错误检测和纠正。
  3. 网络层(Network Layer)

    • 协议:IP、ICMP、ARP等
    • 功能:负责将数据包从源主机传输到目标主机,进行路由选择和地址转换。
  4. 传输层(Transport Layer)

    • 协议:TCP、UDP等
    • 功能:提供端到端的可靠或不可靠的数据传输,进行数据分段和流量控制。
  5. 会话层(Session Layer)

    • 协议:SSH、TLS等
    • 功能:负责建立、管理和终止会话连接,提供会话层服务。
  6. 表示层(Presentation Layer)

    • 协议:JPEG、ASCII等
    • 功能:负责数据的格式转换、加密和压缩,提供数据表示和转换服务。
  7. 应用层(Application Layer)

    • 协议:HTTP、FTP、SMTP等
    • 功能:提供特定应用程序的服务,例如网页浏览、文件传输、电子邮件等。

这些层级之间的主要区别在于它们所处理的数据单元的不同,以及它们提供的服务和功能的不同。每个层级都通过使用下一层提供的服务来实现自己的功能,并将结果传递给上一层,以便实现端到端的通信。通过将通信过程划分为不同的层级,七层模型提供了一种灵活和可扩展的方法来设计和管理计算机网络。

到这里,我们至少可以明确的回答面试官:HTTP是应用层协议

2.2 HTTP协议

HTTP(Hypertext Transfer Protocol) 是一种用于在客户端和服务器之间传输数据的协议。它是基于请求-响应模型的,客户端发送HTTP请求到服务器,服务器处理请求并返回HTTP响应。

HTTP协议通常用于在Web浏览器和Web服务器之间传输HTML页面、图像、样式表、脚本和其他资源。它也可以用于其他应用程序之间的通信。

HTTP协议使用TCP/IP 协议来建立连接,并使用URL(Uniform Resource Locator) 来标识要访问的资源。HTTP请求由请求行、请求头和请求体组成,而HTTP响应由响应行、响应头和响应体组成。

HTTP协议具有无状态的特性,即服务器不会在不同的请求之间保留任何状态信息。为了处理状态信息,可以使用Cookie、Session和其他机制。

除了基本的HTTP协议,还有HTTPS协议,它在HTTP的基础上添加了安全性,使用SSL/TLS协议对通信进行加密。

总的来说,HTTP协议是互联网上最常用的协议之一 ,它提供了一种简单而有效的方式来传输数据和与Web服务器进行交互。

2.2.1 HTTP 协议的版本变更史

  1. HTTP/1.0 :HTTP/1.0是最早的HTTP协议版本,于1996年发布。它使用短连接,每个请求和响应都需要建立一个新的TCP连接。HTTP/1.0的特点是简单、易于实现 ,但效率较低

  2. HTTP/1.1 :HTTP/1.1于1999年发布,是目前广泛使用的版本。它引入了持久连接(Keep-Alive)管道化(Pipelining) 等特性,可以在同一个TCP连接上发送多个请求和响应,提高了性能。HTTP/1.1还支持虚拟主机、缓存控制、分块传输编码等功能。

  3. HTTP/2 :HTTP/2于2015年发布,是HTTP/1.1的升级版本。它采用二进制协议 而非文本协议,引入了头部压缩多路复用服务器推送 等新特性,进一步提升了性能和效率。HTTP/2的目标是减少延迟,提高页面加载速度。

  4. HTTP/3:HTTP/3是最新的HTTP协议版本,于2020年发布。它基于QUIC(Quick UDP Internet Connections)协议,使用UDP而非TCP作为传输层协议。HTTP/3主要的优势是降低延迟,提高连接的稳定性和性能,尤其在高丢包率的网络环境下表现更好。

这些版本的HTTP协议在功能和性能上有所不同,随着技术的发展和网络的需求,HTTP协议也在不断演进和更新。

2.2.2 各版本的更新内容「HTTP CHANGE LOG」

  1. HTTP/1.0:

    • HTTP/1.0是最早的HTTP协议版本之一,于1996年发布。
    • 它使用短连接,即每个请求/响应周期都需要建立和关闭一个新的连接。
    • 不支持持久连接,每个请求都需要单独的TCP连接,效率较低。
    • 不支持请求的优先级和流控制。
    • 不支持请求和响应的分块传输。
    • 不支持请求和响应的压缩。
  2. HTTP/1.1:

    • HTTP/1.1于1999年发布,是当前广泛使用的版本。
    • 引入了持久连接,允许多个请求和响应通过同一个TCP连接进行传输,减少了连接建立和关闭的开销。
    • 支持请求的优先级和流控制,可以提高网络性能。
    • 支持请求和响应的分块传输,可以边接收边处理数据,提高效率。
    • 引入了虚拟主机的概念,允许在同一个IP地址下托管多个域名。
    • 支持断点续传,可以在下载时暂停和恢复。
  3. HTTP/2:

    • HTTP/2于2015年发布,是HTTP/1.1的升级版本。
    • 引入了二进制分帧层,将请求和响应数据分割为多个二进制帧进行传输,可以并行发送和接收多个请求和响应,提高了效率。
    • 支持请求和响应的头部压缩,减少了数据传输的大小。
    • 支持服务器推送,服务器可以主动向客户端发送多个资源,减少了请求的延迟。
    • 支持请求和响应的优先级和流控制,可以更精确地控制数据传输。
    • 引入了服务器端推送和多路复用等新特性,提高了性能和效率。
  4. HTTP/3:

    • HTTP/3是最新的HTTP协议版本,于2020年发布。
    • 使用QUIC作为传输协议,取代了TCP,提供更快的连接建立和数据传输速度。
    • 支持多路复用和流量控制,可以同时发送和接收多个请求和响应。
    • 支持0-RTT(零往返时间)连接建立,减少了握手延迟。
    • 支持连接迁移,可以在网络切换时无缝切换连接。
    • 具有更好的错误恢复机制,提供更可靠的连接。

这些版本之间的差异主要体现在连接管理、数据传输方式、性能优化和安全性等方面。每个版本的实现原理都是基于之前版本的改进和扩展 ,以提供更好的性能和用户体验

2.3 HTTPS

HTTPS(Hypertext Transfer Protocol Secure) 是一种通过加密和身份验证保护数据传输安全的HTTP协议扩展。它使用SSL(Secure Sockets Layer)TLS(Transport Layer Security) 协议来加密HTTP通信,确保数据在传输过程中的机密性和完整性。

2.3.1 HTTPS 实现原理

  1. 客户端发送HTTPS请求到服务器。
  2. 服务器将自己的数字证书发送给客户端。
  3. 客户端验证服务器的证书是否可信。如果证书有效且受信任,客户端生成一个随机的对称密钥,并使用服务器的公钥进行加密。
  4. 服务器使用自己的私钥解密客户端发送的加密密钥,并使用该密钥与客户端建立安全的通信。
  5. 客户端和服务器之间的通信使用对称密钥进行加密和解密,确保数据的机密性和完整性。

2.3.2 HTTPS 优点

  1. 数据传输的安全性:通过加密数据传输,防止被窃听和篡改。
  2. 身份验证:通过数字证书验证服务器的身份,确保客户端与合法的服务器进行通信。
  3. 数据完整性:使用消息摘要算法来验证数据在传输过程中是否被篡改。
  4. 改善搜索排名:搜索引擎通常会更青睐使用HTTPS的网站。

2.4 HTTPS 到底与 HTTP 哪个版本的特性最接近?

先说结论:HTTP/1.1是与HTTPS最为接近的版本

HTTPS的工作是基于HTTP协议的,具体来说,它是在HTTP协议的基础上添加了SSL或TLS协议来提供安全性和加密功能。

在HTTP协议的版本中,HTTP/1.1是与HTTPS最为接近的版本。HTTP/1.1是目前最广泛使用的HTTP协议版本,它引入了许多与性能和持久连接相关的改进。HTTPS与HTTP/1.1的主要区别在于数据的传输方式和安全性。

HTTPS与HTTP/1.1相比,主要的不同点在于:

  1. 连接建立方式:HTTP/1.1使用普通的TCP连接,而HTTPS在TCP连接的基础上添加了SSL或TLS握手过程,建立安全的连接。

  2. 数据传输方式:HTTP/1.1使用明文传输数据,而HTTPS使用SSL或TLS协议对数据进行加密,确保传输的机密性。

  3. 安全性和身份验证:HTTPS使用数字证书对服务器进行身份验证,确保客户端与合法的服务器进行通信,并提供数据的完整性和身份验证。

需要注意的是,虽然HTTP/2和HTTP/3也支持HTTPS,但它们在数据传输方式和性能优化方面有所改进,与HTTP/1.1有较大的差异。因此,从特性上来说,HTTPS与HTTP/1.1更为接近。

2.5 HTTPS 的实现原理涉及到计算机网络的哪几层?

  1. 应用层:在应用层,使用的是HTTP协议。HTTPS使用的是HTTP/1.1协议,它定义了客户端和服务器之间的通信规则。

  2. 传输层:在传输层,HTTPS使用了传输层安全协议(TLS或SSL)。TLS/SSL协议位于传输层,它提供了加密和身份验证的功能。它使用公钥加密和私钥解密的技术来确保通信的机密性和完整性。

  3. 网络层:在网络层,HTTPS使用了IP协议来进行数据包的传输。IP协议负责将数据包从一个主机发送到另一个主机。

  4. 数据链路层:在数据链路层,HTTPS使用了以太网协议或Wi-Fi等物理层协议来进行数据的传输。

总结起来,HTTPS 在 HTTP/1.1 的基础上添加了 TLS 或 SSL 协议,这使得通信变得安全和加密。TLS/SSL 协议位于传输层,使用公钥加密私钥解密的技术来确保通信的机密性和完整性。在网络层和数据链路层上,HTTPS 使用了常见的网络协议来传输数据包。

三、总结

简单对 HTTP 所有相关协议做个总结:

  1. HTTP/1.0:HTTP/1.0是最早的版本,它使用明文传输数据,并且每次请求都需要建立一个新的TCP连接。它的主要特点是简单和易于实现,但效率较低。

  2. HTTP/1.1:HTTP/1.1是HTTP协议的主流版本,它引入了持久连接(keep-alive)和管道化(pipelining)等技术来改善性能。持久连接允许在同一个TCP连接上发送多个请求和响应,避免了建立和关闭连接的开销。管道化允许在一个连接上同时发送多个请求,但响应必须按照请求的顺序返回。

  3. HTTP/2.0:HTTP/2.0是HTTP协议的下一代版本,它在HTTP/1.1的基础上进行了改进。HTTP/2.0使用二进制格式传输数据,而不是HTTP/1.x的文本格式,这样可以更高效地解析和传输数据。它还引入了头部压缩、多路复用和服务器推送等新特性,进一步提高了性能。

  4. HTTP/3.0:HTTP/3.0是HTTP协议的最新版本,它基于QUIC协议,旨在进一步提高性能和安全性。HTTP/3.0使用UDP协议而不是TCP协议来传输数据,这样可以减少延迟和提高吞吐量。它还支持连接迁移和零RTT握手等功能,以提供更好的用户体验。

  5. HTTPS:HTTPS是在HTTP协议上添加了SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来提供安全性和加密功能的协议。它使用公钥加密算法来确保数据在传输过程中的机密性和完整性。HTTPS的URL以"https://"开头,而不是"http://",并使用默认的端口443进行通信。

总结起来,HTTP/1.0是最早的版本,HTTP/1.1是主流版本,HTTP/2.0引入了新特性提高性能,HTTP/3.0基于QUIC进一步改进性能,而HTTPS是在HTTP协议上添加了安全性和加密功能。根据具体需求和环境,选择适合的协议版本或使用HTTPS来保护数据传输的安全。

相关推荐
吕彬-前端10 分钟前
使用vite+react+ts+Ant Design开发后台管理项目(二)
前端·react.js·前端框架
小白小白从不日白31 分钟前
react hooks--useCallback
前端·react.js·前端框架
恩婧39 分钟前
React项目中使用发布订阅模式
前端·react.js·前端框架·发布订阅模式
mez_Blog40 分钟前
个人小结(2.0)
前端·javascript·vue.js·学习·typescript
孙小二写代码41 分钟前
[leetcode刷题]面试经典150题之1合并两个有序数组(简单)
算法·leetcode·面试
珊珊而川1 小时前
【浏览器面试真题】sessionStorage和localStorage
前端·javascript·面试
森叶1 小时前
Electron 安装包 asar 解压定位问题实战
前端·javascript·electron
drebander1 小时前
ubuntu 安装 chrome 及 版本匹配的 chromedriver
前端·chrome
软件技术NINI1 小时前
html知识点框架
前端·html
深情废杨杨1 小时前
前端vue-插值表达式和v-html的区别
前端·javascript·vue.js