前端网络---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、增加了请求头和响应头

javascript 复制代码
// 请求头

accept:text/html   // 请求的文件类型
 
accept-encodeing: gzip,deflate  // 服务器采用的压缩方式
 
accept-charset: utf-8 // 文件的编码格式
 
accept-language:zh-CN,zh // 页面显示的语言 
javascript 复制代码
// 响应头

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是一个按序传输的链条,因此如果其中一个点丢失了,链路上之后的内容就都需要等待。

相关推荐
二进制person5 分钟前
JavaEE初阶 --网络编程
linux·服务器·网络
钛态30 分钟前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
Oll Correct30 分钟前
实验八:验证以太网交换机的生成树协议STP
网络·笔记
Irissgwe1 小时前
进程间通信
linux·服务器·网络·c++·进程间通信
IT小白33 小时前
windows的VMware虚拟机上的Linux系统(CentOS)配置永久ip(关机重启ip不变)
网络·网络协议·tcp/ip
喵叔哟3 小时前
29_内容生产质量网关Skill:草稿生成+事实校验+发布前检查
网络·人工智能
liulilittle4 小时前
LINUX RING BUFFER TUN/TAP 1
linux·服务器·网络·c++·信息与通信·通信
蛊明4 小时前
批量检测 IP 是否在线:CPing vs QuickPing
网络·网络协议·tcp/ip
路由侠内网穿透.5 小时前
本地部署开源书签管理工具 LinkAce 并实现外部访问( Linux 版本)
linux·运维·服务器·网络·网络协议·开源
彭泽布衣6 小时前
Linux如何指定源端口打流
linux·运维·网络