news 2026/4/3 4:47:39

Http到底是怎么一回事?我们来大解剖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Http到底是怎么一回事?我们来大解剖

http大家都很熟悉了,大家的网址都是http/https开头的,那到底这个http是什么呢,我们今天来研究研究

HTTP,全称为HyperText Transfer Protocol,中文是超文本传输协议

我们可以拆解这个名词来理解它:

超文本:字面意思是“超越文本”,它不仅仅指文字,还包括图片、音频、视频、超链接等一切你能在网页上看到的内容

传输:HTTP 的核心作用是在两点之间传递信息。通常是在 Web 浏览器(客户端)和 Web 服务器(服务器端)之间。

  1. 协议:这是一种规则、约定或标准。就像两个人打电话需要约定好都说中文才能沟通一样,HTTP 规定了浏览器和服务器之间通信时所要遵循的格式和规则。它确保了通信双方能互相理解

  2. 简单来说,HTTP 就是一套用于从网络服务器传输超文本(即网页)到本地浏览器(客户端)的通信规则。

当你浏览器地址栏里输入一个网址(如www.zhihu.com)并按下回车时,你的浏览器就会使用 HTTP 协议向知乎的服务器发送一个请求。服务器收到请求后,再使用 HTTP 协议将网页的文本、图片等内容打包成一个响应,发回给你的浏览器。浏览器最后将这些内容渲染成你看到的完整页面

http无状态简化了服务器设计,但现实应用(如登录状态、购物车)需要“状态”。因此,引入了CookieSession等技术来在客户端或服务器端记录状态,弥补 HTTP 无状态的缺陷

一、基础认识

我们先来简单认识一下http,http是网络模型分层中的应用层中的一个协议,它依赖于底层可靠的传输协议。通常HTTP 使用TCP作为其传输层协议。TCP 确保了数据能完整、按顺序地送达,为 HTTP 的可靠传输提供了基础。默认端口是 80(HTTP)和 443(HTTPS),其他协议还有NTF(传输文件)、SMTP/POP3(发送/接收邮件)、DNS(域名转化为ip)

那我们先从http报文讲起

1、请求报文

(1)请求行

包含请求方法、请求目标(URL或URI)和HTTP协议版本。

(2)请求头部

包含关于请求的附加信息,如Host、User-Agent、Content-Type等。

(3)空行(CRLF)

请求头部和请求体之间用空行分隔。

(4)请求体(可选)

包含请求的数据,通常用于POST请求等需要传输数据的情况

HTTP 可以传输任何类型的数据,只需在报文头部用Content-Type字段标明即可

2、响应报文

(1)状态行

包含HTTP协议版本、状态码和状态信息

(2)响应头部

包含关于响应的附加信息,如Content-Type、Content-Length等

(3)空行(CRLF)

响应头部和响应体之间用空行分隔

(4)响应体(部分不需)

包含响应的数据,通常是服务器返回的HTML、JSON等内容

二、请求的类型有哪些?

GET:获取指定资源

POST:提交数据,通常用于提交表单数据或进行资源的创建

PUT:更新指定资源,通常用于更新已存在的资源

DELETE:用于请求服务器删除指定资源

HEAD:类似于GET请求,但只返回资源的头部信息,用于获取资源的元数据而不获取实际内容

这里我们需要仔细讲一下大家常用的GET和POST:

1、GET 从服务器获取指定的资源

GET请求的参数位置一般是写在URL中,URL规定只能支持 ASCII

所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制

2、POST 根据请求负荷(报文body)对指定的资源做出处理

POST 请求携带数据的位置一般是写在报文body中,body 中的数据可以是任意格式的数据

只要客户端与服务端协商好即可,而且浏览器不会对body大小做限制

这里来一个插曲,就是很多公司,比如推特,他们会采用所有请求都用post,猜测一下为什么要这么做?

答案是:首先确实是为了安全,其次是因为统一规范,有一些封装的RPC框架是BSON二级制进行封装的,query太小了塞不下

三、HTTP和HTTPS区别?

区别主要有以下四点:

  1. HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题
  2. HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输
  3. HTTP 连接建立相对简单,TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程,才可进入加密报文传输。两者的默认端口不一样,HTTP 默认端口号是80,HTTPS 默认端口号是 443
  4. HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

四、为什么有HTTP/1.1和HTTP/2.0

HTTP/2 相比 HTTP/1.1 性能上的改进:

1、头部压缩

HPACK 算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

2、二进制格式

HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文,而是全面采用了二进制格式,头信息和数据体都是二进制,并且统称为帧:头信息帧、数据帧

