最新资讯

  • 【Linux-网络】深入拆解TCP核心机制与UDP的无状态设计

【Linux-网络】深入拆解TCP核心机制与UDP的无状态设计

2025-05-01 03:37:49 0 阅读

 

🎬 个人主页:谁在夜里看海.

📖 个人专栏:《C++系列》《Linux系列》《算法系列》

⛰️ 道阻且长,行则将至


目录

📚引言

📚一、UDP协议

📖 1.概述

📖 2.特点

📚二、TCP协议 

📖 1.概述

📖 2.机制

🔖确认应答(ACK)

🔖超时重传

🔖连接管理

🔖滑动窗口

🔖流量控制

🔖拥塞控制

🔖延迟、捎带应答

📖3.总结


📚引言

在之前的一篇文章中,我们详细介绍了 socket网络编程(基于 TCPUDP),并且在应用层,我们已经能够熟练地调用API来编写简单的服务器和客户端应用。然而,要更好地理解网络编程,我们必须深入了解这两种协议的传输机制和它们的工作原理。今天,我们将通过对 TCPUDP协议的进一步剖析,探索它们在实际传输中的差异、优势和局限性。

🔗文章链接:《【Linux-网络】初识计算机网络 & Socket套接字 & TCP/UDP协议(包含Socket编程实战)》

📚一、UDP协议

📖 1.概述

UDP(User Datagram Protocol,用户数据报协议)是面向报文的协议,即数据是通过报文的形式进行传输,类似于寄信。与 TCP 协议相比,它更加简洁和高效,体现在更少的报文段信息以及没有TCP协议的各种机制。

下面是UDP报文段的标准格式:

UDP数据报由 头部数据部分 两部分组成:

UDP头部(8字节)

① 源端口号(16位):表示发送数据的应用端口。

② 目的端口号(16位):表示接收数据的应用端口。

③ 长度(16位):表示整个UDP报文的长度,包括头部和数据部分的总长度。最大值为64k字节。

④ 校验和(16位):用于检测传输过程中的数据完整性。虽然UDP是可选的,但如果IPv6被使用,校验和是必须的。

UDP数据部分:包括从源应用传来的数据,数据部分的大小由上面提到的 长度字段 决定。

⚠️ 由于UDP数据包的最大长度为64k,当要数据大于这个长度时,就需要进行分包传输。

📖 2.特点

与 UDP 的简洁性相对应地,UDP是 无连接的不可靠的

1️⃣ 面向报文:UDP是面向报文的协议,意味着每次发送的数据包都是一个独立的单位。

2️⃣ 较小的头部开销:UDP头部仅包含 8个字节,相比TCP的20字节头部,UDP的头部开销更小。

3️⃣ 不可靠性:UDP不保证数据的可靠传输,也不保证数据的顺序。如果数据丢失,发送方没有重传机制,接收方无法知道数据丢失。

由于UDP协议的 低延迟简洁性,它特别适合用于对实时性要求高、但对数据可靠性要求较低的场景,例如实时视频通话、在线游戏等。

UDP协议提供的是一种不可靠的数据传输方式,适用于对实时性要求高的场景。然而,当我们需要确保数据包的可靠传输,避免丢包时,TCP协议则成为更合适的选择。 

📚二、TCP协议 

📖 1.概述

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接、可靠的传输层协议。它确保数据能够准确、按顺序地传输到目的地。为了保证数据传输的可靠性和稳定性,TCP报文段就需要包含更多信息。

下面是TCP报文段的标准格式:

其中序列号、确认号、标志位(ACK、SYN等)、窗口大小这些数据段需要结合TCP的特殊传输机制来理解,这里我们先区分一下UDP的报文长度TCP的首部长度

❓前者表示整个报文段的长度,后者仅表示报文头的长度,这是为什么呢?

✅UDP中报文长度这一数据段的作用是使接收方可以正确提取数据,而在TCP中这一职责由序列号+首部长度共同完成,其中序列号表示的是数据区的长度。之所以要标明报头长度是因为,TCP报头是不定长的,除了固定数据段之外,还有可选数据段。

TCP的选项数据段是TCP头部的可选字段,允许在连接建立后对TCP连接进行进一步的配置和优化。选项字段用于扩展TCP协议的功能,提供额外的控制信息,以适应不同的应用需求。

下面我们来一一介绍TCP的各种机制。

📖 2.机制

🔖确认应答(ACK)

我们提到,TCP协议提供的是可靠传输,这当中非常重要的一点是,要避免数据丢包问题,由于网络是不稳定的,数据丢包是很正常的现象。那么发送方怎么知道发送的数据有没有丢失呢?很简单,让接收方接受数据后回应一下,表示数据收到了,这就是TCP的确认应答机制

但是当发送方发送多个数据包后,怎么知道收到的应答是对应哪个数据包的呢,这就需要TCP中的确认号序列号字段了。

序列号每个发送的数据段都被赋予一个唯一的序列号,用于标识数据流中的每一个字节。这个序列号是TCP可靠传输的基础,接收方根据序列号判断数据是否丢失或者是否按正确顺序到达。

确认号接收方使用确认号来告诉发送方,自己已经成功接收到的数据的最后一个字节的序列号。确认号是接收方期望接收的下一个字节的序列号。

