HTTP的特点

灵活可扩展
HTTP 协议最初诞生的时候就比较简单,本着开放的精神只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,“header+body”等,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制。

在随后的发展过程中,HTTP又增加了请求方法、版本号、状态码、头字段等特性。而 body 也不再限于文本形式的 TXT 或 HTML,而是能够传输图片、音频视频等任意数据,这些都是源于它的“灵活可扩展”的特点。

可靠传输
这个特点显而易见,因为 HTTP 协议是基于 TCP/IP 的,而 TCP 本身是一个“可靠”的传输协议,所以 HTTP 自然也就继承了这个特性,能够在请求方和应答方之间“可靠”地传输数据。

它的具体做法与 TCP/UDP 差不多,都是对实际传输的数据(entity)做了一层包装,加上一个头,然后调用 Socket API,通过 TCP/IP 协议栈发送或者接收。

应用层协议
在 TCP/IP 诞生后的几十年里,虽然出现了许多的应用层协议,但它们都仅关注很小的应用领域,局限在很少的应用场景。例如 FTP 只能传输文件、SMTP 只能发送邮件、SSH 只能远程登录等,在通用的数据传输方面“完全不能打”。

所以 HTTP 凭借着可携带任意头字段和实体数据的报文结构,以及连接控制、缓存代理等方便易用的特性,一出现就“技压群雄”,迅速成为了应用层里的“明星”协议。只要不太苛求性能,HTTP 几乎可以传递一切东西,满足各种需求,称得上是一个“万能”的协议。

请求 - 应答
这个请求 - 应答模式是 HTTP 协议最根本的通信模型,通俗来讲就是“一发一收”“有来有去”,就像是写代码时的函数调用,只要填好请求头里的字段,“调用”后就会收到答复。

请求 - 应答模式也明确了 HTTP 协议里通信双方的定位,永远是请求方先发起连接和请求,是主动的,而应答方只有在收到请求后才能答复,是被动的,如果没有请求时不会有任何动作。

此外,请求 - 应答模式也完全符合 RPC(Remote Procedure Call)的工作模式,可以把 HTTP 请求处理封装成远程函数调用,导致了 WebService、RESTful 和 gRPC 等的出现。

无状态
这个所谓的“状态”应该怎么理解呢?“状态”其实就是客户端或者服务器里保存的一些数据或者标志,记录了通信过程中的一些变化信息。

你一定知道,TCP 协议是有状态的,一开始处于 CLOSED 状态,连接成功后是 ESTABLISHED 状态,断开连接后是 FIN-WAIT 状态,最后又是 CLOSED 状态。

这些“状态”就需要 TCP 在内部用一些数据结构去维护,可以简单地想象成是个标志量,标记当前所处的状态,例如 0 是 CLOSED,2 是 ESTABLISHED 等等。

再来看 HTTP,那么对比一下 TCP 就看出来了,在整个协议里没有规定任何的“状态”,客户端和服务器永远是处在一种“无知”的状态。建立连接前两者互不知情,每次收发的报文也都是互相独立的,没有任何的联系。收发报文也不会对客户端或服务器产生任何影响,连接后也不会要求保存任何信息。

“无状态”形象地来说就是“没有记忆能力”。比如,浏览器发了一个请求,说“我是小明,请给我 A 文件。”,服务器收到报文后就会检查一下权限,看小明确实可以访问 A 文件,于是把文件发回给浏览器。接着浏览器还想要 B 文件,但服务器不会记录刚才的请求状态,不知道第二个请求和第一个请求是同一个浏览器发来的,所以浏览器必须还得重复一次自己的身份才行:“我是刚才的小明,请再给我 B 文件。”

我们可以再对比一下 UDP 协议,不过它是无连接也无状态的,顺序发包乱序收包,数据包发出去后就不管了,收到后也不会顺序整理。而 HTTP 是有连接无状态,顺序发包顺序收包,按照收发的顺序管理报文。

但不要忘了 HTTP 是“灵活可扩展”的,虽然标准里没有规定“状态”,但完全能够在协议的框架里给它“打个补丁”,增加这个特性。
其他特点
除了以上的五大特点,其实 HTTP 协议还可以列出非常多的特点,例如传输的实体数据可缓存可压缩、可分段获取数据、支持身份认证、支持国际化语言等。但这些并不能算是 HTTP 的基本特点,因为这都是由第一个“灵活可扩展”的特点所衍生出来的。请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

优先级队列(大根堆与小根堆)

