最新资讯

  • 网络运输层之(1)TCP协议基础

网络运输层之(1)TCP协议基础

2025-04-29 13:00:48 0 阅读

网络运输层之(1)TCP协议基础


Author: Once Day Date: 2024年9月12日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

  • 《TCP/IP详解卷一》
  • TCP协议详解 (史上最全)-CSDN博客
  • TCP协议详解 - 知乎 (zhihu.com)
  • 计算机网络:这是一份非常全面&详细的TCP/IP协议学习指南-腾讯云开发者社区-腾讯云 (tencent.com)
  • 计算机网络原理梳理丨清晰认识 TCP/IP 协议-腾讯云开发者社区-腾讯云 (tencent.com)

文章目录

  • 网络运输层之(1)TCP协议基础
        • 1. 概述
          • 1.1 介绍
          • 1.2 服务模型
          • 1.3 RFC文档
        • 2. 报文协议
          • 2.1 TCP报文格式
          • 2.2 TCP校验和
          • 2.2 三次握手
          • 2.3 四次挥手
          • 2.4 自动重传
          • 2.5 流量控制(滑动窗口)
          • 2.6 拥塞控制

1. 概述
1.1 介绍

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它是当今互联网中最广泛使用的传输协议之一,为各种网络应用程序提供了可靠的数据传输服务。

TCP协议在传输数据时,会将数据分成一个个的报文段(segment)进行传输。每个报文段都包含了源端口号、目的端口号、序列号、确认号、控制位等重要信息,以确保数据传输的可靠性和有序性。

TCP协议的发展历程可以追溯到20世纪70年代末,经过几十年的演变和完善,已经成为当今互联网中最重要的传输层协议之一。TCP协议的发展大致经历了以下几个阶段:

  1. 初始规范阶段(20世纪80年代):TCP协议的原始规范RFC 793发布,奠定了TCP的基本功能和特性,如面向连接、可靠传输和全双工通信等。随后,RFC 1122对TCP规范进行了修订和完善。
  2. 性能优化阶段(20世纪90年代):为了适应互联网的快速发展,TCP引入了多项性能优化措施,如RFC 1323中的窗口缩放、时间戳和PAWS算法,以及RFC 2018中的选择性确认(SACK)机制,用于提高TCP在高速、长距离网络中的性能和可靠性。
  3. 拥塞控制阶段(20世纪90年代末至21世纪初):TCP拥塞控制算法的不断完善和成熟,从RFC 2581到RFC 5681,奠定了现代TCP拥塞控制的基础。同时,RFC 3168引入了显式拥塞通知(ECN)机制,允许网络向TCP反馈拥塞信息。
  4. 高性能扩展阶段(21世纪10年代):为了进一步提高TCP在高速、长距离网络中的性能,RFC 7323对TCP的高性能扩展进行了更新,包括窗口缩放、时间戳和PAWS算法等。
  5. 现代TCP规范阶段(21世纪10年代至今):RFC 8312作为当前最新的TCP规范文档,对TCP的各个方面进行了全面的描述和规范,是当前TCP协议的权威参考。
1.2 服务模型

TCP协议的主要特点如下:

  • 面向连接:在数据传输之前,TCP通信的双方必须先建立连接,确保双方都准备好进行数据交换。

  • 可靠性:TCP使用序列号、确认应答、重传等机制来确保数据的可靠传输,保证数据不会丢失、重复或乱序。

  • 字节流:TCP将应用程序传输的数据视为一连串的字节流,不关心字节流的具体含义,只负责把数据从一端传送到另一端。

  • 全双工:TCP支持全双工通信,即数据可以同时在两个方向上传输,双方都可以同时发送和接收数据。

  • 流量控制:TCP通过滑动窗口机制实现流量控制,防止发送方发送数据的速度超过接收方接收数据的速度,避免网络拥塞。

  • 拥塞控制:TCP采用拥塞控制算法,如慢启动、拥塞避免、快速重传和快速恢复等,来适应网络拥塞状况,调整发送速率,提高网络利用率。