每一个ACK都带有对应的确认序列号,表示已接收了哪些数据,下一个数据应该从哪里开始。

🔖超时重传

基于确认应答机制,当发送方过了一段时间后,还没有收到来自接收方的确认应答,就可以判定数据包丢失了,此时就需要重新发送数据包,这就是超时重传机制

这里的丢包分为两种情况:

① 发送的数据包本身丢失了;② 接收方的确认应答丢失了。

无论是哪种情况,都需要重新发送数据包,而对于第二种情况,接收方会收到两个相同的数据包,这个时候根据序列号判断,如果序列号相同,则认为两个数据包相同,会将重复的数据包丢弃,并不影响。

❓这个超时的时间该如何确定呢?

数据包传输到达的时间是会受网络环境影响变化的,如果超时时间设置的太长,会影响重传的效率;如果超时时间设置的过短,则有可能会频繁发送重复的数据包。

✅TCP为了保证在任何环境下都能比较高性能的通信,会动态计算这个超时时间。

以Linux为例,超时时间以500ms为单位,如果重传一次还没有得到应答,则等待2*500ms后再进行重传;之后还得不到应到,则等待4*500ms......直到累计一定的重传次数后,TCP判定网络或目标主机出现异常,强制关闭连接

🔖连接管理

基于TCP协议进行通信的双方,一个基本的前提条件就是,双方都确保能正常发送和接受数据,这样才能保证通信的稳定与可靠性。所以在通信发生之前,需要对双方的发送、接受能力进行验证;同样地,在通信结束时,也需要确保双方都已关闭连接信道,避免单方面发送数据却不能被接收也等不到应答的情况。这就是三次握手与四次挥手机制。 

在理解三次握手与四次挥手之前,我们需要了解一个预备知识,那就是TCP报文段的标志位

TCP报文段中的标志位(也叫控制位)用于控制TCP连接的建立、维护和终止。每个TCP报文段中都有一个6位的标志字段,分别是:

① URG(紧急标志):用于指示数据段中有紧急数据需要处理

② ACK(确认标志):表示确认号字段有效,即接收方通过确认号来告知发送方它期望接收的下一个字节的序列号

③ PSH(推送标志):表示接收方应该立即将数据推送给应用层

④ RST(重置标志):强制断开TCP连接,用于一方出现错误或不可恢复的异常的情况

⑤ SYN(同步标志):用于连接的建立,表示请求连接或响应连接请求

⑥ FIN(终止标志):用于连接的断开,表示发送方没有数据要发送,并请求关闭连接

在TCP三次握手过程中,SYN标志位会在第一次和第二次握手时被使用:

1️⃣ 客户端发起连接时,会发送一个带SYN标志的报文,表示请求建立连接。

2️⃣ 服务器响应客户端请求时,也会发送一个带SYN标志的报文来表示同意连接。

在TCP四次挥手过程中,FIN标志位被用来发起和响应连接的终止

1️⃣ 主动关闭连接的一方会发送带有FIN标志的报文,表示它已经完成数据传输并希望关闭连接。

2️⃣ 被动关闭的一方也会发送带有FIN标志的报文作为确认,表示它同意终止连接。 

下面是三次握手的全过程:

① 第一次握手:通信发起方向接收方发送SYN报文,请求连接(打开写端,表示我要写数据了)

② 第二次握手:接收方收到SYN报文,回复ACK报文,表示同意连接请求(打开读端,表示我能收到数据);并同时也发送SYN报文(打开写端,我也要写数据了)

③ 第三次握手;发起方收到SYN报文,同意回复ACK报文(打开读端,表示我也能收到数据)

四次挥手的全过程:

① 第一次挥手:断开连接发起方向接收方发送FIN报文,表示希望关闭连接(关闭写端,表示不再写数据了)

② 第二次挥手:接收方收到FIN请求,回复ACK表示同意(关闭读端,我不再等待接收数据了)

③ 第三次挥手:接收方发送FIN请求(关闭写端,我也不写数据了) 

④ 第四次挥手:发起方收到FIN请求,回复ACK表示同意(关闭读端,我也不等待接收数据了)

从上面的步骤来看,其实第二次握手是包含两步的:接收方打开读端与写端,这与第二次挥手、第三次挥手是对应上的,问题来了:

❓① 为什么要把接收方打开读端与写端的操作合并为一步;② 为什么接收方断开读端和写端的操作不能合并成一步。

✅先回答第一个问题,我们要知道,每一个标志位的独立发送都需要独立的报文段,接收方要分别发送ACK与SYN的话就需要占用两个报文段,既然如此,为什么不把这两步合成一步,节省资源呢,于是就有了第二次握手。

✅对于第二个问题,断开连接发起方发送FIN报文的意思是,不会再发送数据了,也就是关闭了写端,但这并不意味着读端也关闭了;同样地,接收方在收到FIN报文后回复ACK的意思是,关闭读端,但也不意味着写端就要一并关闭,相反地,它依旧可以发送数据,对方也依旧可以收到数据,因此二、三挥手要分开来执行。

