当前位置: 首页 > news >正文

【Linux 网络】理解并应用应用层协议

HTTP的请求与响应格式

请求格式

请求行:请求方法(GET) 空格 URI(资源地址) 空格 HTTP版本(HTTP/1.1) 换行符(\r\n)

请求报头:表示请求的属性。冒号分割的键值对;每组属性之间使用 \r\n 分隔,遇到空行表示Header部分结束。

请求正文:空行后面就是请求正文,请求正文允许为空!但如果有内容,在请求报头中就必须有 Content-Length属性的报头来标记正文长度。

响应格式

状态行:HTTP版本(HTTP/1.1) 空格 状态码 空格 状态码描述符 换行符(\r\n)

响应报头:表示响应的属性。冒号分割的键值对;每组属性之间使用 \r\n 分隔,遇到空行表示结束。

响应正文:空行后面就是响应正文,可以为空!但如果有内容,在响应报头中就必须有 Content-Length属性的报头来标记正文长度。


HTTP请求方法

简单介绍两个常用方法

GET方法

用途:用于URL指定的资源例如:GET /index.html HTTP/1.1特点:将指定资源解析后,由服务器返回响应内容给客户端

POST方法

用途:传输数据,其数据存放在请求正文中。常用于传输表单数据。例如:POST /submit.cgi HTTP/1.1特点:可以发送大量数据给服务器,并且数据都在请求体中。


状态码

响应格式状态行中表示当前状态的数字。

最常用:200 表示成功;404 表示资源不存在;302 表示重定向;

常用具体状态码速查表

状态码

英文名称

含义(通俗版)

常见场景

200

OK

成功

最常见的,表示你的请求服务器收到了,也没出问题,东西给你拿回来了。

301

Moved Permanently

永久重定向

比如网站换网址了,收藏夹里的旧链接会自动跳到新链接。

302

Found

临时重定向

比如你点“我的订单”,因为没登录,系统把你暂时跳到“登录页”。

304

Not Modified

资源未修改

这是一个缓存机制。服务器告诉你:“你本地存的那张图片没变,不用重新下载了,直接用吧”。

400

Bad Request

请求错误

通常是参数写错了。比如服务器要数字,你传了个字符串。

401

Unauthorized

未授权

“你是谁?” 表示你没登录,或者 Token 过期了。

403

Forbidden

禁止访问

“我知道你是谁,但我不让你进”。比如普通用户想进管理员后台。

404

Not Found

未找到

这个最出名。要么是你网址输错了,要么是那个页面被删了。

500

Internal Server Error

服务器内部错误

后端代码抛异常了(Bug),比如空指针、数据库连不上。完全是服务器的锅。

502

Bad Gateway

网关错误

通常是中间件(如 Nginx)虽然是好的,但后端的服务(如 Tomcat/Python)挂了或没响应。

理解重定向

重定向分为:302临时重定向 301永久重定向

重定向

首先,我们先理解一下什么叫做重定向。

重定向:简单来说,就是让客户端访问指定的地址时,转头访问另一个地址!

重定向主要用于:当一个资源更换位置的时候,为了保证之前的旧地址依然可以有效。对旧地址进行重定向到新地址。

临时重定向(302)

资源的临时转移,使用临时重定向!

举个例子:一个店面由于装修等缘故临时搬到另一个地方,在店门口贴上公告“由于装修,本店暂时搬到xxxx”。

对于临时重定向,客户端都是默认先访问旧地址,再根据新地址去访问对于资源。

永久重定向(301)

资源的永久转移,使用永久重定向!

再举个例子:一个店面由于要扩大直接搬到了一个更大的店面!在店门口贴上公告“本店从今日起,永久搬到xxxx”。

对于永久重定向来说,客户端会直接访问最新的地址!


HTTP报头

