计网面试复习自用
五层:
-
应用层:应用层是最高层,负责为用户提供网络服务和应用程序。在应用层,用户应用程序与网络进行交互,发送和接收数据。典型的应用层协议包括HTTP(用于网页浏览)、SMTP(用于电子邮件)、FTP(文件传输协议)等。用户应用程序产生数据,这些数据被封装成应用层数据包。
-
传输层:传输层位于应用层之下,主要负责数据的可靠传输和端到端通信。常见的传输层协议包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的、面向连接的通信,确保数据的完整性和顺序,而UDP提供不可靠的、面向无连接的通信。传输层将应用层数据包封装成传输层数据包,添加源和目标端口信息。
-
网络层:网络层是网络通信的下一层,它负责数据包的路由和转发,以确保数据能够跨越不同网络段到达目标主机。网络层使用IP地址来标识主机和路由器的位置。网络层将传输层数据包封装成网络层数据包,并添加源和目标IP地址信息。网络层的设备,如路由器,负责根据目标地址决定数据包的路径。
- 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
- 物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。
在实际情况中,数据在这三个层次之间依次封装和解封装。例如,当您在网页浏览器中请求一个网页时,应用层生成HTTP请求,然后将其传递给传输层,通常使用TCP。传输层将数据包封装,并在数据包中添加源和目标端口信息。然后,传输层数据包传递给网络层,网络层将其封装,并在数据包中添加源和目标IP地址信息。最后,数据包在网络中路由和转发,经过网络层设备(如路由器),最终到达目标主机,然后在相反的顺序解封装,直到数据到达应用层,网页被显示在浏览器中。这个过程确保了数据的可靠传输和目标定位。
TCP的三次握手四次挥手
是的,三次握手和四次挥手是TCP(Transmission Control Protocol)协议中的重要概念,用于建立和终止TCP连接。
三次握手(Three-Way Handshake):
- 客户端向服务器发送一个SYN(同步)标志的数据包,表示客户端想要建立连接。
- 服务器收到客户端的SYN数据包后,回复一个ACK(确认)标志的数据包,同时也发送一个SYN标志的数据包,表示接受连接请求。
- 客户端收到服务器的ACK和SYN数据包后,回复一个ACK数据包,表示连接建立成功。此时,TCP连接已经建立。
四次挥手(Four-Way Handshake):
- 客户端发送一个FIN(结束)标志的数据包,表示不再发送数据。
- 服务器收到客户端的FIN数据包后,回复一个ACK数据包,表示确认收到客户端的结束请求。
- 服务器继续发送数据(如果有未发送完的数据),然后发送一个FIN数据包,表示服务器已经完成发送。
- 客户端收到服务器的FIN数据包后,回复一个ACK数据包,表示确认收到服务器的结束请求。此时,TCP连接被完全终止。
三次握手用于建立TCP连接,而四次挥手用于优雅地终止TCP连接。这些过程确保了数据的可靠传输和连接的安全关闭。
为什么四次挥手时服务端要发送两次,也就是为什么会有第三的个步骤
在TCP四次挥手中,服务端发送两次数据包的目的是确保数据的可靠传输和连接的正确终止。具体来说,第三个步骤(服务端发送第二个FIN数据包)是为了处理可能的延迟数据传输或未完成的数据包。让我详细解释:
-
客户端发送FIN:客户端首先发送一个带有FIN标志的数据包,表示不再发送数据,但仍愿意接收数据。
-
服务端发送ACK:服务端收到客户端的FIN后,发送一个ACK数据包,确认收到客户端的结束请求。
-
服务端继续传输:在一些情况下,服务端可能还有未发送完的数据,因此它继续发送数据,但这些数据不再包含应用层数据,而是用来填充TCP缓冲区的数据。
-
服务端发送第二个FIN:一旦服务端完成了所有数据的传输(包括填充的数据),它发送第二个FIN数据包,表示它已经完成数据传输,愿意关闭连接。
-
客户端发送ACK:客户端接收到服务端的第二个FIN后,发送一个ACK数据包,确认收到服务端的结束请求。此时,TCP连接被完全终止。
这个额外的步骤(第三个步骤)是为了确保在连接关闭之前,服务端有足够的时间将所有未完成的数据传输完毕。它也可以处理可能的数据包延迟或重排序的情况,以确保数据的可靠传输和连接的正确终止。通过这种方式,TCP提供了一种可靠的方式来结束连接,同时保证数据的完整性。
四次挥手时为什么有第三步
在一些情况下,服务端可能会在四次挥手的第三步(发送第二个FIN之前)继续发送数据,但这些数据通常是用来填充TCP缓冲区或处理未完成的数据传输的情况。以下是一些可能的案例:
-
延迟数据传输:在某些情况下,服务端可能会有一些数据包在等待传输给客户端,而在关闭连接之前,服务端希望确保这些数据包已经成功发送。这可以包括应用层数据的最后一部分,如果这些数据在连接关闭之前没有被传输,它们可能会丢失。服务端继续传输这些数据,直到它们全部被发送。
-
TCP缓冲区数据:TCP协议使用缓冲区来管理数据的传输。有时,这些缓冲区可能包含尚未发送的数据或等待确认的数据。服务端需要等待客户端确认接收这些数据,以确保它们已经成功传输。
-
未确认数据包:如果服务端发送了一些数据包但尚未收到客户端的确认,它可能会继续发送这些数据包,以确保客户端已经成功接收它们。这是TCP的可靠性机制的一部分。
总之,服务端在第三步(发送第二个FIN之前)继续发送数据的情况通常是为了处理未完成的数据传输,确保数据的可靠传输,以及正确终止连接。这有助于避免数据的丢失或不完整,同时保持连接的可靠性。
例子:
-
客户端发送消息:用户在前端输入并发送一条聊天消息。
-
后端接收消息:Spring Boot应用接收到这条消息。
-
处理消息:Spring Boot应用可能需要对这条消息进行一些处理,例如验证、加工或路由。这个处理过程可能需要一些时间,特别是如果有多个用户在同时发送消息,Spring Boot需要适当地处理所有这些消息。
-
实际传输:一旦后端完成了消息的处理,它会将这条消息发送给聊天中的其他用户。这个传输是实时的,但是在第3步中可能存在一些延迟,因为后端需要完成消息的处理。
所以,延迟数据传输在这个示例中是指在消息从客户端发送到实际传递给其他用户之间的时间延迟,这个延迟是由于消息在后端进行处理而引起的。这个延迟可以是短暂的,但在一些繁忙的聊天环境中,可能会积累一些时间。希望这个解释更加清晰
在日常生活中,有许多应用程序示例可以帮助解释客户端发起的第一次挥手操作。以下是一些具体操作的示例:
-
Web浏览器关闭标签页:当您在Web浏览器中打开一个网页标签页并完成了阅读后,您可以通过单击标签页上的关闭按钮来关闭该标签页。这个操作等同于客户端(浏览器)发起的第一次挥手,客户端表明不再需要与该网站的连接。
-
手机应用关闭:当您使用手机上的应用程序(例如社交媒体应用、游戏、电子邮件应用等)时,当您不再需要应用程序时,您可以通过按下主屏幕按钮、滑动应用程序关闭或使用操作系统提供的应用程序关闭功能来关闭应用程序。这是类似于客户端发起的第一次挥手,表明客户端不再需要与服务端的连接(服务器)。
-
电子邮件客户端:在电子邮件应用程序中,当您完成了发送或接收邮件的操作并关闭应用程序时,这等同于客户端发起的第一次挥手。客户端表明它不再需要与电子邮件服务器的连接。
-
文件传输应用程序:在文件传输应用程序中,例如FTP或P2P文件共享应用程序,当您完成文件上传或下载操作后,关闭应用程序就像客户端发起的第一次挥手,表示客户端不再需要与服务器的连接,因为文件传输已经完成。
TCP为什么不是两次握手
-
双向连接确认:三次握手确保了双方都同意建立连接。客户端发起第一次握手,服务端回应第二次握手,然后客户端再回应第三次握手。这种双向确认减少了因意外连接或恶意攻击引起的不必要连接。
-
避免失效连接的问题:如果TCP只使用两次握手,客户端发送第一次握手,服务端回应第二次握手后建立连接。但如果第一次握手丢失,客户端将不知道连接是否建立,而服务器已经认为连接已建立。这可能导致不一致性和潜在的问题。通过三次握手,客户端能够确认连接已建立。2.1连接不一致性:假设客户端发送了第一次握手,但该握手丢失,服务器未收到。客户端不会知道连接建立的情况,而服务器会认为连接已经建立。这会导致不一致性,因为客户端和服务器之间的连接状态不匹配。2.2资源泄漏:客户端未能知道连接的状态,可能会导致资源泄漏。如果客户端在认为连接已经建立的情况下开始发送数据,但实际上连接并未建立,服务器将浪费资源尝试接收和处理这些数据。2.3数据不完整性:如果连接状态不一致,客户端可能会认为连接已建立,但服务器可能不会接收客户端的数据。这可能导致客户端的数据丢失或未处理,导致数据不完整性。2.4安全性问题:连接不一致性可能会被恶意利用,例如中间人攻击,其中攻击者可能会伪造一个连接并开始发送数据,而客户端不知道连接状态不正确,从而可能接受来自攻击者的数据。
Http与Https之间的区别:
1 http 协议是免费使用的,而 https 协议需要到CA机构申请证书,需要缴纳费用
2 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl/tls 加密传输协议,信息是密文
3 http 的连接很简单,是无状态的;https 协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全
4 和 http 通信相比,https 通信会由于加减密处理消耗更多的CPU和内存资源
5 http 和 https 使用的端口也不一样,前者是80,后者是443
什么事对称加密与非对称加密,以及常见的加密协议
对称加密和非对称加密是两种不同的加密技术,用于保护数据的机密性。它们在加密和解密过程中使用不同的密钥体系,以及具有不同的用途。
-
对称加密:
- 使用相同的密钥来加密和解密数据。
- 加密和解密速度通常较快,因为使用的密钥简单,但存在共享密钥的问题。
- 适用于大量数据的加密,例如数据传输的加密和存储设备的加密。
- 常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)和3DES等。
-
非对称加密:
- 使用一对密钥,包括公钥和私钥,其中公钥用于加密,私钥用于解密。
- 加密和解密速度通常较慢,因为使用的密钥复杂,但提供了更好的安全性。
- 适用于密钥交换、数字签名和身份验证等场景。
- 常见的非对称加密算法包括RSA、DSA、ECC(椭圆曲线密码学)等。
常见的加密协议通常结合了对称和非对称加密技术以提供综合的安全性,其中对称加
Tcp的长连接短连接
连接和短连接:
- HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
- HTTP/1.1起默认使用长连接。要使用长连接,客户端和服务器的HTTP响应头部的Connection要设置为
keep-alive
,才能支持长连接
GET与POST的区别
- GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL拼接传递,POST参数通过请求体传递
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。{1GET请求对参数的数据类型有限制,因为它们需要出现在URL中,因此只能包含ASCII字符,而对于非ASCII字符(如汉字或特殊符号),需要进行URL编码。2POST请求的参数通常包含在请求的正文中,因此可以包含各种数据类型,包括二进制数据、JSON、XML等,而不仅限于ASCII字符。
例子: 假设您正在开发一个网站的搜索功能。如果用户在搜索框中输入了搜索关键字"购物",则可以使用GET请求来向服务器发送请求,如下所示:
perlCopy code
GET http://example.com/search?keyword=%E8%B4%AD%E7%89%A9
在这个例子中,搜索关键字"购物"被URL编码为
%E8%B4%AD%E7%89%A9
,以适应GET请求的要求。这个关键字以明文形式显示在URL中。 - }
TCP和UDP区别和应用
- TCP是可靠传输,UDP是不可靠传输;
- TCP面向连接,UDP无连接,即发送数据之前不需要建立连接
- TCP传输速度相对UDP较慢;
- TCP连接只能是一对一的(端到端);UDP支持一对一、一对多、多对一和多对多的通信方式。
浏览器输入URL到页面返回详细过程
1 输入网址 输入要访问的网址,即URL
2 缓存解析 浏览器获取URL后,先去缓存中查找资源,从浏览器缓存-系统缓存-路由器缓存中查看; 如果有就从缓存中显示界面,不再发送请求; 如果没有,则发送http请求;
3 域名解析 发现缓存中没有资源,发送http请求; 在发送http请求之前,需要进行DNS解析(域名解析); DNS解析:域名到IP地址的转换过程,域名的解析工作由DNS服务器完成,解析后可以获取域名相应的IP地址;
4 tcp连接 三次握手在域名解析后,浏览器向服务器发起了http请求,tcp连接; 因为tcp协议时面向连接的,所以在传输数据前必须建立连接,即三次握手;tcp连接建立后,浏览器开始向服务器发送http请求报文
5 收到请求 服务器收到浏览器发送的请求信息,返回响应
6 页面渲染 浏览器收到服务器发送的响应,显示页面内容。
什么是Cookie和Session,二者区别
什么是SQL注入
SQL注入就是将原本的SQL语句的逻辑结构改变,使得SQL语句的执行结果和原本开发者的意图不一样;
比如说我们通过账号密码进行登录,首先需要进行查询判断:
"select * from t_user where name = "张三" and password = "123456"
如果我们把or 1 = 1作为拼接在密码末尾传入进来,执行查询的时候sql会变成
"select * from t_user where name = "张三" and password = "123456" or 1 = 1
密码永远都是成立的,所以,前面无论密码正确与否都会成功登录
我们使用预编译语句就可以避免这个问题,例如:JDBC中的PrepareStatement或MyBatis中#{}
将sql预编译,传参数的时候,不会改变sql语句结构,就可以避免注入。
相关文章:

计网面试复习自用
五层: 应用层:应用层是最高层,负责为用户提供网络服务和应用程序。在应用层,用户应用程序与网络进行交互,发送和接收数据。典型的应用层协议包括HTTP(用于网页浏览)、SMTP(用于电子邮…...

【Android 性能优化:内存篇】——WebView 内存泄露治理
背景:笔者在公司项目中优化内存泄露时发现WebView 相关的内存泄露问题非常经典,一个 Fragment 页面使用的 WebView 有多条泄露路径,故记录下。 Fragment、Activity 使用WebView不释放 项目中一个Fragment 使用 Webview,在 Fragm…...

C++入门(一)
文章目录 前言一、C的发展史二、c关键字二、c命名空间1、代码演示2、::(域作用限定符) 和namespace(命名空间)3、命名空间可以嵌套使用4、同一个工程中的相同名字的命名空间 三、c的输入&&输出1、iostream(输入…...
C#控制台程序读取输入按键非阻塞方式
参考内容: http://www.dutton.me.uk/2009-02-24/non-blocking-keyboard-input-in-c/ 相关代码: while (true) {if (Console.KeyAvailable){ConsoleKeyInfo key Console.ReadKey(true);switch (key.Key){case ConsoleKey.F1:Console.WriteLine("Y…...

小程序框架->框架,视图层,生命周期(逻辑层)
框架视图层生命周期(逻辑层) 1.框架 小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。 整个小程序框架系统分为两部分:**[逻辑层](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/)…...

Spring framework Day14:配置类的Lite模式和Full模式
前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说,Lite模式是指较为简洁、轻量级的配置,而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能,以提高系统的运行效率和响应…...

公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用
当企业需要进行大数据可视化看板的设计和开发时,除了Excel,还有许多其他强大且适合大数据可视化的软件工具。以下是几种常用的好用软件,以及它们的特点和优势,供您参考。 一、Datainside 特点和优势: - **易于使用**…...

掌握深入挖掘数据本质的方法
文章目录 掌握深入挖掘数据本质的方法1. 确定数据类型2. 数据清洗3. 数据可视化4. 探索性数据分析5. 特征工程6. 机器学习算法7. 自然语言处理 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…...

MyBatisPlus的学习项目页面
MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息 类名驼峰转下划线作为表名 名为id的字段作为主键 变量名驼峰转下划线作为表的字段名 常见注解 TableName:用来指定表名 Tableld:用来指定表中的主键字段信息 Tabl…...

基于EtherCAT的机器人多轴同步运动控制
随着工业自动化的发展,机器人在生产线上的应用越来越广泛。为了实现高效、精确的运动控制,机器人的多轴运动必须能够实现同步操作,它能够提高机器人的运动精度和稳定性,实现更高效的生产线操作。同时,它也为机器人的协…...

彩虹易支付 9.27 最新版加订单查询 sy 更新版
彩虹易支付 9.27 最新版加订单查询 sy 更新版 修复客服 2023/09/25: 1. 新增支付宝红包支付插件 2. 新增支付宝 APP 支付转 H5 支付 3. 更新了几个支付插件 安装教程: 环境:php7.2 上传后访问域名进行安装即可 源码下载:ht…...
python树状打印项目路径
学习这个的需求来自于,我想把项目架构告诉gpt问问它,然后不太会打印项目架构😂 联想到Linux的tree指令 import osclass DirectoryTree:def __init__(self, path):self.path pathdef print_tree(self, methoddefault):if method default:sel…...

mysql误删误操作恢复数据,比传统方式和binlog2sql更快速用的恢复方式-reverse_sql恢复数据(单表多表)
场景: 误操作删除了某个表的数据,本文只讲工具的使用,首先自己通过mysqlbinlog或者记录找到误操作的时间范围:开始时间和结束时间,已经确定好是哪个binlog了下面以误删为例。 查看binlog是否开启 show variables like …...

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读
论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE,一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务: 合作主体共同提供对环境的更全面的观察整体观察可以作为…...

MySQL连接方式: Unix套接字 TCP/IP
今天连接mysql数据库使用mysql -u root -p指令的时候遇到了这个问题: 解决之后来总结一下mysql的连接方式 文章目录 1. Unix套接字(或Windows命名管道)特点:场景: 2. TCP/IP特点:场景: 3.对比总…...

TSINGSEE青犀智慧城市数字基座解决方案,助力城市数字化转型
一、行业背景 我国“十四五”规划纲要中提出,分级分类推进新型智慧城市建设,将物联网感知设施、通信系统等纳入公共基础设施统一规划建设,推进市政公用设施、建筑等物联网应用和智能化改造。完善城市信息模型平台和运行管理服务平台…...

【JavaEE】初识网络
网络初识 文章目录 网络初识网络发展史独立模式网络互连局域网LAN广域网 网络通信基础IP地址端口号格式 协议五元组协议分层OSI七层模型TCP/IP五(四)层协议1.物理层2.数据链路层3.网络层4.传输层5.应用程序 网络设备所在的分层封装和分用例子发送方接收方…...

UGUI交互组件ScrollBar
一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值,范围为 0.0 到 1.0Suze控制柄…...
DamiBus v0.51 发布
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传…...

[OpenJDK:环境变量配置]:填充Profile并修改默认配置
文章目录 一:背景:安装hadoop启动提示未找到JAVA_HOME1.1:配置Hadoop的Java环境变量 二:排查-定位解决2.1:查看环境变量配置发现没有JAVA_HOME2.1.1:解决:查看java安装目录2.1.2:再次…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...

轻量安全的密码管理工具Vaultwarden
一、Vaultwarden概述 Vaultwarden主要作用是提供一个自托管的密码管理器服务。它是Bitwarden密码管理器的第三方轻量版,由国外开发者在Bitwarden的基础上,采用Rust语言重写而成。 (一)Vaultwarden镜像的作用及特点 轻量级与高性…...