Http 超文本传输协议基本概念学习摘录

目录

HTTP协议

超文本传输协议

HyperText超文本

HTML超文本标记语言

HTTP协议原理

请求发送

服务器处理

响应发送

连接关闭或保持

HTTP协议版本

HTTP/0.9

HTTP/1.0

HTTP/1.1

HTTP/2

HTTP/3

HTTP请求方法

GET

POST

PUT

DELETE

HEAD

OPTIONS

HTTP请求头字段

HTTP响应状态码


HTTP协议

超文本传输协议

即超文本传输协议(HyperText Transfer Protocol),是一种用于在计算机网络上传输超文本的协议。它属于客户端-服务器协议,通过客户端向服务器发送请求,服务器则返回响应。HTTP协议是互联网上最常用的协议之一,主要用于在Web浏览器和Web服务器之间传输HTML页面、图像、视频、音频和其他类型的文件。HTTP协议通过请求/响应模型在客户端和服务器之间传输超文本内容,实现了Web应用的基本功能。

HTTP协议规定了客户端与服务器传输内容时遵守的传输格式。其交互模型是请求/响应的交互模型,即客户端发送一次请求,服务器响应一次的交互形式。请求消息由客户端发送到服务器,包括请求行(包含请求方式、URL、HTTP协议版本)、请求头部(用于描述客户端的基本信息,以多行键值对形式组成)、空行(用于分割请求头部与请求体)以及请求体(存放POST方式提交到服务器的数据,GET请求没有请求体)。

HyperText超文本

是一种使用超链接的方法将文字、图片和其他信息相互联结,形成具有相关信息体系的技术。它主要以电子文档的形式存在,如我们经常使用的HTML就是其中的一种格式。超文本在互联网上发挥着重要的作用。它的基本特性就是可以超链接文档,使得用户可以方便地从一个页面跳转到另一个页面,或者跳转到页面内的特定部分。超链接或锚(anchor)是使用标签<a>标记的,其中href属性用于指定链接的目标文件,而<a>元素的内容则是链接的标签,即用户在网页上看到的可点击的文本或图像。

HTML超文本标记语言

HyperText Markup Language是用于创建网页的标准标记语言。它不是一种编程语言,而是一种用于描述网页结构和内容的标记语言,通过元素和标签描述网页的结构和内容,并支持超链接和其他媒体内容的嵌入,为构建丰富多样的网页应用提供了基础。HTML通过一系列的元素和标签来定义网页中的不同部分,如段落、标题、图像、链接等。这些标签告诉浏览器如何渲染和展示网页内容。

HTML文档的基本结构包括头部(head)和主体(body)两部分。头部通常包含文档的元数据,如字符集定义、标题、样式表链接等;而主体则包含网页的实际内容,如文本、图片、列表、表格等。HTML的一个重要特点是其超文本性。通过超链接(hyperlink),HTML可以将不同页面或同一页面内的不同部分相互连接,实现页面的跳转和导航。这种特性使得用户可以方便地在网页之间进行浏览和访问。

此外,HTML还支持嵌入其他媒体内容,如音频、视频等,以及实现表单交互、动态更新等功能。这使得HTML成为构建丰富多样、交互性强的网页应用的基础。需要注意的是,虽然HTML定义了网页的结构和内容,但它并不直接负责网页的样式和布局。这些方面通常由CSS(层叠样式表)来控制。同时,HTML也不负责处理用户输入和动态交互,这些功能通常由JavaScript等脚本语言来实现。

HTTP协议原理

工作原理主要基于请求/响应模型,这一模型定义了客户端与服务器之间如何交互以传输超文本内容。 其主要工作原理有:

请求发送

  • 客户端(如Web浏览器)根据用户操作或程序指令,生成一个HTTP请求。这个请求包含了请求方法(如GET、POST等)、请求的URL(即资源的定位符)、协议版本、请求头部(可选,包含一些元数据如浏览器类型、语言偏好等)以及请求体(对于POST等包含数据的请求)。
  • 客户端将构建好的HTTP请求发送到服务器,通常是通过TCP/IP协议在互联网上进行传输。