这样虽然对人不友好,但是对计算机非常友好,因为计算机只懂二进制,那么收到报文后,无需再将明文的报文转成二进制,而是直接解析二进制报文,这增加了数据传输的效率

3、并发传输

引出了 Stream 概念,多个 Stream 复用在一条 TCP 连接。解决了HTTP/1.1 队头阻塞的问题。

3、服务器主动推送资源

HTTP/2 还在一定程度上改善了传统的「请求 - 应答」工作模式,服务端不再是被动地响应,可以主动向客户端发送消息

五、HTTP常用状态码

1xx 类状态码

提示信息,协议处理中的一种中间状态,实际用到的比较少。

2xx 类状态码

成功,服务器成功处理了客户端的请求。

3xx 类状态码

重定向,客户端请求的资源发生了变动,需要客户端重新发送请求获取资源

4xx 类状态码

客户端发送的报文有误,服务器无法处理。

5xx 类状态码

表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。

其中常见的具体状态码有:

200:请求成功;

301:永久重定向;

302:临时重定向;

404:无法找到此页面;

405:请求的方法类型不支持;

500:服务器内部出错;

六、HTTP长连接是什么?

HTTP 协议采用的是「请求-应答」的模式,也就是客户端发起了请求,服务端才会返回响应,一来一回这样

由于 HTTP 是基于 TCP 传输协议实现的,客户端与服务端要进行 HTTP 通信前,需要先建立 TCP 连接,然后客户端发送 HTTP 请求,服务端收到后就返回响应,至此「请求-应答」的模式就完成了,随后就会释放 TCP 连接

如果每次请求都要经历这样的过程:建立 TCP -> 请求资源 -> 响应资源 -> 释放连接,那么此方式就是 HTTP 短连接。这样实在太累人了,一次连接只能请求一次资源。

能不能在第一个 HTTP 请求完后,先不断开 TCP 连接,让后续的 HTTP 请求继续使用此连接?

当然可以,HTTP 的Keep-Alive就是实现了这个功能,可以使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,避免了连接建立和释放的开销,这个方法称为 HTTP 长连接。

HTTP 长连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 10:15:58

Redis存储(5)Redis五大数据类型之 List 和 Set。

1. List 列表 列表两端插入和弹出操作: 列表类型是用来存储多个有序的字符串,如上图所示,a、b、c、d、e 五个元素从左到右组成了一个有序的列表,列表中的每个字符串称为元素(element),一个列表…

作者头像 李华
网站建设 2026/3/30 15:42:40

2026年RHCE考试大纲及培训要点

在技术快速迭代的今天,红帽认证工程师(RHCE)的价值与内涵正经历着深刻演变。2026年红帽公司对RHCE认证考试进行一些改变,这直接影响到2026年考试与培训的基调。本文将提供一份基于最新动态考试的分析,帮助你在2026年的…

作者头像 李华
网站建设 2026/3/29 10:03:00

放弃传统积分!绿色积分凭“单边上扬”,让积分越用越有价值

曾几何时,消费送积分、积分兑好物是商家吸引顾客的“标配”手段。别再玩这套老把戏了!消费者不买账,平台白扔成本,纯纯赔本! 咱们都有这体会:积分攒大半年,兑的都是不值钱的小破烂;…

作者头像 李华
网站建设 2026/3/30 19:08:58

具身智能视觉、触觉、力觉、听觉等信息如何实时对齐与融合?

具身智能的核心是让智能体通过与物理世界的持续交互实现目标导向行为,而视觉、触觉、力觉、听觉等多模态信息的实时对齐与融合,是其实现精准感知、高效决策与流畅动作的关键前提——唯有解决不同模态数据的“时空错位”与“语义鸿沟”,才能让…

作者头像 李华
网站建设 2026/3/28 10:01:26

Ubuntu版本nvidia-smi提示版本不匹配问题,解决办法

您遇到的 NVML library version: 580.126 错误提示,结合我们之前的沟通,表明系统中的NVIDIA用户空间库版本与当前加载的内核模块版本不一致。这通常是由于驱动更新后没有完全生效或存在残留组件导致的。下面为您提供一个从诊断到解决的完整方案。 &#…

作者头像 李华
网站建设 2026/3/18 2:39:11

前缀和的前缀和

题目描述对于一个长度为的序列,其前缀和为前个元素的和,即。而前缀和的前缀和就是把前缀和序列作为原序列,再求一次前缀和。记再次求得的前缀和序列的第位为现在给定一个长度为的序列,要执行次操作,有两种操作&#xf…

作者头像 李华