1.3 RFC文档

下面是TCP相关的RFC文档:

  • RFC 793 - Transmission Control Protocol (1981),TCP协议的原始规范,定义了TCP的基本功能和报文格式。

  • RFC 1122 - Requirements for Internet Hosts - Communication Layers (1989),对TCP的规范进行了修订和完善,提出了许多新的要求和建议。

  • RFC 1323 - TCP Extensions for High Performance (1992),引入了窗口缩放、时间戳和PAWS算法,用于提高TCP在高速、长距离网络中的性能。

  • RFC 2018 - TCP Selective Acknowledgment Options (1996),定义了TCP选择性确认(SACK)选项,用于改进TCP的丢包恢复能力。

  • RFC 2581 - TCP Congestion Control (1999),对TCP拥塞控制算法进行了详细描述,包括慢启动、拥塞避免、快速重传和快速恢复等算法。

  • RFC 2883 - An Extension to the Selective Acknowledgement (SACK) Option for TCP (2000),引入了D-SACK(Duplicate SACK),用于检测网络中的数据包重复现象。

  • RFC 3168 - The Addition of Explicit Congestion Notification (ECN) to IP (2001),定义了显式拥塞通知(ECN)机制,允许路由器向TCP发送方反馈网络拥塞信息。

  • RFC 3390 - Increasing TCP’s Initial Window (2002),提出了增加TCP初始窗口大小的建议,以提高TCP在短流量传输中的性能。

  • RFC 3782 - The NewReno Modification to TCP’s Fast Recovery Algorithm (2004),对TCP快速恢复算法进行了修改,提出了NewReno算法,改进了TCP的丢包恢复性能。

  • RFC 4138 - Forward RTO-Recovery (F-RTO): An Algorithm for Detecting Spurious Retransmission Timeouts with TCP and the Stream Control Transmission Protocol (SCTP) (2005),提出了F-RTO算法,用于检测和处理TCP中的虚假超时重传问题。

  • RFC 5681 - TCP Congestion Control (2009),对TCP拥塞控制算法进行了修订和完善,融合了之前多个RFC文档中的内容。

  • RFC 6298 - Computing TCP’s Retransmission Timer (2011),介绍了计算TCP重传计时器的算法和方法。

  • RFC 6582 - The NewReno Modification to TCP’s Fast Recovery Algorithm (2012),对RFC 3782中的NewReno算法进行了更新和完善。

  • RFC 7323 - TCP Extensions for High Performance (2014),对TCP的高性能扩展进行了更新,包括窗口缩放、时间戳和PAWS算法等。

  • RFC 7413 - TCP Fast Open (2014),介绍了TCP快速打开(TFO)机制,用于减少TCP连接建立的延迟。

  • RFC 8312 - CUBIC for Fast Long-Distance Networks (2018),介绍了CUBIC拥塞控制算法,适用于高速、长距离网络。

2. 报文协议
2.1 TCP报文格式

TCP报文(也称为TCP段,segment)是TCP协议通信过程中传输的数据单元,每个TCP报文都由报文头部和数据部分组成。

