全面探讨HTTP协议从0.9到3.0版本的发展和特点

前言:
最近的几场面试都问到了http的相关知识点,博主在此结合书籍和网上资料做下总结。本篇文章讲收录到秋招专题,该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。

如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~

小威在此先感谢各位小伙伴儿了😁

在这里插入图片描述

以下正文开始

在这里插入图片描述

文章目录

  • HTTP 0.9
  • HTTP 1.0
  • HTTP 1.1
  • HTTP/2
  • HTTP/3
  • 本篇总结

HTTP 0.9

谈到HTTP,首先能想到的就是它的基础版,也是最先发布的版本。

HTTP 0.9版本出现在1991年,这个版本的主要特点是简单和原始,它只支持简单的请求-响应模式,不支持复杂的HTTP头部和消息体。此外,HTTP 0.9不支持持久连接,每个请求都需要建立一个新的连接。因为有了这些限制,So,HTTP 0.9已经不再被广泛使用。

HTTP 1.0

HTTP 1.0是继0.9版本后的丰富版,也是HTTP的第二个版本。

HTTP 1.0是在1996年发布的,它对HTTP 0.9进行了重要的改进。

HTTP 1.0引入了更多的特性和功能,比如支持更复杂的HTTP头部、消息体和请求方法(如GET和POST),以及持久连接。这些改进使得HTTP 1.0能够更好地支持Web开发,为我们的应用所用。

HTTP 1.0的一个主要限制的就是它的性能问题。由于每个请求都需要建立一个新的连接,并且每个连接只能处理一个请求,因此HTTP 1.0在处理大量并发请求时可能会变得非常慢。为了解决这个问题,后来引入了HTTP 1.1和持久连接。

HTTP 1.1

前面说到1.0的不足,现在我们再来聊聊1.1版本的特点,这块也是面试中经常问到的。

HTTP 1.1于1997年发布,这个版本引入了更多的特性和功能,以改善Web性能和可用性。其中最重要的改进是引入了持久连接。

持久连接允许客户端和服务器保持一个或多个打开的连接,以便在多个请求和响应之间重用它们。这可以减少建立连接所需的资源和时间,提高请求处理速度和并发性。除此之外,HTTP 1.1还引入了分块传输编码,允许在不知道内容长度的情况下发送响应体。

另一个重要的改进是引入了缓存。HTTP 1.1提供了几种缓存机制,包括条件请求和实体标签 ,以减少不必要的网络传输和提高响应速度。除此之外,HTTP 1.1还引入了其他一些功能,如范围请求和管道化。

在这里插入图片描述

HTTP/2

HTTP/2是HTTP的高效版,相较于HTTP/1有很大改进,

HTTP 1.1相比HTTP 1.0有了很大的改进,但它仍然存在一些性能和安全问题。为了解决这些问题,HTTP/2于2015年发布。HTTP/2引入了一些关键的改进,包括二进制传输、头压缩、多路复用和服务器推送等。

  1. 二进制传输:HTTP/2使用二进制协议而不是文本协议,这使得传输更加高效和可靠。二进制协议更加紧凑,易于解析和处理。
  2. 头压缩:HTTP/2引入了头压缩机制,使用Huffman编码对HTTP头部进行压缩。这可以减少头部的大小和传输时间,提高请求处理速度。
  3. 多路复用:HTTP/2引入了多路复用机制,允许在同一个连接上同时发送多个请求和响应。这可以减少阻塞和等待时间,提高并发性和性能。
  4. 服务器推送:HTTP/2允许服务器向客户端推送资源,而无需客户端明确请求它们。这可以减少延迟和提高响应速度。

HTTP/3

HTTP/3是现代版,也是目前HTTP的最强版本,是现代互联网的版本之子
尽管HTTP/2相比HTTP 1.1有了很大的改进,但它仍然基于TCP协议,而TCP协议在某些场景下可能存在性能瓶颈和安全问题。为了解决这些问题,HTTP/3于2019年发布。HTTP/3是基于QUIC协议的,它是一种新型的传输层协议,具有更好的性能和安全性。

QUIC协议使用的是UDP而不是TCP作为传输层协议。与TCP不同,UDP不需要三次握手建立连接,并且可以在不等待确认的情况下发送数据。这使得QUIC具有更低的延迟和更高的吞吐量。此外,QUIC使用TLS 1.3加密通信,提供了更好的安全性。

本篇总结

从HTTP 0.9到HTTP/3,HTTP协议经历了多个版本的演进和改进。这些版本在支持Web发展方面发挥了重要作用,并解决了不同时期面临的挑战和问题。

从简单的文本协议到高效的二进制协议,从单一的请求-响应模式到支持多路复用和服务器推送等先进特性,HTTP协议不断适应着互联网的发展需求和技术进步。当前最新版本的HTTP/3基于QUIC协议提供了更好的性能和安全性,将继续在未来的Web发展中发挥关键作用。

