【Linux网络】应用层协议HTTP(1)

图片名称
🎉博主首页: 有趣的中国人

🎉专栏首页: Linux网络

🎉其它专栏: C++初阶 | C++进阶 | 初阶数据结构

在这里插入图片描述

小伙伴们大家好,本片文章将会讲解 应用层协议HTTP 的相关内容。


如果看到最后您觉得这篇文章写得不错,有所收获,麻烦点赞👍、收藏🌟、留下评论📝。您的支持是我最大的动力,让我们一起努力,共同成长!

文章目录

  • `1. HTTP协议简介`
  • `2. 认识 URL`
  • `3. HTTP 报文格式`
    • ==<font color = blue><b>🎧3.1 HTTP REQUEST 格式🎧==
    • ==<font color = blue><b>🎧3.2 HTTP RESPONSE格式🎧==
  • `4. 详解 HTTP REQUEST`
    • ==<font color = blue><b>🎧4.1 请求方法🎧==
    • ==<font color = blue><b>🎧4.2 HTTP 版本🎧==
    • ==<font color = blue><b>🎧4.3 HTTP 请求报头🎧==
  • `5. 详解 HTTP RESPONSE`
    • ==<font color = blue><b>🎧5.1 状态码和状态描述🎧==



1. HTTP协议简介


HTTP超文本传输协议)是一种用于在客户端(如浏览器)和服务器之间传输数据的协议。它是互联网通信的基础,用于请求和传输网页及其资源。HTTP是无状态,无连接的,这意味着每个请求都是独立的,不依赖于之前的请求。主要包括以下特性:

  1. 请求和响应:客户端发起请求,服务器响应数据。请求包括方法(如GET、POST)、URL和其他头部信息。响应包括状态码、头部和数据主体;
  2. 无状态:每个请求都是独立的,服务器不保存客户端的状态信息。
    • 每次请求都需要建立新的连接, 且服务器不会保存客户端的状态信息;
  3. 简洁和扩展性:HTTP协议设计简单,易于扩展,支持各种内容类型和请求方法。


2. 认识 URL


平时我们俗称的 “网址” 其实就是说的 URL。

在这里插入图片描述

  • www.example.jp是要访问的服务器的地址,要经过 DNS(域名解析)将域名转换成对应的 IP 地址;
  • 80 代表的是要访问的服务器的端口号,通过IP+端口就可以访问服务器上唯一的进程了。
    • 其中 http 协议默认绑定的就是 80 端口 。
  • /dir/index/html 是你要访问的服务器上的资源的地址。
    • 但是"/" 并不是我们通常认为的根目录,而是 web根目录
  • ?之后的内容是表示要给服务器传送的参数。


3. HTTP 报文格式


🎧3.1 HTTP REQUEST 格式🎧


真实的 http request 格式:


在这里插入图片描述

  • 首行: [方法] + [url] + [版本]
  • Header(报头): 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束;
  • Body(正文): 空行后面的内容都是 Body。Body 允许为空字符串. 如果 Body 存在, 则在Header 中会有一个 Content-Length 属性来标识 Body 的长度;

抽象的 http request 格式:
在这里插入图片描述

🎧3.2 HTTP RESPONSE格式🎧


真实的 http response 格式:


在这里插入图片描述

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束;
  • Body: 空行后面的内容都是 Body。Body 允许为空字符串. 如果 Body 存在, 则在
    Header 中会有一个 Content-Length 属性来标识 Body 的长度; 如果服务器返回了一个 html 页面, 那么 html 页面内容就是在 body 中。

抽象的 http response格式:

在这里插入图片描述



4. 详解 HTTP REQUEST


🎧4.1 请求方法🎧


在这里插入图片描述
其中最常用的就是 GET 方法和 POST 方法。

