HTTP协议初认识、速了解

news2025/5/25 12:04:13

目录

1. 什么是HTTP协议

2. HTTP协议特点

3. HTTP协议发展和版本

3.1. HTTP1.0

3.2. HTTP1.1

3.3. HTTP2.0

3.4. http1.1和http2.0区别

4. HTTP协议中URI、URL、URN

4.1. URI

4.2. URL

4.3. URN

5. HTTP协议的请求

5.1. HTTP协议中的请求信息

5. 总结


前言

本文讲解,什么是HTTP协议,旨在了解HTTP协议

个人主页:艺杯羹

1. 什么是HTTP协议

HTTP中文名叫 超文本

超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容

HTTP协议:

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写, HTTP是万维网(WWW:World Wide Web)的数据通信的基础

HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

2. HTTP协议特点

  1. 支持客户端/服务端模式
    需要使用浏览器作为客户端来访问服务端
  2. 简单快速:
    客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST等。
  3. 灵活:
    HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

  4. 无连接:
    每次请求一次,释放一次连接。所以无连接表示每次连接只能处理一个请求。优点就是节省传输时间,实现简单。我们有时称这种无连接为短连接。
    这里提到了短连接,那么就有对应的长连接(下方解释)

  5. 单向性:
    服务端永远是被动的等待客户端的请求

  6. 无状态:
    HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力
    你可以想一下,在网上登录一些网站的时候,下一次又要重新登录了,这就是因为HTTP协议没有记忆力(无状态)
    那为什么有些网站可以保留自己的登录记录,就是因为使用了两种技术
    1. Cookie    2. Session (之后会讲到)
    那么FTP是有状态的,最大的特点就是支持断点续传(下载东西时,电脑突然停电,但是重启电脑后,又可以继续下载)
    这个状态就是能够知道上次下载到哪了

长连接

长连接专门解决效率问题。当建立好了一个连接之后,请求可以多次。但是缺点就是容易造成占用资源不释放的问题
为什么短连接效率低?
1. 短连接效率低:因为一次连接就要进行三次握手,四次挥手
2. 长连接效率高:一次创建,多次请求,缺点是资源不释放的问题
默认长连接,对服务器优化,在固定时间内关掉所有的客户端的TCP连接

3. HTTP协议发展和版本

3.1. HTTP1.0

最早在1996年在网页中使用,内容简单,所以浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无(短)连接),服务器不跟踪每个客户端也不记录过去的请求(无状态),请求只能由客户端发起(单向性)

3.2. HTTP1.1

到1999年广泛在各大浏览器网络请求中使用,HTTP/1.0中默认使用Connection: close。在HTTP/1.1中已经默认使用Connection: keep-alive(长连接)
1.1中最重要的一个特点是支持“长连接”,即“一次连接可以多次请求”

3.3. HTTP2.0

因为HTTP2.0需要客户端和服务器都是2.0版本的才可以用
所以现在还没有用起来
慢慢的1.1会被2.0代替

3.4. http1.1和http2.0区别

协议

传输格式

多路复用

首部压缩

服务器推送

请求优先级

http1.1

文本

×

×

×

×

http2.0

二进制帧

4. HTTP协议中URI、URL、URN

4.1. URI

URI:(Uniform Resource Identifier),统一资源标识符,是一个用于标识互联网某个唯一资源的字符串名称。

URL和URN都是URI的子集。

URI是个纯粹的语法结构,用于指定标识Web资源的字符串的各个不同部分。他不属于定位符,因为根据该标识符无法定位任何资源。
只标识唯一

4.2. URL

URL(Uniform Resource Location),统一资源定位符,可以帮助我们定位互联网上的某一个唯一资源,相当于是互联网资源的身份证号。

URL的五个元素包括在一个简单的地址中:

  • 传送协议
  • 服务器(通常为域名或者IP地址)
  • 端口号(以数字方式表示,若为HTTP的默认值“:80”可省略)
  • 请求资源路径
  • 传递数据(在URL中传递数据是以key=value的结构进行数据绑定,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)

