HTTP到底是什么?

news2024/11/8 19:33:38

文章目录

  • HTTP简介
  • HTTP协议的特点
    • 1) 简单快速
    • 2) 灵活
    • 3) 无连接
    • 4) 无状态
  • HTTP协议的发展历程
    • 1) HTTP/0.9
    • 2) HTTP/1.0
    • 3) HTTP/1.1
    • 4) HTTP/2.0
  • HTTP的工作流程


HTTP简介

HTTP 全称为 Hypertext Transfer Protocol,翻译为中文是“超文本传输协议”的意思,它是互联网中应用最为广泛的一种网络协议。自 1990 年万维网(也就是互联网)诞生以来,HTTP 就成为万维网通信的基础协议。HTTP 协议是由万维网之父蒂姆·贝纳斯·李(Tim Berners-Lee)提出的,随后他还成立了万维网联盟(WWW Consortium),并组织了 IETF(Internet Engineering Task Force)小组来进一步完善和发布 HTTP 协议。
在这里插入图片描述

HTTP 是一个简单的请求/响应协议,通常运行在 TCP(Transmission Control Protocol 的简称,是一种面向连接的、可靠的、基于字节流的传输层通信协议)之上。HTTP 协议指定了客户端能够发送什么样的消息给服务端,以及服务端要做出怎样的响应。

HTTP 协议是基于 B/S 架构(全称为 Browser/Server,中文是浏览器/服务器的意思)进行通信的,协议中服务器端的实现程序主要是 httpd、nginx 等,客户端的实现程序通常是 Web 浏览器,例如 Firefox、Google chrome 等。服务器端的服务是基于 TCP 的,因此为了能够随时响应客户端的请求,服务器会默认监听 TCP 协议的 80 端口,当然后期您也可以修改为其它端口。

HTTP 协议为计算机之间的通信提供了一种标准和规范,它规定了:

  • 如何构造客户端的请求数据(也称报文);
  • 如何将请求数据发送到服务器;
  • 服务器端如何响应客户端的请求。

总的来说,HTTP 协议规定了万维网时代计算机通信的完整流程以及各种细节。

HTTP协议的特点

1) 简单快速

HTTP 协议支持客户端、服务器端模式,简单快速,当客户端向服务器端发送请求时,只需要传送请求方法和路径即可,常用的请求方法有 GET、HEAD、POST 等,每种方法都定义了客户端与服务器之间不同的信息交换方式。

2) 灵活

HTTP 允许传输任意类型的数据对象,包括音频、视频、图片、文本等等。

3) 无连接

HTTP 是无连接的,当服务器接受到来自客户端的请求后,会按顺序依次处理这些请求,处理完成一个就关闭一个,然后开始处理下一个请求。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,随即断开连接,采用这种方式可以节省传输时间。

4) 无状态

HTTP 协议是无状态协议,无状态是指协议对于信息的处理没有记忆能力。也就是说来自同一个客户端的多个请求之间没有上下文关系,每次的请求都是独立的,一次请求的执行情况和结果与它前面的请求或后面的请求没有直接关系。

服务器中并不会保存客户端的状态,也就意味着如果后续处理中需要用到前面的信息,那么您就需要将它重新发送到服务端,这样可能会导致每次连接传送的数据量增大。但从另一方面来讲,如果服务器不需要先前信息时它的响应就会比较快。

HTTP协议的发展历程

1) HTTP/0.9

HTTP/0.9 是 1991 年 HTTP 的原型版本,这个版本的协议存在许多设计缺陷并且只能使用老旧的客户端进行操作。

HTTP/0.9 只支持 GET 方法,而且响应信息中只有数据,没有版本号、状态码、响应头等信息,并且不支持使用 MIME 类型来指定多媒体内容。

HTTP/0.9 原本是用来获取简单的 HTML 数据对象的,所以很快就被 HTTP/1.0 所取代。

2) HTTP/1.0

在 1996 年,TimBerners-Lee 提出了 HTTP/1.0,它是第一个被广泛使用的版本。在此后的不断丰富和发展中,HTTP/1.0 成为最重要的面向事务的应用层协议。其特点是简单、易于管理,符合了大家的需要,得到了广泛的应用。

HTTP/1.0 几乎可以传输任何类型的文件,这使得我们在网页中不仅可以展示文字,还可以展示图像、音频、视频等二进制文件,这为互联网的兴起奠定了基础。

3) HTTP/1.1

HTTP/1.1 是目前我们所使用的版本,它纠正了 HTTP 在设计上的缺陷,规范了语义,引入了重要的性能优化,去除了某些错误的功能。并且它还为更加复杂的 Web 应用程序提供支持。

4) HTTP/2.0

HTTP/2.0 又称为 HTTP/NG,它是下一代 HTTP 协议,目前应用还非常少。HTTP/2.0 使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比 HTTP/1.1 大了好几个数量级。

HTTP/2.0 是一个二进制协议,头信息和数据体都是二进制,并且统称为“帧”(frame),即头信息帧和数据帧。而且 HTTP/2.0 协议允许服务器在未经请求的情况下,主动向客户端发送资源,即服务器推送。

HTTP的工作流程

一次完整的 HTTP 请求与响应的过程(请求和响应缺一不可)称为一个 HTTP 事务,其过程大致可分为四步:

  1. 首先客户端与服务器需要建立连接,比如当我们单击网页中的某个链接时;
  2. 建立连接后,客户端向服务器发送一个请求;
  3. 服务器在接收到请求后,给予相应的响应信息;
  4. 客户端接收到服务器所返回的信息后与服务器断开连接。