GET 方法:

  • GET 方法一般是用来请求静态资源,例如图片、音频、视频等;
  • 除此之外,也可以用 GET 方法向服务器传送参数;
    • 例如下面这个网站,? 之后的就是传递的参数,以 & 作为分隔符:
      https://editor.csdn.net/md?not_checkout=1&spm=1000.2115.3001.4503&articleId=141829243
      • n o t not not_ c h e c k o u t = 1 checkout=1 checkout=1
      • s p m = 1000.2115.3001.4503 spm=1000.2115.3001.4503 spm=1000.2115.3001.4503
      • a r t i c l e I d = 141829243 articleId=141829243 articleId=141829243

上面三个就是参数,所以能看出来 GET 方法传递参数是通过 URL 来传递的,所以传递的参数长度等肯定有限制。

POST 方法:

  • 使用 POST 方法是要将数据传送到服务器上进行处理,但是它传递参数的方式和GET 不一样;
  • POST 方法传递参数的方式是将要传递的参数放到 HTTP REQUEST 请求正文中进行传递的。

区别:

  • 既然POST方法使用HTTP REQUEST 请求正文发送参数的,说明请求的参数体量可以很大;
  • GET方法是以来URL传递参数的,因此可以被显示的看到,不安全,但是POST方法是请求正文中传递参数的,相较于URL安全一点,但也不是绝对安全;

🎧4.2 HTTP 版本🎧


为什么要有版本:

  • 例如微信或者各种游戏,经常会进行更新,每次更新之后都会有相应功能的改变,例如游戏中游戏角色的加强或者削弱,又例如微信各种功能的改良;
  • 在客户端发送请求时我们需要让服务器知道我们的版本让服务器提供对应版本的功能;
  • 如果没有进行更新,就不会给你新版本的功能(这里估摸着服务器会有一些条件编译)。

🎧4.3 HTTP 请求报头🎧


我这里挑选几个比较重要的讲一下:

  1. Connection
  • Connection表示连接管理,比如是否保持连接(keep-alive)或在请求后关闭连接(close)
    • keep-alive 表示长服务,比如服务器在打开一个文件描述符的时候并不会立马关闭,而是一直处于运行状态知道服务被运行完毕;
    • close 表示短服务,在服务器打开一个文件描述符执行完一个任务的时候会立马关闭这个文件描述符,并在下次客户端请求服务器的时候服务器再重新打开一个文件描述符。
  1. Content-Length
  • 这个就是表示请求正文的长度,很容易理解。

  1. Content-Type
  • Content-Type 是 HTTP 请求和响应报头中的一个重要字段,用于指定请求或响应体的媒体类型(即内容类型)。它告诉接收方(服务器或者客户端)如何解码和处理消息体

一些文件扩展名和Content-Type的对应关系:
在这里插入图片描述

🎉更详细的对应关系: Http请求中各种Content-Type类型详解大全

  1. HOST
  • 客户端告诉服务器要访问的,所请求的资源在那个主机的哪个端口上。
  1. REFERER
  • 表示当前页面是从哪个页面跳转过来的。
  1. USER-AGENT
  • 表示客户端浏览器的版本信息。


5. 详解 HTTP RESPONSE


🎧5.1 状态码和状态描述🎧


五大类状态码:

在这里插入图片描述

  • 其中 3 开头的状态码表示重定向状态码,什么意思呢?
  • 比如客户端想访问我的一个重定向目录:/redir,我们可以在服务器端处理这个路径,当客户端访问 /redir 的时候将这个路径修改成另一个IP和端口,就形成了重定向。

常见的状态码和状态码描述:

🎉常见的状态码和状态码描述: HTTP状态码对照表

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

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

相关文章

「深入理解」HTML Meta标签:网页元信息的配置

「深入理解」HTML Meta标签&#xff1a;网页元信息的配置 HTML的<meta>元素用于提供关于HTML文档的元数据&#xff08;metadata&#xff09;&#xff0c;这些信息对于浏览器和其他处理HTML文档的应用程序来说是非常有用的&#xff0c;如&#xff1a;<base>、<li…

