【网络】HTTP协议——应用层协议、URL、HTTP协议格式、HTTP的方法、HTTP的状态码、HTTP常见Header

news2024/12/25 12:39:27

文章目录

  • Linux网络
    • 1. 应用层
    • 2. HTTP协议
      • 2.1 URL
      • 2.2 urlencode和urdecode
      • 2.3 HTTP协议格式
      • 2.4 HTTP的方法
      • 2.5 HTTP的状态码
      • 2.6 HTTP常见Header

Linux网络

1. 应用层

  应用层是 OSI 七层模型或 TCP/IP 四层模型中的最高层,它直接为用户的应用程序提供服务。

  应用层的主要作用是实现不同应用进程之间的通信和交互,使得用户能够通过网络获取所需的信息或完成各种任务。

  

  协议是一种 “约定”。socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的,如果我们要传输一些"结构化的数据" ,此时就要使用我们的应用层协议。

  

  应用层协议:

  应用层协议则是定义了应用程序之间通信的规则和数据格式。

  常见的应用层协议有 HTTP(用于网页浏览)、FTP(文件传输)、SMTP(电子邮件发送)、POP3(电子邮件接收)等。

  例如,当您在浏览器中输入网址访问网页时,浏览器就会使用 HTTP 协议与服务器进行通信,按照 HTTP 协议规定的格式和规则来请求和接收网页数据。

  

  我们只要保证,由一端发送构造的数据,在另一端能够正确的进行解析,就是ok的,这种约定,就是应用层协议。

  

在这里插入图片描述

  

2. HTTP协议

  HTTP 协议(超文本传输协议)

  HTTP 协议是用于在万维网(World Wide Web)上进行通信的核心协议。

  它是一种基于请求 - 响应模式的应用层协议,客户端(通常是浏览器)向服务器发送 HTTP 请求,服务器则返回相应的 HTTP 响应。

  HTTP 请求:

  请求包含三部分:请求行、请求头和请求体。请求行指明了请求方法(如 GET、POST、PUT、DELETE 等)、请求的资源 URL 和使用的 HTTP 版本。请求头包含了关于客户端和请求的各种信息,例如客户端支持的语言、编码方式等。请求体通常在 POST 等方法中用于传输数据。

  

2.1 URL

  URL(统一资源定位符)是用于标识互联网上资源位置的字符串。

  它就像是一个地址,告诉浏览器或其他网络应用程序如何找到特定的资源,如网页、图片、文件等。

  互联网上的所有资源都具有一个唯一的名称标识,这个标识叫URL。

  

  URL 通常由以下几个部分组成:

  协议:如 http(超文本传输协议)、https(安全的超文本传输协议)、ftp(文件传输协议)等,指明了访问资源所使用的规则和方法。

  域名或 IP 地址:表示资源所在的服务器地址。例如,www.baidu.com 或 192.168.0.1 。

  端口号(可选):如果使用的不是默认端口(如 http 的 80 端口,https 的 443 端口),则需要指定端口号。

  路径:服务器上资源的具体位置。

  查询字符串(可选):用于向服务器传递参数,以获取特定的资源或执行特定的操作。

  片段标识符(可选):用于指定文档内的特定部分。

  

  例如,https://www.example.com/page?param1=value1&param2=value2#section 这个 URL 中:

  https 是协议。

  www.example.com 是域名。

  /page 是路径。

  ?param1=value1&param2=value2 是查询字符串。

  #section 是片段标识符。

  

2.2 urlencode和urdecode

  像 / ? : 等这样的字符,已经被url当做特殊意义理解了,因此这些字符不能随意出现。

  比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义。

  

  转义的规则如下:

  将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。

  如 “+” 被转义成了 “%2B”

  

  urlencode(URL 编码)

  urlencode 是一种将字符串转换为符合 URL 格式的编码方式。 它的主要目的是将可能在 URL 中引起歧义或不被支持的字符进行编码,以确保 URL 的正确传输和解析。
