前端网络---http协议演变

http协议的演变

什么是http协议?

HTTP 协议全称为 Hypertext Transfer Protocol,即超文本传输协议,是互联网上应用最为广泛的一种网络传输协议

http协议演变

1991年0.9版本-------1996年1.0版本-------1997年1.1版本--------2015年2版本-------2022年3版本

http/0.9特点

1、只支持GET请求

2、响应为HTML格式的文本

3、没有请求头响应头

http/1.0特点

1、HTTP/1.0支持多种HTTP方法,包括GET、POST、HEAD、PUT、DELETE等

2、增加了请求头和响应头

// 请求头accept:text/html   // 请求的文件类型accept-encodeing: gzip,deflate  // 服务器采用的压缩方式accept-charset: utf-8 // 文件的编码格式accept-language:zh-CN,zh // 页面显示的语言 
// 响应头content-encoding :gzip // 服务器响应数据的压缩格式content-type:text/html;charset=UTF-8  // 服务器响应的 数据类型 和 编码格式

3、引入了状态码

4、提供了 Cache 机制,用来缓存已经下载过的数据

5、服务器需要统计客户端的基础信息,比如windows1和macOS的用户数量分别是多少,所以HTTP/1.0的请求头还加入了用户代理字段。

http/1.0待改进的部分

1、每个请求都需要建立一个新的TCP连接,TCP是个重协议,这会导致很多的网络开销

2、HTTP/1.0没有处理并发请求的机制,这会导致浏览器需要等待前一个请求完成后才能发送下一个请求

http/1.1特点

1、在header中引入Connection: keep-alive,支持持久连接

2、支持管道化技术,它可以让浏览器同时发送多个请求,不用等待服务器返回。提高了并发性能。

3、头部信息是文本,数据部分可以是文本也可以是二进制

http/1.1待改进的部分

1、那就是队头堵塞,HTTP/1.1 所有的数据通信都是按次序完成的,服务器只有处理完一个请求,才会处理下一个请求,如果前面的请求处理特别慢,后面就会有很多请求排队等着,严重影响整个页面加载

http/2特点

1、HTTP/2版本的头部和数据部分都是二进制

2、减少头部信息数据大小,通过HPACK算法将头信息压缩后再发送

3、减少信息发送次数,客户端和服务端同时维护一张头信息表,所有字段都会存入这个表,以后请求只要发送不同字段即可,这样就提高速度了

4、支持多路复用,通过单一连接可以发送多个的请求-响应消息,不用按照顺序一一对应,这就避免了队头堵塞问题,每个请求或回应的所有数据包,称为一个数据流(stream),每个数据流都有一个独一无二的编号来区分。数据流的最小单位是帧,帧会组成消息数据包,多个消息数据包组成流,一个tcp连接里,可并发许多流。

5、http2支持服务端推送,即允许服务端未经请求,主动向客户端发送资源

http/2​​​​​​​待改进的部分

1、解决了应用层面的队头阻塞问题,但是并没有解决TCP的队头阻塞

什么是TCP的队头阻塞?

采用HTTP/2时,浏览器一般会在单个TCP连接中创建并行的几十个乃至上百个传输。

如果HTTP/2连接双方的网络中有一个数据包丢失,或者任何一方的网络出现中断,整个TCP连接就会暂停,丢失的数据包需要被重新传输。因为TCP是一个按序传输的链条,因此如果其中一个点丢失了,链路上之后的内容就都需要等待。

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

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

相关文章

探索SQL深入理解数据库操作的关键概念与技巧【文末送书】

文章目录 SQL语言从入门到精通入门篇进阶篇高级篇深入理解SQL SQL语言从入门到精通(软件开发视频大讲堂)【文末送书】 SQL语言从入门到精通 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库…

Linux命令-du命令(显示每个文件和目录的磁盘使用空间)

说明 du命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间 的查看,还是和df命令有一些区别的 语法 du(选项)(参数)选项 -a, --all 显示目录中个别文件的大小。 -B, --block-size大小 使用指定字节数的块 -b, -…

数据结构-贪心策略(贪心算法)

贪心算法 1.贪心算法的核心思想 局部最优思想:在每一步决策时做出对当前看起来最优的解,并且期望这些局部最优的选择能成全全局最优解.全局最优构造:对于给定的问题,其全局最优解可以通过将问题分解为一系列子问题,然后在每个子问题上独立做出贪心选择来…

李飞飞团队发布《2024年人工智能指数报告》,预测人工智能未来发展趋势

昨天,斯坦福大学 Human-Center Artificial Intelligence (HAI)研究中心发布了《2024年人工智能指数报告》。 由斯坦福大学发起的人工智能指数(AI Index)是一个追踪 AI 动态和进展的非营利性项目,旨在全面研究 AI 行业状况&#xf…

Android Framework 常见解决方案(29)添加应用开发的共享库