【网络安全】服务基础第一阶段——第九节:Windows系统管理基础---- Windows_AD域

目录 一、域与活动目录 1.1 工作组 1.2 域 1.2.1 域&#xff08;Domain&#xff09; 1.2.2 域控制器&#xff08;Domain Controller&#xff0c;DC&#xff09; 1.2.3 功能和角色 1.2.4 管理和监控 1.2 5 域结构 1.3 组织单元&#xff08;Organizational Unit&#xff…

集成电路学习:什么是IP知识产权

一、IP&#xff1a;知识产权 IP是Intellectual Property的缩写&#xff0c;即知识产权。知识产权是一种无形的财产权&#xff0c;也称智力成果权&#xff0c;它指的是通过智力创造性劳动所获得的成果&#xff0c;并且是由智力劳动者对成果依法享有的专有权利。这种权利包括人身…

性能优化:自动化处理系统设计

性能优化&#xff1a;自动化处理系统设计 前言需求分析系统设计1. 调度中心2. 任务执行器3. 错误处理机制4. 通知系统5. 报表生成器6. 日志记录器 技术实现结语 前言 在当今这个信息爆炸、技术日新月异的时代&#xff0c;企业面临着前所未有的挑战和机遇。随着业务量的不断增长…

基于Yolov5_6.1、LPRNet、PySide6开发的车牌识别系统

项目概述 项目背景 随着车辆数量的不断增加&#xff0c;车牌识别系统在交通管理、停车场自动化等领域变得越来越重要。本项目利用先进的深度学习技术和现代图形用户界面框架来实现高效的车牌识别功能。 项目特点 高效识别&#xff1a;采用 YOLOv5_6.1 进行车牌定位&#xff…

差分传输与单端传输

差分与单端传输 本页讨论模拟信号传输中的两个概念&#xff1a;“单端”和“差分”。模拟信号用于将模拟仪器的输出传送到数字转换器。虽然数字信号对干扰的容忍度相对较高&#xff0c;但模拟信号却可能受到环境中电磁波的干扰和改变。本文档将解释这一问题&#xff0c;并描述…

OcrLiteNcnn:Windows环境打包及Java调用

目录结构 前言cmake安装源码下载说明Windows源码编译执行“cmake -DCMAKE_BUILD_TYPE=Release ..”执行“cmake --build . --config Release -- -m:6”编译完成识别图片命令行调用Java调用前言 Java实现OCR识别图片中的文字,小编先前整理过一篇在Linux环境中基于“ChineseOcr…

全局安装react

1、首先安装react脚手架 npm install -g create-react-app2、创建react项目 create-react-app my-app3、 PS D:\桌面\papers\subject> create-react-app my-react-appCreating a new React app in D:\桌面\papers\subject\my-react-app.Installing packages. This might …

Docker安装Neo4j图数据库和APOC插件

文章目录 一、前言二、安装Neo4j三、测试Neo4j四、安装APOC插件五、测试APOC插件 一、前言 官方文档&#xff1a;https://neo4j.com/docs/operations-manual/current/docker/introduction/ 二、安装Neo4j 我这里以 5.23.0 版的 Neo4j 为例 拉取镜像 docker pull neo4j:5.23.0…

HarmonyOS NEXT 应用运行异常记录与解决(持续整理版)

问题一 App Launch Failed to get the device apiVersion. 解决方案 进入到设备管理&#xff0c;点击对应开启的模拟器设备&#xff0c;先将模拟器关闭&#xff0c;然后点击查出掉用户数据&#xff0c;再重启。 重启之后&#xff0c;一般能解决。如果遇到还是显示拿不到apiVer…

bash反弹shell分析