例如,空格会被编码为 %20 ,特殊字符如 & 会被编码为 %26 等。这样可以避免这些字符在 URL 中被误解为分隔符或具有其他特殊含义。

  

  urldecode(URL 解码)

  urldecode 则是 urlencode 的逆过程,它将经过编码的 URL 字符串还原为原始的字符串。
  比如,接收到一个编码后的 URL

  https%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3Dhello%2Bworld ,通过 urldecode 可以将其解码为 https://www.example.com/search?q=hello world 。

  

2.3 HTTP协议格式

在这里插入图片描述
  

请求报文格式:

  请求行:包含请求方法(如 GET、POST、PUT、DELETE 等)、请求的 URL 以及使用的 HTTP 版本,例如:GET /index.html HTTP/1.1 。

  请求头:由一系列键值对组成,每行一个,例如:Host: www.example.com 、User-Agent: Mozilla/5.0 等,用于提供关于请求的附加信息,如客户端的类型、支持的语言等。

  空行:用于分隔请求头和请求体。

  请求体:在 POST 等请求方法中用于传输数据,其内容的格式由 Content-Type 请求头指定。

在这里插入图片描述

  

响应报文格式:

  状态行:包含 HTTP 版本状态码(如 200 OK、404 Not Found 等)和状态描述,例如:HTTP/1.1 200 OK 。

  响应头:与请求头类似,也是一系列的键值对,如 Content-Type: text/html 、Content-Length: 1234 等,用于提供关于响应的信息。

  空行:分隔响应头和响应体。

  响应体:包含服务器返回给客户端的实际数据,如网页的 HTML 代码、图片的二进制数据等。

在这里插入图片描述

  

2.4 HTTP的方法

  HTTP 定义了多种方法,用于指定对资源的操作类型。

在这里插入图片描述

  
在这里插入图片描述

  

2.5 HTTP的状态码

  1xx 信息性状态码

  这类状态码表示服务器正在处理请求。

  100 Continue:表示客户端应当继续发送请求。通常在发送大文件或分块请求时使用。

  

  2xx 成功状态码:

  表示请求已成功被服务器接收、理解、并接受。

  200 OK:最常见的成功状态码,表示请求成功,响应包含请求的资源。

  201 Created:表示请求成功并且服务器创建了新的资源。

  204 No Content:表示服务器成功处理了请求,但没有返回任何内容。

  

  3xx 重定向状态码:

  表示需要客户端采取进一步的操作以完成请求。

  301 Moved Permanently:表示请求的资源已被永久移动到新的 URL,客户端应使用新的 URL 访问。

  302 Found:表示请求的资源临时被移动到了其他位置。

  304 Not Modified:表示客户端的缓存版本仍然有效,服务器未返回新内容。

  

  4xx 客户端错误状态码:

  表示客户端的请求包含错误语法或无法完成请求。

  400 Bad Request:表示服务器无法理解客户端的请求。

  401 Unauthorized:表示请求需要用户认证。

  403 Forbidden:表示服务器拒绝访问,尽管客户端已通过认证。

  404 Not Found:表示服务器未找到请求的资源。

  

  5xx 服务器错误状态码:

  表示服务器在处理请求时发生内部错误。

  500 Internal Server Error:表示服务器内部错误,无法完成请求。

  502 Bad Gateway:表示作为网关或代理的服务器从上游服务器收到无效的响
应。

  503 Service Unavailable:表示服务器暂时无法处理请求,通常是由于过载或维护。

  
在这里插入图片描述

  

2.6 HTTP常见Header

HTTP 请求头:

  User-Agent提供有关发起请求的客户端的信息,包括浏览器类型、版本、操作系统等。

  例如:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0

  

  Accept告知服务器客户端能够接受的内容类型。

  例如:Accept:   text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8

  

  Accept-Language指定客户端偏好的语言。

  例如:Accept-Language: en-US,en;q=0.5

  

  Accept-Encoding表明客户端支持的内容编码方式。

  例如:Accept-Encoding: gzip, deflate, br

  

  Referer提供当前请求页面的来源页面的 URL。

  例如:Referer: https://www.example.com/page1.html

  

  Cookie包含客户端发送给服务器的 Cookie 信息。

  例如:Cookie: session_id=12345; user_id=6789

  