下面是各个字段的含义:

  • 源端口(Source Port,16位):表示发送TCP报文的源端口号。

  • 目的端口(Destination Port,16位):表示接收TCP报文的目的端口号。

  • 序列号(Sequence Number,32位):表示当前报文段中第一个字节的序号。TCP给每个字节都赋予了一个序列号,这是一个32位的无符号数字,到达 2 32 − 1 2^{32}-1 2321后再循环到0,每个被交换的字节都已编号。

  • 确认号(Acknowledgment Number,32位):表示期望接收的下一个字节的序号,也就是当前已成功接收的字节序号加1。

  • 数据偏移(Data Offset,4位):表示TCP报文头部的长度,单位为4字节。

  • 保留位(Reserved,4位):保留字段,供将来使用。

  • 控制位(Control Bits,8位):包括CWR,ECE,URG、ACK、PSH、RST、SYN和FIN。

    • CWR:拥塞窗口减少,用于发送方降低它的发送速率。

    • ECE:ECN回显,发送方接收到了一个更早的拥塞通告。

    • URG:紧急指针(Urgent Pointer),较少使用。

    • ACK:确认号(Acknowledgment Number)字段有效,连接建立之后一般都默认启用,也就是除了初始和末尾报文段之外的所有报文。

    • PSH:接收方应尽快将数据传递给应用程序。

    • RST:重置连接,经常因为错误取消连接。

    • SYN:同步序号,用于初始化连接。

    • FIN:发送方已经完成数据发送。

  • 窗口大小(Window Size,16位):表示接收方当前可接收的字节数,用于流量控制。这个字段最大值是65535,可以通过窗口缩放选项(Window Scale)对其进行缩放,从而提供更高的上限值。

  • 校验和(Checksum,16位):用于检验TCP报文头部和数据部分的完整性。

  • 紧急指针(Urgent Pointer,16位):当URG标志位置1时有效,指示紧急数据的末尾在报文段中的位置。

  • 选项(Options,可变长度):TCP头部的可选字段,用于实现一些特殊功能,如最大报文段长度(MSS)、窗口缩放因子、时间戳等。

  • 填充(Padding,可变长度):用于确保TCP头部长度为4字节的整数倍。

2.2 TCP校验和

TCP校验和是TCP报文头部中的一个重要字段,用于验证TCP报文在传输过程中是否出现了误码或损坏。

TCP伪头部是计算校验和时使用的一个虚拟头部,它包含了一些来自IP头部的信息。伪头部的格式如下:

校验和的计算方式如下(与IP、ICMP和UDP协议类似)

  1. 将TCP伪头部、TCP头部和数据部分看作一个连续的字节流
  2. 将字节流划分为16位(2字节)的字
  3. 如果字节流的长度为奇数,在末尾添加一个全零字节,使字节流长度变为偶数
  4. 将所有16位字相加,得到一个32位的和
  5. 将32位的和的高16位与低16位相加,得到一个16位的和
  6. 将16位的和取反,得到TCP校验和的值

接收方在收到TCP报文后,会按照相同的方法计算校验和,并与报文中的校验和字段进行比较。如果两者相同,说明报文在传输过程中没有出现差错;如果不同,则说明报文在传输过程中出现了差错,需要进行重传或错误处理。

但这种校验和对于超大量数据来说,仍然是不够健壮,应用层仍然需要采取自定义的手段来保证应用层数据可靠性

2.2 三次握手

TCP是一种面向连接的可靠传输协议,在通信双方进行数据传输之前,需要先建立连接。TCP使用三次握手(Three-Way Handshake)的方式来建立连接,下面是示意图:

(1) 第一次握手(SYN),客户端向服务器发送一个SYN(同步)报文:

  • 设置SYN标志位为1,表示这是一个连接请求报文。
  • 随机生成一个初始序列号(ISN,Initial Sequence Number),例如ISN=X。
  • 可选地携带其他参数,如最大报文段长度(MSS)等。

(2) 第二次握手(SYN+ACK),服务器收到客户端的SYN报文后,如果同意建立连接,则返回一个SYN+ACK报文:

  • 设置SYN标志位为1,ACK标志位为1,表示这是一个连接接受报文。
  • 服务器也随机生成一个初始序列号,例如ISN=Y。
  • 确认号(Acknowledgment Number)设置为客户端的ISN加1,即Ack=X+1。
  • 可选地携带其他参数。

(3) 第三次握手(ACK),客户端收到服务器的SYN+ACK报文后,向服务器发送一个ACK报文:

  • 设置ACK标志位为1,表示这是一个确认报文。
  • 序列号(Sequence Number)设置为客户端的ISN加1,即Seq=X+1。
  • 确认号设置为服务器的ISN加1,即Ack=Y+1。
  • 可选地携带其他参数或数据。
2.3 四次挥手

当客户端或服务器任一方需要关闭TCP连接时,就会启动连接释放的过程。TCP使用四次挥手(Four-Way Handshake)的方式来释放连接,下面是示意图:

(1) 第一次挥手(FIN),假设客户端先发起连接释放,客户端向服务器发送一个FIN(终止)报文:

  • 设置FIN标志位为1,表示这是一个连接释放请求报文。
  • 序列号(Sequence Number)设置为当前的序列号,例如Seq=X

(2) 第二次挥手(ACK),服务器收到客户端的FIN报文后,向客户端发送一个ACK报文:

  • 设置ACK标志位为1,表示这是一个确认报文。
  • 确认号(Acknowledgment Number)设置为客户端的序列号加1,即Ack=X+1

(3) 第三次挥手(FIN),服务器完成数据发送后,也向客户端发送一个FIN报文:

  • 设置FIN标志位为1,表示这是一个连接释放请求报文。
  • 序列号设置为当前的序列号,例如Seq=Y

(4) 第四次挥手(ACK),客户端收到服务器的FIN报文后,向服务器发送一个ACK报文:

  • 设置ACK标志位为1,表示这是一个确认报文。
  • 确认号设置为服务器的序列号加1,即Ack=Y+1

注意,客户端在进入CLOSED状态之前,需要经过TIME_WAIT状态,并等待2MSL的时间。这样做的目的是确保网络中所有的报文都已经被接收或丢弃,防止新连接误接收旧连接的报文

2.4 自动重传

在数据通信中,由于各种原因(如信道噪声、网络拥塞等),数据报文在传输过程中可能会出现丢失、损坏或重复等问题。为了确保数据的可靠传输,通信双方通常使用自动重复请求(Automatic Repeat reQuest,ARQ)机制和自动重传功能。

自动重复请求是一种在通信双方之间实现可靠数据传输的方法,它要求接收方在收到数据后向发送方发送确认(ACK),如果发送方在一定时间内未收到确认,则认为数据丢失并重新发送。ARQ主要有以下三种方式:

  • 停止等待ARQ(Stop-and-Wait ARQ):发送方每发送一个数据包就停止发送,等待接收方的确认,收到确认后再发送下一个数据包。
  • 回退N帧ARQ(Go-Back-N ARQ):发送方可以连续发送多个数据包,如果接收方发现有数据包丢失,则要求发送方重传丢失的数据包及其后的所有数据包。
  • 选择重传ARQ(Selective Repeat ARQ):发送方可以连续发送多个数据包,如果接收方发现有数据包丢失,则只要求发送方重传丢失的数据包,而不影响其他正确接收的数据包。

TCP采用了一种基于选择重传ARQ的自动重传机制,以确保数据的可靠传输

  • 超时重传(Timeout Retransmission):当发送方发送了一个数据包后,会启动一个计时器。如果在计时器超时之前没有收到接收方的确认,发送方就会重新发送这个数据包。
  • 快速重传(Fast Retransmission):当接收方收到一个失序的数据包时,会立即发送一个重复的ACK(即使还没有收到期望的数据包)。当发送方收到三个或更多个重复的ACK时,会立即重传对应的数据包,而不等待计时器超时。
  • 选择确认(Selective Acknowledgment,SACK):SACK是TCP的一个可选扩展,它允许接收方在ACK中指明已经成功接收的数据包的范围,这样发送方就可以只重传丢失的数据包,提高了重传的效率。
  • 重传超时时间(Retransmission Timeout,RTO)的计算:TCP根据网络的往返时间(Round-Trip Time,RTT)和RTT的变化情况,动态地计算重传超时时间,以适应网络状况的变化。
2.5 流量控制(滑动窗口)

在TCP通信中,滑动窗口(Sliding Window)是一种用于实现流量控制的机制。它允许发送方根据接收方的接收能力动态调整发送数据的速率,以避免接收方的缓冲区溢出或网络拥塞。

滑动窗口是指在任意时刻,发送方可以发送的数据范围。这个范围由两个指针界定:发送窗口的左边界和右边界。左边界表示已经发送并得到确认的数据的最大序号,右边界表示可以发送的数据的最大序号

