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月前
|
XML 人工智能 前端开发
爆火的《牛来》模型正式发布!DeepSeek 的排名又下降了。。
刚刚智谱全新模型 GLM-5.3-Flash 发布,能力对标 Claude Opus,价格只有 1/40?3 大项目实战测评,对比 DeepSeek V4 和 Kimi K3,看看开眼后的 GLM 模型效果到底如何?
333 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、运行模式、记忆机制再到工程化调试,同时附上多款适合入门钻研的开源参考项目
1895 7
|
2月前
|
人工智能 程序员
AI短剧制作完整指南:零基础也能做出爆款短剧
AI短剧制作全流程教程,教你用千问大模型+万相实现从剧本生成到视频合成的一站式AI短剧创作,零基础也能快速上手,立即开始你的AI短剧创作之旅!
3201 0
|
24天前
|
人工智能 监控 JavaScript
最近火爆出圈的,FDE 到底是个什么岗位?
FDE(前沿部署工程师)是AI时代新型复合岗:驻客户现场,贯通技术与业务,主导大模型在真实场景的端到端落地。需兼具AI应用开发、工程化交付与业务沟通三大能力,非单纯“调API”或售前角色。高薪热门,但重实战、重结果。
1391 2
最近火爆出圈的,FDE 到底是个什么岗位?
|
2月前
|
人工智能 文字识别 自然语言处理
怎样做出一张好图表
图表不是数据堆砌,而是讲清“发现了什么、证据在哪、为何可信”。好图表需三步:明确核心结论、突出关键证据、补全参照口径。Sive作为AI原生可视化平台,助你一键生成可独立传播的“数据单图”。
|
2月前
|
SQL Java 数据库连接
深入解析应用程序分层及 BaseDao 的封装策略
本文详解JDBC应用分层设计:介绍三层架构(表现层、业务层、数据访问层)及其“高内聚、低耦合”优势;演示包结构划分与查询业务实现;并封装通用BaseDao,统一DML与泛型查询操作,提升代码复用性与可维护性。
86 0
深入解析应用程序分层及 BaseDao 的封装策略
|
2月前
|
存储 人工智能 安全
本地 AI Agent 怎么操作已有业务后台?为什么不能只做一个“聊天转发器”
本文探讨企业级本地AI Agent如何安全接入CRM/ERP等业务系统,提出“本地编排、集中治理、业务终审”三层架构:本地Agent专注理解与多步规划,中枢(如BailingHub)统一管理身份、权限与审计,业务系统保留最终授权。强调PKCE授权、凭证分离、能力按需裁剪及可审计执行轨迹,避免权限失控与安全风险。
|
2月前
|
缓存 NoSQL Java
[065][缓存模块]Hibernate二级缓存自定义实现:基于Spring Cache的多级缓存适配器
本文介绍了一种基于Spring Cache的Hibernate二级缓存自定义实现,通过适配`DomainDataStorageAccess`与`RegionFactoryTemplate`,统一ORM与应用层缓存。支持本地(Caffeine)、远程(Redis)、多级及租户隔离等灵活策略,配置即生效,无缝集成Spring Boot生态。(239字)
75 2
|
2月前
|
Web App开发 编解码 网络协议
实时云渲染Web端协议选型:WebRTC核心优势与场景化增强方案分析
从低延迟、硬解低占用、双向交互等维度论证WebRTC为实时云渲染Web端最优解。结合国产厂商(如点量云流)在拥塞控制、编解码及多终端适配上的深度优化,显著提升弱网性能。未来WebTransport等或成补充,但WebRTC仍是当前商用主流。

热门文章

最新文章