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

应用层协议HTTP

应用层协议HTTP

引言

应用层协议是程序员自己制定的,但是良好的协议是保证网络通信的基础,前代的计算工程师已经帮助我们制定了一些很好用的应用层协议,http(hybertext transfer protocol)(超文本传输协议)就是其中之一。
http协议是客户端和服务器之间通信的基础,客户端通过HTTP协议像服务器发送请求,服务器收到请求之后处理并返回响应。HTTP协议是一个无连接,无状态的协议,每次请求都需要建立新的连接,服务器不会保存客户端的状态的信息。

URL

俗称网址

URL(Uniform Resource Locator,统一资源定位符)是用于在互联网上定位资源的字符串。它是我们访问网页、下载文件、调用 API 等操作时使用的地址。URL 是 URI(统一资源标识符)的一种具体形式。

一个完整的url一般如下

协议://用户名:密码@子域名.域名.顶级域名:端口号/路径/文件名?查询参数#片段
https://john:password@www.example.com:8080/path/to/page.html?search=query#section1
协议:https

域名:www.example.com

端口:8080

路径:/path/to/page.html

查询参数:search=query

片段:section1

URL编码

  • URL 中只能包含特定字符(字母、数字和少数符号)。
  • 其他字符(如空格、中文等)需要通过 URL 编码 转换为 % 开头的十六进制值。

示例:

空格编码为 %20

中文“你好”编码为 %E4%BD%A0%E5%A5%BD

HTTP请求的格式

HTTP请求格式

  • 首行 : 方法 + URL + 版本
  • Header: 请求的属性,冒号分割键值对,\r\n最为分隔符,遇到空行表示结束
  • Body允许为空,如果Body不为空,Header中会有Content-lenth字段标记Body的长度
    在这里插入图片描述

HTTP相应的格式

在这里插入图片描述

  • 首行是HTTP版本 + 状态码 + 状态码描述
  • 后面就是参数报头
  • 换行符分隔内容和正文
  • 正文

HTTP请求的方法

就是HTTP请求中的第一个字段
在这里插入图片描述
在日常中最常见的就是GET和POST两种方法

GET方法

用途: 用于请求 URL 指定的资源。
示例: GET /index.html HTTP/1.1
特性: 指定资源经服务器端解析后返回响应内容。
在后端中我们前端的文件,一般存储在wwwRoot为根的目录下,比如/index.html就是请求wwwRoot/index.html这个文件,我们将index.html中的字符填充进入Response中的body中
浏览器就能正确的识别我们的前端文件,然后就是以图形化界面展示给用户。

POST方法

用途: 用于传输实体的主体, 通常用于提交表单数据。
示例: POST /submit.cgi HTTP/1.1
特性: 可以发送大量的数据给服务器, 并且数据包含在请求体中。
form 表单: https://www.runoob.com/html/html-forms.html

状态码 + 状态描述

在这里插入图片描述
状态码是是一个比较大的话题,想要比较深入了解所有的状态码的相关的情况,可以自己去搜索

HTTP中常见的header

请求头(Request Headers)

  • Host: 指定服务器域名和端口号。

  • User-Agent: 客户端信息,如浏览器类型和操作系统。

  • Accept: 客户端可接受的 MIME 类型。

  • Accept-Language: 客户端可接受的语言。

  • Accept-Encoding: 客户端可接受的内容编码,如 gzip。

  • Authorization: 包含认证信息,如 Bearer Token。

  • Content-Type: 请求体的 MIME 类型,如 application/json。

  • Content-Length: 请求体的大小(字节)。

  • Cookie: 包含客户端发送的 cookie。

  • Referer: 请求来源的 URL。

  • Cache-Control: 缓存指令,如 no-cache。

  • Connection: 控制连接状态,如 keep-alive。

响应头(Response Headers)

  • Content-Type: 响应体的 MIME 类型,如 text/html。

  • Content-Length: 响应体的大小(字节)。

  • Content-Encoding: 响应体的编码方式,如 gzip。

  • Set-Cookie: 服务器设置的 cookie。

  • Cache-Control: 缓存指令,如 max-age=3600。

  • Expires: 响应过期时间。

  • Last-Modified: 资源最后修改时间。

  • ETag: 资源唯一标识符,用于缓存验证。

  • Location: 重定向目标 URL。

  • Server: 服务器软件信息。

  • Access-Control-Allow-Origin: 允许跨域请求的源。

  • WWW-Authenticate: 要求客户端进行认证。

通用头(General Headers)

  • Date: 消息生成的日期和时间。

  • Connection: 控制连接状态,如 keep-alive。

  • Transfer-Encoding: 传输编码方式,如 chunked。

总结

应用层协议本来需要程序员自己去指定,但是HTTP等良好的协议值得我们程序员进行学习其中的思想或者直接作为项目协议进行利用。

相关文章:

  • 理解 预训练、微调、分布式训练
  • EWM 自动补充库存
  • 《操作系统 - 清华大学》8 -4:进程管理:进程控制结构
  • 为什么要学排序?
  • rust学习笔记5-所有权机制
  • C/C++数组的字符串与字符数组习题
  • 【蓝桥杯】第十五届省赛大学真题组真题解析
  • QT闲记-状态栏,模态对话框,非模态对话框
  • DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)
  • VulnOSv2 靶机渗透测试
  • 基于 Python Django 的校园互助平台(附源码,文档)
  • python使用httpx_sse调用sse流式接口对响应格式为application/json的错误信息的处理
  • 内网网络安全的解决之道
  • Linux MySQL 8.0.29 忽略表名大小写配置
  • 深入理解 DOM 和 CSSOM:网页渲染的核心
  • PAT甲级 1017 Queueing at Bank
  • easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式
  • ZJYYC2510. 蓝红球
  • 财务运营域——营收稽核系统设计
  • 内存对齐的原因和规则
  • 中央纪委办公厅公开通报3起整治形式主义为基层减负典型问题
  • 仲裁法修订草案二审稿拟增加规定规制虚假仲裁
  • 兵韬志略|美菲“肩并肩”军演超越传统范畴,凸显防务合作重大转型
  • 在县中,我看到“走出去”的渴望与“留下来”的惯性
  • 明查|把太平洋垃圾污染问题甩锅中国,特朗普用的是P过的图
  • 贵州通报9起群众身边不正之风和腐败问题典型案例