HTTP/1.1特性总结

优点

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

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.广泛应用和跨平台:

缺点

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.hqwc.cn/news/624141.html

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

相关文章

python-常用数据结构(2)

6、某企业为职工发放奖金:如果入职超过5年,且销售业绩超过15000元的员工,奖金比例为0.2;销售业绩超过10000元的员工,奖金比例为0.15:销售业绩超过5000元的员工,奖金比例为0.1;其他奖金比例为0.05。如果是人职不超过5年,且销售业绩超过4000的员工,奖金比例为0.045;否则为0.01。输…

前端ocr技术:electron+vue3中使用tesseract插件识别图片中字符

同学们可以私信我加入学习群! 正文开始 前言一、electron各种csp问题二、试用插件总结 前言 项目需要ocr技术识别图片中的中文字符,本来这部分是后端的工作,但是因为各种原因,决定前端也做一个版本。 在ai时代之前,o…

bugku-cryton 把猪困在猪圈里

打开题目得到一串字符,发现最后有等号,尝试buase64解码,发现文字解码不行,试试图片解码 解码得到一串图片密文,根据经验是猪圈密码,查找相关表格对应 一一对应得到flag{thisispigpassword} 参考猪圈密文链…

PyCharm 2024.1 发布:全面升级,助力高效编程!

PyCharm 2024.1 发布:全面升级,助力高效编程! 文章目录 PyCharm 2024.1 发布:全面升级,助力高效编程!摘要引言 Hugging Face:模型和数据集的快速文档预览针对 JavaScript 和 TypeScript 的全行代…

【C++对于C语言的扩充】函数重载、引用以及内联函数

文章目录 🚀前言🚀函数重载注意:✈️为什么C可以实现函数重载,而C语言却不行呢? 🚀引用✈️引用的特性✈️C中为什么要引入引用✈️引用与指针的区别 🚀内联函数✈️内联函数特性 🚀…

腾讯云最新优惠活动及领券入口整理分享

腾讯云近期的优惠活动丰富多样,旨在为用户提供更优惠的产品和服务。以下是一些腾讯云最新的优惠活动及领券入口的整理分享。 优惠活动: 腾讯云最新活动:https://txy.ink/act/ 1、腾讯云新客专属福利:新客户可以无门槛领取代金券&a…

windows下已经创建好了虚拟环境,但是切换不了的解决方法

用得多Ubuntu,今天用Windows重新更新anaconda出问题,重新安装之后,打开pycharm发现打开终端之后,刚开始是ps的状态,后面试了网上改cmd的方法,终端变成c盘开头了 切换到虚拟环境如下:目前的shell…

51单片机之DS1302实时时钟

1.DS1302时钟芯片介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能RTC(Real Time Clock):实时时钟,是一种集成电路,通常称…

Redis消息队列-基于Stream的消息队列-消费者组

7.5 Redis消息队列-基于Stream的消息队列-消费者组 消费者组(Consumer Group):将多个消费者划分到一个组中,监听同一个队列。具备下列特点: 创建消费者组: key:队列名称 groupName&#xff1a…

python 绘制六种激活函数(sigmoid、tanh、relu、softmax、relu、elu)

1、效果 2、实现代码(带注释) import numpy as np # 导入 numpy 库, 用于数学运算 import matplotlib.pyplot as plt # 导入 matplotlib.pyplot, 用于绘图 import matplotlib as mpl # 导入 matplotlib 库, 用于图形配置plt.rcParams[font.sans-se…

福布斯发布2024年人工智能初创企业50强

随着人工智能热潮的持续,一种新的技术经济正在帮助企业开发和部署人工智能驱动的应用程序。在《福布斯》第六届年度“人工智能50强”榜单上,这类新锐企业正大行其道。该榜单遴选了AI领域最有前途的初创公司,由《福布斯》在领先行业专家的帮助…

I2C总线接上拉电阻的原因

I2C为什么要接上拉电阻?因为它是开漏输出。 为什么是开漏输出? I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。所以总线一般会使用开漏输出,…