窗口的大小由接收方通告的窗口大小(rwnd,Receiver Window)决定。发送方的发送窗口不能超过rwnd,以防止发送过多的数据导致接收方的缓冲区溢出。

随着数据的发送和确认,滑动窗口会不断向右移动,允许发送方发送新的数据。这就是"滑动窗口"的由来。

TCP使用滑动窗口实现了流量控制,具体过程如下:

  1. 接收方在ACK报文中通告自己的接收窗口大小(rwnd),表示自己当前可以接收的数据量。

  2. 发送方根据接收方通告的rwnd和自己的拥塞窗口(cwnd,Congestion Window)计算发送窗口的大小,取两者的最小值:

    send_window = min(rwnd, cwnd)
    
  3. 发送方只能在发送窗口允许的范围内发送数据,即已发送但未确认的数据量不能超过发送窗口的大小。

  4. 当接收方处理了一部分数据后,其接收缓冲区空出了空间,就会通过ACK报文通告更大的rwnd,允许发送方发送更多的数据。

  5. 如果接收方的接收缓冲区满了,会通告一个零的rwnd,发送方就必须停止发送数据,直到接收方再次通告非零的rwnd。

TCP的滑动窗口机制可以动态调整发送速率,使其与接收方的接收能力相匹配,从而实现了流量控制

2.6 拥塞控制

除了流量控制,TCP还具有拥塞控制(Congestion Control)的功能,用于防止网络拥塞和崩溃。拥塞控制允许TCP在网络拥塞时调整发送速率,以避免进一步加剧拥塞,并在网络恢复后逐步增加发送速率。

TCP使用拥塞窗口(Congestion Window,cwnd)来控制发送速率。拥塞窗口表示在任意时刻,发送方可以发送的未确认数据的最大量。与接收方通告的接收窗口(rwnd)不同,拥塞窗口是发送方根据网络拥塞状况自行调整的

发送窗口的大小由拥塞窗口和接收窗口共同决定:

send_window = min(cwnd, rwnd)

TCP采用了慢启动(Slow Start)和拥塞避免(Congestion Avoidance)两种算法来调整拥塞窗口的大小

  • 慢启动:当连接建立时,cwnd初始化为一个小值(通常为1个MSS,最大段大小)。每收到一个ACK,cwnd就增加1个MSS,这导致cwnd以指数方式增长。当cwnd达到慢启动阈值(ssthresh)时,进入拥塞避免阶段。

  • 拥塞避免:在拥塞避免阶段,每收到一个ACK,cwnd增加1/cwnd个MSS。这导致cwnd以线性方式缓慢增长,直到出现拥塞事件(如超时或收到重复ACK)。

  • 快速重传和快速恢复:当收到三个或更多重复ACK时,TCP执行快速重传,立即重传丢失的数据包。同时,执行快速恢复,将ssthresh设置为当前cwnd的一半,并将cwnd设置为ssthresh加上3个MSS,然后进入拥塞避免阶段。

  • 超时:如果发生超时,TCP将ssthresh设置为当前cwnd的一半,将cwnd重置为1个MSS,然后重新进入慢启动阶段。

通过这些算法,TCP可以在网络拥塞时迅速降低发送速率,在网络恢复后逐步提高发送速率,从而实现了拥塞控制。

除了上述基本的拥塞控制算法,TCP还有一些其他的拥塞控制算法,如:

  • TCP Tahoe:上述基本算法的原始版本。

  • TCP Reno:在快速恢复后,如果收到部分ACK,则退出快速恢复并进入拥塞避免阶段。

  • TCP NewReno:改进了快速恢复算法,可以处理多个数据包丢失的情况。

  • TCP Vegas:基于延迟而不是丢包来检测拥塞,试图在队列积累之前就降低发送速率。

  • TCP CUBIC:目前在Linux系统中使用的默认拥塞控制算法,使用立方函数来调整cwnd,适用于高带宽、高延迟的网络。







Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

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

搜索文章

Tags

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