【TCP】rfc文档
tcp协议相关rfc有哪些
TCP(传输控制协议)是一个复杂的协议,其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表,按照时间顺序排列,涵盖了从基础定义到高级特性和优化的各个方面:
基础定义
- RFC 793 - Transmission Control Protocol (1981)
- 最初的TCP标准定义,描述了TCP的基本功能和协议细节。
窗口和确认机制
- RFC 813 - Window and Acknowledgment Strategy in TCP (1982)
- 讨论了TCP窗口和确认机制的实现策略,以及使用这些机制时可能遇到的问题和解决方法。
最大分段大小 (MSS)
- RFC 879 - The TCP Maximum Segment Size Option and Related Topics (1983)
- 讨论了TCP最大分段大小(MSS)选项及其与IP分段大小的关系。
拥塞控制
- RFC 896 - Congestion Control in IP/TCP Internetworks (1984)
- 探讨了网络拥塞问题以及TCP如何进行拥塞控制。
- RFC 2001 - TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms (1996)
- 描述了TCP拥塞控制的四种主要机制:慢启动、拥塞避免、快速重传和快速恢复。
- RFC 2581 - TCP Congestion Control (1999)
- 更新了RFC 2001,提供了更详细的拥塞控制算法说明。
- RFC 3390 - Increasing TCP’s Initial Window (2002)
- 提出了增加TCP初始窗口大小的方法,以提高短连接的性能。
- RFC 5681 - TCP Congestion Control (2009)
- 进一步更新了TCP拥塞控制算法,包括慢启动、拥塞避免、快速重传和快速恢复。
高性能扩展
- RFC 1323 - TCP Extensions for High Performance (1992)
- 引入了窗口缩放、时间戳选项和选择性确认(SACK)等高性能扩展。
- RFC 2018 - TCP Selective Acknowledgment Options (1996)
- 描述了选择性确认(SACK)选项,允许接收方报告哪些数据段已经成功接收,从而减少不必要的重传。
- RFC 2883 - An Extension to the Selective Acknowledgement (SACK) Option for TCP (2000)
- 扩展了SACK选项,提高了其效率和可靠性。
重传计时器
- RFC 2988 - Computing TCP’s Retransmission Timer (2000)
- 讨论了TCP重传计时器的计算方法,确保数据包在重传前等待合适的时间。
快速打开
- RFC 7413 - TCP Fast Open (2014)
- 引入了TCP Fast Open(TFO)机制,允许在三次握手过程中同时发送数据,减少延迟。
其他优化和扩展
- RFC 6247 - Five New TCP Options and Their Use in Scenarios with Multiple Addresses per Endpoint (2011)
- 讨论了TCP协议的扩展性和兼容性问题,特别是支持多个地址的场景。
- RFC 7323 - TCP Extensions for High Performance (2014)
- 更新了RFC 1323,进一步优化了TCP的高性能特性。
- RFC 8312 - CUBIC for Fast Long-Distance Networks (2018)
- 描述了CUBIC拥塞控制算法,特别适用于长距离网络。
问题和解决方案
- RFC 2525 - Known TCP Implementation Problems (1999)
- 列举了一些已知的TCP实现问题,并提供了相应的解决方案。
安全性
- RFC 5961 - Improving TCP’s Robustness to Blind In-Window Attacks (2010)
- 提出了增强TCP对盲窗口攻击的鲁棒性的方法。
其他相关RFC
- RFC 792 - Internet Control Message Protocol (1981)
- 定义了ICMP协议,用于在网络中传递控制消息和错误报告。
- RFC 1122 - Requirements for Internet Hosts - Communication Layers (1989)
- 规定了互联网主机在通信层的要求,包括TCP/IP协议的实现。
- RFC 1123 - Requirements for Internet Hosts - Application and Support (1989)
- 规定了互联网主机在应用层和支持层的要求,包括TCP/IP协议的应用。
这些RFC文档涵盖了TCP协议的各个方面,从基础定义到高级特性和优化,为理解和实现TCP提供了全面的指导。如果你对某个特定方面感兴趣,可以进一步阅读相关RFC文档。
rfc学习
rfc文档快速入口
rfc中文文档
https://www.rfc-editor.org/
https://www.ietf.org/rfc/
rfc813
在TCP协议中,累积确认(Cumulative Acknowledgments)和延迟确认(Delayed Acknowledgments)是两种不同的确认策略,它们各自有着特定的目的和作用。下面详细解释这两种确认方式的区别:
累积确认 (Cumulative Acknowledgments)
- 定义:累积确认意味着接收方只确认它已经成功接收到的最高序列号的数据段。换句话说,接收方通过一个单一的确认消息告诉发送方它已连续接收到的所有数据。
- 工作原理:假设接收方收到了序列号为1到1000的所有数据段,并且这些数据段是连续的,那么接收方将发送一个确认号为1001的ACK,表示它已经接收到所有直到但不包括序列号1001的数据。
- 优点:
- 减少网络流量:通过一次性确认多个数据段,减少了网络中的确认数量。
- 简化实现:只需要跟踪最高的已接收序列号,简化了接收方的实现。
延迟确认 (Delayed Acknowledgments)
- 定义:延迟确认是指接收方不会立即对每个接收到的数据段进行确认,而是等待一段时间后再发送确认消息。这个时间间隔通常不超过500毫秒。
- 工作原理:如果接收方在一个短暂的时间窗口内(例如200到300毫秒)接收到更多的数据段,它可以将多个数据段的确认合并成一个确认消息来发送。此外,如果在这个时间内有反向的数据需要发送,接收方可以将确认信息附加到该数据段上一起发送,从而避免单独发送确认带来的额外开销。
- 优点:
- 减少确认消息的数量:通过延迟发送确认,可以减少单独的确认消息,尤其是在双方都有持续的数据交换时。
- 提高效率:结合反向数据传输,可以有效利用网络资源,减少不必要的独立确认消息。
- 发送延迟确认的条件
rfc813 第五部分5. Improved Acknowledgement Algorithms
这一块是针对delay ack的描述,延迟ack的发送必须满足两个条件。图中横线处
区别与互补
-
区别:
- 累积确认关注的是确认的内容——确认的是连续接收到的所有数据段的最大序列号。
- 延迟确认关注的是确认的时间——何时发送确认,以优化确认消息的数量和频率。
-
互补作用:
- 实际应用中,这两种机制通常是互补使用的。接收方使用累积确认来高效地告知发送方哪些数据已经被接收,同时利用延迟确认来进一步优化确认消息的发送时机,从而达到更高的通信效率。
结合使用
在实际的TCP实现中,累积确认和延迟确认通常会结合使用。例如,接收方可能会累积确认所有接收到的数据段,并选择性地延迟发送这些确认,直到达到一定的时间阈值或有反向数据要发送。这样既保证了确认的准确性,又提高了网络资源的使用效率。
相关RFC
- RFC 813:讨论了确认机制的具体实现策略,包括如何避免由于过于频繁的确认导致的问题。
- RFC 1122:规定了互联网主机在通信层的要求,其中包括TCP/IP协议的实现,也涉及到了确认机制。
希望这些信息能帮助你更好地理解累积确认和延迟确认之间的区别及其在TCP协议中的作用。如果你有更多具体问题或需要进一步的信息,请随时提问。
rfc 793
相关文章:
【TCP】rfc文档
tcp协议相关rfc有哪些 TCP(传输控制协议)是一个复杂的协议,其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表,按照时间顺序排列,涵盖了从基础定义到高级特性和优化的各个方面: 基…...
Linux探秘坊-------3.开发工具详解(1)
1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim (因为不支持鼠标,通常 使用键盘上的箭…...
如何在Python中进行JSON数据的序列化和反序列化?
在Python中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python内置的json模块提供了简单易用的方法来实现数据的序列化和反序列化。下面将详细介绍如何…...
SpringMVC (1)
目录 1. 什么是Spring Web MVC 1.1 MVC的定义 1.2 什么是Spring MVC 1.3 Spring Boot 1.3.1 创建一个Spring Boot项目 1.3.2 Spring Boot和Spring MVC之间的关系 2. 学习Spring MVC 2.1 SpringBoot 启动类 2.2 建立连接 1. 什么是Spring Web MVC 1.1 MVC的定义 MVC 是…...
Redis 3.2.1在Win10系统上的安装教程
诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要,也可以从官网下载:https://github.com/MicrosoftArchive/redis/releases 这个是微软以前维护的Windows版Redis安装包,如果想要比较新的版本可以从别人维护的项目里下(https://…...
springboot医院信管系统
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
A6.Springboot-LLama3.2服务自动化构建(三)——编写Pipeline构建仓库初始化脚本
下面我们接着上一篇文章《A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置》继续往下分析,编写Pipeline构建脚本。 一、统一Shell执行环境 Jenkins执行Shell脚本时,会在Jenkins节点上创建一个临时的环境来执行该脚本。这个环境包含了Jenki…...
Android 10.0 自定义Window窗口层级新增Type类型功能实现
1.前言 在10.0的系统rom定制化开发过程中,在产品开发过程中,需要新增Window窗口类型来显示 特殊的窗口层级,Window窗口就是根据Type类型来显示的,所以接下来需要新增Type类型来 新增Window窗口显示类型,如图 2.自定义Window窗口层级新增Type类型功能实现的核心类 framew…...
Linux中的基本指令(一)
一、Linux中指令的存在意义 Linux中,通过输入指令来让操作系统执行,以此达到控制操作系统的目的,类似于Windows中的双击,右键新建文件,新建文件夹等 1.补:关于屏幕的几个操作指令 ①清屏指令 clear 回…...
Ruby语言的循环实现
Ruby语言的循环实现深入探讨 在程序设计中,循环是一种常见的控制结构,用于重复执行某些代码块。不同的编程语言提供了不同类型的循环结构,以满足不同的需求。Ruby是一种灵活且易于使用的编程语言,其循环实现方式独具一格…...
使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用
首先服务器上需要安装docker已经docker-compose,如果没有,可以参考我之前写的文章进行安装。 https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502 1.下载并启动elk容器 先创建一个网关,让所有的容器共用此网…...
《Keras 3 在 TPU 上的肺炎分类》
Keras 3 在 TPU 上的肺炎分类 作者:Amy MiHyun Jang创建日期:2020/07/28最后修改时间:2024/02/12描述:TPU 上的医学图像分类。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…...
团体程序设计天梯赛-练习集——L1-012 计算指数
前言 这道题简单至极,几行代码就全都解决了。这次多来几个写法; L1-012 计算指数 真的没骗你,这道才是简单题 —— 对任意给定的不超过 10 的正整数 n,要求你输出 2 的n次方 。不难吧? 输入格式: 输入…...
【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…...
深度学习篇---数据集分类
文章目录 前言第一部分:VOC数据集标签、COCO数据集格式1.VOC数据集标签的特点及优缺点特点优点缺点 2.COCO数据集标签的特点及优缺点特点优点缺点 3.YOLO数据集标签的特点及优缺点特点优点缺点 第二部分:VOC格式和YOLO格式1.VOC格式3.YOLO格式3.区别(1)文…...
力扣hot100之螺旋矩阵
class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:# 用四个数对应4个遍历的方向[0, 1, 2, 3] - [右,下,左,上]go_state 0 # 起始必须向右# record_matrix [[0] * n for _ in range(m)]n_0, n_1, n_2, n_3 …...
嵌入式知识点总结 C/C++ 专题提升(一)-关键字
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…...
Android 高版本如何获取App安装列表?
有个需求需要获取App内的安装列表,但是现在在高版本Android中,只能获取到一部分App效果,我获取的代码如下: val calendar Calendar.getInstance()val packageManager context.packageManagerval usageStatsManager context.getSystemService(Context.USAGE_STATS_SERVICE) …...
StarGAN:原理、用途及最新发展
一、引言 StarGAN是一种具有广泛应用的生成模型,具有同时生成多种类别数据的能力。它由Yunjey Choi等人在2017年提出,旨在实现图像多域间迁移,尤其适用于人脸属性转换。StarGAN的提出,标志着生成对抗网络(Generative A…...
TCP报文格式与核心机制
TCP与UDP都是传输层的重要协议,TCP的特性包括有连接、可靠传输、面向字节流、全双工。 TCP的报文格式如下: 一、报文格式 1.源端口号、目的端口号 源端口和目的端口是五元组中重要的两个性质,源端口即数据是从哪里来的,目的端…...
【2024年华为OD机试】 (B卷,100分)- 金字塔,BOSS的收入(Java JS PythonC/C++)
一、问题描述 微商模式收入计算 题目描述 微商模式中,下级每赚 100 元就要上交 15 元。给定每个级别的收入,求出金字塔尖上的人的收入。 输入描述 第一行输入 N,表示有 N 个代理商上下级关系。接下来输入 N 行,每行三个数&am…...
缓存、数据库双写一致性解决方案
双写一致性问题的核心是确保数据库和缓存之间的数据同步,以避免缓存与数据库数据不同步的问题,尤其是在高并发和异步环境下。本文将探讨双写一致性面临的主要问题和解决方案,重点关注最终一致性。 本文讨论的是最终一致性问题 双写一致性面…...
开放银行数据保护与合规实践案例
总体原则 开放银行的数据处理基本原则指的是数据处理者在数据生命周期的各阶段进行各种数 据处理时均应遵循的根本准则,是指导监管机构制定规范、进行管理以及开放银行进 行具体数据处理行为的纲领。根据《民法典》《个人信息保护法》《数据安全法》 《网络安全法…...
51c自动驾驶~合集47
我自己的原文哦~ https://blog.51cto.com/whaosoft/13083194 #DreamDrive 性能爆拉30%!英伟达:时空一致下的生成重建大一统新方案~ 从自车的驾驶轨迹中生成真实的视觉图像是实现自动驾驶模型可扩展训练的关键一步。基于重建的方法从log中生成3D场景…...
2024年AI与大数据技术趋势洞察:跨领域创新与社会变革
目录 引言 技术洞察 1. 大模型技术的创新与开源推动 2. AI Agent 智能体平台技术 3. 多模态技术的兴起:跨领域应用的新风口 4. 强化学习与推荐系统:智能化决策的底层驱动 5. 开源工具与平台的快速发展:赋能技术创新 6. 技术安全与伦理:AI技术的双刃剑 7. 跨领域技…...
【protobuf】二、proto3语法详解①
文章目录 前言Ⅰ. 字段规则Ⅱ. 消息类型的定义和使用1、定义2、使用1️⃣消息类型可作为字段类型使⽤2️⃣可导入其他 .proto 文件的消息并使用 -- import 3、创建通讯录 2.0 版本的 .proto 文件4、通讯录 2.0 版本的读写实现 -- 第一种验证方式5、decode选项 -- 第二种验证方式…...
React 中hooks之useLayoutEffect 用法总结以及与useEffect的区别
React useLayoutEffect 1. useLayoutEffect 基本概念 useLayoutEffect 是 React 的一个 Hook,它的函数签名与 useEffect 完全相同,但它会在所有的 DOM 变更之后同步调用 effect。它可以用来读取 DOM 布局并同步触发重渲染。 2. useLayoutEffect vs us…...
实战经验:使用 Python 的 PyPDF 进行 PDF 操作
文章目录 1. 为什么选择 PyPDF?2. 安装 PyPDF3. PDF 文件的合并与拆分3.1 合并 PDF 文件3.2 拆分 PDF 文件 4. 提取 PDF 文本5. 修改 PDF 元信息6. PDF 加密与解密6.1 加密 PDF6.2 解密 PDF 7. 页面旋转与裁剪7.1 旋转页面7.2 裁剪页面 8. 实战经验总结 PDF 是一种非…...
数据结构与算法之排序: LeetCode 15. 三数之和 (Ts版)
三数之和 https://leetcode.cn/problems/3sum/description/ 描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0请你返回所有和为 0 且不重复的三元…...
51c嵌入式~单片机~合集6
我自己的原文哦~ https://blog.51cto.com/whaosoft/13127816 一、STM32单片机的知识点总结 本文将以STM32F10x为例,对标准库开发进行概览。主要分为三块内容: STM32系统结构寄存器通过点灯案例,详解如何基于标准库构建STM32工程 STM3…...
SQL Server Management Studio 表内数据查询与删除指令
查询指令 //select * from 表名称 where 列名称 数据名称 select * from Card_Info where num CC3D4D删除指令,删除数据库有风险,操作不可逆,建议删除前备份,以免删错。 //Delete * from 表名称 where 列名称 数据名称 Delete f…...
Timesheet.js - 轻松打造炫酷时间表
Timesheet.js - 轻松打造炫酷时间表 前言 在现代网页设计中,时间表是一个常见的元素,用于展示项目进度、历史事件、个人经历等信息。 然而,创建一个既美观又功能强大的时间表并非易事。 幸运的是,Timesheet.js 这款神奇的 Java…...
产品经理面试题总结2025【其一】
一、产品理解与定位 1、你如何理解产品经理这个角色? 作为一名互联网产品经理,我理解这个角色的核心在于成为产品愿景的制定者和执行的推动者。具体来说,产品经理是连接市场、用户和技术团队之间的桥梁,负责理解市场需求、用户痛…...
第16章:Python TDD实现多币种货币运算
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
【Web】2025-SUCTF个人wp
目录 SU_blog SU_photogallery SU_POP SU_blog 先是注册功能覆盖admin账号 以admin身份登录,拿到读文件的权限 ./article?filearticles/..././..././..././..././..././..././etc/passwd ./article?filearticles/..././..././..././..././..././..././proc/1…...
C++实现矩阵Matrix类 实现基本运算
本系列文章致力于实现“手搓有限元,干翻Ansys的目标”,基本框架为前端显示使用QT实现交互,后端计算采用Visual Studio C。 目录 Matrix类 1、public function 1.1、构造函数与析构函数 1.2、获取矩阵数值 1.3、设置矩阵 1.4、矩阵转置…...
【GORM】初探gorm模型,字段标签与go案例
GORM是什么? GORM 是一个Go 语言 ORM(对象关系映射)库,它让我们可以使用结构体来操作数据库,而无需编写SQL 语句 GORM 模型与字段标签详解 在 GORM 中,模型是数据库表的抽象表示,字段标签&am…...
html全局遮罩,通过websocket来实现实时发布公告
1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…...
基于VSCode+CMake+debootstrap搭建Ubuntu交叉编译开发环境
基于VSCodeCMakedebootstrap搭建Ubuntu交叉编译开发环境 1 基于debootstrap搭建目标系统环境1.1 安装必要软件包1.2 创建sysroot目录1.3 运行debootstrap1.4 挂载必要的虚拟文件系统1.5 复制 QEMU 静态二进制文件1.6 进入目标系统1.7 使用目标系统(以安装zlog为例&a…...
C#中System.Text.Json:从入门到精通的实用指南
一、引言 在当今数字化时代,数据的高效交换与处理成为软件开发的核心环节。JSON(JavaScript Object Notation)凭借其简洁、轻量且易于读写的特性,已然成为数据交换领域的中流砥柱。无论是前后端数据交互,还是配置文件…...
【深度学习】Huber Loss详解
文章目录 1. Huber Loss 原理详解2. Pytorch 代码详解3.与 MSELoss、MAELoss 区别及各自优缺点3.1 MSELoss 均方误差损失3.2 MAELoss 平均绝对误差损失3.3 Huber Loss 4. 总结4.1 优化平滑4.2 梯度较好4.3 为什么说 MSE 是平滑的 1. Huber Loss 原理详解 Huber Loss 是一种结合…...
Maven下载配置
目录 Win下载配置maven的环境变量 Mac下载安装配置环境变量 MavenSetting.xml文件配置 Win 下载 https://maven.apache.org/ 在主页面点击Download 点击archives 最好不要下载使用新版本,我使用的是maven-3.6.3,我们点击页面下方的archives࿰…...
JS基础(5):运算符和语句
一.运算符 1.赋值运算符 加减乘除都是一样的,,-,*,/ 2.一元运算符:经常用来计数 自增: 每次只能加一 自减:-- 前置自增 后置自增 结…...
游戏引擎学习第81天
仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…...
网络安全 | 什么是正向代理和反向代理?
关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…...
前缀和——模板 二维前缀和
一.题目描述 【模板】二维前缀和_牛客题霸_牛客网 二.题目解析 这道题和上一道题有点异曲同工之妙。输入一个m行n列的矩阵,然后进行q次操作,每次操作输入4个数,作为两个点的坐标,计算这两个点为对角线的矩阵的和。 三.算法原理 …...
oracle使用case when报错ORA-12704字符集不匹配原因分析及解决方法
问题概述 使用oracle的case when函数时,报错提示ORA-12704字符集不匹配,如下图,接下来分析报错原因并提出解决方法。 样例演示 现在有一个TESTTABLE表,本表包含的字段如下图所示,COL01字段是NVARCHAR2类型࿰…...
高等数学学习笔记 ☞ 定积分与积分公式
1. 定积分的基本概念 1.1 定积分的定义 1. 定义:设函数在闭区间上有界。在闭区间上任意插入若干个分点,即, 此时每个小区间的长度记作(不一定是等分的)。然后在每个小区间上任意取,对应的函数值为。 为保证每段的值(即矩形面积)无…...
MLMs之Agent:Phidata的简介、安装和使用方法、案例应用之详细攻略
MLMs之Agent:Phidata的简介、安装和使用方法、案例应用之详细攻略 目录 Phidata简介 Phidata安装和使用方法 1、安装 2、使用方法 (1)、认证 (2)、创建 Agent (3)、运行 Agent (4)、Agent Playground Phidata 案例应用 1、多工具 Agent 2、多模态 Agent …...
如何在不暴露MinIO地址的情况下,用Spring Boot与KKFileView实现文件预览
在现代Web应用中,文件预览是一项常见且重要的功能。它允许用户在不上传或下载文件的情况下,直接在浏览器中查看文件内容。然而,直接将文件存储服务(如MinIO)暴露给前端可能会带来安全风险。本文将介绍如何在不暴露MinI…...