WebSocket协议解析与Java实践

news2024/9/24 11:26:50

文章目录

  • 一、HTTP协议与HTTPS协议
    • 1.HTTP协议的用处
    • 2.HTTP协议的特点
    • 3.HTTP协议的工作流程
    • 4.HTTPS协议的用处
    • 5.HTTPS协议的特点
    • 6.HTTPS协议的工作流程
  • 二、WebSocket协议出现的原因
      • 1. 传统的HTTP请求-响应模型
      • 2. 轮询(Polling)
      • 3. 长轮询(Long Polling)
      • 4. Server-Sent Events (SSE)
      • 5. WebSocket
  • 三、WebSocket协议解析
    • 1.特点
    • 2.建立连接和数据通信
      • 第一步: 客户端发起HTTP请求
      • 第二步: 服务器响应
      • 第三步: 握手完成
      • 第四步: 数据传输
      • 掩码操作示例
      • 第五步: 连接关闭

一、HTTP协议与HTTPS协议

1.HTTP协议的用处

HTTP (Hypertext Transfer Protocol, 超文本传输协议) 是一种用于从网络服务器传输超文本到本地浏览器的传输协议。它确保了高效且准确的信息传输,并定义了在数据通信过程中客户端与服务器之间的交互行为。

  • Web浏览: 当用户在浏览器地址栏输入网址或点击链接时,客户端向服务器发送一个HTTP请求以获取资源。服务器响应这些请求并返回HTML页面,浏览器再将这些页面渲染成可视化的网页。
  • 数据交换: HTTP支持多种数据类型的传输,包括但不限于图像、视频、文本和其他多媒体内容。这使得Web应用程序能够提供丰富的用户体验。

2.HTTP协议的特点

  • 无状态协议: HTTP是一种无状态协议,意味着每次连接只处理一个请求,服务器不会保留关于客户端的任何状态信息。这种设计简化了服务器的实现,但也可能导致一些需要维护状态的应用程序需要使用cookies或session来跟踪用户会话。
  • 灵活: HTTP允许传输任意类型的数据对象,并且可以通过不同的MIME类型来标识数据格式。
  • 简单快速: HTTP请求方法简洁明了,服务器通常能够迅速响应这些请求。
  • 基于文本: 所有命令和消息都是纯文本形式,易于调试和理解。

3.HTTP协议的工作流程

  • HTTP协议是基于TCP/IP模型的应用层协议:

在这里插入图片描述

一个典型的HTTP请求由以下几个部分组成:

  • 请求行: 包含请求的方法(GET、POST等)、请求的URL和使用的HTTP版本。
  • 请求头: 包含客户端信息、认证信息以及其他用于控制请求行为的元数据。
  • 空行: 分隔请求头和请求体。
  • 请求体: 可选部分,包含了请求的数据,例如表单提交的数据。

HTTP响应同样也包含以下几个部分:

  • 状态行: 包含HTTP版本、状态码及描述该状态码的文字说明。
  • 响应头: 包含服务器信息、认证信息及其他控制响应行为的元数据。
  • 空行: 分隔响应头和响应体。
  • 响应体: 包含了服务器响应的数据,如HTML文档或其他类型的文件。

  • 用户从在浏览器输入url请求资源,到获得资源并渲染在页面上的完整流程:
  1. URL 解析和域名解析

    • 用户在浏览器地址栏输入URL。
    • 浏览器解析URL,提取协议、主机名、端口(如未指定则使用默认端口)、路径和查询字符串。
    • 浏览器进行域名系统(DNS)查找,将域名转换为对应的IP地址。
  2. 建立TCP连接

    • 浏览器与服务器建立TCP连接,这涉及到三次握手过程。
  3. 发起HTTP请求

    • 若URL使用HTTP协议,浏览器会直接发送HTTP请求。
    • 若URL使用HTTPS协议,浏览器会先与服务器建立安全连接,包括SSL/TLS握手,然后加密的HTTP请求通过该安全连接传输。
  4. 服务器处理请求

    • 服务器接收到请求后,根据请求的资源类型和路径等信息处理请求。
    • 如果请求的是静态资源(如HTML、CSS、JavaScript文件),服务器会直接从文件系统中读取并返回。
    • 如果请求的是动态资源,服务器可能需要运行相关的应用程序或脚本来生成响应内容。
  5. 返回HTTP响应

    • 服务器将请求的资源或生成的页面作为HTTP响应返回给客户端。
    • HTTP响应包含状态码、响应头和响应体。
  6. 浏览器处理响应

    • 浏览器解析响应,根据状态码确认是否成功获取资源。
    • 对于HTML文档,浏览器开始解析HTML并构建DOM(文档对象模型)。
    • 遇到链接到外部资源(如CSS、JavaScript、图片等)的标签,浏览器会再次发起请求下载这些资源。
  7. 渲染页面

    • 浏览器根据DOM和CSSOM(CSS对象模型)渲染页面,这是渲染引擎的工作。
    • JavaScript文件被执行,可能会对页面内容和结构进行动态修改。
  8. 显示结果

    • 浏览器在解析完HTML、CSS和执行完JavaScript后,将最终的页面呈现给用户。
  9. 关闭连接

    • 一旦页面渲染完毕,浏览器通常会关闭与服务器的TCP连接,但在持久连接(keep-alive)的情况下,此连接可能会保持打开状态以供后续请求使用。