服务器处理

  • 服务器接收到HTTP请求后,会解析请求的各个部分,包括请求方法、URL和请求头等信息。
  • 根据请求方法的不同,服务器会执行相应的操作。例如,对于GET请求,服务器会检索请求的资源;对于POST请求,服务器会接收客户端发送的数据并可能进行存储或处理。
  • 服务器处理完请求后,会生成一个HTTP响应。响应包括状态码(表示请求处理的结果,如200表示成功)、响应头部(包含有关响应的元数据)和响应体(包含请求的资源或处理结果)。

响应发送

  • 服务器将构建好的HTTP响应通过TCP/IP协议发送回客户端。
  • 客户端接收到响应后,会解析响应内容并根据状态码和响应体进行相应的处理。例如,如果状态码为200,客户端通常会解析响应体中的HTML内容并在浏览器中展示。

连接关闭或保持

  • HTTP/1.0版本默认在每次请求/响应后关闭TCP连接。然而,HTTP/1.1版本引入了持久连接(persistent connection)的概念,允许在多个请求/响应之间保持TCP连接打开,以减少建立和关闭连接的开销,从而提高性能。

值得注意的是,HTTP协议本身是无状态的,即服务器不会记住之前接收过的请求和响应的信息。这使得HTTP协议能够处理大量的并发请求,但也意味着如果需要维护会话状态(如用户登录状态),通常需要借助其他机制(如cookies或session)来实现。

HTTP协议版本

HTTP/0.9

HTTP的初始版本,于1991年发布。它非常简单,只支持GET方法,用于获取服务器上的HTML文档,并且服务器返回整个文档作为响应。

HTTP/1.0

于1996年发布。HTTP/1.0引入了更复杂的请求和响应模型,包括请求头部、响应状态码、响应头部等。它支持多种请求方法(GET、POST、PUT、DELETE等),增加了状态码用于表示请求结果或错误情况,并引入了Content-Type头部字段来支持多媒体类型。此外,HTTP/1.0还支持持久连接,允许在同一个TCP连接上发送多个请求和响应。

HTTP/1.1

于1997年发布。HTTP/1.1是目前最广泛使用的HTTP版本。它对HTTP/1.0进行了一系列改进,包括引入了Host头部字段、引入了缓存控制、支持分块传输编码、引入了管道化(pipelining)等。HTTP/1.1还提供了更细粒度的控制,如支持Range头部字段用于断点续传和部分内容获取,以及支持虚拟主机等。

HTTP/2

于2015年发布。HTTP/2基于Google开发的SPDY协议,并在HTTP/1.1的基础上进行了全面的改进。它引入了多路复用、二进制分帧、头部压缩、服务器推送等特性,提高了性能和效率。

HTTP/3

HTTP/3是基于QUIC协议的HTTP版本,目前仍处于实验阶段。它旨在提高性能和安全性,通过使用UDP协议替代TCP,减少延迟和提高吞吐量。HTTP/3支持连接和流的多路复用,以及零RTT握手等特性。

HTTP请求方法

主要包括以下几种:

GET

用于从指定资源中请求数据。GET请求只应检索数据,并且不对数据产生其他影响。GET请求可以缓存,可以从浏览器历史记录中查找,也可以被收藏到书签中。但请注意,GET请求在处理敏感数据时存在不安全性,因此不应使用。

POST

用于将数据发送到服务器以创建或更新资源。它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另一个下属。POST请求通常用于提交表单或上传文件。

PUT

从客户端向服务器传送的数据会取代指定的文档的内容。它类似于POST方法,但PUT方法指向了资源在服务器上的位置。

DELETE

请求服务器删除指定的资源。DELETE方法会删除URI给出的目标资源的所有当前内容。

类似于GET请求,但返回的响应中没有具体的内容,只请求页面的首部。

OPTIONS

允许客户端查看服务器的性能,并询问支持的请求方法。它还可以用来跨域请求,检查访问权限。

此外,还有其他一些HTTP请求方法,如CONNECT、TRACE、PATCH等,这些方法各有其特定的用途和适用场景。在实际应用中,根据具体的需求和场景选择合适的HTTP请求方法非常重要。

HTTP请求头字段