常用的报头如下

  1. Content-Type:数据的格式(JSON 还是表单?)
  2. Content-Length:数据的大小
  3. Host:你要访问的域名(区分虚拟主机)
  4. Cookie/Set-Cookie:登录状态和身份识别
  5. User-Agent:你是手机还是电脑,是谷歌浏览器还是 IE
关于Connection报头

HTTP中的 Connection 字段是HTTP报头的⼀部分,它主要用于控制和管理客户端与服务器之间的连接状态。

核心作用:

管理持久连接:connect字段用于管理持久连接(长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭TCP连接,以便于在同一连接上发送发送多个请求和接收多个响应。

持久链接:

在HTTP/1.1中,默认使用持久连接。当客户端和服务器都不明确关闭连接的时候,连接将保持打开状态。以便于后续请求和响应可以复用同一个连接。

在HTTP1.0中,默认使用的是非持久连接。如果想要实现持久连接,这想要在报头中显式的设置Connect: keep-alive

Connect: keep-alive:表示希望进行持久连接。

Connect: close:表示请求or响应完成后,应该关闭TCP连接。


代码实现

首先,我们要知道HTTP协议的实现是基于TCP协议的。所以我们想要接收客户端的信息,就必要要通过TCP协议来接收信息。

http://www.jsqmd.com/news/730726/

相关文章:

  • 3分钟学会使用Display Driver Uninstaller:彻底解决显卡驱动问题的终极方案
  • 基于多尺度深度残差收缩网络的石化机组轴承故障诊断【附代码】
  • PlantUML在线编辑器:从代码到图形的可视化创作平台
  • 基于IPQ5018平台的高性能无缝漫游(Roaming)解决方案
  • Qwen3-4B-Thinking在IT运维中的应用:日志分析+故障排查建议生成
  • 【PHP 9.0异步编程实战指南】:零基础构建高并发AI聊天机器人,3天掌握协程+EventLoop+LLM集成
  • 032、Agent的决策优化:集成强化学习基础
  • 猫抓插件:三步学会网页视频音频下载,成为资源管理高手
  • 蚊子界的性别战争:母蚊子为何非要吸血?公蚊子竟是素食主义者?
  • ParsecVDisplay:终极Windows虚拟显示器解决方案,打造你的多屏办公环境
  • 如何在3分钟内掌握Iwara视频批量下载的完整教程
  • 2026年选购工业余热回收厂商,特瑞普有优势 - mypinpai
  • Sunshine游戏串流服务器:重新定义跨设备游戏体验的技术架构
  • 微信小程序的购物商城商品订货订单系统
  • Sunshine终极指南:打造你的私人游戏云服务器,告别硬件束缚!
  • 让QQ音乐加密格式在Mac上重获自由:QMCDecode解密工具全攻略
  • MediaPipe TouchDesigner:零代码AI视觉创作的数字画笔
  • M24C64芯片资料与程序代码(2)
  • 手把手教你学 Simulink——基于 Simulink 的 微电网孤岛运行与无缝切换控制
  • 终极解决方案:3秒将网页LaTeX公式完美粘贴到Word文档
  • MobaXterm连CentOS7踩坑记:‘Server refused to start a shell/command‘ 报错排查与预防全攻略
  • 2026年外墙GRC线条定制厂家选择指南 - mypinpai
  • 如何用ComfyUI-Manager简化AI绘画插件管理:面向新手的完整指南
  • 大疆无人机误删照片视频?DiskGenius与R-Studio恢复实战及避坑总结(64G卡亲测)
  • Java MCP 实战:一文跑通 Server、Client 与第三方 MCP 接入
  • 2026年企业认证服务性价比排名,中安质环认证江苏中心如何 - 工业品牌热点
  • 显卡驱动彻底清理的终极指南:DDU工具深度解析与实战应用
  • AI人工智能——解读智能算力服务质量模型
  • mysql基础增删改查语句汇总
  • Equalizer APO终极指南:免费解锁Windows音频调校的完整教程