HTTP协议初认识、速了解

简介: 系统讲解HTTP定义、特点(无状态、无连接、灵活等)、版本演进(HTTP/1.0→1.1→2.0对比),以及URI/URL/URN区别和请求流程,适合初学者快速掌握核心概念。

前言

本文讲解,什么是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

目录
相关文章
|
2月前
|
存储 人工智能 JavaScript
在 vibe coding 里,唯一真正重要的,是管理好文档
vibe coding 时代,AI 生成代码已成常态,但真正决定项目质量与迭代速度的,不是模型多强,而是文档是否被系统化管理。文档承载上下文、约束、决策与共识,是人与 AI 协作的“协议”和“记忆”。管好文档,才能让 AI 稳定输出、避免失真、持续复用——它不是附属品,而是核心生产要素。(239字)
932 111
在 vibe coding 里,唯一真正重要的,是管理好文档
|
1月前
|
人工智能 JavaScript 程序员
DeepSeek 官方竟然偷偷做了 Harness 桌面端,我已经用上了。。
DeepSeek 官方竟然下场给 DSH 做桌面端了,期待一波,可能是未来最好的 AI 编程工具么?2 分钟教你怎么提前用上,吃一波螃蟹
1021 0
|
2月前
|
XML 人工智能 前端开发
爆火的《牛来》模型正式发布!DeepSeek 的排名又下降了。。
刚刚智谱全新模型 GLM-5.3-Flash 发布,能力对标 Claude Opus,价格只有 1/40?3 大项目实战测评,对比 DeepSeek V4 和 Kimi K3,看看开眼后的 GLM 模型效果到底如何?
388 0
|
1月前
|
存储 Unix Shell
ASCII码表完整版|ASCII码对照表128个字符(建议收藏)
ASCII是计算机最基础的字符编码标准,定义0-127共128个字符,含33个控制符(如NUL、CR、LF)和95个可打印字符。它用7位二进制表示,是UTF-8、GBK等编码的基石。掌握ASCII对编程(如C语言字符串处理)、串口通信、协议解析至关重要。本文提供完整对照表及速记技巧,助你高效理解与应用。(239字)
|
2月前
|
设计模式 Web App开发 人工智能
【AI】Agent 全栈进阶|系统化学习路线专题
描述 Agent 的概念、核心构成,规划出一套循序渐进的 Agent 开发学习路径,从大模型调用、工具调用、RAG、运行模式、记忆机制再到工程化调试,同时附上多款适合入门钻研的开源参考项目
2108 7
|
2月前
|
人工智能 程序员
AI短剧制作完整指南:零基础也能做出爆款短剧
AI短剧制作全流程教程,教你用千问大模型+万相实现从剧本生成到视频合成的一站式AI短剧创作,零基础也能快速上手,立即开始你的AI短剧创作之旅!
3698 0
|
1月前
|
关系型数据库 MySQL 数据库
MySQL安装教程|MySQL8.0下载到配置一篇搞定(图文版,巨详细)
这是一篇面向新手的MySQL 8.0安装与配置实战教程,涵盖图形化安装(含路径/密码设置)、环境变量配置及命令行验证全流程,图文并茂、步骤清晰,Windows平台实测可用。(239字)
|
1月前
|
Linux Shell 开发工具
【2026最新版】Git官网下载、安装和使用教程(Win/Mac/Linux全涵盖)
Git是全球最流行的开源版本控制工具,可精准记录代码每次改动、支持多人协作不冲突。它免费跨平台(Windows/macOS/Linux),安装简便,GitHub/GitLab等平台均基于Git构建。最新稳定版为2.55.0。(239字)
1830 1
|
2月前
|
API iOS开发 MacOS
【2026最新】Codex++全程实测:Codex桌面版增强管理工具
Codex++(CodexPlusPlus)是开源的Codex桌面端增强工具,无需修改原程序,即装即用。支持DeepSeek等国产大模型接入、中文界面、一键会话删除/导出、多供应商可视化管理,兼容Win/macOS,v1.2.50版已发布。(239字)
【2026最新】Codex++全程实测:Codex桌面版增强管理工具
|
2月前
|
Java Linux 开发工具
IDEA官网下载2026|IDEA社区版安装+使用图文步骤
IntelliJ IDEA(简称IDEA)是JetBrains推出的主流Java集成开发环境,集代码编写、编译、调试、版本控制等功能于一体。提供免费社区版(支持Java/Kotlin/Maven/Gradle等)和付费旗舰版(增强Spring、数据库、前端等支持),开箱即用、智能提示强,适合学习与日常开发。

热门文章

最新文章