1 原理说明 通过设置配置文件public.libraries.txt以及在system分区下添加so动态库的方式,让系统扩展动态库。关于动态库的拷贝较为简单,直接配置即可,这里主要解读下配置文件public.libraries.txt。 1.1 public.libraries.txt配置文件是什…

Redis主从复制及其原理

为什么要有主从复制 为了避免服务的单点故障,通过给主从复制可以把数据复制多个副本放在不同的服务器上,拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能 Redis的主从复制搭建 准备3台机器,主服务器ip为192.16…

云服务器租用一年、1个月优惠价格表,阿里/腾讯/京东/华为云

现在租一个服务器多少一个月?优惠价格低至3.8元1个月,租用一个月云服务器收费价格表:阿里云和腾讯云2核2G3M服务器优惠价格61元一年,折合一个月5元,京东云轻量云主机5.8元一个月,华为云服务器优惠价格3.8元…

未来交通:UWB模块引领智能交通系统的发展方向

随着城市化进程的加速和交通需求的不断增长,智能交通系统正成为解决城市交通问题的重要途径之一。UWB不断发展正在引领智能交通系统的发展方向。UWB模块作为UWB技术的核心组成部分,具有精准定位、快速响应、抗干扰等特点,为智能交通系统的构建…

Swift-19-基础入门

从本章开始大概用10篇左右文章介绍下Swift语言的基本用法。 简介 Objective-C作为一门比较老的语言, 缺少很多现代语言所具备的高级特性。Swift是目标是比C,C, ObjC更安全可靠,从而减少开发者对在应用运行时出错的代码进行调试的时间成本。本…

github,raw.githubusercontent.com 等网址登陆不上不去的设置方法

目录 提示域名解析错误: 出现的现象: 解决办法:修改host host改完不生效 解决方案1: 解决方案2: 提示域名解析错误: 出现的现象: 登陆github,raw.githubusercontent.com 等网…

Jmeter 接口造10w条用户数据

1、将mysql-connector-java-5.1.22-bin.jar放到D:\apache-jmeter-5.5\lib\ext目录下 2、在测试计划中,添加mysql-connector-java-5.1.22-bin.jar包路径 3、添加-线程组-添加-配置元件-jdbc connection configuration 4、配置jdbc连接参数 设置变量名称:…

pyqt之QNetworkAccessManager

QNetworkAccessManager是Qt自带的一个网络请求库,网上很多说的很模糊,在这总结一下 # coding: utf-8 import json import sys from pathlib import Path from typing import Union from urllib.parse import urlencodefrom PyQt5.QtNetwork import QNetw…

关于 AssertionError: Torch not compiled with CUDA enabled 问题

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

javaWeb智能医疗管理系统

简介 在当今快节奏的生活中,智能医疗系统的崛起为医疗行业带来了一场革命性的变革。基于JavaWeb技术开发的智能医疗管理系统,不仅为医疗机构提供了高效、精准的管理工具,也为患者提供了更便捷、更个性化的医疗服务。本文将介绍一个基于SSM&a…

vue快速入门(二十九)echarts在vue中的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容 echarts.js的下载途径echarts的饼图示范 echarts.js&#xff0c;点击跳转&#xff0c;右键另存即可 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><m…

python内置函数frozenset()详解

Python 内置函数 frozenset() 1. 概述 frozenset() 是 Python 中的一个内置函数&#xff0c;用于创建一个不可变的集合&#xff08;frozenset&#xff09;。与普通的集合&#xff08;set&#xff09;不同&#xff0c;frozenset 不能被修改&#xff0c;也不能添加或删除元素。…

小试牛刀!

1.从双倍数组中还原原数组&#xff08;力扣&#xff0c;vector&#xff09; java式c解法。 class Solution { public:vector<int> findOriginalArray(vector<int>& changed) {int n changed.size();if(n % 2 1) return {};map<int, int> mp;for(int c…

Applied Spatial Statistics(二)统计推断:排列测试

Applied Spatial Statistics&#xff08;二&#xff09;统计推断&#xff1a;排列测试 本笔记本演示了如何执行假设检验和 p 值计算的排列检验。 相关系数Moran’s I 相关性 import pandas as pd import matplotlib.pyplot as plt import numpy as np from scipy.stats imp…

pycharm永久改变sys.path

进入pycharm&#xff0c;选择file->settings->interpreter 在这里选择图中所示show all 再单击左上角减号右侧第三个&#xff0c;长得像思维导图的图标 之后添加你的路径&#xff0c;确认即可

2024最新面试跳槽,软件测试面试题的整理与解析

今天接着来说说测试工程师面试比较高频的面试题&#xff0c;大家可以通过面试题内的一些解析再结合自己的真实工作经验来进行答题思路的提取、整理。 硬背答案虽可&#xff0c;但容易翻车哦。能够举一反三才是重点&#xff01; 1&#xff1a;请介绍一下UI自动化测试中三种时间等…