当前位置: 首页 > news >正文

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开发或网络调试时,理解这些状态码的含义是非常重要的。


相关文章:

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请求头字…...

模拟-算法

文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路&#xff1a; 从前往后遍历整个字符串&#xff0c;找到问号之后&#xff0c;就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…...

深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…...

Unbuntu20.04 git push和pull相关问题

文章目录 Unbuntu20.04 git push和pull使用&#xff11;&#xff0e;下载[Git工具包](https://git-scm.com/downloads)&#xff12;&#xff0e;建立本地仓库&#xff13;&#xff0e;将本地仓库与github远程仓库关联&#xff14;&#xff0e;将本地仓库文件上传到github远程仓…...

hive SQL 移位、运算符、REGEXP正则等常用函数

orderflag & shiftleft(1,14) shiftleft(1,14) SQL中使用的运算符号详解_sql中各种符号-CSDN博客 Hive函数_hive shift-CSDN博客 &#xff08;内建函数&#xff08;类型排序&#xff09;_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心&#xff09;...

33-Java服务定位器模式 (Service Locator Pattern)

Java服务定位器模式 实现范例 服务定位器模式&#xff08;Service Locator Pattern&#xff09;用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高&#xff0c;服务定位器模式充分利用了缓存技术在首次请求某个服务时&#xff0c;服务定位器在 JNDI…...

前端小卡片:vue3路由是什么,有什么作用,该如何配置?

在 Vue 3 中&#xff0c;路由的处理使用了 Vue Router&#xff0c;它是官方提供的路由管理器。Vue Router 用于实现单页应用中的路由功能&#xff0c;通过将不同的 URL 映射到对应的组件&#xff0c;实现页面之间的切换和导航。 Vue Router 的作用包括&#xff1a; 实现页面之…...

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…...

说说webpack中常见的Loader?解决了什么问题?

文章目录 一、是什么配置方式 二、特性三、常见的loadercss-loaderstyle-loaderless-loaderraw-loaderfile-loaderurl-loader 参考文献 一、是什么 loader 用于对模块的"源代码"进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情…...

Django 铺垫

【一】基础知识点 【1】web框架的本质 Web框架本质上可以看成是一个功能强大的socket服务端用户的浏览器可以看成是拥有可视化界面的socket客服端两种通过网络请求实现数据交互 【2】浏览器发送请求 &#xff08;1&#xff09;HTTP协议 HTTP协议是超文本传输协议&#xff…...

浅谈C++的继承与多态(静态绑定、动态绑定和虚函数等)

今天我们来谈谈C的继承与多态&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;本篇的关键内容如下&#xff1a; 继承的本质及其原理派生类的构造和析构过程重载、隐藏和覆盖类的向下或向上转型静态绑定与动态绑定虚函数对类的影响虚析构函数 下面&#xff0c;我们将对这…...

【无人机综合考试题】

1.请选择出哪一个功能选项&#xff0c;在手动遥控飞行时&#xff0c;可以改变各通道的操作灵敏度? 行程比例在手动遥控飞行时&#xff0c;可以改变各通道的操作灵敏度 用于起降的遥控器中 THR、ELE 通道分别控制多旋翼无人机的什么运动? AIL(左、右移动)RUD(左、右水平旋转…...

JS精度计算的几种解决方法,1、转换成整数计算后再转换成小数,2、toFixed,3、math.js,4、bignumber.js,5、big.js

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、转换成整数计算后再转换成小数二、toFixed三、math.js四、bignumber.js五、big.js总结 前言 原始计算 let aNum 6.6 0.3;let bNum 6.6 - 0.2;let cNum 6.6 * 0.3;let dNum 6.6 / 0.2;console.log(…...

v77.递归

理解&#xff1a; 函数直接或者间接地调用自身&#xff1b;并且有边界条件。 1&#xff1a; #include <stdio.h> int main() {int result fun(3);printf("%d",result);return 0 ; } int fun(int num) {if(num 1)return num;return num fun(num-1); }思路…...

Spring Cloud微服务功能及其组件详细讲解

Spring Cloud微服务功能及其组件详细讲解 文章目录 Spring Cloud微服务功能及其组件详细讲解前言&#xff1a;什么是微服务&#xff1f;一、Spring Cloud原理简述二、核心组件1、服务发现——Nacos/Eureka/Consul1&#xff09;Nacos服务发现2&#xff09;Eureka服务发现3&#…...

(三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练

这里写目录标题 一、colmap解算数据放入高斯1. 将稀疏重建的文件放入高斯2. 将稠密重建的文件放入高斯 二、vkitti数据放入高斯 一、colmap解算数据放入高斯 运行Colmap.bat文件之后&#xff0c;进行稀疏重建和稠密重建之后可以得到如下文件结构。 1. 将稀疏重建的文件放入高…...

4635: 【搜索】【广度优先】回家

题目描述 小 H 在一个划分成了nm 个方格的长方形封锁线上。 每次他能向上下左右四个方向移动一格&#xff08;当然小 H 不可以静止不动&#xff09;&#xff0c; 但不能离开封锁线&#xff0c;否则就被打死了。 刚开始时他有满血 6 点&#xff0c;每移动一格他要消耗 1 点血量…...

Uibot6.0 (RPA财务机器人师资培训第1天 )RPA+AI、RPA基础语法

训练网站&#xff1a;泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北之前的几篇博客&#xff0c;友友们我们即将开展新课的学习~…...

【吊打面试官系列】Redis篇 -Redis集群的主从复制模型是怎样的?

大家好&#xff0c;我是锋哥。今天分享关于 【Redis集群的主从复制模型是怎样的&#xff1f;】 面试题&#xff0c;希望对大家有帮助&#xff1b; Redis集群的主从复制模型是怎样的&#xff1f; 为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用&#xff0c;所…...

高效的二进制列化格式 MessagePack 详解

目录 MessagePack 序列化原理 MessagePack 数据类型及编码方式 MessagePack 序列化与反序列化过程 MessagePack 的优势 应用场景 注意事项 小结 MessagePack &#xff08;简称 msgPack&#xff09;是一种高效的二进制序列化格式&#xff0c;可以将各种数据类型&#xff…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

验证redis数据结构

一、功能验证 1.验证redis的数据结构&#xff08;如字符串、列表、哈希、集合、有序集合等&#xff09;是否按照预期工作。 2、常见的数据结构验证方法&#xff1a; ①字符串&#xff08;string&#xff09; 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

Gitlab + Jenkins 实现 CICD

CICD 是持续集成&#xff08;Continuous Integration, CI&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment, CD&#xff09;的缩写&#xff0c;是现代软件开发中的一种自动化流程实践。下面介绍 Web 项目如何在代码提交到 Gitlab 后&#xff0c;自动发布…...