优先级队列(大根堆与小根堆) 文章目录 优先级队列(大根堆与小根堆)堆的介绍模拟堆以数组模型为例,创建堆向下调整(shiftDown)入队(push)及向上调整(shiftUp&a…

SLAM中将地图映射到谷歌地图上的方法——完美运行

文章目录 前言一、rviz_satellite二、mapviz 前言 老是看到论文中有将地图映射到谷歌地图上的图,实在是泰裤辣!!(武汉大学) 搜索了很久,发现有两种可视化软件,分别为rviz_satellite和mapviz。…

第4章-动态规划

第4章-动态规划 总分:100分 得分:100.0分 10.0 分 1 . 多选题 中等 10分 有关0-1背包问题,用c[i][j]描述子问题:1...i共i个物品,背包容量为j的最优值(装入背包的最大价值),则其子问题为:1...i-1共i-1个物品,背包容量为j-w ix i,以下说法正确的是( AB…

如何利用分钟级降水预报 API 优化城市水利管理?

引言 降水预报对于城市水利管理部门来说至关重要,它可以帮助管理者及时了解当地的降雨情况,以便更好地管理城市水利设施,保障公共安全。然而,传统的降水预报数据一般只提供每小时或每3小时的粗略预报数据,无法满足城市…

ICV: 全球QRNG产业规模在2030年有望突破200亿美元

近日,专注于前沿科技领域的国际咨询机构ICV发布了《全球量子随机数发生器的产业研究报告》,从多个角度对QRNG的市场进行预测。 QRNG 是解决与随机数相关的问题(例如密码解决方案)的重要硬件来源。 QRNG 是随着量子物理技术的发展…

2023年6月DAMA-CDGA/CDGP数据治理认证报名请尽早啦!

6月18日DAMA-CDGA/CDGP数据治理认证考试开放报名中! 考试开放地区:北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安。其他地区凑人数中… DAMA-CDGA/CDGP数据治理认证开班时间:5月7日 DAMA认证为数据管理专业人士提供…

项目管理:项目进度跟踪的好处有哪些?

项目进度跟踪主要针对项目计划、任务和项目成员三个方面,即为了了解整个项目计划完成情况、了解项目的实际进展情况、解成员工作完成情况。 项目跟踪可以证明计划是否可执行,可以说明计划是否可以被完成。 在项目执行过程中,我们也可以通过跟…

windows安装node.js和vue3.x

目录 下载并安装node配置环境变量配置淘宝镜像源安装webpack全局打包工具安装cnpm安装vue-cli 3.xcnpm问题警告的解决办法 下载并安装node 1,下载nodejs 直接从node.js官网下载:https://nodejs.org/en/download 根据自己电脑的版本选择32位或者64位&…

智慧城市3d可视化管理大屏系统有效提高服务质量和效率

随着新一代信息技术飞速融入传统产业,农业数字化、网络化、智能化逐步成为农业现代化发展的基石。实现农业生产环境的智能感知、智能预警、智能决策、智能分析等功能,为农业生产提供精准化保障、高质量运营水平、智能化决策支撑。 3D可视化智慧管理 1&am…

中断-STM32

中断-STM32 中断:在主程序运行过程中,出现了特定的中断触发条件 (中断源),使得CPU暂停当前正在运行的程序转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行。 中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓…

【Halcon】 Halcon 22.11 安装详细教程

文章目录 1安装2 获取许可证 license2.1 license下载2.2 激活 license放置在相应文件夹下3 DLT 安装1安装 1.解压安装包 2.打开运行 exe 程序 跳转至页面 点击“可获得的”,并安装选择: AVAILABLE ->INSTALL 可获得的 ->安装

云计算中的边缘计算技术及其应用

章节一:云计算和边缘计算的简介 随着互联网的发展,数据中心的规模不断扩大,云计算也成为了越来越受欢迎的计算模式。但是,云计算存在着一些问题,比如延迟较高,网络瓶颈,数据隐私和安全性等等。…

Wikidata 模型分析+实体抽取+数据处理

Wikidata 数据分析与处理 需求:Wikidata 数据描述了很多实体,以及实体属性。比如某一个公司/组织/机构名称是:阿里巴巴,对数据内该组织的相关属性进行观察、分析、治理、抽取等,最后用图数据库进行存储和展示其关系&am…

蓝牙资讯|苹果与谷歌起草蓝牙定位追踪设备行业规范

苹果与谷歌于当地时间5月2日联合提交了一份行业规范草案,以帮助应对蓝牙定位追踪设备遭滥用的问题。目前已有包括三星在内的追踪设备制造厂商宣布支持该草案。 据了解,苹果与谷歌此次联合提交的行业规范草案将云熙蓝牙定位追踪设备兼容跨iOS以及Android平…

asp.net+sqlserver漫画绘本借阅管理系统

摘 要1 第1章 系统概述5 1.1 研究背景5 1.2 研究的意义5 1.3 主要研究内容5 第2章 系统开发环境7 2.1 ASP.NET概述7 2.2 动态网站技术介绍8 2.3 数据库技术8 第3章 需求分析9 3.1 需求分析9 3.1.1 功能需求9 3.2 可行性分析9 3.2.1 可行性分析9 3.2.2 技术可行性9 3.2.3 运行可…

详解c++---模拟实现stack和queue

目录标题 设计模式stack的模拟实现准备工作各种函数的实现 queue的模拟实现准备工作queue的接口实现 deque的介绍为什么会有dequedeque的原理deque的迭代器为什么使用deque 设计模式 设计模式分为两个:迭代器模式和适配器模式 第一个:迭代器模式 迭代器…

FT2000+ qemu kvm 64C64G 通过频繁设置CPU online 状态导致虚拟机openEuler 操作系统假死测试用例2

前文: https://hknaruto.blog.csdn.net/article/details/130408240 测试程序 /** tcti.cpp参考: https://www.cnblogs.com/organic/p/17321523.htmlg -stdc11 -lpthread trigger_cgroup_timer_inactive.cpp -o inactive_timer ./inactive_timer 100000…

【刷题】141. 环形链表

141. 环形链表 一、题目描述二、示例三、实现思考总结 141. 环形链表 一、题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环…

Spring是什么?关于Spring家族

初识Spring 什么是Spring? Spring是一个开源的Java企业级应用程序开发框架,由Rod Johnson于2003年创建,并在接下来的几年里得到了广泛的发展和应用。它提供了一系列面向对象的编程和配置模型,支持开发各种类型的应用程序&#x…

晒出新高度?2023夏季小红书防晒趋势前瞻

夏日将临,防晒需求激增,进入市场旺季。今年防晒赛道朝着“防护升级,多面兼顾”大势发展。 哪些趋势值得关注?本期,千瓜将通过小红书数据分析和笔记内容洞察,为品牌提供数据支持和方向参考。 月增长高达501.…