IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP协议报文结构 -> 正文阅读

[网络协议]HTTP协议报文结构

HTTP它是超文本文件传输协议,是互联网上应用最广泛的一种网络协议,它提供了一种发布和接收HTML页面的方法。比如说要打开一个网页,过程中就会用到HTTP协议。

它的具体的过程是这样的:
(1)首先浏览器查找域名的IP地址,使用DNS协议获取域名对应的IP;
(2)然后浏览器与服务器中间通过TCP协议建立连接;
(3)然后浏览器向服务器发送一个HTTP请求,产生一个请求报文,服务器处理请求后再给浏览器返回HTTP响应,发回一个响应报文;
(4)最后浏览器解析渲染页面,这个过程就结束了。

HTTP报文结构

HTTP报文由报文首部和报文主体构成,中间由一个空行分隔。类型有请求报文和响应报文。请求报文和响应报文的首部内容包括请求行、状态行、首部字段。一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
(1)使用首部字段的作用:是为了给浏览器和服务器提供报文主体大小、所使用的 语言、认证信息等内容。

(2)首部字段的结构:报文首部的结构由字段名和字段值构成,中间使用冒号分隔。

(3)首部字段的类型:HTTP首部字段通常有四种类型,分别是通用首部字段、请求首部字段、响应首部字段和实体首部字段。

  • 通用首部字段(General Header Fields) :请求报文和响应报文两方都会使用的首部。
  • 请求首部字段(Request Header Fields) :从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加 内容、客户端信息、响应内容相关优先级等信息。
  • 响应首部字段(Response Header Fields): 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加 内容,也会要求客户端附加额外的内容信息。
  • 实体首部字段(Entity Header Fields) :针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更 新时间等与实体有关的信息。

由于HTTP的通信过程包含客户端向服务器发送请求和服务器端向客户端发送响应两个过程,因此在这两个过程中就会产生两种HTTP报文,分别是客户端的请求报文和服务端的响应报文。

客户端请求报文构成

报文首部、空行和报文主体构成。
其中报文首部由请求行和请求首部字段构成。
请求行由请求方法、请求 URI、协议版本构成。
请求首部字段可选为请求首部字段、通用首部字段和实体首部字段。
在这里插入图片描述

服务器响应报文构成

报文首部、空行和报文主体构成。
其中报文首部由响应行和响应首部字段构成。
响应行由议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语构成。
响应首部字段可选为响应首部字段、通用首部字段和实体首部字段。
在这里插入图片描述

HTTP状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

状态码类别

在这里插入图片描述

代表性状态码

(1)2XX成功

2XX请求被正常处理
200 OK表示从客户端发来的请求在服务器端被正常处理了
204 No Content代表服务器接收的请求已成功处理,但在返回的响应报文中 不含实体的主体部分。另外,也不允许返回任何实体的主体。比如, 当从浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面 不发生更新
206 Partial Content表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。

(2) 3XX重定向

3XX浏览器需要执行某些特殊的处理以正确处理请求
301 Moved Permanently 永久性重定向表示请求的资源已被分配了新的 URI,以后 应使用资源现在所指的 URI
302 Found 临时性重定向表示请求的资源已被分配了新的 URI,希望 用户(本次)能使用新的 URI 访问
303 See Other表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源
304 Not Modified表示客户端发送附带条件的请求 2 时,服务器端允许请求访 问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应 的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系
307 Temporary Redirect 临时重定向302 标准禁止 POST 变换成 GET,但实际使用时大家并不遵守。 307 会遵照浏览器标准,不会从 POST 变成 GET

(3) 4XX客户端错误

4XX客户端发生错误
400 Bad Request请求报文中存在语法错误。当错误发生时,需修改请求 的内容后再次发送请求
401 Unauthorized发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示 用 户认证失败
403 Forbidden对请求资源的访问被服务器拒绝了。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发 送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因
404 Not Found服务器上无法找到请求的资源。除此之外,也可以在服 务器端拒绝请求且不想说明理由时使用

(4) 5XX服务器错误

5XX服务器发生错误
500 Internal Server Error服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障
503 Service Unavailable服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:54:21  更:2021-09-04 17:55:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/21 6:53:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码