HTTP/1.1特性总结

embedded/2024/10/22 8:18:20/

优点

【简单,灵活和易于扩展,应用广泛和跨平台】

1.简单:

http基本的报文格式就是header+body,头部信息也是key-value简单的文本形式,易于理解,降低了学习和使用的门槛

2.灵活和易于扩展:

(1)HTTP协议中的各类请求方法,URL,状态码,头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充

(2)HTTP工作在应用层(OSI第七层),他下层可以随意变化,比如:HTTPS就是在HTTP与TCP之间增加了SSL/TLS安全传输层

        HTTP/1.1和HTTP/2.0传输协议使用的是TCP协议,而到了HTTP/3.0传输协议改用了UDP协议

3.广泛应用和跨平台:

https://img-blog.csdnimg.cn/direct/4dd0dae2574c4aab98b4a70ab68cd965.png" width="1053" />

缺点

1.【无状态】是一把双刃剑

好处:服务器不回去记忆HTTP状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能把更多的CPU和内存用来对外提供服务

坏处:服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦;

          比如:登录淘宝-》添加购物车-》下单,这系列操作都要知道用户的身份才行,但是服务器不知道这些请求是有关联的,每次都要问一遍身份信息

如何解决无状态问题?:

   采用Cookie技术,Cookie通过在请求和响应报文中写入Cookie信息来控制客户端的状态;

   相当于,在客户端第一次请求后,服务器会下发一个装有客户信息的【小纸条】,后续客户端请求服务器时,再带上这个【小纸条】,服务器就能认得了

2.【明文传输】是一把双刃剑

好处:方便阅读,为工作带来极大的便利

缺点:HTTP所有的信息都暴露在光天化日之下,毫无隐私可言,很容易被窃取;

3.【不安全】

(1)通信使用明文(不加密),内容可能会被窃听,比如,账号容易被泄漏;

(2)不验证通信方的身份,因此有可能遭遇伪装,比如:访问盗版淘宝,拼多多

(3)无法证明报文的完整性,所以有可能已遭篡改,比如:网站植入广告;

如何解决安全问题?:

用HTTPS的方式解决,也就是通过引入SSL/TLS层,使得在安全上达到极致;

性能

HTTP协议基于TCP/IP,并且使用了【请求-应答】的通信模式,所以性能的关键就在这两点里

1.【长连接】:

   早期HTTP/1.0性能上的一个很大问题就是每次发起一个请求,都要建立一次TCP连接(三次握手),来回做了多   次TCP建立连接与断开连接,增加了通信开销

解决方法:HTTP/1.1提出了长连接的通信方式,也叫持久连接;

长连接优点:减少TCP连接的重复建立和断开所造成的多余开销,减轻服务器负载

长连接特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态;

当然,如果某个HTTP长连接超过一定时间没有任何数据交互,服务端就会主动断开这个连接;

 

2.【管道网络传输】:

  即在同一个TCP连接中,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间;

注意:服务器接受顺序必须按照接收请求的顺序来发送对这些管道化请求的响应

3.【队头阻塞】:

因为当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一同被阻塞了,会招致客户端一直请求不到数据,这也就是【队头阻塞】

注意:HTTP/1.1管道只解决了请求的对头阻塞,但没有解决响应的队头阻塞;

总之,HTTP/1.1的性能一般般,后续的HTTP/2和HTTP/3就是在优化HTTP的性能

  


http://www.ppmy.cn/embedded/10688.html

相关文章

【单例模式】饿汉式、懒汉式、静态内部类--简单例子

单例模式是⼀个单例类在任何情况下都只存在⼀个实例,构造⽅法必须是私有的、由⾃⼰创建⼀个静态变量存储实例,对外提供⼀个静态公有⽅法获取实例。 目录 一、单例模式 饿汉式 静态内部类 懒汉式 反射可以破坏单例 道高一尺魔高一丈 枚举 一、单例…

Sentinel + Nacos流控规则持久化配置

json参数对映sentinel 规则面板 [{"controlBehavior": 0,"count": 2,"grade": 1,"limitApp": "default","resource": "flow","strategy": 0} ] 第二步,告诉订单服务读取配置&…

windows ubuntu子系统,肿瘤全外篇1.安装软件及建立数据库

外显子组测序(Exome sequencing)是指利用序列捕获技术将全基因组外显子区域DNA捕捉并富集后进行高通量测序的基因组分析方法。由于外显子组测序捕获目标区域只占人类基因组长度的约1% ,但变异占比高达85%,因此远比进行全基因组序列测序来得更简便、经济&…

鸿蒙开发基础认证 课后习题汇总

目录 【习题】运行Hello World工程 判断题 单选题 多选题 该小节补充知识: 【习题】ArkTS基础知识 判断题 单选题 多选题 该小节补充知识: 基本概念 状态管理 页面级变量的状态管理 应用级变量的状态管理: 【习题】运行Hello…

Java单例模式的五种实现方式 懒汉式 饿汉式 双重校验锁 静态变量 静态内部类 枚举实现单例模式等

1、什么是单例模式? Java单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它通常用于需要共享资源或控制某些共享状态的情况下。 2、实现方式 懒汉式:在类加载的时候就创建对象,…

js 处理时间一些函数

对于前端来说 关于 时间的各种 转换是是经常遇到的问题。今天记录下,省的来回查。耽误时间。有需要的可以借鉴下。 这是在vue2 项目下 用到的。需要安装 moment 我安装的是 "moment": "^2.29.4", npm install momentimport moment from mome…

【Linux系统编程】第七弹---权限管理操作(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、修改文件权限的做法(一) 2、有无权限的表现 总结 上一弹我们讲解了Linux权限概念相关的知识,但是我们只知道有…

Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案

原文首发链接:Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案 大家好,我是码农先森。 引言 这次实现音视频实时通信的方案是基于 WebRTC 技术的,它是一种点对点的通信技术,通过浏览器之间建立对等连接,实现音频…