计算机网络——不同版本的 HTTP 协议

介绍

  HTTP,即超文本传输协议(HyperText Transfer Protocol),是应用层的一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。本文将介绍 HTTP 协议各个版本。

HTTP/1.0

  HTTP/1.0 在客户端与服务器之间建立的是非持久连接,特点是一次 TCP 连接中,服务器只能发送一次相应报文
  举个例子,假设用户键入了一个 URL 为 www.hust.edu.cn/cs/home.index,该网页包含文本并引用了10 jpeg 图片。那么 HTTP/1.0 的传输模式如下所示。
在这里插入图片描述
  在这种情况下,客户端要获取 n n n 个 URL 对象,就必须先后建立 n n n 次 TCP 连接,效率十分低下。于是,许多浏览器同时打开多个并行的连接来改善性能,比如上面已经知道这 10 10 10 个 jpeg 对象的 URL 了,客户机很可能创建 10 10 10 个不同的套接字分别去请求这些图片。这样对对服务器端连接数的要求很高,降低了服务器的负载能力。

HTTP/1.1

  相比于 HTTP/1.0,HTTP/1.1 建立的是持久连接,即服务器在发送完响应报文后保持该连接一段时间,这段时间如果没有收到 HTTP 请求报文,那就断开连接。

持久连接分为流水线方式非流水线方式

  • 流水线方式:一个对象传输完成方能传输下一个。保证了响应报文的顺序到达,但是效率可能低一些。
  • 非流水线方式:可以一次性发送所有请求,然后慢慢接收响应报文。响应报文可能乱序到达。

  还是上面那个例子,正常情况下,客户端只需要建立一次 TCP 连接,即可收到该网页的的内容及其中的 10 10 10 个图像。

HTTP/2

  HTTP/1.1 存在的问题是:服务器接收到多个对象请求时,小对象会被排在前面的大对象阻塞——队首(HOL)阻塞,导致用户体验极差。采用多TCP连接并发可以规避这个问题,但是这样又回到了 HTTP/1.0。
在这里插入图片描述
  对此,HTTP/2 给出的解决方案是报文分帧,目的是努力减少多对象访问时的感知时延。
在这里插入图片描述

HTTP/3

  相比于 HTTP/2,HTTP/3 使用的运输层协议改为 UDP,并且在 HTTP 与 QUIC 协议(谷歌发明的新的应用层协议),具体可以参见这篇博客。
在这里插入图片描述

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

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

相关文章

【WEB开发.js】HTTP请求和相应报文的头字段:Content-Type (巨巨巨巨详细好懂的举例详解)

Content-Type 是 HTTP 请求和响应报文中的头字段之一,用于指定发送的数据类型(MIME 类型)。它告诉服务器或客户端数据的格式,方便接收方正确解析和处理内容。 例如,在发送 JSON 数据时,会指定 Content-Typ…

【ArkTS】使用AVRecorder录制音频 --内附录音机开发详细代码

系列文章目录 【ArkTS】关于ForEach的第三个参数键值 【ArkTS】“一篇带你读懂ForEach和LazyForEach” 【小白拓展】 【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案” 【ArkTS】 一篇带你掌握“语音转文字技术” --内附详细代码 【ArkTS】技能提高–“用户授权”…

P1319 压缩技术 P1320 压缩技术(续集版)

题目传送门 P1319 压缩技术 P1320 压缩技术(续集版) P1319 压缩技术 输入格式 数据输入一行,由空格隔开的若干个整数,表示压缩码。 其中,压缩码的第一个数字就是 N N N,表示这个点阵应当是 N N N\t…

【CSS】一篇掌握CSS

不是因为有了希望才去坚持,而是坚持了才有了希望 目录 一.导入方式 1.行内样式 2.内部样式 3.外部样式(常用) 二.选择器 1.基本选择器(常用) 1.1标签选择器 1.2类选择器 1.3id选择器 2.层次选择器 2.1后代选择器 2.2子选择器 2.3相邻兄弟选择器 2.4通用兄弟选择器…

linux 获取公网流量 tcpdump + python + C++

前言 需求为,统计linux上得上下行公网流量,常规得命令如iftop 、sar、ifstat、nload等只能获取流量得大小,不能区分公私网,所以需要通过抓取网络包并排除私网段才能拿到公网流量。下面提供了一些有效得解决思路,提供了…