提示:如果以上过程中的某一步出现错误,那么服务器会将产生错误的信息返回给客户端。对于用户来说,这些过程都是由 HTTP 自己完成的,我们只要用鼠标点击,等待信息显示就可以了。
客户端与服务器之间的 HTTP 连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要是因为服务器要面向成干上万个网络中用户,而且服务器只能提供有限个连接,所以服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

HTTP 是一种无状态协议,即服务器不保留与客户端连接时的任何状态。这就大大减轻了服务器的记忆负担,从而保持较快的响应速度。HTTP 是一种面向对象的协议,允许传送任意类型的数据对象,它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。

HTTP 规范定义了 9 种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是 GET 和 POST。服务器将根据客户请求完成相应操作,并将最终结果返回给客户端,最后关闭连接。

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

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

相关文章

Java并发编程—volatile

文章目录volatile的应用volatile的定义与实现原理专业术语:volatile是如何来保证可见性的呢?volatile的原理:volatile的两条实现原则:(物理上如何实施)volatile的内存语义volatile的特性例:下面…

SpringBoot -集成Druid

文章目录Druid概述使用问题解决Spring监控不生效方式1:修改yml的配置写法方式2:参考DruidSpringAopConfiguration自行注入Bean,灵活(更建议)Druid 概述 官网: https://github.com/alibaba/druid   文档&a…

校园论坛(Java)—— 用户管理系统模块

校园论坛(Java)—— 用户管理系统模块 文章目录校园论坛(Java)—— 用户管理系统模块[toc]1、写在前面2、系统结构设计2.1 各个页面之间的调用关系2.2. 用户管理系统模块各层的设计3、管理员管理用户功能3.1 管理员查看普通用户的…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.1 镜像命令

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.1 镜像命令10.1.1 镜像相关命令10.1.2 镜像操作命令10.1.…

SpringBoot_整合PageHelper

分页插件/PageHelper插件 我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理 实现原理 PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数(pageIndex&#xff0c…

TypeScript21(装饰器Decorator)

Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变 不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能; 若要启用实验性的装饰器特性,你必须在命令行或…

计算机网络 HTTPS

HTTPS HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是…

git:多分支管理

多分支管理1. 列出分支2. 新建分支3. 删除分支4. 切换分支5. 分支合并多分支开发的特点 | 作用1. 测试:合并之后再在分支中工作是否主分支里面的相同文件不会更改2. 测试:修改编辑test分支的文件,最后再合并分支,是否是直接覆盖&a…

FT2004(D2000)开发实战之启动流程介绍

一 启动流程概述 飞腾FT2004/D2000芯片提供两种引导方案,具体如下所示: 方案一: 方案二: 方案一和方案二的区别是第二阶段的运行组件不同,方案一运行的是U-boot、方案二运行的是UEFI 那么为什么会这样的了? 答案是:飞腾FT2004/D2000芯片既可以用于嵌入式方案,也可以…

Docker中网络的使用和配置用法详解

一、单个物理机中docker网络 1.1 Docker默认网桥 安装Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。 使用 doc…

初识猿如意开发工具

嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 一、初遇猿如意 第一次听说猿如意开发工具,于是抱着试试的心态,开始下载尝试。 首先是…

算法导论23章最小生成树习题—23.2练习

23.2-1对于同一个输人图,Kruskal 算法返回的最小生成树可以不同。这种不同来源于对边进行排序时,对权重相同的边进行的不同处理。证明:对于图G的每棵最小生成树T,都存在一种办法来对G的边进行排序,使得Kruskal算法所返回的最小生成…

HTML+CSS+JS网页设计期末课程大作业——上海旅游景点(10页)web前端开发技术 web课程设计 网页规划与设计

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

离散化【带题讲解】

全文目录🤔 原理😕 区间和😵‍💫 建立映射😵‍💫 查找映射的下标😵‍💫 代码🤔 原理 离散化,把无限空间中有限的个体映射到有限的空间中去,以此提…

NVIDIA 安装 CUDA

名词解释:CUDA 是一个架构 该架构使GPU能够解决复杂的计算问题 此实战使用电脑为联想Y9000P 显卡型号为 3060 在安装 CUDA 之前需要先打开 NVIDIA 控制面板 一、准备工作 如图我这个显卡需要安装 CUDA 11.7 的版本 二、下载软件 进入官网下载 CUDA NVIDIA Deve…

解放军军官军衔(不含士兵军衔)分为3等10级

军衔,是国家最高权力机关授予军人的一种衔称。不同的级别有不同的军衔。对于军衔的认识,一些朋友或许只有片面的认识,下面,笔者就给大家来科普一下中国的军衔。 为了纪念中国人民解放军建军93周年,弘扬爱国主义精神&a…

被迫毕业,面试 30 家公司,终于上岸了!

大家好,我是君哥。今天分享一个老弟,被“毕业”后的求职经历。 在老东家干了 6 年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”…

(1-线性回归问题)线性回归(Linear regression)Lasso回归和Ridge回归的区别

回归分析是机器学习中的经典算法之一,用途广泛,在用实际数据进行分析时,可能会遇到以下两种问题 过拟合, overfitting欠拟合, underfitting 在机器学习中,首先根据一批数据集来构建一个回归模型,然后在用另外一批数据…

Vue 中 (moment)操作日期的加减与展示

目录 基本语法 : 展示效果如下: 使用方式: 1、首先在 pacaage.json 中引入依赖 "moment": "^2.29.4" 2、然后命令行 install 安装 : 3、最后,在使用的页面引入moment 4、data 中我定义了一个…

python的Django项目中常见命令以及常错点(Linux环境下)

USE 数据库名 --------------- 切换数据库更新virtualenv库(用于创建虚拟环境):sudo pip install -U virtualenv创建虚拟环境:virtualenv -p python venv(虚拟环境的目录名)激活虚拟环境:source venv/b…