头(Header)类型说明
User-Agent(用户-代理)请求关于浏览器和它平台的信息,如:Mozilla5.0
Accept(接受)请求客户能处理的页面类型,如text/html
Accept-Charset(接受字符集)请求客户能处理的页码编码方法:gzip
Accept-Encoding(接受编码)请求客户能处理的页码编码方法如:gzip
Hosr(主机)请求服务器的DNS名称,从URL中提取出来,必须
Referer(推荐人)请求用户从该URL代表的页面出发访问当前请求的页面
Cookie请求将以前设置的Cookie送回服务器,可用来作为会话信息
Date(时间)双向消息被发送时候的日期和时间
Server(服务)响应关于服务器的信息,如Microsoft-IIS/6.0
Content-Encoding(内容编码)响应内容是如何被编码的如:gzip
Content-Language(内容语言)响应页面所使用的自然语言
Content-Length响应以字节计算的页面长度
Content-Type(内容类型)响应页面的MIME类型
Last-Modified(上次修改时间)响应页面最后被修改的时间和日期
Location(位置)响应指示用户将请求发送给别处,即重定向到另一个URL
Set-Cookie响应服务器希望客户保存的一个Cookie

HTTP响应状态码

HTTP Status Code响应状态码是由服务器在响应客户端请求时返回的三位数字代码,用于表示请求的处理结果或状态。这些状态码分为五大类,每类有特定的含义和范围。

1xx - 信息性状态码

  • 100 Continue:客户端应继续其请求。
  • 101 Switching Protocols:服务器根据客户端的请求切换协议。

2xx - 成功状态码

  • 200 OK:请求成功。
  • 201 Created:请求成功并且服务器创建了新的资源。
  • 202 Accepted:请求已接受,但处理尚未完成。
  • 204 No Content:请求成功,但响应报文不含实体的主体部分。

3xx - 重定向状态码

  • 301 Moved Permanently:请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用新的URI。
  • 302 Found:请求的资源现在临时从不同的URI响应请求。
  • 304 Not Modified:如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。

4xx - 客户端错误状态码

  • 400 Bad Request:请求报文存在语法错误。
  • 401 Unauthorized:请求需要用户认证。
  • 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
  • 404 Not Found:服务器无法根据客户端的请求找到资源。

5xx - 服务器错误状态码

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 502 Bad Gateway:作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。

这只是HTTP响应状态码的一部分,实际上还有许多其他状态码,每个状态码都有其特定的含义和用途。当进行Web开发或网络调试时,理解这些状态码的含义是非常重要的。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MQTT学习从零到实战:二

本次基于MQTT实现的服务器之一&#xff1a;EMQX 协议版本&#xff1a;5.0 文档路径&#xff1a;快速开始 | EMQX 5.0 文档 MQTT协议服务器搭建 本次使用的服务器是EMQX。 下载地址&#xff1a;立即开始 | EMQX 从中我们也可以看出&#xff0c;企业版支持数据持久化&#xf…

springboot+template模板语法+SQL如何从零开始创建并运行一个实例

目录 一、创建springboot项目 二、启动程序测试一下&#xff0c;右上角点击运行&#xff1a; 三、代码编写 1、先在entity里写一个实体类&#xff0c;User&#xff1a; 2、写一个mapper接口&#xff0c;写四个接口&#xff0c;增删改查。&#xff08;我这里后面就以获取所…

蓝桥杯每日一题——棋盘

问题描述 小蓝拥有 n xn 大小的棋盘&#xff0c;一开始棋盘上全都是白子。小蓝进行了 m 次操作&#xff0c;每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色&#xff0c;黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。输入格式 输入的…

3.14_理解专业术语_3.18

分布式电源 风能、太阳能、生物质能等新能源的应用&#xff0c;有很大部分是分散式的&#xff0c;且容量较小。这些分散布置在电力负荷附近的、容量在数千瓦至数十兆瓦之间的、为环境兼容的、节能的发电装置&#xff0c;如燃气轮机、内燃机、小型光伏发电站、燃料电池、风力发电…

Docker知识--01

虚拟化 # 什么是虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打…

【计算机网络】IP 协议

网络层IP协议 一、认识 IP 地址二、IP 协议报头格式三、网段划分1. 初识子网划分2. 理解子网划分3. 子网掩码4. 特殊的 IP 地址5. IP 地址的数量限制6. 私有 IP 地址和公网 IP 地址7. 理解全球网络&#xff08;1&#xff09;理解公网&#xff08;2&#xff09;理解私网&#xf…

C语言---指针的两个运算符:点和箭头

