【Linux】应用层之HTTP协议

news2024/11/23 20:10:12

HTTP协议

  • 应用层协议
  • 应用层的作用:为应用程序提供网络服务
  • 序列化的意义、为什么要将数据序列化?
  • HTTP协议概述
  • HTTP的协议格式
    • 请求
    • 响应
    • GET方法和POST方法的出现的场景和区别?

应用层协议

在应用层,需要我们传递应用层所需特殊的数据格式,这种数据可能是连续数据,例如int类型的整形变量,也可能是string类型的字符串,也可能是多个变量构成的结构体,那么就意味着我们发送的数据可能是连续的,也可能是不连续的,这时为了统一数据的解析方法,我们对数据在发送前进行序列化,在接收后进行反序列化。那么无论使用序列化还是反序列化,都需要对数据格式进行约定,以便于一端能够正常进行解析。
而对数据进行约定,使之能够正常的进行构造和解析,这种约定就是应用层协议

应用层的作用:为应用程序提供网络服务

序列化的意义、为什么要将数据序列化?

序列化本质是将离散存储的数据转换为连续的数据,由于大量的数据存储并非连续的,例如一个结构体中嵌套一个指针,而这个指针所指向的是一另一个结构体对象,那么此时当前结构体在存储角度来看就是一个不连续的数据,如果我们贸然当当前的数据进行发送,对方接收到之后,其内部的指针指向的地址就无效了,因此我们需要将数据进行序列化,之后才可以进行存储或者通过网络发送出去。

HTTP协议概述

虽然应用层协议是程序员定的,但是为了方便大量的程序员使用,大佬们已经定义了现成的应用层协议可以直接使用,就比如HTTP协议

HTTP协议是无连接,无状态,工作在应用层的协议。
其中无连接表示HTTP协议本身不维护连接信息,但是HTTP的数据会交给传输层的TCP协议,而TCP是面向连接的。
无状态是指:HTTP本身不会对数据的请求和响应状态进行保存。

HTTP的协议格式

协议格式分为:请求和响应

请求中包含:请求首行,请求头部,空行,请求体
响应中包含:响应首行,响应头部,空行,响应体

在这里插入图片描述

请求

在这里插入图片描述
在这里插入图片描述
注意:GET类型的请求没有请求体

请求首行:[方法] + [url] + [版本]

请求方法主要有:GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,但常用的只有前两个。

请求头部:为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔

常见请求头部如下:

请求头说明
Host接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent发送请求的应用程序名称
Connection指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset通知服务端可以发送的编码格式
Accept-Encoding通知服务端可以发送的数据压缩格式
Accept-Language通知服务端可以发送的语言

请求体:GET没有请求体
在这里插入图片描述
请求体:POST请求体
在这里插入图片描述

响应

在这里插入图片描述

响应首行: [版本号] + [状态码] + [状态码解释]

常见的状态码及其含义

状态码含义
200响应成功
301永久重定向,删除源地址,保留重定向地址
302临时重定向
400客户端请求有语法错误,无法被服务器识别
403服务器收到请求,但是拒绝提供服务
404请求资源不存在
500服务器内部错误

响应头部:与请求头部类似,为响应报文提供一些附加信息
常见的响应头部如下:

响应头部说明
Server服务器应用程序软件的名称和版本
Content-Type响应正文的类型(是图片还是二进制字符串)
Content-Length响应正文长度
Content-Charset响应正文使用的编码
Content-Encoding响应正文使用的数据压缩格式
Content-Language响应正文使用的语言

GET方法和POST方法的出现的场景和区别?

GET方法是最常见的请求方法,一般出现于以下几种场景:
1.在浏览器输入URL后点击回车,实际上只要是网址,点击之后都会触发GET请求
2.一些图片的src属性,也会被构造出一个URL

POST方法也比较常见,一般出现于输入用户名和密码之后,点击登录会触发POST请求