HTTP 响应头:

  Content-Type指明响应体的内容类型。

  例如:Content-Type: text/html; charset=UTF-8

  

  Content-Length表示响应体的长度(以字节为单位)。

  例如:Content-Length: 1234

  

  Server标识处理请求的服务器软件。

  例如:Server: Apache/2.4.41 (Ubuntu)

  

  Location用于重定向,提供重定向的目标 URL。

  例如:Location: https://www.newpage.com

  

  Set-Cookie服务器向客户端设置 Cookie。

  例如:Set-Cookie: user_name=John; expires=Thu, 01 Jan 2025 00:00:00 GMT; path=/

  

  Cache-Control控制缓存策略。

  例如:Cache-Control: max-age=3600, public

  

            

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

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

相关文章

MySQL数据库-SQL编程

一、触发器 1.触发器简介 触发器(trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, u…

【C++标准库】模拟实现string类

模拟实现string类 一.命名空间与类成员变量二.构造函数1.无参(默认)构造2.有参构造3.兼容无参和有参构造4.拷贝构造1.传统写法2.现代写法 三.析构函数四.string类对象的容量操作1.size2.capacity3.clear4.empty5.reserve6.resize 五.string类对象的访问及…

傅里叶变换与FFT应用

一、傅里叶变换 1.1 变换 我们先给例子,假设在直角坐标系上有A(2,1),B(1,2);数和图之间存在的关系,称作变换;在图上我们想找对角线C,通过计算我们就知道C(3,3);我们知道,在坐标系上有单位向量,…

Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程)

Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程) 目录 Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析…

Vue使用flex将图片并排居中且左对齐

先看效果&#xff1a; 在看代码 <template><div class"outer"><div class"inner"><div classeach_image v-for"(item,index) in image_list" :key"index"><img class"image_class" src"./…

培训孵化公司必备ERP的系统,跟卖和铺货以及订单物流发货打包

培训孵化必备的 ERP 系统&#xff0c;贴牌定制独立部署&#xff0c;跟卖铺货&#xff0c;物流对接。 说说新手与培训孵化学员如何使用 ERP&#xff01; 1. ERP 系统对于新手来说非常简单且容易操作&#xff0c;上面的跟卖功能很全面。比如铺货方面&#xff0c;可以采集 1688、…

发现SOLIDWORKS设计活页夹

您有没有遇到过将模型文件转交给同事时丢失附件的文档信息的&#xff1f;您有没有遇到过您的业务同事使用您的模型时仍然搞不清模型和业务项目之间的关系&#xff1f; 在纸制图纸的“旧时代”中&#xff0c;会有一整套信息&#xff08;文档或者表格&#xff09;与模型和图纸一…

电路原理--基础电路工具

1.正弦信号激励下的动态电路分析法-----频域相量法 课本第六章269页。 2.阻抗 3.滤波器简单理解 先介绍下滤波&#xff0c;芯片和元器件在相互工作的时候&#xff0c;会相互影响&#xff0c;在线路上产生寄生电阻或者寄生电容&#xff0c;这种现象叫耦合&#xff0c;耦合会带…

2024 巴黎奥运会:科技点亮体育盛会

一、引言 巴黎奥运会作为全球瞩目的体育盛事&#xff0c;承载着深厚的历史与文化底蕴。它不仅是运动员们展现卓越竞技能力的舞台&#xff0c;也是科技成果大放异彩的平台。科技在巴黎奥运会中的地位举足轻重&#xff0c;为赛事的各个方面带来了革新与突破。 从赛事的筹备到运…

Threejs中导入GLTF模型克隆后合并