在TCP协议中,连接的建立与断开遵循严格的状态变化流程。理解连接发起方、接收方以及断开发起方、接收方的状态变化对理解TCP的三次握手(连接建立)和四次挥手(连接终止)至关重要。

连接建立(TCP三次握手)

① 连接发起方(客户端)

        初始状态:CLOSED(连接关闭);

        发送SYN请求:客户端进入 SYN_SENT 状态,发送一个SYN报文;

        接收ACK响应 确认连接建立,进入 ESTABLISHED 状态,开始数据的双向传输。

② 连接接收方(服务器)

        初始状态:LISTEN(监听状态)

        接收SYN请求: 进入 SYN_RCVD 状态,并发送一个带有SYN和ACK标志的响应报文(SYN-ACK),表示同意建立连接。

        等待确认: 收到客户端的确认ACK报文后,连接成功建立,进入 ESTABLISHED 状态,开始数据的双向传输。

三次握手过程状态变化图

  • 客户端(发起方): CLOSEDSYN_SENTESTABLISHED
  • 服务器(接收方): LISTENSYN_RCVDESTABLISHED

连接断开(TCP四次挥手) 

① 连接断开发起方(客户端/服务器)

1. 初始状态:ESTABLISHED(已建立连接);

2. 发送FIN请求:此时,该端点的写端被关闭,进入 FIN_WAIT_1 状态;

3. 等待ACK响应: 主动关闭方在 FIN_WAIT_1 状态等待接收方的ACK报文确认其断开请

4. 等待接收方的FIN: 此时,主动关闭方进入 TIME_WAIT 状态,等待足够的时间确保接收方收到了最后的ACK报文。

② 连接断开接收方(服务器/客户端)

1. 初始状态:ESTABLISHED(已建立连接);

2. 接收FIN请求: 被动关闭的一方在 ESTABLISHED 状态收到主动关闭方的FIN报文后,进入 CLOSE_WAIT 状态,表示确认收到对方的断开请求,并准备关闭自己的写端。

3. 发送ACK响应: 被动关闭方发送ACK报文,确认收到对方的FIN报文。此时,它的写端被关闭,但接收端仍然保持开放,允许接收剩余的数据。

4. 发送FIN: 当被动关闭方完成数据接收后,主动发送带有FIN标志的报文,表示自己也没有数据要发送了,进入 LAST_ACK 状态。

5. 等待确认: 被动关闭方等待对方的ACK确认,确认连接完全断开后,进入 CLOSED 状态。

四次挥手过程状态变化图

  • 主动关闭方:
    • ESTABLISHEDFIN_WAIT_1FIN_WAIT_2TIME_WAITCLOSED
  • 被动关闭方:
    • ESTABLISHEDCLOSE_WAITLAST_ACKCLOSED

🔖滑动窗口

基于确认应答机制,如果每发送一次报文,都需要等待应答,收到ACK后再发送下一个报文,这样做会大大影响性能。于是我们可以一次性发送多个报文,并且同时等待多个应答,因为发送的报文是基于序列号顺序发送的,所以可以看作一个滑动窗口,窗口内部是已发送但还未收到应答的报文,当收到应答后,右移窗口的左端;发送新报文后,右移动窗口右端。这就是滑动窗口机制。

❓如果在发送过程中出现丢包,该如何解决?这里分两种情况:

① 数据包已抵达,但ACK丢了。这种情况下,基于超时重传机制,发送方会重新发送数据包,直到接收到相应的ACK为止

② 数据包丢失了。例如,发送方一共发送了序列号为1~5000的数据包,但是当中1001~2000的数据包丢失了,其余的没有丢失。在这种情况下,接收方返回的确认序列号会一直为1001,表示1001开头的报文没有收到,此时发送方得知后会重新发送1001~2000的数据包,此时接收方返回的确认序列号为5001(因为2001~5000的数据包已经收到了)。

这种机制被称为“高并发重传机制”。

🔖流量控制

接收方收到数据包后时并不会立即处理,而是暂存在接收缓冲区中,而缓冲区的空间时有限的,这就意味着如果发送方一次性发送过多数据包,就会出现由于缓冲区空间不足而丢包的情况。 为了避免这种情况的发送,发送方就需要控制发送速度,就需要借助流量控制机制

控制速度的依据是接收方的缓冲区剩余空间大小,而发送方该怎么得知这一信息呢,就需要借助TCP报文段中的“窗口大小”字段。

接收方依据缓冲区剩余空间,设置窗口大小并通过ACK应答报文告知发送方,如果窗口大小变小,发送方就会减缓发送速度;如果窗口大小为0,发送方就停止发送数据,但是会时不时发送窗口探测,用于探测请求接收方窗口更新。

❓即使发送方不进行窗口探测,接受方在缓冲区有空间剩余之后还是会发送窗口更新报文,但是为什么发送方还是需要时不时进行探测呢?

✅因为接收方的窗口更新报文有可能丢失,如果发送方不探测,接收方就不会重传

🔖拥塞控制

基于流量控制机制,发送方在数据发送的过程中可以很好地控制速度,但是还存在一个问题,那就是在刚建立通信连接,第一次发送数据时,并不知道接收方的缓冲区情况,此时并不能确定该发送多少数据。于是TCP引入慢启动机制,即一开始只发送少量数据,目的是探测对方的“吞吐量”大小,清楚情况后,再决定用什么速度传输数据。