同时也祝愿各位小伙伴儿在面试的过程中这块知识点答得都对,看完全会!

文章到这里就先结束了,感兴趣的可以订阅专栏哈,后续会继续分享相关的知识点。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/221587.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 基础学习(一)Java环境搭建和基本数据类型

1 Java 开发环境搭建 1.1 Java 编程语言 1.1.1 什么是Java编程语言 语言是人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换;而计算机编程语言则是人与计算机之间进行信息交流沟通的一种特殊语言,也有语法规则、字符、符…

Qt5.15.2静态编译 VS2017 with static OpenSSL

几年前编译过一次Qt静态库:VS2015编译Qt5.7.0生成支持XP的静态库,再次编译,毫无压力。 一.环境 系统:Windows 10 专业版 64位 编译器:visual studio 2017 第三方工具:perl,ruby和python python用最新的3.x.x版本也是可以的 这三个工具都需要添加到环境变量,安装时勾选…

【开源】基于Vue+SpringBoot的企业项目合同信息系统

项目编号: S 046 ,文末获取源码。 \color{red}{项目编号:S046,文末获取源码。} 项目编号:S046,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合…

终于等到你!常用的组织架构图模板,高清图片一键导出

组织架构图是一种用来展示一个组织内部人员和职责关系的图表。通过组织架构图,我们可以清晰地了解一个组织的层级架构和各个部门之间的关系。在本文中,我们将向大家推荐8个常用的组织架构图模板,帮助你快速制作出专业的组织架构图。 1. 市场营…

美食网站基本结构

代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>美食网站首页</title> <link rel"stylesheet" href"https://cdn.staticfile.org/layui/2.5.6/css/layui.min.c…

leetCode 226.翻转二叉树 递归 + 非递归 + 前中后序 + 层序遍历 【深度和广度优先遍历】

我的往期文章&#xff1a; leetCode 226.翻转二叉树-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134613347?spm1001.2014.3001.5501 &#xff08;一&#xff09;递归做法&#xff08;深度&#xff09; C代码&#xff1a;前序遍历 class Solution { pu…

PC8231(CC/CV)5V/2.4A同步降压芯片 频率可调 限流欠压补偿

一&#xff0e;概述 PC8231 是一款同步降压转换器&#xff0c; 该转换器可驱动输出 2.4A 负载电流。 设计允许 PC8231 在 9V 到40V 宽输入电压范围内工作。通过将 COMP/EN 引脚逻辑电平拉低来实现外部关断功能&#xff0c;并进入待机模式。外部补偿使反馈控制环路具有良好的线…

Java零基础——Nginx篇

1.【熟悉】服务器概述 1.1 目前常见的web服务器 1&#xff0c;Apache(http://httpd.apache.org) 它是世界上用的最多的web服务器&#xff0c;市场占有率达60%左右&#xff0c;模块非常丰富&#xff0c;系统非常稳定&#xff0c;可移植性好&#xff0c;但是比较消耗资源 2&…

工业自动化配电柜监控技术,不会用就太可惜了!

随着社会的发展&#xff0c;电力系统在现代生活和工业中扮演着至关重要的角色。而配电柜作为电力系统的重要组成部分&#xff0c;其稳定运行对于保障电力供应的可靠性至关重要。 因此&#xff0c;为了提高配电柜的运行效率、确保电力系统的安全稳定运行&#xff0c;配电柜监控系…

深入解析:如何开发抖音票务小程序

当下&#xff0c;开发抖音票务小程序成为了吸引年轻用户群体的一种创新方式。本文将深入解析如何开发抖音票务小程序&#xff0c;探讨关键步骤和技术要点。 1.确定需求和功能 考虑到抖音的用户特点&#xff0c;可以加入与短视频相关的票务功能&#xff0c;如在线购票、观影记录…

在NAS上部署.NET版本的WOL远程开机服务

在本文中&#xff0c;我们将以部署基于.NET的WOL远程开机服务为例&#xff0c;详细介绍如何利用Docker技术在群辉部署ASP.NET服务。同时&#xff0c;我们还将展示如何对原有的控制台WOL进行改造&#xff0c;以及如何使用SignAuthorization简易URL验签类库。文章相关的代码开源地…

【Android】Android Framework系列--Launcher3各启动场景源码分析

Android Framework系列–Launcher3各启动场景源码分析 Launcher3启动场景 Launcher3是Android系统提供的默认桌面应用(Launcher)&#xff0c;它的源码路径在“packages/apps/Launcher3/”。 Launcher3的启动场景主要包括&#xff1a; 开机后启动&#xff1a;开机时&#xff…