Rain后台权限管理系统,快速开发

这段时间一直没有更新,因为在写一个脚手架,今天Rain项目终于完工,已经发布到github,免费使用 项目github链接 https://github.com/Rain-hechang/Rain 简介 前端采用Vue3.x、Element UI。 后端采用Spring Boot、Spring Security、Redis &…

scroll-view组件,在iOS设备上禁用橡皮筋回弹效果

问题描述 在实现uniapp微信小程序的一个项目时,ios真机测试,scroll-view组件可以向下拉动一段距离然后又回弹。 如下图 解决方法: 可以通过设置scroll-view组件的属性来禁用橡皮筋回弹效果。如下,设置enhanced"true&…

【AI系统】昇腾异构计算架构 CANN

昇腾异构计算架构 CANN 本文将介绍昇腾 AI 异构计算架构 CANN(Compute Architecture for Neural Networks),这是一套为高性能神经网络计算需求专门设计和优化的架构。CANN 包括硬件层面的达芬奇架构和软件层面的全栈支持,旨在提供…

7-17 列出连通集

给定一个有 n 个顶点和 m 条边的无向图,请用深度优先遍历(DFS)和广度优先遍历(BFS)分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递…

华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(二)

文章目录 前言使用docker run总结前言 我们在上一篇文章华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(一)中,介绍了一些准备工作。 我估计这些东西下载好还是需要一点时间的,如果你幸运地通过了这些考验,还想继续的话,就来看看这一篇…

在macOS上从源码部署RAGFlow-0.14.1

一、macOS配置 1. macOS配置 我使用MacBook Pro,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。 2.安装Docker和Docker compose 官方要求 Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1,我的版本如下&#x…

大数据量接口的异步处理方案详解

在现代分布式系统中,处理大数据量的接口是一个常见但复杂的场景。同步操作容易导致接口响应时间过长甚至超时,因此采用异步处理成为主流选择。本文将详细分析大数据量接口异步处理的常见方案,并结合实际应用场景进行优缺点对比。 1. 背景与挑…

csv文件的上传、解析和获得最后的数据

前端和node端解析、读取csv文件的区别 1、前端 运行环境为浏览器,受到浏览器安全策略的限制,例如跨域请求、文件访问权限等。对于大型CSV文件的处理可能会受到性能瓶颈的影响。前端运行在用户的浏览器中,受到浏览器安全策略的限制&#xff…

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制。以下是详细的步骤: 1. 使用 root 用户登录 确保你以 root 用户登录到 MySQL 服务器。 mysql -u root -p输入你的 root 密码后进入 MySQL 命令行界面。 2. 配置主服务器 (master) 2.1 编辑 my.…

Git忽略除了指定文件以外的所有文件

前言:最近发现vs很多杂七杂八的文件都被传到gitee上了,但是我本意只是想把一些主要的文件如 .cpp文件传到gitee,因此考虑到了.gitignore文件的使用。 .gitignore文件的作用 .gitignore是一个特殊的文件,用于告诉Git哪些文件或目录…

Python学习------第十五天

1.异常的捕获方式: #基本捕获语法 try:f open("D:/abc.txt","r",encoding"UTF-8") except:print("出现异常了,因为文件不存在,我将open模式改为w模式去打开")f open("D:/abc.txt", &quo…

Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”

这两种主题继承关系有明显的不同,具体区别如下: Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题,目的是提供向后兼容的支持,适用于较早版本的 Android&#xff08…

什么是java方法

在Java编程语言中,方法(Method)是类(Class)中的一个函数,用于执行特定的任务或计算。方法封装了一段代码,使其可以重复调用,从而提高代码的可读性和可维护性。方法的基本结构包括方法…

THENA大涨将对整个DeFi市场产生怎样的影响?

引言 近期,区块链行业的一个热门项目——THENA(THE)代币,在短时间内吸引了大量投资者的目光。THE代币的价格在短短几个月内经历了显著的上涨,引发了市场对其背后机制的浓厚兴趣。而在THENA生态系统的成功背后&#xf…

Kubernetes命名空间详解

目录 目标 版本 官网 概述 namespace(命名空间、名称空间) 注意事项 基本命令 查看namespace列表 查看所有Pod的namespace 查看单个Pod的namespace 查看同一个namespace下的所有Pod 查看单个namespace资源配额 查看单个Pod详情 查看所有na…