整个过程涉及网络通信、协议解析、安全加密、数据处理和页面渲染等多个环节,每个环节都对网页加载性能有重要影响。

在这里插入图片描述

4.HTTPS协议的用处

HTTPS (Hypertext Transfer Protocol Secure) 是HTTP的安全版本,它在HTTP的基础上加入了SSL/TLS层,主要用于需要高度安全性的网站,比如银行、电子商务网站等,以确保用户的信息安全。

  • 加密通信: 使用SSL/TLS协议对数据进行加密,以防止数据在传输过程中被截获或监听。
  • 身份验证: 通过数字证书验证服务器的身份,确保用户访问的是合法的网站,从而防止中间人攻击。
  • 数据完整性: 保证数据在传输过程中的完整性和未被篡改。

5.HTTPS协议的特点

  • 安全性: 通过加密技术来保护传输的数据,防止数据被窃取或篡改。
  • 认证: 通过数字证书来验证通信双方的身份,确保其真实性。
  • 可靠性: 提供数据的完整性校验,确保接收到的信息是完整无误的。

6.HTTPS协议的工作流程

HTTPS在HTTP的基础上通过SSL或TLS进行加密处理。

在这里插入图片描述

SSL/TLS协议在传输数据之前,会先在客户端和服务器之间建立一条加密通道。

  • HTTPS通过以下步骤确保安全通信:
  1. 客户端发起TCP连接请求;
  2. 服务器响应TCP连接;
  3. 客户端和服务器进行SSL/TLS握手:
    • 客户端向服务器发送“Client Hello”消息,其中包含客户端支持的SSL/TLS版本和加密套件列表。
    • 服务器选择一个加密套件,并发送“Server Hello”消息,确认所选的加密套件,并附带自己的数字证书。
    • 客户端验证服务器的数字证书,并生成一个随机数作为会话密钥,然后使用服务器公钥加密此会话密钥后发送给服务器。
    • 服务器解密会话密钥,并确认密钥已接收。
  4. 握手成功后,加密的HTTP数据传输开始;
  5. 通讯完成后,断开连接。

总之,HTTP和HTTPS构成了互联网通信的基础,而随着网络安全意识的提高,HTTPS正逐步取代传统的HTTP成为主流的网络通信协议,为用户提供更安全的网络环境。

二、WebSocket协议出现的原因

WebSocket技术的出现主要是为了解决传统HTTP协议在实现实时双向通信方面存在的不足,提高通信效率并简化应用开发。

  • 克服HTTP轮询的局限性:
    传统HTTP协议下的轮询机制要求浏览器定期向服务器发起HTTP请求以获取更新,这种方式不仅效率低下,而且消耗大量带宽资源。
    HTTP请求头部较长,而实际传输的有效数据往往较少,导致资源浪费严重。

  • 实现实时双向通信的需求:
    随着互联网应用的发展,对于即时消息、在线游戏等需要实时双向通信的应用场景越来越多。
    传统HTTP协议无法满足服务器主动向客户端推送数据的需求,限制了这类应用的实现。

  • 提高通信效率:
    WebSocket协议仅需一次握手即可建立持久连接,之后客户端与服务器之间可以直接进行高效的数据交换。
    这种全双工(full-duplex)的通信方式极大地提高了数据传输的速度和效率。

  • 简化开发复杂度:
    WebSocket作为一种新的协议,旨在简化实时通信应用的开发,避免了频繁的HTTP请求和响应带来的复杂性和性能瓶颈。