目录 介绍步骤 介绍 与目标主机建立连接的原理是利用漏洞执行ShellCode。 GetShell的实质是&#xff1a;执行ShellCode&#xff0c;将目标主机的Shell重定向到攻击机。拿到Shell利于后续的渗透。 所谓的反弹Shell是指GetShell的过程由目标主机主动发起&#xff08;反向连接&a…

Git如何安装和配置

一、Git 的安装 1、Git 的官网 Git (git-scm.com) 2、下载 Git for Windows 在官网下载好 Git 的安装文件后&#xff0c;接下来就可以进行安装了。 3、安装 Git 以管理员身份运行你下载的安装文件&#xff1a; 然后就可以进入安装向导了。 4、验证是否安装成功 当安装向…

【数据结构】--初始集合框架

1. 什么是集合框架 集合框架:Java中已经实现好的集合类&#xff08;一些已经由Java实现好的数据结构&#xff09;。Java的数据结构和C语言的数据结构是没有什么区别的&#xff0c;里面的区别就只是实现的语言不一样。不可能出现Java的单链表和C语言实现的单链表是两个不同的东…

idea配置svn发现安装的svn中的bin目录下没有svn.exe文件

问题描述 使用idea配置svn时&#xff0c;发现安装的svn没有svn.exe文件 解决方法 1、双击svn安装包&#xff0c;找到【modify】 2、默认安装时&#xff0c;没有安装command line client tools&#xff0c;里面是有svn.exe 3、选择will be installed on local hard drive 4、…

idea中使用git提交代码报错husky > pre-commit

1、原因&#xff1a; 本地项目中的.git下的一个文件导致的提交失败&#xff0c;这个文件是pre-commit文件。由于预提交钩子pre-commit导致的提交失败&#xff0c;通过删除.git/hooks/pre-commit文件可以解决 2、解决步骤&#xff1a; 1、找到项目中的.git文件夹&#xff0c;…

公园智能厕所引导大屏,清楚显示厕位有无人状态

在科技飞速发展的今天&#xff0c;公园的设施也在不断与时俱进。其中&#xff0c;公园智能厕所引导大屏的出现&#xff0c;为游客带来了全新的如厕体验。 走进公园的智能厕所区域&#xff0c;首先映入眼帘的便是那醒目的引导大屏。屏幕上清晰地显示着各个厕位的有无人状态&…

4款电脑数据恢复软件分享,告别天价恢复!

大家应该都经历过数据丢失吧&#xff0c;这不&#xff0c;前两天&#xff0c;我那电脑不知怎的&#xff0c;突然就把我辛苦整理的文件夹给“咔嚓”一声删掉了。这下可好&#xff0c;我那里面可是有我好几个月的心血啊&#xff01;好在&#xff0c;我之前也发生过类似的事情&…

【通俗理解】最优控制之旅——强化学习中的策略优化

【通俗理解】最优控制之旅——强化学习中的策略优化 关键词提炼 #最优控制 #强化学习 #状态值函数 #奖励函数 #折扣因子 #贝尔曼方程 #策略迭代 #值迭代 #动态规划 #马尔可夫决策过程 第一节&#xff1a;最优控制的类比与核心概念 1.1 最优控制的类比 最优控制就像是一位精…

视联动力数字科技新成果闪耀2024数博会

在2024年的8月28日至30日&#xff0c;贵阳举办的中国国际大数据产业博览会上&#xff0c;视联动力带来了一系列引人注目的技术和创新应用。 这场为期三天的展览会展示了公司在数字经济发展领域的最新成就&#xff0c;特别是国产通信协议技术方面的进展。 视联动力重点展出了算…

QGraphicsview相关学习

文章学习自&#xff1a; Qt_绘图框架_QGraphicsview实现缩放移动图片_Livy0123的博客-CSDN博客 这里进行一些自己的分析和理解。 (1) 自定义类MyGraphicsView继承自QGraphicsView 核心是重定义的滚轮事件。 [virtual protected] void QGraphicsView::wheelEvent(QWheelEve…