📜  这些年来 HTTP 是如何发展的?

📅  最后修改于: 2021-10-19 05:57:49             🧑  作者: Mango

HTTP……网络协议。

如果您是一个对计算机科学主题感兴趣的人,那么您可能会意识到这个四字词的重要性。每次您在任何类型网站的 URL 开头看到这个词时,您是否曾经尝试过了解它是如何工作的以及这些年来它是如何演变的……?你有没有尝试过获取更多关于 HTTP 的知识?

多年来 HTTP 是如何演变的

今天在这篇博客中,我们将讨论一些关于 HTTP 的概念,以及它如何在 Web 世界中的客户端和服务器之间发挥重要作用。

HTTP 简介?

HTTP 代表超文本传输协议,它主要负责 Web 服务器和客户端之间的通信。它被定义为网络协议,或者我们可以说它是用于将网页从服务器传送到客户端的一组规则

每次打开浏览器并访问网页或提交表单或单击发送某种 Ajax 请求或获取请求的按钮时,您都在使用 HTTP 并经历一些请求和响应周期。

HTTP 是无状态的,每个请求都是完全独立的。每个请求都是一个单独的事务,当您发出一个请求、访问一个网页或之后转到另一个页面或重新加载页面时,它不会记住有关前一个事务的任何内容。编程、本地存储、Cookie、会话用于创建增强的用户体验。

HTTP层

通常,您会在 Web 浏览器中看到 HTTPS(安全超文本传输协议),该协议与加密层使用的协议相同,以提高安全性。数据由SSL(安全套接层)/TLS(传输层安全)加密。因此,无论何时发送敏感信息,都应始终通过 HTTPS。

如果您了解 Internetworking/通信的 OSI(开放系统互连)规范,那么可以将 HTTP 视为应用层协议。该层与底层硬件结构或媒体没有互连,与此无关。由于这个原因,改进和升级具有更多带宽的 HTTP 规范是可行的。

HTTP 获取网页

让我们看看 Mozilla 如何定义 HTTP…

在上面的定义中,用户代理是客户端,客户端可以是浏览器、程序或任何使用 HTTP 协议向服务器发送请求的东西。一旦服务器收到请求,它就会响应网页的交付。服务器和用户代理之间的通信由称为代理的众多实体协调。以下是代理的功能…

  • 缓存
  • 过滤(隐藏成人内容,根据地区屏蔽部分内容)
  • 负载平衡(对空置服务器的直接请求)
  • 身份验证(允许用户与不同的服务器通信)
  • 日志记录(HTTP 日志记录对于异常检测等很常见)

HTTP-Request-TCP-TLS

上述所有任务在 HTTP 1 和 HTTP 1.1 中都没有任何问题地执行。下面给出了一些常见的 HTTP 方法……

  • GET:从服务器检索数据
  • POST:向服务器提交数据
  • PUT:更新服务器上已有的数据。
  • DELETE:从服务器中删除数据

HTTP 2

HTTP 2 于 2015 年推出。 HTTP 1 随着网络技术和带宽的进步有一些限制。 HTTP 2 的出现克服了这些限制。 HTTP 2 使您的应用程序更快、更简单、更安全且更高效。对版本 2 的所有更改几乎都在幕后,这意味着您不必去更改应用程序的工作方式。所有核心概念、方法、URI、状态代码都与 HTTP 1 相同。

  • HTTP 2 的最大优势在于它通过启用完整的请求和响应多路复用来减少延迟。多路复用通过相同的 TCP 连接启用并发请求,它有助于并发加载资源。
  • 为了提高页面速度并更快地加载内容,HTTP 2 允许浏览器对内容进行优先级排序。
  • 通过有效压缩 HTTP 标头字段最大限度地减少协议开销。
  • 服务器推送:服务器在客户端明确请求之前向客户端发送资源的能力。如果您曾经通过数据 URI 内联 CSS、JavaScript 或任何其他资产,那么您可能已经使用过服务器推送。推送资源可以是:
    • 由客户端缓存。
    • 跨不同页面重用。
    • 与其他资源一起复用。
    • 由服务器优先。
    • 被客户拒绝。

HTTP 3

HTTP 3 是即将推出的 HTTP 版本。 YouTube 已经在 chrome 浏览器中使用了这个版本。您可以使用该插件查看 HTTP 协议(HTTP/2 和 SPDY 指标)。 HTTP3 使用与 HTTP 1 和 HTTP 2 相同的语义和响应代码。 HTTP 2 的主要问题是行首阻塞,这源于对 TCP 的依赖。 HTTP 3 提供了更好的安全性和性能。

HTTP 3 中的新功能是什么?

HTTP 3 简单得多,因为许多函数已移至QUIC层。 HTTP 3 的主要动机之一是简化 TCP 握手(它是 3 次握手,嗨,嗨,再次嗨,好吧,你也得到了我的好。)。 HTTP 2 也可以在 QUIC 上运行,但与 TCP 不同,QUIC 不能保证服务请求的顺序。 HTTP 标头压缩 (HPACK) 更多地依赖于 TCP 中的排序。由于这个原因,HTTP-2 无法在 QUIC 之上使用。

HTTP-QUIC

QUIC 协议用于更快地建立连接。这种已建立的连接提供了在 Wifi 连接和移动网络等之间生成的更好的连接迁移。请记住,这种连接迁移不是您在同一网络中的路由器之间看到的。它更加复杂和精致。

QUIC 使用TCP 慢启动将拥塞窗口设置为初始值来启动每个连接。它升级了 TCP 慢启动以实现更快的高速。在这个过程中,QUIC 进一步增加拥塞窗口,增加每个确认处理时确认的字节数。这导致拥塞窗口呈指数增长。

对于 Stadia 和 UHD 及以上视频流等情况下的游戏玩法,这是一个重要的升级。这可能是 YoutTube 超快并且从启动开始播放高清而无需缓冲的原因。