例如

http://www.baidu.com:80/image/yibeigen.html?a=1b=2
1. https 是协议
2. www.baidu.com 服务器域名
3. 80 端口
4. ?a=1b=2 请求时传递的数据(get方式)

4.3. URN

URN(Uniform Resource Name,)统一资源名称,其目的是通过提供一种途径,用于在特定的命名空间资源的标识,以补充网址

URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式来。
地址栏的地址可以叫URI也可以叫URL

5. HTTP协议的请求

5.1. HTTP协议中的请求信息

打开一个网页就会需要浏览器发送很多次Request

  • 当你在浏览器输入URL https://blog.csdn.net/qq_46987323?spm=1010.2135.3001.5343 的时候,浏览器发送一个Request去获取https://blog.csdn.net/qq_46987323?spm=1010.2135.3001.5343的html. 服务器把Response发送回给浏览器。
    如果后面没有资源,浏览器就会默认的将首页地址给客户端
  • 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件
  • 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件
  • 等所有的文件都下载成功后。 网页就被显示出来了

5. 总结

HTTP 协议是 Web 通信的基础,从 HTTP1.0 的短连接到 HTTP1.1 的长连接优化,再到 HTTP2.0 的性能升级,其发展始终围绕效率和用户体验。URI / URL / URN 则从不同维度标识和定位网络资源,而请求流程则体现了浏览器与服务器的交互逻辑

下一文再深入HTTP

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

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

相关文章

模拟电子技术基础----绪论

一、电子技术的发展 1.电子技术的发展,推动计算机技术的发展,使之“无孔不入”,应用广泛! •广播通信:发射机、接收机、扩音、录音、程控交换机、电话、手机 •网络:路由器、ATM交换机、收发器、调制解调…

iOS 使用 - 设置 来电震动/关闭震动

来电震动是一个很直观的老功能。但到了iOS 18,苹果却把震动功能的开关藏得越来越深,甚至分散在不同的菜单里,让用户难以找到。这里记录分享设置方法: 1. 震动开关的路径 设置 → 通用 → 辅助功能 → 触控 → 震动 2. 来电震动…

[C语言初阶]扫雷小游戏

目录 一、原理及问题分析二、代码实现2.1 分文件结构设计2.2 棋盘初始化与打印2.3 布置雷与排查雷2.4 游戏主流程实现 三、后期优化方向 在上一篇文章中,我们实现了我们的第二个游戏——三子棋小游戏。这次我们继续结合我们之前所学的所有内容,制作出我们…

谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA

《MedExpQA: 多语言大型语言模型医学问答基准测试》论文解析 一、引言 论文开篇指出大型语言模型(LLMs)在医学领域的巨大潜力,尤其是在医学问答(QA)方面。尽管LLMs在医学执照考试等场景中取得了令人瞩目的成绩&#…

DeepSeek+白果AI论文:开启答辩PPT生成的「智能双引擎」时代

2025学术答辩革新:DeepSeek与白果AI论文的黄金协同方案 白果Ai论文,论文写作神器~ https://www.baiguoai.com/ 在学术答辩的「战场」上,「选题创新不足」「数据可视化低效」「PPT逻辑断裂」等痛点长期困扰研究者。DeepSeek与白果AI论文的深…

SDC命令详解:使用set_logic_dc命令进行约束

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 set_logic_dc命令可以将当前设计中的输入端口为不关心(设置端口的driven_by_dont_care属性为true),该端口在综合是可以被认为是…

小程序涉及提供提供文本深度合成技术,请补充选择:深度合成-AI问答类目

一、问题描述 最近新项目AI咨询小程序审核上线,按照之前小程序的流程,之前审核,提示审核不通过,审核不通过的原因:小程序涉及提供提供文本深度合成技术 (如: AI问答) 等相关服务,请补充选择:深…

基于亚博K210开发板——lvgl 图形化实验

开发板 亚博K210开发板 实验目的 本次测试主要学习 K210 图形化操作界面的功能。 实验元件 LCD 显示屏、FT6236 触摸板 lvgl 图形化库简介 LVGL(轻度综合图形界面库)是一个免费开源图形库,具有使用方便,画面美观&#xff…