目录 点&#xff08;.&#xff09;运算符箭头&#xff08;->&#xff09;运算符需要注意实际例子 C语言中的指针是一种特殊的变量&#xff0c;它存储了一个内存地址。点&#xff08;.&#xff09;和箭头&#xff08;->&#xff09;是用于访问结构体和联合体成员的运算符。…

[LeetBook]【学习日记】排序算法——归并排序

主要思想 归并排序是一种分治算法&#xff0c;其排序过程包括分和治分是指将要排序的序列一分为二、二分为四&#xff0c;直到单个序列中只有一个数治是指在分完后&#xff0c;将每两个元素重新组合&#xff0c;四合为二、二合为一&#xff0c;最终完成排序 图片作者&#xf…

SkiaSharp使用SKCanvas.DrawText绘制2D文本时部分字符渲染位置异常。

Skia是一个开源的 2D 图形库&#xff0c;支持多种平台和语言&#xff0c;可以用于绘制各种图形和效果&#xff0c;SkiaSharp是其.Net版本。 在绘制文本时&#xff0c;一般做法是&#xff1a; private void SkContainer_PaintSurface(object? sender, SkiaSharp.Views.Deskto…

Linux系统安装宝塔面板结合内网穿透实现公网登录本地面板——“cpolar内网穿透”

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

Midjourney 和 Dall-E 的优劣势比较

Midjourney 和 Dall-E 的优劣势比较 Midjourney 和 Dall-E 都是强大的 AI 绘画工具&#xff0c;可以根据文本描述生成图像。 它们都使用深度学习模型来理解文本并将其转换为图像。 但是&#xff0c;它们在功能、可用性和成本方面存在一些差异。 Midjourney 优势: 可以生成更…

攻防世界新手模式例题(Web)

PHP2 首先我们查看页面&#xff0c;查看前端代码 发现均没有什么有效信息&#xff0c;由题目可知&#xff0c;此问题与php相关&#xff0c;于是我们可以看一下他的index.php文件 查看时用?index.phps 补充知识&#xff1a;phps文件就是php的源代码文件&#xff0c;通常用于…

算法之位运算

常见的位运算操作: 首先先熟悉一下常见的位运算操作: 1. 基础位运算 左移<<, 右移>>, 按位与&, 按位或|, 按位异或^, 按位取反~ 注意: 异或其实是一种无进位相加. 2. 给定一个 n, 确定它的二进制表示中第x位是 0 还是 1 n & (1<<x) 或者 (n>…

消费者组大观:5种状态,1场分布式奇迹

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 消费者组大观&#xff1a;5种状态&#xff0c;1场分布式奇迹 前言EmptyDead状态处理 Dead 状态的策略&#xff1a;防范和恢复&#xff1a; PreparingRebalance处理 "PreparingRebalance" 状…

【Leetcode-102.二叉树的层序遍历】

题目详情&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例…

Linux软件管理(1)

软件管理 下载 wget Linux wget是一个下载文件的工具&#xff0c;它用在命令行下。 wget工具体积小但功能完善&#xff0c;它支持断点下载功能&#xff0c;同时支持FTP和HTTP下载方式&#xff0c;支持代理服务器和设置起来方便简单。 1.语法 wget [选项]……[URL]…… 2、…

React - 实现菜单栏滚动

简介 本文将会基于react实现滚动菜单栏功能。 技术实现 实现效果 点击菜单&#xff0c;内容区域会自动滚动到对应卡片。内容区域滑动&#xff0c;指定菜单栏会被选中。 ScrollMenu.js import {useRef, useState} from "react"; import ./ScrollMenu.css;export co…

【MATLAB源码-第165期】基于matlab的科莫多巨蜥算法(KMA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 科莫多巨蜥算法&#xff08;Komodo Mlipir Algorithm&#xff0c;简称KMA&#xff09;是一种受到印尼科莫多岛上独特生物——科莫多巨蜥启发的创新算法。尽管这个算法的名称听起来很有趣&#xff0c;但实际上它并不是一个公认…

写论文matplotlib使用同一色系的颜色

推荐网站 Colorsinspo - All in one resource for finding everything about colors | Colorsinspo 网页直接可以复制颜色 除此之外&#xff0c;自己还试了一个色系&#xff08;可惜不理想&#xff0c;看着不均匀&#xff09;&#xff0c;先存到这里 color_name [lightgr…