1. 传统的HTTP请求-响应模型

  • 特点:传统的Web应用主要基于HTTP协议,采用请求-响应模型。浏览器(客户端)发送请求到服务器,服务器处理请求后返回响应。
  • 限制:HTTP是单向通信,只能由客户端发起请求,服务器被动响应,无法主动推送数据给客户端。

2. 轮询(Polling)

  • 背景:随着Web应用的多样化,特别是对实时数据的需求增加,开发者开始寻求方法让服务器能够“推送”数据给客户端。
  • 方法:客户端定期(例如每几秒钟)向服务器发送HTTP请求查询是否有新数据。
  • 限制:轮询会增加服务器负载,同时由于HTTP请求头较大,造成带宽浪费。此外,频繁的请求也会影响用户体验。

3. 长轮询(Long Polling)

  • 改进:为了解决轮询带来的问题,长轮询技术应运而生。
  • 方法:客户端发起请求后,服务器在没有新数据时保持连接打开状态,直到有新数据时才返回响应。
  • 优点:相比普通轮询,减少了不必要的请求次数,提高了效率。
  • 限制:仍然基于HTTP协议,存在连接保持时间的限制,且服务器资源占用较多。

4. Server-Sent Events (SSE)

  • 介绍:SSE是一种简单的服务器推送技术,允许服务器向客户端发送事件更新。
  • 方法:服务器通过HTTP连接持续发送数据流到客户端,客户端监听这些事件并做出响应。
  • 适用场景:适用于只需要服务器向客户端推送数据的场景,如股票价格更新或新闻流。
  • 限制:仅支持单向通信,即服务器到客户端的通信。

5. WebSocket

  • 背景:随着Web应用对实时双向通信的需求日益增长,需要一种更加高效、低延迟的通信方式。
  • 特点
    • WebSocket协议是在HTML5中引入的,它提供了一种在客户端和服务器之间建立持久连接的方式。
    • 一旦连接建立,双方就可以自由地发送数据,实现了全双工通信。
    • WebSocket基于TCP/IP协议,使用HTTP进行握手,之后转换为二进制帧传输数据,大大减少了通信开销。
    • WebSocket连接一旦建立,就可以长期保持,减少了频繁建立和关闭连接的开销。

三、WebSocket协议解析

1.特点

WebSocket协议是一种在单个TCP连接上进行全双工通信的协议。它被设计用于替代HTTP协议中的轮询请求,以提供更高效的实时数据传输服务。以下是WebSocket协议的一些主要特点:

全双工通信

  • WebSocket允许服务器和客户端双向通信,即数据可以同时从客户端发送到服务器端,也可以从服务器端发送到客户端。

持久连接

  • 一旦WebSocket连接建立后,就会保持打开状态,直到其中一方关闭连接。这使得实时应用的延迟大大降低。

减少开销

  • 相比于HTTP轮询,WebSocket减少了每次消息交换所需的头部大小和其他开销,提高了数据传输效率。

高效的数据传输

  • WebSocket使用二进制帧格式传输数据,可以有效减少文本格式如JSON或XML带来的额外负载。

支持多种类型的数据

  • WebSocket不仅可以传输文本数据(UTF-8编码),还可以传输二进制数据(如图片、音频和视频等)。

心跳机制

  • WebSocket定义了心跳机制来检测连接是否仍然活动,以避免不必要的重连。