LABVIEW 通过节点属性动态改变数值显示控件的方法

在 LabVIEW 里,能够借助属性节点来改变数值输入控件的禁用状态。下面为你介绍具体的操作步骤: 1. 创建或开启前面板 要先创建一个数值输入控件,操作方法是:点击 "控件" 选板,接着选择 "新式→数值→数…

信息安全管理与评估2025上海卷

上海市“星光计划”第十一届职业院校技能大赛 (高职组) “信息安全管理与评估”赛项 任务书 一、 赛项时间共计4小时。二、 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备 配置防护 任务1 网络平台搭建 2…

Linux目录介绍+Redis部署(小白篇)

目录 👑Linux基础✨【目录】 👑Redis 安装1.下载压缩包2.解压3.安装编译环境4.安装到本地5.设置开机自启 👑Linux 自启服务 👑Linux基础 虽然在大二的时候学过Linux,但是很多基础知识都忘了,想再次从基础捡…

Python 基础语法速查手册:从入门到精通

Python 作为最受欢迎的编程语言之一,以其简洁易读的语法和强大的功能吸引了大量开发者。本文全面汇总 Python 基础语法知识,帮助初学者快速掌握核心概念,并为后续深入学习打下坚实基础。 1. Python 基础语法结构 1.1 代码结构与缩进规则 Py…

论文阅读笔记——Emerging Properties in Unified Multimodal Pretraining

BAGEL 论文 商业闭源系统与学术/开源模型的差距很大,BAGEL 旨在通过开源统一架构大规模交错数据主要解决: 架构割裂:理解/生成分属两条网络,信息被压缩在少量条件 token 中,长上下文推理受限。数据贫乏:主…

JAVA批量发送邮件(含excel内容)

EmailSenderHtmlV1 是读取配置文件《批量发送邮件.xlsx》,配置sheet获取 发件人邮箱 邮箱账号 口令,发送excel数据sheet获取收件人邮箱 抄送人邮箱 邮件标题 第N行开始(N>1,N0默认表头) 第M行结束(M>1,M0默认表头) 附件文件夹…

Linux(Ubuntu)新建文件权限继承问题

当你在一个工作目权限为777的文件下,新建一个文件的时候,就有可能发生,新建的这个文件,权限和其他文件,或者工作目录不一致的问题,我们不可能每次新建一个文件,就要 sudo chmod -R 777 /PATH 所…

Java中的String的常用方法用法总结

1.1 String (1)声明 (2)字符串常量 存储字符串数据的容器:private final char value[] 字符串常量都存储在字符串常量池(StringTable)中 字符串常量池不允许存放两个相同的字符串常量 &#xff…

QGIS如何打开 ARCGIS的mxd工程文件

“SLYR”是一款由著名开源组织“北路开源”开发的一套QGIS兼容和转换ARCGIS样式、工程、设置信息的插件!其主要功能为: 最近项目需要,我使用了一些功能,发现其对中文环境及中文信息支持不太好,还有一些其它BUG&#xf…

基于微信小程序的智能问卷调查系统设计与实现(源码+定制+解答)基于微信生态的问卷管理与数据分析系统设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

React 如何封装一个可复用的 Ant Design 组件

文章目录 前言一、为什么需要封装组件?二、 仿antd组件的Button按钮三、封装一个可复用的表格组件 (实战)1. 明确需求2. 设计组件 API3. 实现组件代码4. 使用组件 三、封装组件的最佳实践四、进阶优化 总结 前言 作为一名前端开发工程师,在日常项目中&a…

Canvas SVG BpmnJS编辑器中Canvas与SVG职能详解

Canvas详解与常见API 一、Canvas基础 核心特性 • 像素级绘图:Canvas是基于位图的绘图技术,通过JavaScript操作像素实现图形渲染,适合动态、高性能场景(如游戏、数据可视化)。 • 即时模式:每次绘制需手动…