很多场景中会需要同一个模型很多次&#xff0c;但是如果多次加载同一个模型会占用很高的带宽&#xff0c;导致加载很慢&#xff0c;因此就需要使用clone&#xff0c;也就是加载一个模型后&#xff0c;其他需要使用的地方使用clone的方式复制出多个同样的模型&#xff0c;再改变…

静态路由与默认路由和实验以及ARP工作原理

目录 1.静态路由和默认路由 1.1 静态路由 1.2 默认路由 1.3 主要区别总结 2.实验 2.1 实验 2.1.1 实验top 2.1.2 实验要求 2.2 实验配置 2.2.1 ip信息配置 2.2.2 配置静态 2.2.3配置默认 2.3 实验结果查看 3.为什么第一个ping会显示丢包&#xff1f; 3.1 ARP 工…

15.3 zookeeper实现分布式锁

1. 简介 2. 代码演示 2.1 客户端连接类 package com.ruoyi.common.zookeeper;import com.ruoyi.common.exception.UtilException; import

操作系统-硬件结构学习心得

1. 程序执行基本过程 那CPU执行程序的过程如下: ●第一步&#xff0c;CPU读取[程序计数器」的值&#xff0c;这个值是指令的内存地址&#xff0c;然后CPU的「控制单元操作 「地址总线」指定需要访问的内存地址&#xff0c;接着通知内存设备准备数据&#xff0c;数据准备好后通…

【每日刷题】Day90

【每日刷题】Day90 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 单词缩写_牛客题霸_牛客网 (nowcoder.com) 2. 面试题 01.03. URL化 - 力扣&#xff08;LeetCode&am…

深度剖析Google黑科技RB-Modulation:告别繁琐训练,拥抱无限创意生成和风格迁移!

给定单个参考图像,RB-Modulation提供了一个无需训练的即插即用解决方案,用于(a)风格化和(b)具有各种提示的内容样式组合,同时保持样本多样性和提示对齐。例如,给定参考样式图像(例如“熔化的黄金3d渲染样式”)和内容图像(例如(a)“狗”),RB-Modulation方法可以坚持所需的提…

内存泄漏 与 内存溢出

1.内存溢出(Memory Overflow) 生活样例&#xff1a; 内存容量就像一个桶&#xff0c;内存就是水&#xff0c;水 溢出 就是水满了。定义: 内存溢出是指程序试图使用超过其可用内存限制的内存。这种情况通常会导致程序崩溃或异常。内存溢出一般是由于分配了过多…

Mixture of Experts with Attention论文解读

注意这篇论文没有代码&#xff0c;文章所谓的注意力是加性注意力&#xff0c;找scaled dot-product的伙计可以避坑了&#xff0c;但还是有值得学习的地方。 score是啥&#xff1f; 这个score标量怎么计算得到&#xff0c;请假设一下x和z的值&#xff0c;计算演示一下 expert是…

第十二章(重点 元数据管理)

语境关系图&#xff1a; 1. 元数据概念&#xff1a; 元数据从技术的角度叫元数据 从业务的角度叫数据资源管理目录 技术 元数据 业务 数据资源管理目录 但是并不是数据资产目录 如果没有可靠的原数据&#xff0c;组织就不知道它拥有什么数据&#xff0c;数据表示什么&#xff…

运行ruoyi

创建数据库 根据ry_20240629.sql创建ry-cloud数据库 根据ry_config_20231204.sql创建ry-config数据库 nacos 数据库配置 修改nacos/conf/application.properties 单机版运行 startup.cmd -m standalone redis 运行后端 运行gateway,auth,modules/system模块 可能遇到的问…

怎么给电脑选一款合适的固态硬盘?就看这个参数!

前言 前段时间有很多小伙伴找小白修电脑&#xff0c;在修电脑的过程中&#xff0c;小白也会稍微看一下硬件配置。 小白就发现一个事情&#xff1a;很多小伙伴其实都不太懂电脑硬件。 为啥这么说呢&#xff1f;简单来说就是主板上使用了“不合适”的固态硬盘作为主系统硬盘。…