那么这个传输速度具体该如何确定呢?这里要引入“拥塞窗口”的概念:

数据发送开始时,拥塞窗口为1;此后每收到一个ACK,拥塞窗口加1,并取拥塞窗口与ACK中窗口大小的较小值作为本次发送数据的大小。

如此一来,数据发送速率是呈指数级增长的,但是这到了后面,速度会变得很不可控,并且很大概率会出现丢包(发送速度过快),因此要对速度进行限制,就需要借助“慢启动阈值”这一概念。

当拥塞窗口超过阈值时,就不再按指数级增长,而是按线性增长。这个阈值初始为窗口最大值,之后每发送一次超时重传,阈值变为原来的一半,并且拥塞窗口置为1(将阈值慢慢逼近一个合理值,既保证了传输效率,又减少了出现丢包的可能性)

🔖延迟、捎带应答

接收方在ACK应答的同时,也在处理缓冲区的数据,也就是说,如果ACK立即应答,其时效性会比较低下(剩余空间远大于窗口值,因为一部分数据已被处理),于是TCP引入了延迟应答机制接收方在接收数据之后,会等待一段时间再发送ACK应答,这样在一定程度上可以确保窗口大小的时效性

基于延迟应答,接收方的数据包发送和ACK应答可以共用一个数据段,这样可以大大节约资源,第二次握手就是很好的例子。 

📖3.总结

TCP协议通过以上多种机制确保了数据传输的可靠性,并且通过一系列优化手段提升传输性能。因此,以上机制可以大致分为两类:可靠性机制性能优化机制

                             可靠性机制                          性能优化机制
                                校验和                             滑动窗口
                        序列号(按序到达)                             快速重传
                               确认应答                             延迟应答
                               超时重发                             捎带应答
                               连接管理
                               流量控制
                               拥塞控制

以上就是【深入拆解TCP核心机制与UDP的无状态设计】的全部内容,欢迎指正~ 

码文不易,还请多多关注支持,这是我持续创作的最大动力!