安全性

  • WebSocket支持加密连接(wss://),可以通过TLS/SSL协议保护数据传输的安全性。

多路复用

  • 尽管WebSocket本身不直接支持多路复用,但可以在一个连接上通过不同的标识符来区分不同的会话或数据流。

跨平台兼容性

  • WebSocket协议在现代浏览器中得到广泛支持,并且可以在服务器端使用多种编程语言实现。

简单易用

  • WebSocket API简单直观,易于开发人员理解和使用。

2.建立连接和数据通信

WebSocket协议建立连接的过程是一个比较典型的握手过程,它基于HTTP协议来完成。以下是WebSocket连接建立的详细步骤:

第一步: 客户端发起HTTP请求

  1. 请求发起
    • 客户端通过HTTP发起一个特殊的GET请求到服务器,该请求包含特定的Upgrade头,表明希望升级到WebSocket协议。

    • 请求行示例:

      GET /chat HTTP/1.1
      Host: server.example.com
      Upgrade: websocket
      Connection: Upgrade
      Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
      Origin: http://example.com
      Sec-WebSocket-Version: 13
      
    • 其中Sec-WebSocket-Key是一个随机生成的Base64编码的值,用于后续的握手验证。

    • Sec-WebSocket-Version指定使用的WebSocket版本,目前标准版本为13。

第二步: 服务器响应

  1. 响应确认
    • 如果服务器同意升级到WebSocket协议,则返回一个HTTP状态码101 Switching Protocols的响应。

    • 响应示例:

      HTTP/1.1 101 Switching Protocols
      Upgrade: websocket
      Connection: Upgrade
      Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
      
    • Sec-WebSocket-Accept字段包含了客户端发送的Sec-WebSocket-Key经过处理后的结果。处理方式是将Sec-WebSocket-Key与一个固定的258EAFA5-E914-47DA-95CA-C5AB0DC85B11 GUID拼接,然后计算SHA-1哈希,最后再进行Base64编码。

第三步: 握手完成

  1. 握手完成
    • 当客户端收到服务器的响应,并验证了Sec-WebSocket-Accept字段正确无误后,就完成了握手过程。
    • 此时,连接已升级为WebSocket连接,可以开始进行双向通信。

第四步: 数据传输

  1. 数据帧格式
    • WebSocket使用帧来传输数据。每个帧由一个固定长度的头部和一个可变长度的有效载荷组成。
    • 头部包括帧类型(例如文本、二进制或控制帧)、掩码标志以及掩码键(仅当客户端向服务器发送数据时需要掩码)。
  • 掩码标志以及掩码键:
    在WebSocket协议中,掩码标志和掩码键是用来保护客户端到服务器的数据不被中间人窥探的安全措施。具体来说:

掩码标志 (Mask Bit)

  • 定义:掩码标志是一个位标志,用来指示WebSocket帧中的有效载荷数据是否已经被掩码(即加密)。这个标志位于WebSocket帧头部的第一个字节中,它是第7个比特位(从右向左计数)。

  • :如果掩码标志设置为1,则表示有效载荷数据已经被掩码;如果掩码标志设置为0,则表示数据未被掩码。在客户端向服务器发送数据时,掩码标志总是设置为1;而在服务器向客户端发送数据时,掩码标志总是设置为0。

掩码键 (Masking Key)

  • 定义:掩码键是一个4字节的随机值,用于对客户端发送给服务器的数据进行掩码处理。掩码键紧随掩码标志之后出现在WebSocket帧头部。

  • 使用方法:掩码键用于对有效载荷数据进行XOR操作。具体而言,每4个字节的数据使用掩码键的一个字节来进行XOR操作。例如,第一个字节的数据与掩码键的第一个字节进行XOR,第二个字节的数据与掩码键的第二个字节进行XOR,依此类推。当数据长度不是4的倍数时,最后一个掩码键字节会被重复使用直到数据结束。

掩码操作示例

假设掩码键为 0x12 0x34 0x56 0x78,并且要发送的有效载荷数据为 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07,那么掩码操作过程如下:

  • 第1字节:0x00 XOR 0x12 = 0x12
  • 第2字节:0x01 XOR 0x34 = 0x35
  • 第3字节:0x02 XOR 0x56 = 0x56
  • 第4字节:0x03 XOR 0x78 = 0x7b
  • 第5字节:0x04 XOR 0x12 = 0x16 (掩码键循环)
  • 第6字节:0x05 XOR 0x34 = 0x37
  • 第7字节:0x06 XOR 0x56 = 0x5e
  • 第8字节:0x07 XOR 0x78 = 0x7f

因此,掩码后的数据为 0x12 0x35 0x56 0x7b 0x16 0x37 0x5e 0x7f

当服务器接收到这个掩码后的数据时,它会使用相同的掩码键来反掩码(解密)这些数据,从而恢复出原始数据。

掩码机制确保了客户端到服务器的数据不会在传输过程中被轻易读取,增加了通信的安全性。

  1. 数据传输
    • 双方可以开始发送数据帧。文本数据通常使用UTF-8编码,而二进制数据则按原样传输。
    • 控制帧用于特殊目的,比如关闭连接(Close帧)、ping和pong(Ping帧和Pong帧)等。

第五步: 连接关闭

  1. 关闭连接
    • 任何一方都可以发送一个Close帧来请求关闭连接。
    • 接收方接收到Close帧后,可以选择发送自己的Close帧作为响应。
    • 最终,双方都发送完数据后,会关闭TCP连接。

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

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

相关文章

《向量数据库指南》——AI应用长文本与RAG技术爬坡

技术爬坡 长文本的技术爬坡方向 推理质量不能有所下降,如何在保质保量的做长文本的推理,是一件非常困难的事。 解决了能力问题之后,还要解决贵且慢的问题。前面讲到两个瓶颈,一个是推理成本会特别高,一个是首token会特别慢。在一个阶段解决好这两个问题之后,待上下文窗口…

深度学习基础案例3--构建CNN卷积神经网络实现对不同天气的识别(测试集准确率百分之90+)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 基础阶段目标目标 熟悉CNN、RNN神经网络,了解yolo、transfomer等模型熟练使用Pytorch框架,了解tensorflow 本次目标 了解CNN神经网络…

使用ToDesk云电脑3个月,这5个功能点越用越爽!

在过去的三个月里,小埋 有幸 深度 体验了ToDesk云电脑这一创新科技产品,它不仅彻底改变了我的工作方式,还让我在日常学习和娱乐中享受到了前所未有的便捷与高效。 下面就跟着小埋,一起来看看 ToDesk云电脑使用体验极佳的五大功能特…

解决银河麒麟V10登录循环的方法

解决银河麒麟V10登录循环的方法 一:进入命令行二:删除.Xauthority文件三:重启系统 💖The Begin💖点点关注,收藏不迷路💖 在使用银河麒麟桌面操作系统V10时,有时可能会遇到一个令人头…

JavaScript - 对象

Array 数组 定义 var 变量名 new Array(元素列表);//方式一 var 变量名 [ 元素列表 ];//方式二 访问 arr[ 索引] 值; 属性 length : 设置或返回数组中元素的数量 方法 forEach() : 遍历数组中每个有值的元素&…

Spring cloud alibaba(一)nacos

一、注册中心 作用:解决微服务之间复杂的调用关系; 实现思路: 服务注册:就是将提供某个服务的模块信息注册到一个公共组件上去 服务发现:就是新注册这个服务模块能够及时的呗其它调用者发现,不管是服务新增…

前端开发中的大屏布局方案:使用 rem 单位与动态设置 html 的 font-size

使用 rem 单位与动态设置 html 的 font-size 前言 随着设备尺寸的多样化,网页需要能够在不同大小的屏幕上提供良好的用户体验。传统的布局方式(如使用 px)在不同分辨率下可能会导致布局失真。为了解决这个问题,我们可以通过动态…

微分方程(Blanchard Differential Equations 4th)中文版Section3.3

具有实特征值的线性系统的相图 在前面的部分,我们看到直线解在求解某些线性微分方程系统的通解中起着主导作用。为了求解这样的系统,我们首先使用代数方法计算系数矩阵的特征值和特征向量。当我们找到一个实特征值和一个相关的特征向量时,就可以写出对应的直线解。此外,在…

Element-02.组件-Table表格

一.常见组件-表格 二.具体操作 <template><el-table:data"tableData"borderstyle"width: 100%"><el-table-columnprop"date"label"日期"width"180"></el-table-column><el-table-columnprop&q…

使用Apache POI和POI-OOXML实现word模板文档自动填充功能

最近接到一个新的需求&#xff0c;用户创建好模板文件保存到模板库&#xff0c;然后使用在线文档编辑器打开模板时&#xff0c;将系统数据填充到模板文件并生成新的word文件&#xff0c;然后在线编辑&#xff0c;研究使用Apache POI和POI-OOXML实现了这个功能。 Maven依赖 <…

AI提效实例-借助AI高效生成Markdown格式的超链接

我在学习谷粒商城的过程中&#xff0c;每集都写一篇博客笔记&#xff0c;为了方便查找&#xff0c;把所有博客都汇总到一起谷粒商城笔记汇总&#xff0c;如下。 现在一共有142篇笔记。 之前每发表一篇就把地址记录下来&#xff0c;虽然麻烦&#xff0c;还可忍受。 后来有点懈…

Pcie学习笔记(24)

Ordering and Receive Buffer Flow Control 流量控制(FC)用于防止接收端缓冲区溢出&#xff0c;并使其符合定义的排序规则。请注意&#xff0c;请求者使用流量控制机制来跟踪代理中可用的队列/缓冲区空间&#xff0c;如图2-48所示。也就是说&#xff0c;流控制是点对点的(跨一…

模型优化之剪枝

文章目录 什么是神经网络剪枝剪枝的好处不同粒度的剪枝剪枝的分类非结构化剪枝结构化剪枝 哪些层的参数更容易被剪掉剪枝效果 什么是神经网络剪枝 神经网络剪枝 在训练期间删除连接密集张量将变得稀疏&#xff08;用零填充&#xff09;可以通过结构化块&#xff08; n m nm nm&…

【无标题】playbook的基本使用

1、使用ansible安装并启动ftp服务 [root1 ~]# vim /etc/ansible/hosts s0 ansible_ssh_host10.0.0.12 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s1 ansible_ssh_host10.0.0.13 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s2 ansible_s…

Android 12系统源码_屏幕设备(二)DisplayAdapter和DisplayDevice的创建

前言 在Android 12系统源码_屏幕设备&#xff08;一&#xff09;DisplayManagerService的启动这篇文章中我们具体分析了DisplayManagerService 的启动流程&#xff0c;本篇文章我们将在这个的基础上具体来分析下设备屏幕适配器的创建过程。 一、注册屏幕适配器 系统是在Disp…

43.x86游戏实战-DXX寻找吸怪坐标

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Xshell中弹出“ssh服务器拒绝了密码请再试一次”时,如何解决

在使用Xshell连接Ubuntu系统时&#xff0c;可能会弹出这个错误 可能原因如下​ 密码输入错误Ubantu系统默认禁止root用户登录ssh。 解决方法&#xff1a; 1. 先用root登录 (由于我买的是云服务器&#xff0c;所以拿这个来举例&#xff09; 注&#xff1a;要在本地shell中登录…

基于jqury和canvas画板技术五子棋游戏设计与实现(论文+源码)_kaic

摘 要 网络五子棋游戏如今面临着一些新的挑战和机遇。一方面&#xff0c;网络游戏需要考虑到网络延迟和带宽等因素&#xff0c;保证游戏的实时性和稳定性。另一方面&#xff0c;网络游戏需要考虑到游戏的可玩性和趣味性&#xff0c;以吸引更多的玩家参与。本文基于HTML5和Canv…

银河麒麟V10忘记Root密码怎么办?

银河麒麟V10忘记Root密码怎么办&#xff1f; 一&#xff1a;进入GRUB模式二&#xff1a;输入GRUB账号密码三&#xff1a;修改启动参数四&#xff1a;修改root密码五&#xff1a;重启系统六&#xff1a;验证root密码 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

就想刷题过?新手必看的华为认证题库最强背题经验技巧

华为认证作为网络和IT领域的重要资格认证&#xff0c;其难度不容小觑。许多考生为了顺利通过考试&#xff0c;选择背题库作为备考策略。 &#xff08;重点说一下啊&#xff0c;不提倡刷题&#xff0c;能学知识&#xff0c;把技术学透&#xff0c;肯定是最佳的。&#xff09; …