GET方法和POST方法的区别?
1.没有本质的区别,可以互相替换
2.语义不同,GET习惯于从服务器获取数据,POST是向服务器提交数据
2.格式不同,GET方法一般没有请求体,而POST方法有,所以GET习惯用URL传递数据,POST习惯用请求体传递数据
3.长度不同:GET方法一般有长度限制,POST请求没有长度限制
4.后续维护不同:GET请求方法返回的内容可以被浏览器缓存起来,而POST方法不会缓存返回的内容
5.读写不同:GET主要是对数据查询,而POST主要对数据进行修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android中如何不编译源生模块

如果想让自己的app 替换系统的app 比如使用闪电浏览器替换系统的Browser 首先把闪电浏览器放到 vendor/rockchip/common/apps Android.mk LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE : Lightning LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_MODULE_C…

LeetCode 0833. 字符串中的查找与替换

【LetMeFly】833.字符串中的查找与替换 力扣题目链接:https://leetcode.cn/problems/find-and-replace-in-string/ 你会得到一个字符串 s (索引从 0 开始),你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出:indices,…

微信小程序云开发快速入门(3/4)

前言 在《微信小程序云开发快速入门(2/4)》分享中,我们已经将列表的查询和分页全部搞定了,可以说对于备忘录来说已经非常好用了,此时此刻码仔在脑海中已经开始幻想自己走上了人生的巅峰场景了。 接下来那来分析下需求…

django中使用ajax发送请求