本文地址:https://www.vps345.com/6555.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge llama 算法 opencv 自然语言处理 神经网络 语言模型 RTSP xop RTP RTSPServer 推流 视频 进程 操作系统 进程控制 Ubuntu 科技 ai java 人工智能 个人开发 python MCP ubuntu ssh 阿里云 网络 网络安全 网络协议 deepseek Ollama 模型联网 API CherryStudio Flask FastAPI Waitress Gunicorn uWSGI Uvicorn android harmonyos typescript 鸿蒙 rust http 开发语言 分布式 面试 性能优化 jdk intellij-idea 架构 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 华为 计算机网络 ssl fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 数据库 centos oracle 关系型 安全 numpy tcp/ip 物联网 mcu iot 信息与通信 运维开发 云原生 YOLO efficientVIT YOLOv8替换主干网络 TOLOv8 嵌入式硬件 单片机 c++ 温湿度数据上传到服务器 Arduino HTTP cpu 内存 实时 使用 flutter 后端 protobuf 序列化和反序列化 安装 深度学习 macos pycharm conda ipython AI 爬虫 数据集 windows react.js 前端面试题 node.js 持续部署 udp 客户端 java-ee YOLOv8 NPU Atlas800 A300I pro asi_bench docker adb 统信UOS 麒麟 bonding 链路聚合 ddos c语言 qt stm32项目 stm32 vim debian PVE VMware安装mocOS VMware macOS系统安装 zotero WebDAV 同步失败 代理模式 mysql 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 华为云 unity 智能路由器 dell服务器 github go golang 目标检测 .netcore MacOS录屏软件 sql KingBase websocket 学习 电脑 oceanbase rc.local 开机自启 systemd 大数据 政务 分布式系统 监控运维 Prometheus Grafana 微服务 springcloud uni-app chatgpt 大模型 llama3 Chatglm 开源大模型 php 前端框架 智能手机 NAS Termux Samba Linux 嵌入式 linux驱动开发 arm开发 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 vscode 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 1024程序员节 Dell R750XS ide pytorch jmeter 软件测试 gpu算力 编辑器 鸿蒙系统 计算机外设 mac 软件需求 机器学习 向日葵 sqlserver .net 银河麒麟 kylin v10 麒麟 v10 计算机视觉 ESP32 豆瓣 追剧助手 迅雷 nas 微信 LDAP 微信分享 Image wxopensdk aws googlecloud Agent spring boot ESXi HCIE 数通 笔记 tomcat maven intellij idea YOLOv12 rpc asm flask AI编程 AIGC nginx dubbo cuda cudnn anaconda gateway Clion Nova ResharperC++引擎 Centos7 远程开发 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 pillow ollama json html5 firefox Windsurf rust腐蚀 Dify WSL win11 无法解析服务器的名称或地址 HarmonyOS Next 命名管道 客户端与服务端通信 pip WSL2 kubernetes 容器 学习方法 经验分享 程序人生 vSphere vCenter 软件定义数据中心 sddc camera Arduino 电子信息 自动化 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 开源 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 DeepSeek-R1 API接口 C 环境变量 进程地址空间 live555 rtsp rtp Hyper-V WinRM TrustedHosts mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 僵尸进程 ffmpeg 音视频 创意 社区 源码剖析 rtsp实现步骤 流媒体开发 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 c# 毕设 命令 jar tcpdump webrtc 跨域 asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 spring 远程控制 远程看看 远程协助 vue 直播推流 ollama下载加速 k8s 矩阵 三级等保 服务器审计日志备份 状态管理的 UDP 服务器 Arduino RTOS VMware安装Ubuntu Ubuntu安装k8s etcd 数据安全 RBAC yum 服务器管理 宝塔面板 配置教程 服务器安装 网站管理 django ansible playbook 剧本 飞牛NAS 飞牛OS MacBook Pro 驱动开发 金融 git gitea 媒体 微信公众平台 C语言 Ubuntu Server Ubuntu 22.04.5 svn k8s集群资源管理 云原生开发 jupyter 企业微信 Linux24.04 deepin pyautogui 职场和发展 html css Reactor 设计模式 C++ 工业4.0 Invalid Host allowedHosts DeepSeek Cline 自动化编程 自动驾驶 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer matlab 缓存 bootstrap redis 强制清理 强制删除 mac废纸篓 博客 express agi jenkins AI写作 prompt mybatis https 微信开放平台 微信公众号配置 压力测试 Ark-TS语言 远程工作 iftop 网络流量监控 LLM 大模型面经 Deepseek 大模型学习 课程设计 okhttp 系统架构 transformer pygame cmos 硬件 系统安全 microsoft 数据结构 selenium 测试工具 bash 进程信号 kafka 安卓 远程桌面 ci/cd devops thingsboard postgresql 部署 prometheus CPU 主板 电源 网卡 服务器配置 web安全 硬件架构 虚拟化 半虚拟化 硬件虚拟化 Hypervisor IIS .net core Hosting Bundle .NET Framework vs2022 Open WebUI 测试用例 功能测试 shell 磁盘监控 mamba Vmamba RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 生物信息学 openEuler elasticsearch 产品经理 Cookie 开机自启动 outlook kylin 远程连接 rdp 实验 fpga开发 virtualenv 王者荣耀 Wi-Fi DNS W5500 OLED u8g2 TCP服务器 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 医疗APP开发 app开发 云电竞 云电脑 todesk 交换机 设备 GPU PCI-Express 微信小程序 小程序 ping++ 深度优先 图论 并集查找 换根法 树上倍增 SSH llm 无人机 机器人 gpt-3 文心一言 低代码 游戏机 r语言 数据可视化 TRAE SWAT 配置文件 服务管理 网络共享 蓝桥杯 华为od OD机试真题 华为OD机试真题 服务器能耗统计 gaussdb kali 共享文件夹 虚拟机 ruoyi apache DeepSeek行业应用 Heroku 网站部署 AI大模型 IIS服务器 IIS性能 日志监控 react next.js 部署next.js ocr micropython esp32 mqtt nuxt3 实时音视频 华为认证 网络工程师 拓扑图 Java docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos springboot DevEco Studio springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 其他 银河麒麟服务器操作系统 系统激活 灵办AI 数据分析 kvm wsl dba Redis Desktop 算力 npm spring cloud hibernate list windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 RAID RAID技术 磁盘 存储 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 log4j grafana IPMI excel 漏洞 实时互动 kind 多进程 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm matplotlib 负载均衡 wsl2 同步 备份 建站 安全威胁分析 linux安装配置 网络穿透 云服务器 Xterminal 多层架构 解耦 并查集 leetcode bug ecmascript KVM 弹性计算 裸金属服务器 弹性裸金属服务器 p2p safari Mac 系统 ue5 vr unity3d gitlab wireshark CORS nvidia 分析解读 雨云 NPS eureka zabbix dns 程序员 大模型入门 Google pay Apple pay 服务器主板 AI芯片 致远OA OA服务器 服务器磁盘扩容 android studio 交互 rag ragflow ragflow 源码启动 arm 腾讯云 能力提升 面试宝典 技术 IT信息化 大模型微调 ssh漏洞 ssh9.9p2 CVE-2025-23419 代码调试 ipdb ue4 着色器 虚幻 vmware 卡死 消息队列 MS Materials Trae AI代码编辑器 模拟实现 openssl 密码学 监控 自动化运维 小艺 Pura X code-server MQTT mosquitto 视觉检测 VMware创建虚拟机 sqlite Qwen2.5-coder 离线部署 AISphereButler kamailio sip VoIP threejs 3D 大数据平台 显示过滤器 ICMP Wireshark安装 visual studio code SenseVoice echarts 信息可视化 网页设计 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 大模型教程 remote-ssh 国产操作系统 ukui 麒麟kylinos openeuler 腾讯云大模型知识引擎 统信 虚拟机安装 框架搭建 串口服务器 web3.py firewalld VPS pyqt 网络结构图 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 gradle C# MQTTS 双向认证 emqx 报错 RustDesk自建服务器 rustdesk服务器 docker rustdesk 远程 执行 sshpass 操作 飞书 KylinV10 麒麟操作系统 Vmware 孤岛惊魂4 WebRTC gpt linux 命令 sed 命令 恒源云 JAVA RTMP 应用层 IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 unix oneapi ArcTS 登录 ArcUI GridItem arkUI hadoop dify 游戏服务器 TrinityCore 魔兽世界 iBMC UltraISO 权限 adobe 传统数据库升级 银行 大语言模型 LLMs Python 网络编程 聊天服务器 套接字 TCP Socket 多线程服务器 Linux网络编程 云服务 yum源切换 更换国内yum源 可信计算技术 QQ bot Docker springsecurity6 oauth2 授权服务器 token sas FTP 服务器 ros2 moveit 机器人运动 pdf 中间件 iis n8n 工作流 workflow rabbitmq 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 visualstudio 银河麒麟操作系统 国产化 安全架构 网络攻击模型 telnet 远程登录 rsyslog 实战案例 小游戏 五子棋 图像处理 IDE AI 原生集成开发环境 Trae AI 硬件工程 嵌入式实习 openvpn server openvpn配置教程 centos安装openvpn 黑客技术 mariadb 流式接口 本地部署 api DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 Kylin-Server AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 EasyConnect 软件工程 Kali Linux 黑客 渗透测试 信息收集 mongodb nextjs reactjs 服务器繁忙 mysql离线安装 ubuntu22.04 mysql8.0 源码 毕业设计 压测 ECS ssrf 失效的访问控制 混合开发 环境安装 JDK Docker Hub docker pull 镜像源 daemon.json openwrt 蓝耘科技 元生代平台工作流 ComfyUI hive Hive环境搭建 hive3环境 Hive远程模式 xrdp gitee string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap centos-root /dev/mapper yum clean all df -h / du -sh 开发环境 SSL证书 京东云 命令行 基础入门 编程 雨云服务器 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 环境迁移 NFS redhat 群晖 文件分享 MySql 相差8小时 UTC 时间 边缘计算 netty 远程过程调用 Windows环境 办公自动化 自动化生成 pdf教程 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 swoole FTP服务器 docker命令大全 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 无桌面 cnn risc-v DocFlow 邮件APP 免费软件 webstorm 信号处理 计算机 RAGFLOW 联想开天P90Z装win10 游戏程序 ios 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 运维监控 seleium chromedriver 自动化测试 SSH 服务 SSH Server OpenSSH Server web 目标跟踪 OpenVINO 推理应用 软考 ecm bpm 小智AI服务端 xiaozhi ASR TTS AD 域管理 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 网站搭建 serv00 宕机切换 服务器宕机 xml fd 文件描述符 deepseek r1 执法记录仪 智能安全帽 smarteye MCP server C/S windows日志 OpenManus 虚拟显示器 make命令 makefile文件 Minecraft DOIT 四博智联 宝塔 jvm iphone GoogLeNet lio-sam SLAM 单元测试 freebsd CLion Node-Red 编程工具 流编程 minio 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 ros 反向代理 H3C iDRAC R720xd 重启 排查 系统重启 日志 原因 软负载 前后端分离 RAGFlow 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error 文件系统 路径解析 gcc es curl wget ui 英语 个人博客 X11 Xming 集成学习 集成测试 技能大赛 xcode 系统开发 binder 车载系统 framework 源码环境 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 pgpool langchain deep learning 端口测试 田俊楠 FunASR file server http server web server 健康医疗 云桌面 微软 AD域控 证书服务器 RAG 检索增强生成 文档解析 大模型垂直应用 c ROS Linux PID CH340 串口驱动 CH341 uart 485 linux环境变量 LInux 我的世界 我的世界联机 数码 阻塞队列 生产者消费者模型 服务器崩坏原因 jetty undertow grub 版本升级 扩容 ISO镜像作为本地源 Jellyfin bcompare Beyond Compare 虚拟局域网 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 cursor 音乐服务器 Navidrome 音流 rustdesk 显卡驱动 金仓数据库 2025 征文 数据库平替用金仓 Docker Compose docker compose docker-compose 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 Erlang OTP gen_server 热代码交换 事务语义 MNN Qwen ip EMUI 回退 降级 升级 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 ip命令 新增网卡 新增IP 启动网卡 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 鲲鹏 昇腾 npu pppoe radius hugo 人工智能生成内容 Netty 即时通信 NIO 高级IO epoll dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Kylin OS MQTT协议 消息服务器 代码 指令 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 mq rocketmq 5G 3GPP 卫星通信 序列化反序列化 x64 SIGSEGV SSE xmm0 AI作画 聊天室 HarmonyOS apt openstack Xen 游戏引擎 AI agent docker run 数据卷挂载 交互模式 线程 多线程 智能音箱 智能家居 思科模拟器 思科 Cisco 北亚数据恢复 oracle数据恢复 qt项目 qt项目实战 qt教程 muduo XCC Lenovo 设置代理 实用教程 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 繁忙 解决办法 替代网站 汇总推荐 AI推理 P2P HDLC Radius ceph QT 5.12.12 QT开发环境 Ubuntu18.04 EMQX 通信协议 skynet edge浏览器 计算虚拟化 弹性裸金属 Claude IM即时通讯 剪切板对通 HTML FORMAT eNSP 网络规划 VLAN 企业网络 程序 性能分析 AnythingLLM AnythingLLM安装 WebUI DeepSeek V3 Kali 链表 embedding 图形化界面 换源 国内源 Debian 社交电子 rclone AList webdav fnOS uv 相机 tensorflow vscode 1.86 trae 匿名管道 wps qemu libvirt 直流充电桩 充电桩 GCC crosstool-ng 搜索引擎 SEO chfs ubuntu 16.04 阿里云ECS 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? LORA NLP 显示管理器 lightdm gdm ruby 火绒安全 Nuxt.js frp 内网服务器 内网代理 内网通信 rnn Xinference 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 linux上传下载 seatunnel USB网络共享 HTTP 服务器控制 ESP32 DeepSeek Playwright 备选 网站 调用 示例 AD域 nac 802.1 portal AutoDL centos 7 vasp安装 MacMini 迷你主机 mini Apple 用户缓冲区 宠物 免费学习 宠物领养 宠物平台 业界资讯 tidb GLIBC 模拟退火算法 监控k8s 监控kubernetes 自定义客户端 SAS sqlite3 银河麒麟高级服务器 外接硬盘 Kylin 华为机试 信创 信创终端 中科方德 深度求索 私域 知识库 数据库系统 glibc 回显服务器 UDP的API使用 程序员创富 jina CrewAI 做raid 装系统 armbian u-boot rime VR手套 数据手套 动捕手套 动捕数据手套 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 DBeaver 数据仓库 kerberos 版本 HiCar CarLife+ CarPlay QT RK3588 yolov8 av1 电视盒子 机顶盒ROM 魔百盒刷机 ftp CVE-2024-7347 产测工具框架 IMX6ULL 管理框架 3d 数学建模 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 输入法 big data keepalived opensearch helm sonoma 自动更新 监控k8s集群 集群内prometheus xshell termius iterm2 uniapp web3 neo4j 数据库开发 数据库架构 database tcp ux vscode1.86 1.86版本 ssh远程连接 arcgis 自动化任务管理 aarch64 编译安装 HPC 数据管理 数据治理 数据编织 数据虚拟化 open webui IMM idm chrome devtools 单一职责原则 Cursor 移动云 selete spark HistoryServer Spark YARN jobhistory 代理 asp.net大文件上传下载 树莓派 VNC VSCode dity make zookeeper nfs 服务器部署ai模型 SSL 域名 Anolis nginx安装 linux插件下载 大模型应用 图形渲染 Windows ai工具 v10 软件 ldap 黑苹果 SSH 密钥生成 SSH 公钥 私钥 生成 sdkman sequoiaDB GIS 遥感 WebGIS Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 大大通 第三代半导体 碳化硅 ShenTong URL 技术共享 Linux的权限 多个客户端访问 IO多路复用 TCP相关API 远程服务 h.264 alias unalias 别名 elk 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 网工 MI300x SysBench 基准测试 open Euler dde LLM Web APP Streamlit 网卡的名称修改 eth0 ens33 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 SRS 流媒体 直播 Deepseek-R1 私有化部署 推理模型 性能测试 odoo 服务器动作 Server action AI-native Docker Desktop 私有化 常用命令 文本命令 目录命令 Dell HPE 联想 浪潮 崖山数据库 YashanDB python3.11 视频编解码 minicom 串口调试工具 Ubuntu 24.04.1 轻量级服务器 dash 正则表达式 迁移指南 交叉编译 DenseNet flash-attention midjourney 代码托管服务 css3 sentinel 知识图谱 区块链 Linux环境 CentOS 移动魔百盒 USB转串口 虚幻引擎 harmonyOS面试题 影刀 #影刀RPA# ubuntu24 vivado24 佛山戴尔服务器维修 佛山三水服务器维修 g++ g++13 企业网络规划 华为eNSP VS Code Ubuntu共享文件夹 共享目录 Linux共享文件夹 加解密 Yakit yaklang k8s二次开发 集群管理 干货分享 黑客工具 密码爆破 UOS1070e tailscale derp derper 中转 triton 模型分析 onlyoffice 单例模式 线性代数 电商平台 figma 服务器时间 hosts 互信 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 推荐算法 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 软件构建 cd 目录切换 毕昇JDK 镜像 我的世界服务器搭建 minecraft 网络建设与运维 安防软件 NLP模型 自学笔记 小米 澎湃OS Android PPI String Cytoscape CytoHubba xpath定位元素 HarmonyOS NEXT 原生鸿蒙 firewall 读写锁 iventoy VmWare OpenEuler AI Agent 字节智能运维 抗锯齿 端口 查看 ss less Attention 强化学习 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK easyui 本地部署AI大模型 浏览器开发 AI浏览器 实习 Spring Security 游戏开发 存储维护 NetApp存储 EMC存储 带外管理 etl react native 模拟器 教程 飞牛nas fnos TrueLicense DeepSeek r1 DIFY 超融合 CentOS Stream 大模型推理 gnu 免费域名 域名解析 eclipse xss 嵌入式Linux IPC 语音识别 中兴光猫 换光猫 网络桥接 自己换光猫 ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 saltstack 分布式训练 bat nlp 大模型部署 SVN Server tortoise svn CDN Python基础 Python教程 Python技巧 本地知识库部署 DeepSeek R1 模型 环境配置 HAProxy 物联网开发 元服务 应用上架 根服务器 clickhouse idea ubuntu20.04 开机黑屏 sublime text laravel junit 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 基础环境 Linux的基础指令 can 线程池 历史版本 下载 需求分析 规格说明书 OpenSSH 沙盒 deekseek IPv4 子网掩码 公网IP 私有IP 互联网医院 virtualbox ssh远程登录 perl WSL2 上安装 Ubuntu Ubuntu22.04 开发人员主页 c/c++ 串口 vpn 信号 查询数据库服务IP地址 SQL Server 支付 微信支付 开放平台 ArkTs EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 PX4 WLAN yaml Ultralytics 可视化 rancher IO模型 wpf db Mac内存不够用怎么办 cocoapods 进程优先级 调度队列 进程切换 flink 渗透 perf WebVM 流水线 脚本式流水线 composer 项目部署到linux服务器 项目部署过程 7z nftables 防火墙 IMX317 MIPI H265 VCU 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR TCP协议 开发 IDEA su sudo docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 Logstash 日志采集 autodl trea Typore 服务网格 istio 聚类 lua sysctl.conf vm.nr_hugepages 键盘 域名服务 DHCP 符号链接 配置 ubuntu24.04.1 Headless Linux 音乐库 飞牛 powerpoint OpenHarmony 僵尸世界大战 游戏服务器搭建 嵌入式系统开发 fast 语法 代理服务器 searxng java-rocketmq 主从复制 捆绑 链接 谷歌浏览器 youtube google gmail 李心怡 架构与原理 banner prometheus数据采集 prometheus数据模型 prometheus特点 cfssl 内网环境 安卓模拟器 cpp-httplib 稳定性 看门狗 双系统 GRUB引导 Linux技巧 regedit 开机启动 虚拟现实 docker部署Python webgl 软链接 硬链接 本地环回 bind 本地化部署 考研 NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 llama.cpp dock 加速 玩机技巧 软件分享 软件图标 策略模式 状态模式 MDK 嵌入式开发工具 论文笔记 离线部署dify 容器技术 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 国产数据库 瀚高数据库 数据迁移 下载安装 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 端口聚合 windows11 hexo 流量运营 宝塔面板无法访问 达梦 DM8 ranger MySQL8.0 烟花代码 烟花 元旦 对比 工具 meld DiffMerge visual studio 粘包问题 System V共享内存 进程通信 docker desktop image mcp服务器 client close deployment daemonset statefulset cronjob Unity插件 计算生物学 生物信息 基因组 navicat fstab 浏览器自动化 word top Linux top top命令详解 top命令重点 top常用参数 UDP ros1 Noetic 20.04 apt 安装 ABAP 钉钉 vu大文件秒传跨域报错cors 抓包工具 yolov5 机柜 1U 2U IO vnc 隐藏文件 隐藏目录 管理器 通配符 云耀服务器 zip unzip React Next.js 开源框架 软件卸载 系统清理 网络爬虫 磁盘清理 多路转接 电视剧收视率分析与可视化平台 Linux权限 权限命令 特殊权限 MAC SecureCRT java-rabbitmq kotlin powerbi iperf3 带宽测试 话题通信 服务通信 Sealos 风扇控制软件 论文阅读 UEFI Legacy MBR GPT U盘安装操作系统 智能电视 MacOS ELF加载 搭建个人相关服务器 网络搭建 神州数码 神州数码云平台 云平台 wsgiref Web 服务器网关接口 copilot ardunio BLE WebServer ip协议 Linux 维护模式 kernel AI员工 fork wait waitpid exit milvus MAVROS 四旋翼无人机 问题解决 欧标 OCPP rpa ubuntu 18.04 MVS 海康威视相机 视频平台 录像 视频转发 视频流 合成模型 扩散模型 图像生成 Linux find grep proxy模式 性能调优 安全代理 内核 鸿蒙开发 移动开发 在线office 安装MySQL 通信工程 毕业 nosql 极限编程 Qwen2.5-VL vllm docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 Reactor反应堆 linux内核 conda配置 conda镜像源 大模型技术 本地部署大模型 Web服务器 多线程下载工具 PYTHON windows 服务器安装 项目部署 查看显卡进程 fuser ArtTS lb 协议 win服务器架设 windows server 热榜 nvm whistle WINCC ebpf uprobe Carla 智能驾驶 macOS samba 图片增强 增强数据 接口优化 搜狗输入法 中文输入法 解决方案 notepad 西门子PLC 通讯 tar mysql安装报错 windows拒绝安装 智慧农业 开源鸿蒙 团队开发 CPU 使用率 系统监控工具 linux 命令 开源软件 数字证书 签署证书 yum换源 硅基流动 ChatBox fonts-noto-cjk 华为证书 HarmonyOS认证 华为证书考试 CosyVoice 服务器正确解析请求体 服务器扩容没有扩容成功 js export import save load 迁移镜像 MobaXterm