1、ajax简单介绍 浏览器向网站发送请求时 是以URL和表单的形式提交的post 或get 请求,特点是:页面刷新 除此之外,也可以基于ajax向后台发送请求(异步) 依赖jQuery 编写ajax代码 $.ajax({url: "发送的地址"…

NLPR、SenseTime 和 NTU 加速自动视频纵向编辑

视频人像编辑技术已经在电视、视频和电影制作中得到了应用,并有望在不断发展的网真场景中发挥关键作用。最先进的方法已经可以逼真地将同源音频合成为视频。现在,来自北京模式识别国家实验室(NLPR)、商汤科技研究和南洋理工大学的…

极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)

目录 template 引用,减少代码冗余,增强 CI/CD 构建扩展性 问题 1:代码冗余,低效实践 问题 2:维护性难,工作量大 ➤ local ➤ file ➤ remote ➤ template 收益 1:一处修改,多…

IEEE权威杂志特别报道一款国内大语言模型,不是百度、不是阿里、不是华为……

现如今,大模型早已成为街谈巷议的 AI 话题,ChatGPT 更火出了圈。NLP、CV 和多模态领域的大模型层出不穷,并朝着通用方向不断演进,让人们看到了 AGI 的希望。 在大模型时代,除了继续升级预训练、微调等技术和算法之外&a…

Python 基础教程,Python 是什么?

Python 的诞生是极具戏曲性的,据 Guido 自述记载,Python 语言是在圣诞节期间为了打发无聊的时间而开发的,之所以会选择 Python 作为该编程语言的名字,是因为 Guido 是 Monty Python 戏剧团的忠实粉丝。 Python 语言是在 ABC 语言的…

uniapp封装组件,选中后右上角显示对号√样式(通过css实现)

效果&#xff1a; 一、组件封装 1、在项目根目录下创建components文件夹&#xff0c;自定义组件名称&#xff0c;我定义的是xc-button 2、封装组件代码 <template><view class"handle-btn"><view :class"handleIdCode 1 ? select : unSelec…

RL 实践(7)—— CartPole【TPRO PPO】

本文介绍 PPO 这个 online RL 的经典算法&#xff0c;并在 CartPole-V0 上进行测试。由于 PPO 是源自 TPRO 的&#xff0c;因此也会在原理部分介绍 TPRO参考&#xff1a;张伟楠《动手学强化学习》、王树森《深度强化学习》完整代码下载&#xff1a;8_[Gym] CartPole-V0 (PPO) 文…

超过2个G的视频怎么发给朋友?快来学视频压缩

影响视频体积大小的主要因素无非就是比特率、码率、格式以及视频时长等&#xff0c;当我们的视频文件过大无法通过平台或者软件发送给朋友的时候&#xff0c;就可以借助压缩的方法解决问题&#xff0c;下面就给大家分享几个压缩技巧&#xff0c;一起来看看吧。 方法一&#xff…

LeetCode 热题 100(四):48. 旋转图像、240. 搜索二维矩阵 II、234. 回文链表

一.48. 旋转图像 题目要求&#xff1a;就是一个顺时针的旋转过程。 思路&#xff1a;观察矩阵&#xff0c;得出翻转前第i行的第J个元素 等于 翻转后倒数第i列的第J个元素&#xff0c;举例说明&#xff0c;第1行第2个元素为“2”&#xff0c;翻转后到了 倒数第1列的第2个元素…

AIGC|AGI究竟是什么?为什么大家都在争先入场?

一、AI大语言模型进入爆发阶段 2022年12月ChatGPT突然爆火&#xff0c;原因是其表现出来的智能化已经远远突破了我们的常规认知。虽然其呈现在使用者面前仅仅只是一个简单的对话问答形式&#xff0c;但是它的内容化水平非常强大&#xff0c;甚至在某些方面已经超过人类了&#…

多主题自适应知识变现博客论坛,支持docker一键部署

iblog 给大家推荐一个多主题自适应&#xff0c;支持付费收款的博客论坛系统&#xff0c;支持docker一键部署&#xff0c;支持企业微信通知。 前端 多主题 自适应 个人页 后端 H2 console 运行命令 docker run -d --name iblog --restartalways -p 8080:8080 -e consoletrue …

易服客工作室:Pixwell主题 – 现代杂志/WordPress新闻主题

PixWell主题概述 Pixwell主题是一个强大、多用途和现代的WordPress杂志主题&#xff0c;具有像素完美的设计、出色的功能、完全响应和移动友好。它非常灵活&#xff0c;非常适合食谱、时尚、旅行、技术、个人或任何其他很棒的杂志和博客网站。 该主题与 Elementor、Cooked&am…

SAP MM学习笔记22- 购买发注的项目种类(明细Category)

SAP中控制购买流程的是购买发注页面中购买发注明细行的项目种类&#xff08;明细Category&#xff09;栏目。 ・项目种类&#xff08;明细Category&#xff09;有&#xff1a; 1&#xff0c; 标准 2&#xff0c;K 受托品 3&#xff0c;L 外注 4&#xff0c;S 仕入先直送…

Linux系统中基于NGINX的代理缓存配置指南

作为一名专业的爬虫程序员&#xff0c;你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器&#xff0c;能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南&#xff0c;提供实用的解决方案&#xff0c;助你解决在…

Blender增强现实3D模型制作指南【AR】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 将静态和动画 3D 内容集成到移动增强现实 (AR) 体验中是增强用户沉浸感和参与度的高效方法。 然而&#xff0c;为 AR 创建 3D 对象可能相当艰巨&#xff0c;尤其是对于那些缺乏 3D 建模经验的人来说。 与添加视频或照片 AR…

智慧工地源码,PC+APP源码,项目管理端+企业监管端+数据大屏端

智慧工地概念 智慧工地是一种崭新的工程全生命周期管理理念&#xff0c;是指运用信息化手段&#xff0c;通过对工程项目进行精确设计和施工模拟&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟…

python3 0基础学习笔记

0基础学习笔记&#xff0c;临时有事暂停后边会继续学习 基础内容1. 条件语句 if - elif - else2. 错误铺捉try - except(一种保险策略&#xff09;3. 四种开发模式4. 函数&#xff1a;def用来定义函数的5. 最大值最小值函数&#xff0c;max &#xff0c;min6. is 严格的相等&am…