Server Message Block (SMB) 完整解构拆解 SMB(服务器消息块):Windows 原生文件 / 打印共享协议,用于进程间、跨主机访问共享目录、命名管道、打印机。传输速度 对比 SMB over TCP / SMB over RDMA(SMB Direct) / SMB over QUIC 三维对比表

如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 | Microsoft Learn

[MS-SMB]: Server Message Block (SMB) Protocol | Microsoft Learn

RFC 1001 - Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and methods

Samba Documentation

RFC 9000 - QUIC: A UDP-Based Multiplexed and Secure Transport

QUIC, a multiplexed transport over UDP

Samba Documentation

一、官方文档清单(标题 + 链接定位 + 核心摘要)

1. How to detect, enable and disable SMBv1, SMBv2, SMBv3(Microsoft Learn)

核心运维文档,Windows 平台标准操作手册
 
主题:PowerShell、注册表、组策略三种方式开关各 SMB 协议版本,区分 SMB Server(服务端 srv.sys)SMB Client(客户端 mrxsmb.sys)
 
关键要点:
  1. Windows 10 1709+/Server2019 默认卸载 / 禁用 SMBv1 客户端与服务端
  2. SMBv2 包含 SMB2.0、2.1;SMBv3 包含 3.0/3.02/3.1.1,开关参数统一,无法单独关闭 3.0 保留 3.1.1;
  3. 严禁生产环境长期启用 SMBv1(永恒之蓝 MS17-010 等高危漏洞)。

常用命令摘录(可直接落地)

① 检测状态
powershell
# 检测 SMB Server(本机对外提供共享)
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol

# 检测 SMB Client(本机访问外部共享)
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
② 服务端启用 / 禁用
powershell
# 禁用 SMB1 Server
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
# 启用 SMB2/3 Server(默认开启)
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
③ 客户端注册表方式(无重启即可生效或需重启)
路径:
 
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
 
新建 DWORD:
  • SMB1:0 = 禁用,1 = 启用
  • SMB2:0 = 禁用,1 = 启用
注意:修改客户端注册表需要重启操作系统生效;Set-SmbServerConfiguration 修改服务端无需重启。

2. [MS-SMB]: Server Message Block (SMB) Protocol | Microsoft Open Specifications

微软官方协议规范(MS-SMB、MS-SMB2 两套文档)
  • MS-SMB:SMBv1 (CIFS) 正式协议文档
  • MS-SMB2:SMB2 / SMB3 完整协议规范(最有价值开发 / 抓包参考)
     
    内容覆盖:报文头结构、命令码、会话建立、TreeConnect、协商流程、SMB3 加密、租赁、Multichannel、预认证完整性。
     
    适用场景:抓包分析、互通排障(Windows ↔ Samba)、漏洞研究。

3. RFC 1001 — Protocol standard for a NetBIOS service on a TCP/UDP transport

定义 NetBIOS over TCP/IP (NBT)
  • 端口:UDP 137(名称服务)、UDP138(数据报)、TCP139(会话)
  • 作用:为老旧 SMBv1 提供计算机名称解析;
  • 现代网络建议:废除 NBT,仅使用 TCP 445 原生 SMB;SMB2/SMB3 不再依赖 NetBIOS。
RFC1002 配套:NetBIOS on TCP/UDP 传输细节。

4. Samba Documentation(Samba 官方文档)

  1. smb.conf 参数:server min protocol / server max protocol 控制协商版本;
    ini
    [global]
    server min protocol = SMB2
    server max protocol = SMB3_11
  2. 权限映射、VFS 插件、AD 域集成、kerberos 认证;
  3. ksmbd(内核 SMB 服务)与用户态 smbd 差异;
  4. Windows 与 Samba 互通常见兼容坑(OPLOCK、SMB3 加密、xattr 扩展属性)。

5. RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport

QUIC 基础标准,基于 UDP,内置 TLS1.3、连接迁移、多路复用、0-RTT 握手。
 
关联 SMB 发展趋势:
 
SMB over QUIC(Windows Server 2022/Win11 引入)
 
传统 SMB 基于 TCP 445;SMB over QUIC 使用 UDP 445:
  • 穿透部分 NAT、改善移动网络链路波动;
  • 原生加密,无需额外 IPsec;
  • 不依赖 TCP 重传机制;
Samba暂未原生支持 SMB over QUIC,仅 Windows 生态可用。

二、关键概念横向梳理

  1. SMB over TCP(TCP 445)
     
    Windows Vista+/Samba 主流方式,不依赖 NetBIOS。
  2. SMB over NetBIOS(TCP139)
     
    仅 SMBv1 使用,老旧遗留,高危,建议全网关闭。
  3. SMB over QUIC(UDP445)
     
    SMB3.1.1 扩展,Win11/Server2022 新增,面向互联网跨公网访问文件共享。

三、互通排障核心对照(Windows ↔ Samba)

  1. Windows 关闭 SMB1,Samba server min protocol = SMB2 → 只能协商 SMB2/SMB3;
  2. 若客户端仅支持 SMB1(老旧 NAS、工控),现代 Windows 默认无法连接;要么升级设备,要么临时开启 SMB1(短期应急);
  3. SMB3 加密:Windows 客户端可强制加密,Samba 需开启 smb3 encrypt = yes,两端策略不一致直接连接失败。

四、安全落地建议(参考微软 Learn 最佳实践)

  1. 全域禁用 SMBv1(客户端 + 服务端);
  2. 内网文件共享优先 SMB3.1.1,启用 SMB 签名,必要时启用 SMB 加密;
  3. 防火墙仅受控 IP 开放 TCP445;公网不直接暴露 TCP445,如需外网访问使用 SMB over QUIC 或 VPN;
  4. 逐步淘汰依赖 TCP139/UDP137 的 NetBIOS 环境。

Samba 完整解构拆解

基础定位

Samba:Linux/UNIX 平台开源 SMB/CIFS 协议实现
 
作用:让类 Unix 系统可以对外提供 SMB 文件共享、打印共享,与 Windows 的 LanmanServer/LanmanWorkstation 互通;同时自带 SMB 客户端,可访问 Windows 共享。
 
核心背景:Windows 使用 SMB 协议;Linux 原生没有 SMB 栈,Samba 在用户态实现完整 SMB 协议(SMB1/CIFS、SMB2、SMB3),打通 Windows ↔ Linux 文件互通。
关键区分
  • Windows SMB:内核驱动实现 srv.sys/mrxsmb.sys(内核态高性能)
  • Samba:传统架构主要运行在用户态(smbd/nmbd);新版本支持内核加速模块(ksmbd)

一、底层原理

1. 核心目标

  1. 在 Linux 上模拟 Windows SMB Server 行为,对外提供 \\server\share UNC 共享;
  2. 将 Linux 文件权限模型(UID/GID、POSIX ACL)映射转换为 Windows NT ACL、SID、权限;
  3. 兼容 Windows 认证:NTLM、Kerberos;支持域加入、NT4 域兼容、Active Directory 域成员;
  4. 实现 SMB 全套语义:文件锁、机会锁 (oplock/lease)、通知变更、命名管道、打印服务。

2. Samba 两大架构演进

(1)经典用户态架构(Samba 4.x 主流默认架构)

核心进程模型:
  • smbd:SMB TCP 445 主服务进程,处理 SMB 会话、文件读写、TreeConnect、文件 I/O;
  • nmbd:NetBIOS 名称服务(UDP137/TCP139),负责 NetBIOS 名称解析、浏览服务(Network Neighbourhood 网上邻居);
nmbd 仅用于老旧 NetBIOS 环境;纯 SMB3 over TCP445 场景可停用。
工作模型:
 
smbd 监听 TCP 445;每建立一个客户端连接会 fork / 派生子进程(或多线程)独立处理会话;
 
收到 SMB 请求 → Samba 协议栈解析 SMB 命令 → 转换为 Linux 系统调用(open/read/write/stat);
 
把 Linux 本地操作结果封装成 SMB 响应返回客户端。

(2)ksmbd 内核 Samba(Linux 5.15 + 内核内置,Samba 4.15 + 配套)

痛点:纯用户态 smbd 存在系统调用开销、上下文切换损耗。
 
ksmbd:内核态 SMB 服务实现。
  • SMB 报文解析、基础 I/O 通路下沉内核;
  • 用户态 smbd 仅保留认证、权限映射、扩展管理逻辑;
     
    大幅提升大文件吞吐、降低延迟,对标 Windows 内核 srv.sys 架构。

3. 协议与权限映射核心难点原理

Windows:SID、NTACL、文件所有者 SID、共享权限 + 文件权限双重校验
 
Linux:UID/GID、POSIX 权限、POSIX ACL
 
Samba 引入用户映射层
  1. winbindd:把 AD 域 SID ↔ Linux UID/GID 双向转换;
  2. 参数 map to guestforce usercreate mask/directory mask 控制权限转换规则;
  3. 模拟 NT 文件属性(只读、隐藏、存档)保存在扩展属性(xattr)。

4. Samba 内部协议分层

plaintext
Windows客户端 (Explorer / robocopy)
        ↓
TCP 445 SMB报文
        ↓
Linux内核TCP/IP(inet、tcp协议栈)
        ↓
smbd(用户态Samba服务)
    ├─ SMB协议解析层(SMB1/SMB2/SMB3 解析器)
    ├─ 认证层(NTLM / Kerberos / Guest)
    ├─ 共享配置解析(smb.conf)
    ├─ POSIX→NT权限映射层
    └─ VFS插件层(核心扩展点)
        ↓
Linux VFS(虚拟文件系统层)ext4/xfs/btrfs
        ↓
磁盘块设备
VFS 插件系统是 Samba 设计精髓:
 
vfs_fruit(macOS 兼容)、vfs_shadowcopy(快照)、vfs_audit(审计)、vfs_recycle(回收站)全部以插件形式挂载。

二、依赖文件

1. Samba 核心可执行文件

plaintext
smbd        # SMB服务主进程
nmbd        # NetBIOS名称服务
winbindd    # AD域SID<->UID/GID映射进程
samba       # 统一启动控制器(Samba4 AD域模式)
net         # Samba管理工具
pdbedit     # Samba本地用户数据库管理

2. 核心配置文件

/etc/samba/smb.conf
 
全局段 [global] + 各个共享段;控制协议版本、认证、权限掩码、VFS、日志、SMB 加密、oplock。

3. 持久化存储文件

  1. secrets.tdb:机器账户、域加入凭据、密钥
  2. passdb.tdb:Samba 独立模式虚拟 SMB 用户(非系统 /etc/passwd 用户)
  3. 各类 *.tdb/.ldb:会话缓存、锁定数据库、ID 映射缓存
TDB = Trivial Database,Samba 自研轻量级嵌入式数据库。

4. 系统层依赖(Linux 原生组件)

  1. 网络栈:tcp_ip内核协议栈、iptables/nftables 防火墙;端口 TCP445、UDP137、TCP139
  2. 文件系统:支持 xattr 扩展属性(ext4/xfs 必须开启 user_xattr,用于保存 Windows 文件元数据)
  3. 加密库:libcrypto(OpenSSL/GnuTLS),实现 SMB3 AES 加密、SMB 签名
  4. Kerberos 库:krb5,对接 AD Kerberos 认证
  5. PAM、NSSwitch:winbind 提供名称解析 /etc/nsswitch.conf

5. 动态链接库

libsmbclient.so:Samba 客户端库(Linux 程序访问 Windows 共享)
 
libwbclient.so:winbind 客户端接口

三、依赖关系

1. 进程启动依赖顺序

  1. 网络栈就绪(网卡 IP)
  2. winbindd(域环境必需,先启动完成 SID 映射)
  3. nmbd(可选,NetBIOS 浏览)
  4. smbd(SMB 服务)

2. 网络依赖

  • SMB3:仅需 TCP 445(推荐,现代标准)
  • SMB1/NetBIOS 兼容:额外 TCP139、UDP137
     
    防火墙放行规则是互通最常见故障点。

3. 认证依赖分支

  1. 独立模式(standalone)
     
    smbd → pdbedit passdb.tdb 虚拟 SMB 账号,不依赖系统用户;
  2. 域成员模式(Domain Member)
     
    smbd → winbindd → Kerberos/LDAP → Active Directory;完成 SID↔UID 映射;
  3. Samba AD 域控制器模式
     
    samba 内部集成 LDAP、Kerberos,自身充当 AD。

4. 文件系统硬性依赖

如需完整模拟 Windows 文件属性、ACL:
 
文件系统必须开启 user_xattr;未开启时无法保存隐藏、只读、NTACL,出现权限异常。

5. 协议版本依赖

smb.conf 中 server min protocol / server max protocol
 
客户端与 Samba 协商双方支持最高 SMB 版本;
生产强烈禁用 SMB1。

6. VFS 依赖链

smbd I/O 路径会依次加载配置的 VFS 插件,插件顺序影响读写逻辑;插件冲突容易导致文件锁、中断、性能问题。

四、完整逻辑链路

链路 A:Windows 客户端访问 Samba 共享(\linux-srv\data)

plaintext
Windows客户端发起TCP连接 Linux:445
        ↓
内核TCP握手完成,连接递交给监听的smbd进程
        ↓
smbd派生子进程处理该会话
        ↓
SMB协商报文 → 协商最高可用SMB版本(SMB2/SMB3)
        ↓
认证流程:NTLM或Kerberos校验凭据
        ↓
TreeConnect 请求挂载 [data]共享
smbd读取smb.conf共享配置,校验访问权限
        ↓
客户端发送 SMB OPEN / READ / WRITE
smbd解析SMB命令 → 通过VFS层调用Linux系统调用操作本地文件
        ↓
文件操作结果封装为SMB响应报文
        ↓
TCP回传给Windows客户端

链路 B:文件锁 & Oplock(机会锁)流程

客户端打开文件 → smbd 授予 Oplock
 
客户端缓存文件元数据;当另一客户端打开同一文件,smbd 发送 Break 中断锁;
 
协调多客户端缓存一致性,模拟 Windows 文件缓存语义。

链路 C:客户端正常断开 / 异常断网

正常:发送 Logoff、关闭 TCP;
 
异常掉线:smbd 依靠 smb.conf 超时参数回收会话、释放文件锁。

链路 D:Samba 客户端访问 Windows 共享(smbclient/mount.cifs)

区分两套组件:
  1. smbd = 服务端(对外提供共享)
  2. mount.cifs / smbclient = Linux SMB 客户端(访问 Windows 共享)
mount.cifs 内核 CIFS 客户端,和用户态 Samba 服务相互独立,不要混淆。

五、配套链

1. Samba 原生运维工具

bash
testparm        # 校验smb.conf语法
smbclient       # 命令行SMB客户端
smbstatus       # 查看当前SMB会话、打开文件、锁
pdbedit         # 管理Samba虚拟用户
net rpc          # AD域管理工具
wbinfo          # 测试winbind SID/UID映射

2. 调试与诊断配套

  1. 日志:log level = 3 开启调试日志,默认路径 /var/log/samba/
  2. Wireshark:过滤 tcp.port == 445 抓 SMB 协商、认证、文件 I/O
  3. strace:追踪 smbd 系统调用,定位磁盘、权限阻塞
  4. ldbedit:浏览 Samba AD 内部 ldb 数据库

3. 生态配套

  1. mount.cifs(内核 CIFS 客户端):Linux 挂载 Windows/Samba 共享(内核实现,性能优于 smbclient)
  2. Windows 平台:Explorer、robocopy、PowerShell New-SmbMapping
  3. 存储系统:NAS 厂商(群晖 / 威联通)底层均基于 Samba 二次开发
  4. 监控:prometheus samba exporter,采集会话、吞吐、错误计数
  5. 备份软件:通过 SMB 协议读写 Linux Samba 共享

4. 同类对比配套

  • Windows:srv.sys(内核 SMB 服务端)
  • Samba smbd(用户态默认)/ksmbd(内核 SMB)
  • 第三方:ProFTPD/SFTP(文件传输协议,非 SMB,无 Windows 原生文件语义)

六、典型故障与风险清单

  1. 协商失败无法连接
     
    防火墙未放行 445;smb.conf 最低协议版本高于客户端支持版本;SMB3 加密策略不匹配。
  2. 权限错乱、无法修改文件
     
    缺少 user_xattr;create mask/force user 参数配置错误;winbind SID 映射异常。
  3. 文件锁残留、文件被占用无法删除
     
    Oplock 配置不合理;客户端异常断电;smbd 会话超时参数过大。
  4. 性能瓶颈
     
    默认用户态 smbd 大量上下文切换;高并发场景推荐启用 ksmbd 内核 SMB;未关闭不必要 VFS 插件。
  5. 安全风险
     
    启用 SMB1 存在漏洞;匿名 Guest 配置不当导致未授权访问;弱 NTLM 认证。

七、极简总结(汇报提纲)

Samba 是 Linux 上开源 SMB/CIFS 协议实现;经典架构以 smbd/nmbd 用户态进程为核心;依靠 TDB 数据库、VFS 插件体系、winbind 身份映射完成 Windows-Linux 权限互通。
 
它把 SMB 协议请求翻译成 Linux POSIX 文件操作;现代可搭配 ksmbd 内核模块提升性能;与 Windows 原生内核 SMB(srv.sys)协议互通,但架构实现路径完全不同。运维核心控制点:协议版本管控、防火墙 445、xattr 文件系统支持、smb.conf 权限掩码、AD 身份映射。

Server Message Block (SMB) 完整解构拆解

基础定义

SMB(服务器消息块):Windows 原生文件 / 打印共享协议,用于进程间、跨主机访问共享目录、命名管道、打印机。
 
行业别名:
  • CIFS:SMB1.0 的公开标准化版本(Common Internet File System)
  • 协议角色:
    • SMB Server(服务端):Windows LanmanServer(Server 服务)
    • SMB Client(客户端):Windows LanmanWorkstation(Workstation 服务)
重要区分:
 
SMB = 应用层 / 表示层协议规范;系统一堆 sys、dll 是这套协议在内核 + 用户态的实现载体;底层传输默认依托 TCP/IP,早期支持 NetBIOS over TCP/IP。

一、底层原理

1. 核心设计目标

提供跨主机标准化资源访问抽象:
 
远程文件读写、目录枚举、文件锁、权限校验、命名管道 IPC、打印队列访问。
 
把远程资源封装成本地文件对象模型,上层应用无需区分本地磁盘 / SMB 远程共享。

2. SMB 协议版本演进(关键分水岭)

  1. SMB1.0 / CIFS
     
    老旧协议,依赖 NetBIOS;命令老旧、存在大量高危漏洞(EternalBlue 永恒之蓝 MS17-010);性能差、无加密。Windows 10/Server2016 开始默认禁用。
  2. SMB2.0 / SMB2.1(Vista/2008 引入)
     
    大幅精简协议头、取消大量冗余命令;支持复合请求(Compound Request);减少握手包;初步改善大文件吞吐;移除大量老旧 CIFS 命令。
  3. SMB3.x(Win8/Server2012 至今,现行主流)
     
    SMB3.0 / 3.02 / 3.1.1(最重要版本)
    • 支持 SMB 加密(AES-128)、端到端加密
    • SMB Direct (RDMA),支持网卡 RDMA 硬件卸载,低延迟高吞吐
    • SMB Multichannel:多网卡链路聚合、故障转移
    • SMB Transparent Failover:集群共享透明故障切换
    • 预认证完整性(Pre-authentication Integrity,3.1.1 防御中间人)
    • 协商强制安全上下文,彻底修复 SMB1 时代大量协议缺陷

3. Windows 内核 SMB 分层架构

plaintext
用户态应用 (Explorer、robocopy、业务程序 CreateFile/ReadFile)
        ↓
ntoskrnl.exe I/O管理器、文件系统调度
        ↓
MUP.sys(多通用提供程序,路由远程文件请求)
        ↓
MRXSMB.SYS / SRVNET.SYS
├─ 客户端:mrxsmb.sys(SMB客户端内核驱动)
└─ 服务端:srv.sys + srvnet.sys(SMB服务端内核驱动)
        ↓
TCP/IP传输层 (tcpip.sys)
        ↓
NDIS 网络层 (ndis.sys)
        ↓
网卡硬件

4. 核心工作模型

  1. 重定向器模型(Redirector)
     
    mrxsmb.sys网络文件系统重定向器:拦截应用文件 I/O IRP,翻译成 SMB 协议数据包,通过网络发往远端服务器;将服务器应答转换成本地文件 API 返回结果。
     
    应用调用标准 Win32 文件 API,完全感知不到底层是 SMB 网络访问
  2. SMB 会话生命周期
plaintext
TCP三次握手 → SMB协商协议版本 → 会话建立(身份认证 NTLM/Kerberos)
→ Tree Connect(挂载共享目录)
→ Open(打开文件)→ Read/Write/QueryInfo/SetInfo → Close
→ Tree Disconnect → Logoff → TCP断开
  1. 关键特性原理
  • 复合请求 Compound:一个 TCP 报文打包多条 SMB 命令,减少网络往返;
  • 租赁机制 (Leasing):客户端缓存文件元数据、锁状态,减少频繁查询服务器;
  • SMB 加密:整个 SMB 载荷加密(非仅身份包),防止中间人窃听篡改;
  • Multichannel:单 SMB 会话跑多条独立 TCP/RDMA 链路。

二、依赖文件

内核模式驱动(核心载体)

  1. mrxsmb.sys:SMB 客户端重定向器(Workstation 服务内核载体)
  2. srv.sys:SMB 服务端主驱动(LanmanServer 内核逻辑)
  3. srvnet.sys:SMB 服务端网络传输封装(TCP/RDMA 收发适配)
  4. mup.sys:多通用提供程序,解析 UNC 路径 \\server\share,分发至 mrxsmb
  5. rdbss.sys:RDBSS 网络重定向器框架(mrxsmb 依赖的基础抽象框架)

用户态支撑组件

  1. srvsvc.dll:LanmanServer(Server 服务)用户态逻辑
  2. wkssvc.dll:LanmanWorkstation(Workstation 服务)用户态逻辑
  3. ntlanman.dllnetapi32.dll:NetAPI、共享管理接口

传输依赖内核文件

  • tcpip.sys TCP/IP 协议栈
  • ndis.sys NDIS 网络抽象层
  • afd.sys 内核套接字支撑

配置持久载体(注册表)

plaintext
# SMB服务端配置
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
# SMB客户端配置
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
# 协议版本启用开关、加密、签名、缓存租赁、SMB1开关均在此处

辅助配套二进制

smbclient.exe(第三方)、net.exeGet-Smb* PowerShell Cmdlet

三、依赖关系

1. 系统启动 & 服务依赖

客户端(LanmanWorkstation)

依赖组件顺序:
 
RPC → TCP/IP 网络栈 → RDBSS (rdbss.sys) → mup.sys → mrxsmb.sys → wkssvc.dll

服务端(LanmanServer)

RPC → TCP/IP → srvnet.sys → srv.sys → srvsvc.dll
关键:rdbss.sys 是所有 Windows 网络重定向器公共基础,mrxsmb 不能脱离 RDBSS 运行。

2. 调用分层依赖方向

  1. 上层应用 I/O 请求 → I/O 管理器 → MUP → mrxsmb(客户端)封装 SMB 报文
  2. mrxsmb → tcpip.sys → 网络发出
  3. 对端 srvnet.sys 接收数据包 → srv.sys 解析 SMB 命令 → 访问本地 NTFS/FAT 文件系统
  4. 响应原路返回

3. 安全依赖关系

  • 身份认证:依赖 NTLM / Kerberos(lsass.exe)
  • SMB 签名:防止数据包篡改;SMB3 加密依赖系统加密原语(bcrypt.sys)
  • 访问权限校验:服务端依托 NTFS DACL + SMB 共享权限双重校验

4. 协议版本协商依赖

两端协商取双方支持最高公共版本
 
例:客户端仅支持 SMB2,服务器支持 SMB3.1.1 → 降级运行 SMB2.1。

5. 网络依赖约束

  • 默认端口:TCP 445(SMB Direct/TCP SMB)
  • SMB1 遗留:UDP 137、TCP 139(NetBIOS)
防火墙阻断 445,SMB3 无法建立会话。

四、完整逻辑链路

链路 A:客户端访问 UNC 共享(\FileServer\Data)

plaintext
应用 CreateFile("\\FileServer\Data\test.txt")
    ↓
I/O管理器将IRP下发文件系统栈
    ↓
MUP.Sys识别UNC路径,路由至mrxsmb.sys
    ↓
mrxsmb构造SMB会话协商报文,通过tcpip.sys发起TCP 445连接
    ↓
完成版本协商 → Kerberos/NTLM认证 → TreeConnect(挂载共享)
    ↓
发送 SMB OPEN 请求打开目标文件
    ↓
下发 SMB READ 请求读取文件内容
    ↓
服务器srv.sys接收命令,访问本地NTFS读取数据
    ↓
数据封装进SMB响应包原路返回
    ↓
mrxsmb解析响应,把数据向上返回应用层

链路 B:SMB 服务端接收写入请求

plaintext
客户端TCP报文到达网卡 → ndis.sys → tcpip.sys
    ↓
srvnet.sys监听445端口接收SMB载荷
    ↓
srv.sys解析SMB命令(Write/Create/SetInfo)
    ↓
发起本地I/O操作访问本地卷(NTFS)
    ↓
生成SMB响应数据包,发回客户端

链路 C:会话断开流程

客户端发送 Logoff 请求 → TreeDisconnect → TCP 连接优雅关闭;
 
异常断网:依靠 SMB 超时机制回收会话、释放文件锁。

五、配套链

1. Windows 原生运维工具

  1. PowerShell SMB 专用模块
powershell
Get-SmbServerConfiguration
Get-SmbClientConfiguration
Get-SmbSession
Get-SmbOpenFile
  1. net use:映射 / 删除网络驱动器
  2. 资源监视器:查看 SMB 会话、打开文件、流量
  3. 事件日志:Microsoft-Windows-SmbServerMicrosoft-Windows-SmbClient
  4. Wireshark:SMB 流量抓包解析(过滤 tcp.port == 445

2. 调试诊断配套

  1. SMB ETW 跟踪:netsh trace start provider=Microsoft-Windows-SmbServer
  2. WinDbg:可调试 mrxsmb.sys / srv.sys IRP 阻塞、死锁、内存泄漏
  3. Test-SmbConnection:测试两端 SMB 版本协商连通性

3. 生态配套

  1. Samba:Linux/Unix 平台 SMB 协议实现,与 Windows 互通
  2. Azure Files / Azure File Sync:云端 SMB 共享服务
  3. 分布式方案:Windows Scale-Out File Server(基于 SMB3)
  4. 备份软件、存储网关大量基于 SMB 协议访问文件存储

4. 安全配套

  • 防火墙策略:管控 TCP 445 访问
  • GPO:强制启用 SMB 签名、禁用 SMB1、强制 SMB 加密
  • EDR:监控 srv.sys、mrxsmb 行为,防御 SMB 横向渗透

六、典型故障与风险清单

  1. SMB1 启用风险:永恒之蓝一类高危漏洞,内网横向攻击载体;生产环境强制禁用 SMB 1.0。
  2. 协商失败、无法访问共享:防火墙拦截 445、两端协议版本不兼容、SMB 加密策略不匹配。
  3. 文件锁卡死、会话残留:客户端异常断电,SMB 租赁超时未释放;可通过 Get-SmbOpenFile 强制关闭句柄。
  4. 大文件传输卡顿:未启用 SMB Multichannel、网卡 RSS 未开启、租赁缓存参数不合理。
  5. 蓝屏场景:极少为 srv.sys 本身 bug;大多是第三方过滤驱动(杀毒、备份快照驱动)拦截 SMB I/O 造成死锁 / IRP 冲突。

七、极简总结(汇报提纲)

SMB 是 Windows 跨主机资源访问标准协议;
 
内核由 mrxsmb.sys(客户端重定向器)、srv.sys+srvnet.sys(服务端) 实现,依托 RDBSS 网络重定向框架;
 
上层统一封装为标准文件 API,底层承载于 TCP 445;
 
SMB3.x 引入加密、Multichannel、RDMA 成为企业存储主流;
 
运维核心控制点:协议版本管控、SMB 签名 / 加密、445 端口访问策略、会话与文件句柄管理。
 

SMB over QUIC 完整解构拆解

基础定位

SMB over QUIC:Windows 平台为 SMB3.1.1 新增的可选传输层;使用 IETF RFC9000 QUIC(UDP+TLS1.3)替代传统 TCP 承载 SMB 报文,业内俗称「内置 SMB VPN」。
硬性约束:
  1. 仅支持 SMB 3.1.1,不兼容 SMB1/SMB2;
  2. 默认端口 UDP 443(区别传统 SMB TCP 445);
  3. 默认关闭,管理员主动启用;客户端不会强制服务器开启;
  4. Windows 生态原生实现;Samba 4.23 + 实验性支持,尚未大规模商用
image
SMB多传输栈架构图
 

一、底层原理

1. 设计目标

解决传统 SMB over TCP 公网暴露痛点:
  • TCP 445 极易被运营商 / 防火墙拦截,直接暴露互联网风险极高(历史大量 SMB 漏洞横向渗透);
  • TCP 无内置加密,需要额外配置 SMB 加密或 IPsec;
  • TCP 连接无法平滑应对客户端 IP 切换(Wi‑Fi ↔ 移动网络);
  • TCP 队头阻塞,广域网丢包场景性能衰减严重。
SMB over QUIC 核心价值:
 
基于 UDP 443(和 HTTPS 共用端口,防火墙放行概率极高);QUIC 强制绑定 TLS1.3,传输通道全程加密;原生支持连接迁移、0‑RTT 握手、多路复用,适配远程移动办公、零信任外网文件访问。

2. 协议分层模型(Windows 内核 + 用户态组合架构)

plaintext
 
 
 
应用层:Explorer、robocopy、业务程序 CreateFile/ReadFile
        ↓
I/O管理器 → MUP.SYS
        ↓
【客户端】mrxsmb.sys(SMB重定向器) / 【服务端】srv.sys+srvnet.sys
        ↓
Windows QUIC运行时 MSQUIC(msquic.dll 用户态QUIC协议栈)
        ↓
UDP传输(tcpip.sys)
        ↓
ndis.sys(NDIS网络抽象层)
        ↓
网卡硬件
 
关键差异:
 
SMB over TCP:SMB 报文直接通过内核 Winsock(AFD/TCP)收发;
 
SMB over QUIC:SMB 内核驱动将报文转发至用户态 msquic.dll完成 QUIC 封装、TLS1.3 加密。

3. 核心机制原理

  1. ALPN 协议区分
     
    QUIC 握手 ALPN 标识 smb,与 HTTP/3(h3)区分;同一 UDP 443 端口可同时承载 HTTP/3 与 SMB over QUIC。
  2. 双重加密模型(两种模式)
  • 默认:QUIC 层 TLS1.3 加密 + SMB 层可选 SMB 加密(双重加密);
  • Win2025 新增:协商ACCEPT_TRANSPORT_LEVEL_SECURITY,可关闭上层 SMB 加密,仅依赖 QUIC 传输加密降低 CPU 开销。
  1. 连接迁移(Connection Migration)
     
    客户端切换网络、IP 变更时,QUIC 连接维持不断;传统 TCP 会直接断连重建 SMB 会话。
  2. 客户端默认连接策略
     
    客户端优先尝试 TCP 445;TCP 连接失败后,自动尝试 SMB over QUIC;也可通过组策略强制优先使用 QUIC。
  3. 证书强制校验约束
     
    客户端不能使用 IP 地址连接;必须使用 DNS FQDN,服务器证书 SAN 必须匹配访问域名,否则 QUIC 握手失败。

4. 会话完整分层生命周期

plaintext
 
 
 
DNS解析文件服务器FQDN
→ UDP发起QUIC握手(TLS1.3,验证服务器证书)
→ QUIC隧道建立完成,在隧道内建立SMB3.1.1会话
→ SMB协商、Kerberos/NTLM身份认证
→ TreeConnect挂载共享、文件I/O读写
→ 正常断开:SMB Logoff → QUIC优雅关闭
→ 异常断网:QUic连接超时回收SMB会话,释放文件锁
 

二、依赖文件

1. 核心二进制载体

  1. msquic.dll:Windows MS‑QUIC 协议栈(用户态,实现 RFC9000 QUIC),SMB over QUIC 核心依赖;
  2. 传统 SMB 内核驱动(复用原有组件)
    • 客户端:mrxsmb.sysmup.sysrdbss.sys
    • 服务端:srv.syssrvnet.sys
  3. 加密支撑:schannel.dllbcrypt.dll(TLS1.3、证书校验)

2. 网络内核依赖

  • tcpip.sys UDP 协议支撑
  • ndis.sys 网络驱动抽象层

3. 配置持久载体(注册表)

plaintext
 
 
 
# SMB服务端QUIC总开关
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
EnableSMBQUIC (DWORD)

# 客户端策略:优先/启用SMB over QUIC
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters

# 服务器证书绑定信息(SMB QUIC证书映射)
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\QUICCertificates
 

4. 证书存储

本地计算机证书存储区 LocalMachine\My,存放 SMB QUIC 服务器身份证书。

三、依赖关系

1. 操作系统硬性兼容矩阵

✅ 服务端:
  • Windows Server 2022 Datacenter: Azure Edition(需更新补丁)
  • Windows Server 2025 所有版本
     
    ✅ 客户端:
  • Windows 11 22H2 及以上(安装对应累积更新)
     
    ❌ Windows 10、普通 Server2022 标准版原生不支持

2. 启动与连接依赖顺序

  1. 网络栈就绪(网卡 IP、DNS 可用)
  2. 加载 SMB 内核驱动(srv.sys/mrxsmb.sys)
  3. 加载 msquic.dll QUIC 运行时
  4. 服务端绑定证书,监听 UDP 443
  5. 客户端发起 QUIC 握手 → TLS 证书校验 → 建立 SMB 会话

3. 身份认证依赖

  1. 推荐:Kerberos
     
    外网场景需要 KDC Proxy(kpssvc 服务),客户端通过 QUIC 隧道代理访问域控获取票据;
  2. 工作组场景:支持 NTLM,但安全较弱;
  3. 增强安全:可开启 QUIC 双向 mTLS,校验客户端证书白名单。

4. 网络依赖约束

  • 入站放行:UDP 443严禁对公网开放 TCP 445
  • 防火墙不能启用 UDP 会话超时过短策略;
  • NAT 网关必须支持 UDP 端口映射、不强制拦截长生命周期 UDP 流。

5. 功能兼容性依赖

SMB Multichannel、SMB 压缩、目录租赁、持续可用(CA)、SMB 签名全部可在 QUIC 传输上正常工作
 
仅不支持 SMB Direct(RDMA)(RDMA 为独立传输,不能和 QUIC 叠加)。

四、完整逻辑链路

链路 A:客户端发起 SMB over QUIC 访问(\fs.contoso.com\share)

plaintext
 
 
 
应用调用CreateFile打开UNC路径
    ↓
MUP.sys 将请求路由至 mrxsmb.sys(SMB客户端重定向器)
    ↓
客户端先尝试TCP 445连接(默认策略)
    ↓
TCP连接超时/防火墙阻断,切换至SMB over QUIC路径
    ↓
mrxsmb 将SMB报文转发至msquic.dll
    ↓
msquic.dll:UDP报文封装、发起QUIC握手 + TLS1.3校验服务器证书
    ↓
QUIC隧道协商成功,建立单一可靠流承载SMB3.1.1报文
    ↓
隧道内部执行标准SMB流程:版本协商 → 认证 → TreeConnect → 文件读写
    ↓
服务端方向:msquic.dll解QUIC载荷 → srv.sys解析SMB命令 → 访问本地NTFS文件系统
    ↓
响应报文原路封装QUIC+TLS,回传给客户端
 

链路 B:网络切换(Wi‑Fi → 5G 移动网络,IP 变更)

plaintext
 
 
 
客户端IP、出口端口发生变化
QUIC触发Connection Migration机制,使用原连接ID继续通信
QUIC隧道不中断 → SMB会话保持存活
上层应用无感知,文件读写不中断
【对比TCP】TCP连接直接断开,SMB会话失效,文件句柄丢失
 

链路 C:服务端关闭流程

plaintext
 
 
 
PowerShell执行 Set-SmbServerConfiguration -EnableSMBQUIC $false
srv.sys停止QUIC监听器,关闭UDP 443绑定
msquic释放所有活跃QUIC连接
强制断开所有SMB over QUIC会话,回收文件锁
 

五、配套链

1. Windows 原生运维工具

PowerShell(核心管理命令)

powershell
 
 
 
# 启用服务器SMB over QUIC
Set-SmbServerConfiguration -EnableSMBQUIC $true -Force
# 绑定服务器证书
Set-SmbServerCertificate -CertificateThumbprint "XXX" -Force
# 查看QUIC会话
Get-SmbSession | Where Transport -eq QUIC
# 查看SMB服务器全局配置
Get-SmbServerConfiguration
 
组策略路径:
 
计算机配置 → 管理模板 → 网络 → Lanman工作站 → 启用SMB over QUIC

防火墙规则

内置规则:文件和打印机共享(SMB-QUIC-In) UDP 443

2. 诊断调试配套

  1. ETW 跟踪:Microsoft-Windows-SmbServerMicrosoft-Windows-MsQuic,抓取 QUIC 握手、证书失败、会话断开日志;
  2. Wireshark:过滤 udp.port == 443 && quic,QUIC 载荷加密,仅能看到传输层信息;
  3. 资源监视器:区分 SMB 会话传输类型(TCP / QUIC);
  4. 性能计数器:SMB Server QUIC 监控连接数、加密操作、吞吐。

3. 生态配套对比

  1. Windows:原生完整支持;
  2. Samba:4.23 + 实验性实现,生产环境谨慎使用;
  3. 同类传输横向对比:
    • SMB over TCP:内网标准,TCP445;
    • SMB over RDMA(SMB Direct):数据中心低延迟存储;
    • SMB over QUIC:外网 / 移动远程访问场景。

4. 周边安全配套

  1. PKI 证书体系(ADCS / 公网 CA)签发服务器证书;
  2. KDC Proxy 服务(kpssvc)支撑外网 Kerberos 认证;
  3. 零信任网关可叠加 QUIC 客户端证书白名单访问控制。

六、典型故障清单与根因

  1. QUIC 握手失败,无法连接
    • 最常见:使用 IP 地址访问;证书 SAN 不匹配 FQDN;证书过期、不受客户端信任;
    • 防火墙未放行 UDP 443(很多人误开放 TCP 443)。
  2. TCP 可以访问共享,QUIC 无法连通
     
    检查:服务器是否绑定有效 SMB QUIC 证书、EnableSMBQUIC 是否开启。
  3. 连接频繁断开
     
    NAT 网关 UDP 空闲超时时间太短;移动网络丢包过高。
  4. 性能偏低
     
    msquic 用户态加密占用 CPU;大量大文件吞吐场景内网优先使用 TCP/RDMA,不建议 QUIC。
  5. 认证失败(外网 Kerberos)
     
    未部署 KDC Proxy,客户端无法联系内网域控。

七、极简总结(汇报提纲)

SMB over QUIC 是面向外网远程文件访问的 SMB3.1.1 可选传输;依托 RFC9000 QUIC+TLS1.3,使用 UDP 443 替代高危 TCP445。
 
架构上复用成熟 SMB 内核驱动,由 msquic.dll 用户态组件完成 QUIC 封装;天然加密、支持网络切换连接迁移,替代传统 VPN 远程访问文件共享。
 
适用场景:异地移动办公、零信任边缘文件服务;不推荐作为内网高吞吐存储主传输;运维关键点:FQDN + 有效证书、UDP 防火墙策略、KDC 代理部署。
 

一、SMB over TCP / SMB over RDMA(SMB Direct) / SMB over QUIC 三维对比表

前提:三者均基于 SMB3.x 协议语义,仅底层传输层不同;均支持 SMB Multichannel、租赁、持续可用;不可同时叠加多种传输
表格
 
 
 
对比维度 SMB over TCP SMB over RDMA(SMB Direct) SMB over QUIC
传输协议 TCP/IP RDMA(RoCEv2 / iWARP / InfiniBand) QUIC(RFC9000,UDP 承载)
默认端口 TCP 445 无标准 IP 端口(RDMA 网卡原生) UDP 443
操作系统支持 Windows Vista+/Server2008+;Samba 全版本 WinServer2012+(服务端);Win10 企业版 / 工作站版(仅客户端);需要 RDMA 网卡 服务端:WinServer2022 Azure 版、WinServer2025
 
客户端:Win11 22H2+;Samba4.23 + 实验支持
硬件依赖 标准以太网网卡,无特殊硬件要求 必须 RDMA 网卡(ConnectX 等)+RDMA 交换机 普通标准网卡,无硬件特殊要求
加密机制 可选 SMB 加密;TCP 本身无加密;可叠加 IPsec 可选 SMB 加密;RDMA 裸传输无内置加密 强制 TLS1.3 加密隧道;可额外开启上层 SMB 加密(双重加密)
网络切换(IP 变更) TCP 连接断开,SMB 会话失效 IP 变更连接中断 支持Connection Migration,网络切换会话不断
CPU 开销 中等,内核 TCP 协议栈参与数据拷贝 极低,网卡硬件零拷贝卸载,CPU 占用最小 中等偏高(msquic.dll 用户态协议栈加密处理)
延迟特性 毫秒级,普通内网够用 微秒级,三者最低延迟 广域网优于 TCP;内网延迟高于 RDMA、标准 TCP
防火墙友好度 TCP445,公网高危,运营商普遍拦截 仅内网 RDMA 专用网络,无法跨公网 UDP443,与 HTTPS 同端口,更容易穿透 NAT / 防火墙
证书要求 无强制证书(仅 SMB 加密可选) 无强制证书 必须可信服务器证书,访问只能使用 FQDN,禁止 IP 连接
典型适用场景 企业内网标准文件共享、通用场景、Windows↔Samba 互通 数据中心、Hyper-V、SQL Server、横向集群存储(低延迟高吞吐内网) 外网远程办公、移动设备、零信任边缘访问、替代 VPN 访问文件共享
安全风险 公网直接暴露 TCP445 风险极高(历史大量 SMB 漏洞) 隔离内网使用,对外无法路由 不建议和 TCP445 同时对公网开放;依靠 TLS1.3 防护
核心短板 广域网丢包存在 TCP 队头阻塞;网络切换断连 硬件成本高、仅限内网、无法路由跨互联网 用户态 QUIC 加密 CPU 消耗更高;暂不适合超大吞吐存储集群

二、SMB over QUIC 标准化部署 SOP(微软官方规范版)

前置约束清单(必须全部满足)

1. 操作系统基线

✅ 服务端
  • Windows Server 2022 Datacenter: Azure Edition(安装 KB5035857 累积更新)
  • Windows Server 2025 全版本
     
    ❌ Windows Server 2022 标准版不原生支持
✅ 客户端
  • Windows 11 22H2 及以上正式版本
     
    ❌ Windows10 全系不支持

2. PKI 证书硬性规范

image
证书算法要求
image
EKU用途
image
SAN域名
 
  1. EKU 增强密钥用途:服务器身份验证(1.3.6.1.5.5.7.3.1)
  2. 密钥用法:数字签名
  3. 签名算法:SHA256-RSA / ECDSA P256+
  4. SAN(使用者可选名称)必须包含客户端访问服务器全部 FQDN 域名
  5. 证书导入位置:本地计算机 → 个人包含私钥
  6. 禁止仅使用 IP 地址访问,证书不能只绑定 IP

3. 网络与 DNS 要求

  1. 公网 DNS 解析域名指向文件服务器公网 IP
  2. 防火墙放行 入站 UDP 443
  3. 安全规范:外网接口关闭 TCP445 入站规则,禁止公网开放 TCP445
  4. NAT 网关 UDP 空闲超时建议≥90 秒,防止 QUIC 隧道被切断

4. 认证方案推荐

优先:AD 域 + Kerberos;外网配套部署 KDC Proxy(kpssvc)
 
工作组场景支持 NTLM,但安全较弱,不建议公网使用。

阶段 1:服务器端部署(管理员 PowerShell)

步骤 1:导入证书并获取证书指纹

powershell
 
 
 
# 列出本地计算机个人存储证书
Get-ChildItem Cert:\LocalMachine\My
# 筛选目标证书(替换域名)
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.DNSNameList -contains "fs.contoso.com"}
$cert.Thumbprint
 

步骤 2:启用 SMB over QUIC 功能

powershell
 
 
 
# 开启SMB QUIC总开关
Set-SmbServerConfiguration -EnableSMBQUIC $true -Force

# 将证书绑定至SMB QUIC服务(填入证书指纹)
New-SmbServerCertificateMapping -Name fs.contoso.com -Thumbprint "证书SHA256指纹" -Force
 

步骤 3:防火墙规则配置

powershell
 
 
 
# 启用系统内置SMB-QUIC入站规则
Get-NetFirewallRule -DisplayName "文件和打印机共享(SMB-QUIC-In)" | Enable-NetFirewallRule
# 按需修改规则适用网络配置文件(公网/域/专用)
 

步骤 4:验证监听状态

powershell
 
 
 
# 查看SMB服务器全局配置
Get-SmbServerConfiguration | Select EnableSMBQUIC
# 查看证书绑定
Get-SmbServerCertificateMapping
# 查看端口监听
netstat -ano | findstr :443
 

阶段 2:客户端配置(Win11)

模式 A(默认自动策略)

客户端访问 UNC 路径 \\fs.contoso.com\share
 
默认行为:优先尝试 TCP445,TCP 不通自动降级尝试 SMB over QUIC

模式 B(组策略强制优先 QUIC)

路径:
 
计算机配置 → 管理模板 → 网络 → Lanman工作站 → 启用SMB over QUIC
 
启用后客户端优先发起 QUIC 连接。

测试访问

plaintext
 
 
 
\\fs.contoso.com\共享名称
 
不要使用 \\公网IP\share,证书校验直接失败。

阶段 3:连通性验证与排错

  1. 查看当前 SMB 会话传输类型
powershell
 
 
 
Get-SmbSession | Select ClientComputerName,Transport
 
Transport 列显示QUIC代表连接成功。
  1. ETW 日志调试
powershell
 
 
 
# 启动SMB+MsQuic跟踪
netsh trace start provider=Microsoft-Windows-SmbServer provider=Microsoft-Windows-MsQuic capture=yes
# 复现故障后停止
netsh trace stop
 

阶段 4:安全加固可选配置(生产环境推荐)

powershell
 
 
 
# 启用客户端证书双向认证(mTLS)
Set-SmbServerCertificateMapping -Name fs.contoso.com -RequireClientAuthentication $true
# 全局开启SMB3.1.1加密(双重加密)
Set-SmbServerConfiguration -EncryptData $true -Force
 

阶段 5:关停 SMB over QUIC(运维回滚命令)

powershell
 
 
 
# 关闭QUIC
Set-SmbServerConfiguration -EnableSMBQUIC $false -Force
# 删除证书绑定
Remove-SmbServerCertificateMapping -Name fs.contoso.com -Force
 

三、典型故障根因速查

  1. 握手失败无法连接
     
    最常见:使用 IP 访问、证书 SAN 不匹配域名、客户端不信任 CA、防火墙未放行 UDP443。
  2. TCP 能连通,QUIC 始终失败
     
    检查证书绑定、EnableSMBQUIC状态、公网 UDP 是否被运营商拦截。
  3. 连接频繁掉线
     
    NAT 设备 UDP 会话超时太短;移动网络高丢包。
  4. 外网 Kerberos 认证失败
     
    未部署 KDC Proxy,客户端无法访问内网域控。

四、部署决策建议

  1. 内网业务存储集群 → SMB over RDMA(最优)
  2. 日常企业内网通用文件共享 → SMB over TCP
  3. 远程办公、公网零信任访问文件服务器 → SMB over QUIC

Screenshot_2026-02-08-02-25-32-761_com.larus.nova-edit

Screenshot_2026-02-08-02-25-21-761_com.larus.nova-edit

Screenshot_2026-02-08-02-25-09-862_com.larus.nova-edit

Screenshot_2026-02-08-02-24-59-639_com.larus.nova-edit

Server Message Block (SMB) 是一种网络文件共享协议,最初由 IBM 开发,后由微软广泛采用并演进,用于在局域网(LAN)中实现文件、打印机、串行端口等资源的共享与访问。它是 Windows 网络中“网上邻居”或“网络”功能的核心协议。

一、核心功能

SMB 允许客户端通过网络:
  • 读写远程服务器上的文件(如同本地磁盘)
  • 打印到远程打印机
  • 访问命名管道(Named Pipes)和邮件槽(Mailslots)——用于进程间通信(IPC)
✅ 典型场景:
  • 办公室电脑访问 NAS 上的共享文件夹
  • Windows 电脑连接公司打印服务器
  • 远程执行管理命令(如 net usepsexec

二、SMB 协议版本演进

Screenshot_2026-02-08-02-29-06-987_com.larus.nova-edit

Screenshot_2026-02-08-02-29-24-146_com.larus.nova-edit
 
版本 别名 主要改进 安全性
SMB 1.0 CIFS(Common Internet File System) 最初实现,兼容 DOS/Windows 95 ❌ 极不安全(明文认证、无加密)
SMB 2.0 减少命令数量、支持更大文件、性能优化(Vista/Win2008 引入) ⚠️ 支持 NTLMv2,但仍可被降级攻击
SMB 2.1 引入“机会锁”(Opportunistic Locking)提升并发性能(Win7/2008R2) ⚠️ 同 SMB 2.0
SMB 3.0 强制加密、多通道(Multichannel)、透明故障转移(Win8/2012) ✅ 支持 AES-128 加密
SMB 3.1.1 预认证完整性(防中间人)、AES-256 加密、更强身份验证(Win10/2016) ✅✅ 当前最安全版本

Screenshot_2026-02-08-02-28-56-387_com.larus.nova-edit

🔒 重要提示
SMBv1 因存在严重漏洞(如 EternalBlue 永恒之蓝),已被微软官方弃用,建议在所有系统中禁用。

三、工作原理简述

  1. 建立连接:客户端通过 TCP 445 端口(或 NetBIOS 139)连接服务器;
  2. 协商协议:双方协商使用哪个 SMB 版本;
  3. 身份认证:使用 NTLM 或 Kerberos 验证用户权限;
  4. 挂载共享:客户端将远程共享目录映射为本地驱动器(如 Z:\);
  5. 文件操作:读写、创建、删除等操作通过 SMB 命令封装传输。

四、常见应用场景

表格
 
场景 说明
企业文件服务器 Windows Server + SMB 共享部门文档
家庭 NAS Synology/QNAP 等设备默认启用 SMB 供 Windows/Mac 访问
云存储网关 Azure Files、AWS FSx for Windows File Server 均基于 SMB 3.x
远程管理 通过 \\server\admin$ 访问系统目录,执行运维任务

五、安全风险与防护

⚠️ 主要风险:

  • SMBv1 漏洞:EternalBlue 可导致远程代码执行(WannaCry 勒索病毒利用此漏洞)
  • 暴力破解:弱密码易被爆破
  • 中间人攻击:未加密流量可被窃听(SMB 1/2)

✅ 防护措施:

  1. 禁用 SMBv1
    powershell
    编辑
     
     
     
    # Windows: 
    Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
  2. 启用 SMB 加密(SMB 3.0+):
    在服务器上设置共享属性 → “加密数据访问”
  3. 限制 445 端口暴露:防火墙禁止外网访问 TCP 445
  4. 使用强密码 + 账户隔离:避免使用高权限账户进行日常文件访问

六、跨平台支持

表格
 
平台 支持情况
Windows 原生完整支持(SMB 1–3.1.1)
Linux/macOS 通过 Samba 软件实现兼容(默认支持 SMB 2/3)
Android/iOS 部分文件管理器 App 支持(如 Solid Explorer、FileExplorer)
💡 macOS 从 High Sierra 起默认禁用 SMBv1,仅使用 SMB 2/3。


SMB 是现代局域网文件共享的基石协议
,尤其在 Windows 生态中不可或缺。
随着 SMB 3.x 引入强制加密、多通道、高可用等特性,它已从“老旧协议”蜕变为安全、高效的企业级文件传输方案
关键原则禁用 SMBv1,启用 SMB 3.x 加密,最小权限访问——即可兼顾便利与安全。

Screenshot_2026-02-08-02-25-32-761_com.larus.nova-edit

SMB Client Shares(客户端共享计数器集)
这些计数器从SMB客户端角度度量对服务器共享的访问。

text
重要计数器:
- Attempted Compressed Requests/sec:客户端尝试压缩的请求数/秒。
- Avg. Bytes/Read:每次读取操作的平均字节数。
- Avg. Bytes/Write:每次写入操作的平均字节数。
- Avg. Data Bytes/Request:每个数据请求的平均数据字节数。
- Avg. Data Queue Length:数据队列的平均长度(排队的数据请求数)。
- Avg. Read Queue Length:读取队列的平均长度。
- Avg. Write Queue Length:写入队列的平均长度。
- Avg. sec/Data Request:每个数据请求的平均时间(秒)。
- Avg. sec/Read:每次读取的平均时间(秒)。
- Avg. sec/Write:每次写入的平均时间(秒)。
- Compressed Bytes Sent/sec:压缩字节发送速率。
- Compressed Responses/sec:压缩响应数/秒。
- Credit Stalls/sec:由于信用机制导致的延迟数/秒(SMB2+使用信用机制控制流量)。
- Current Data Queue Length:当前数据队列长度(当前排队的数据请求数)。
- Data Bytes/sec:数据字节传输速率。
- Data Requests/sec:数据请求数/秒。
- Metadata Requests/sec:元数据请求数/秒(例如,打开、关闭、获取属性等)。
- Read Bytes/sec:读取字节速率。
- Read Requests/sec:读取请求数/秒。
- Write Bytes/sec:写入字节速率。
- Write Requests/sec:写入请求数/秒。
- 与SMB Direct相关的计数器(如Read Bytes transmitted via SMBDirect/sec)表示通过SMB Direct(RDMA)传输的字节数。

二、SMB Direct(SMB直接计数器集)
SMB Direct使用RDMA(远程直接内存访问)技术,提供高性能、低延迟的数据传输。这些计数器度量SMB Direct的活动。

text
重要计数器:
- Bytes RDMA Read/sec:通过RDMA读取的字节数/秒。
- Bytes RDMA Written/sec:通过RDMA写入的字节数/秒。
- Bytes Received/sec:接收的字节数/秒。
- Bytes Sent/sec:发送的字节数/秒。
- RDMA Reads/sec:RDMA读取操作数/秒。
- RDMA Writes/sec:RDMA写入操作数/秒。
- Total Connections:总连接数。
- Total Connections (Max):最大连接数。
- 其他计数器涉及资源分配失败和延迟(如Allocation Failures, Stalls等),这些可以帮助诊断RDMA资源问题。

三、SMB Server(服务器计数器集)
这些计数器度量SMB服务器(文件服务器)的活动,包括读写请求和字节数。

text
重要计数器:
- Read Bytes/sec:服务器读取字节速率。
- Read Requests/sec:服务器读取请求数/秒。
- Write Bytes/sec:服务器写入字节速率。
- Write Requests/sec:服务器写入请求数/秒。
- Receive Bytes/sec:服务器接收字节速率(从客户端接收的字节数)。
- Send Bytes/sec:服务器发送字节速率(发送给客户端的字节数)。

四、SMB Server Shares(服务器共享计数器集)
这些计数器针对每个SMB共享进行度量,提供更详细的共享级别统计。

text
重要计数器:
- % Persistent Handles:持久句柄的百分比。
- % Resilient Handles:弹性句柄的百分比。
- Avg. Bytes/Read:每次读取的平均字节数。
- Avg. Bytes/Write:每次写入的平均字节数。
- Avg. Data Bytes/Request:每个数据请求的平均数据字节数。
- Avg. Data Queue Length:平均数据队列长度。
- Avg. Read Queue Length:平均读取队列长度。
- Avg. Write Queue Length:平均写入队列长度。
- Avg. sec/Data Request:每个数据请求的平均时间(秒)。
- Avg. sec/Read:每次读取的平均时间(秒)。
- Avg. sec/Write:每次写入的平均时间(秒)。
- Current Data Queue Length:当前数据队列长度。
- Current Open File Count:当前打开的文件数。
- Current Pending Requests:当前挂起的请求数。
- Data Bytes/sec:数据字节传输速率。
- Data Requests/sec:数据请求数/秒。
- Files Opened/sec:文件打开数/秒。
- Read Bytes/sec:读取字节速率。
- Read Requests/sec:读取请求数/秒。
- Write Bytes/sec:写入字节速率。
- Write Requests/sec:写入请求数/秒。
- Transferred Bytes/sec:传输字节速率(总和)。
- Tree Connect Count:树连接数(即连接到该共享的客户端数)。
- 与持久句柄、弹性句柄相关的计数器:这些与SMB3.0的故障转移和连续可用性功能相关。
- 与BypassCSV(集群共享卷)和SMB Direct相关的计数器:表示通过这些高级功能传输的数据。

由于计数器非常多,以上只列出了部分关键计数器。在实际监控中,可以根据需要选择相应的计数器。

注意:在Windows性能监视器中,这些计数器位于不同的对象下,例如:

  • SMB Client Shares: 位于“SMB Client Shares”对象下。

  • SMB Direct: 位于“SMB Direct”对象下。

  • SMB Server: 位于“SMB Server”对象下。

  • SMB Server Shares: 位于“SMB Server Shares”对象下。


涵盖了 Windows SMB(Server Message Block)协议 的三类关键性能计数器集,分别对应:

  1. SMB Client Shares(客户端共享访问)
  2. SMB Direct(基于 RDMA 的高性能传输)
  3. SMB Server / SMB Server Shares(服务器端共享与会话)

这些计数器用于监控 SMB 2.x/3.x 协议在文件共享、远程 I/O、压缩、RDMA(SMB Direct)、持久句柄等高级功能方面的性能和健康状况。以下是对这三类计数器的系统性解释与使用建议。


一、SMB Client Shares(客户端视角)

监控 本机作为 SMB 客户端 访问远程 SMB 共享时的行为。

关键指标分类:

1. 吞吐与效率

  • Avg. Bytes/Read / Avg. Bytes/Write:每次读/写操作的平均数据量。值过低可能表示“小包风暴”,影响效率。
  • Avg. Data Bytes/Request:每个请求携带的平均有效数据字节数。
  • Data Bytes/sec:实际传输的数据速率(不含协议开销)。
  • Read Bytes/sec / Write Bytes/sec:读写吞吐量。

2. 延迟

  • Avg. sec/Read / Avg. sec/Write / Avg. sec/Data Request:关键延迟指标。若 > 10ms,可能网络或服务器存在瓶颈。
  • 队列长度(如 Avg. Read Queue Length)高 + 延迟高 = 后端处理能力不足。

3. SMB 压缩(SMB 3.1.1+)

  • Attempted Compressed Requests/sec:尝试压缩的请求数。
  • Successful Compressed Requests/sec:成功压缩的请求数。
  • Compressed Bytes Sent/sec:节省的带宽。

若压缩成功率低,可能数据不可压缩(如已加密/压缩文件)。

4. Turbo I/O(SMB 3.0+ 的多通道/大缓冲优化)

  • Turbo I/O Reads/sec / Turbo I/O Writes/sec:使用优化路径的 I/O 操作频率。

高值表示高效利用 SMB 3.x 特性。

5. SMB Direct(RDMA)路径

  • Read/Write Bytes transmitted via SMB Direct/sec:通过 RDMA 传输的数据量。

若为 0,但配置了 RDMA,需检查网络适配器、驱动、防火墙。

6. 信用流控(Credit-based Flow Control)

  • Credit Stalls/sec:因信用耗尽导致的请求阻塞。

非零值表示客户端等待服务器信用,可能服务器响应慢或网络延迟高。


二、SMB Direct(RDMA 层性能)

监控 基于 RDMA(如 RoCE、iWARP、InfiniBand)的 SMB Direct 通信。

核心关注点:

1. RDMA 数据传输

  • Bytes RDMA Read/sec / Bytes RDMA Written/sec:真正的零拷贝 RDMA 流量。
  • RDMA Reads/sec / RDMA Writes/sec:RDMA 操作频率。

2. 资源分配与内存注册

  • Allocation Failures (QP, MR, PD, CQ, FRMR...):各类 RDMA 资源分配失败。

任何非零值都严重! 表示系统内存、HCA(网卡)资源不足。

  • FRMR Pages / FRMRs:Fast Registration Memory Regions 使用情况。
  • Fast registrations/sec:高频内存注册可能影响 CPU。

3. 连接管理

  • Inbound/Outbound Connections 及其 Max/Pending/Failures:
    • 高 Pending:连接建立慢。
    • Failures 或 Refusals:防火墙、认证、端口(通常 5445/TCP + 445)问题。

4. 队列与通知

  • SCQ/RCQ Notifications/sec:发送/接收完成队列事件。
  • Stalls (Send Credit) / Stalls (SQ):发送队列或信用不足导致停顿。

5. 错误

  • Protocol Errors:SMB over RDMA 协议解析错误。
  • Invalidations/sec:内存区域失效事件(正常会有,但突增需警惕)。

健康标志Allocation Failures = 0Bytes RDMA Read/Written > 0Connections stable


三、SMB Server / SMB Server Shares(服务端视角)

监控 本机作为 SMB 服务器 提供共享服务的性能。

1. 基础吞吐

  • Read/Write Bytes/secRequests/sec:整体负载。
  • Received/Sent Bytes/sec:包含协议头的总流量。

2. 高级功能使用情况

  • 持久句柄(Persistent Handles)

    • % Persistent Handles:支持透明故障转移(如故障集群)。
    • Total Persistent Handle Reopen Count:客户端重连后恢复句柄的成功/失败次数。

    失败多 → 网络中断时间过长或服务器未启用持久句柄。

  • 弹性句柄(Resilient Handles)(SMB 2.1):

    • 类似持久句柄,但无集群要求。
  • 绕过 CSV(BypassCSV)

    • 在故障转移集群中,直接访问 CSV 卷,避免重定向。
    • Read/Write Bytes transmitted ByPassCSV/sec 高 = 高效路径。

3. 压缩(服务端响应压缩)

  • Attempted/Successful Compressed Responses/sec
  • Bytes Compressed/sec

与客户端压缩对称,节省出站带宽。

4. 并发与队列

  • Current Open File Count:当前打开的文件数。
  • Current Pending Requests:排队中的请求。
  • Avg. Data Queue Length:高值 + 高延迟 = 服务器过载。

5. SMB Direct(服务端)

  • Read/Write Bytes transmitted via SMB Direct/sec:确认 RDMA 是否被服务端使用。

🛠️ 实用建议

监控场景:

场景 关注计数器
高延迟 Avg. sec/ReadAvg. sec/WriteCredit Stalls/sec
低吞吐 Avg. Bytes/ReadTurbo I/O Reads/secSMB Direct Bytes
RDMA 不生效 Bytes RDMA Read/sec = 0Allocation Failures > 0
句柄恢复失败 Total Failed Persistent Handle Reopen Count
压缩无效 Attempted 高但 Successful 低

工具建议:

  • 使用 Performance Monitor (perfmon.exe) 添加上述计数器。
  • 结合 Resource Monitor → “Network” 页签查看 SMB 进程流量。
  • 高级分析:Windows Performance Recorder (WPR) + Windows Performance Analyzer (WPA),启用 SMB 和 Microsoft-Windows-SMBClient ETW 事件。

Windows 性能监视器 中 SMB(Server Message Block)协议 相关的完整计数器集。SMB 是 Windows 网络文件共享的核心协议。下面我将按照 客户端、服务器、SMB Direct(RDMA) 三个主要维度进行系统化分类和详细解释。


一、核心概念理解

  1. SMB 客户端 (SMB Client Shares):访问共享资源的 Windows 计算机

  2. SMB 服务器 (SMB ServerSMB Server Shares):提供文件共享的服务器(如 Windows Server)

  3. SMB Direct:基于 RDMA(远程直接内存访问) 的高性能传输技术,绕过内核和 CPU,用于数据中心和高速网络

  4. BypassCSV:绕过集群共享卷(Cluster Shared Volumes)的锁机制,直接访问存储

  5. 句柄类型

    • 持久句柄 (Persistent Handles):连接中断后自动重建(SMB 3.0+)

    • 弹性句柄 (Resilient Handles):短时中断后自动恢复(SMB 2.1+)

    • 持久句柄 (Durable Handles):类似持久句柄的早期实现


二、SMB 客户端计数器 (SMB Client Shares)

2.1 基础吞吐量与性能

 
 
计数器 解释 监控意义
Read Bytes/sec 每秒从服务器读取的字节数 读取吞吐量,衡量客户端读取性能
Write Bytes/sec 每秒写入服务器的字节数 写入吞吐量,衡量客户端写入性能
Data Bytes/sec 所有数据操作的字节速率 总数据吞吐量(读写总和)
Read Requests/sec 每秒读取请求数 读取 I/O 频率
Write Requests/sec 每秒写入请求数 写入 I/O 频率
Data Requests/sec 每秒所有数据请求数 总请求频率
Metadata Requests/sec 每秒元数据请求数 文件属性、目录枚举等非数据操作频率

2.2 延迟与队列深度

 
 
计数器 解释 监控意义
Avg. sec/Read 每次读取操作的平均时间(秒) 读取延迟,直接影响用户体验
Avg. sec/Write 每次写入操作的平均时间(秒) 写入延迟
Avg. sec/Data Request 每次数据请求的平均时间 总体数据操作延迟
Avg. Read Queue Length 读取队列的平均深度 排队等待的读取请求数
Avg. Write Queue Length 写入队列的平均深度 排队等待的写入请求数
Avg. Data Queue Length 数据队列的平均深度 总体排队深度
Current Data Queue Length 当前数据队列深度 瞬时排队情况

2.3 高级功能与错误

 
 
计数器 解释 监控意义
Credit Stalls/sec 因信用不足而暂停的次数/秒 SMB 2.0+ 的流量控制机制,非零值表示客户端可能发送过快
Transfer Errors/sec 传输错误率 任何非零值都表示网络或服务器问题
Turbo I/O Reads/sec Turbo I/O 读取次数/秒 大文件连续读取优化
Turbo I/O Writes/sec Turbo I/O 写入次数/秒 大文件连续写入优化

2.4 压缩性能

 
 
计数器 解释 监控意义
Attempted Compressed Requests/sec 尝试压缩的请求数/秒 客户端尝试压缩的频率
Successful Compressed Requests/sec 成功压缩的请求数/秒 实际压缩成功的比率
Compressed Bytes Sent/sec 压缩后发送的字节数/秒 压缩节省的带宽量
Compressed Responses/sec 接收到的压缩响应数/秒 服务器返回压缩数据的频率

2.5 SMB Direct (RDMA) 客户端侧

 
 
计数器 解释 监控意义
Read Bytes transmitted via SMB Direct/sec 通过 SMB Direct 传输的读取字节数/秒 RDMA 读取吞吐量
Write Bytes transmitted via SMB Direct/sec 通过 SMB Direct 传输的写入字节数/秒 RDMA 写入吞吐量
Read Requests transmitted via SMB Direct/sec 通过 SMB Direct 的读取请求数/秒 RDMA 读取请求频率

三、SMB 服务器计数器 (SMB Server 和 SMB Server Shares)

3.1 服务器基础性能

 
 
计数器 解释 监控意义
Requests/sec 服务器处理的请求总数/秒 服务器总负载
Received Bytes/sec 服务器接收的字节数/秒 入站带宽使用
Sent Bytes/sec 服务器发送的字节数/秒 出站带宽使用
Transferred Bytes/sec 传输的总字节数/秒 总带宽使用
Current Pending Requests 当前挂起的请求数 服务器待处理的请求队列
Tree Connect Count 树连接数(共享连接数) 当前访问共享的客户端连接数

3.2 文件操作统计

 
 
计数器 解释 监控意义
Files Opened/sec 每秒打开的文件数 文件访问频率
Current Open File Count 当前打开的文件数 服务器内存中的文件句柄数
Total File Open Count 文件打开总次数(累计) 历史统计
Current Bypass Open File Count 当前通过 BypassCSV 打开的文件数 CSV 直接访问的活动文件
Current Durable Open File Count 当前持久句柄打开的文件数 持久连接的文件数

3.3 句柄状态与恢复

 
 
计数器 解释 监控意义
% Persistent Handles 持久句柄的百分比 高百分比表示客户端使用 SMB 3.0 持久性
% Resilient Handles 弹性句柄的百分比 SMB 2.1+ 弹性连接的比率
Total Persistent Handle Reopen Count 持久句柄重新打开总次数 连接中断后恢复的次数
Total Failed Persistent Handle Reopen Count 持久句柄重新打开失败次数 恢复失败可能表示存储问题
Total Resilient Handle Reopen Count 弹性句柄重新打开次数 短时中断恢复统计
Total Durable Handle Reopen Count 持久句柄重新打开次数(早期版本) SMB 2.x 的持久性统计

3.4 服务器侧 SMB Direct 和 BypassCSV

 
 
计数器 解释 监控意义
Read Bytes transmitted via SMB Direct/sec 服务器通过 SMB Direct 发送的读取字节数 服务器 RDMA 出站流量
Write Bytes transmitted via SMB Direct/sec 服务器通过 SMB Direct 接收的写入字节数 服务器 RDMA 入站流量
Read Bytes transmitted ByPassCSV/sec 通过 BypassCSV 读取的字节数 CSV 直接读取吞吐量
Write Bytes transmitted ByPassCSV/sec 通过 BypassCSV 写入的字节数 CSV 直接写入吞吐量

四、SMB Direct (RDMA) 专用计数器

4.1 连接管理

 
 
计数器 解释 监控意义
Total Connections RDMA 连接总数 活动的 RDMA 连接数
Total Connections (Max) 最大 RDMA 连接数 历史峰值
Inbound Connections 入站 RDMA 连接数 客户端发起的连接
Outbound Connections 出站 RDMA 连接数 服务器发起的连接
Inbound Connection Failures 入站连接失败数 RDMA 连接建立问题
Outbound Connection Failures 出站连接失败数 RDMA 连接建立问题

4.2 RDMA 数据传输

 
 
计数器 解释 监控意义
Bytes RDMA Read/sec RDMA 读取字节数/秒 RDMA 读取吞吐量
Bytes RDMA Written/sec RDMA 写入字节数/秒 RDMA 写入吞吐量
RDMA Reads/sec RDMA 读取操作数/秒 读取操作频率
RDMA Writes/sec RDMA 写入操作数/秒 写入操作频率
Bytes Registered 注册的字节总数 RDMA 内存注册量
Fast registrations/sec 快速注册次数/秒 内存注册频率

4.3 资源分配与错误

 
 
计数器 解释 监控意义
Allocation Failures (xx) 各种资源分配失败 MR(内存区域)、QP(队列对)等分配失败
Allocation Stalls (xx) 分配延迟 资源分配等待
Protocol Errors 协议错误数 RDMA 协议错误
FRMR Pages 快速注册内存页数 内存使用情况
FRMRs 快速注册内存区域数 内存区域数量

4.4 队列与信号

 
 
计数器 解释 监控意义
SQ Requests/sec 发送队列请求数/秒 RDMA 发送队列负载
RCQ Notifications/sec 接收完成队列通知数/秒 接收完成事件频率
SCQ Notifications/sec 发送完成队列通知数/秒 发送完成事件频率
Sends/sec 发送操作数/秒 常规发送频率
Receives/sec 接收操作数/秒 常规接收频率

4.5 延迟与瓶颈

 
 
计数器 解释 监控意义
Stalls (Send Credit)/sec 发送信用不足导致的延迟 流控瓶颈
Stalls (RDMA Read)/sec RDMA 读取延迟 读取瓶颈
Stalls (SQ)/sec 发送队列延迟 发送队列满
SQ Requests/sec (unsignaled) 无信号发送请求数/秒 优化发送,无需确认

五、关键监控场景与排查思路

场景1:文件访问缓慢

  1. 查看延迟Avg. sec/ReadAvg. sec/Write

  2. 检查队列Avg. Data Queue LengthCurrent Data Queue Length

  3. 查看吞吐Read Bytes/secWrite Bytes/sec

  4. 检查错误:传输错误(如果有)

场景2:SMB Direct (RDMA) 性能问题

  1. 确认使用Bytes RDMA Read/sec > 0 表示在使用

  2. 检查瓶颈Stalls (Send Credit)/secStalls (RDMA Read)/sec

  3. 查看连接Total ConnectionsInbound Connection Failures

  4. 资源检查Allocation Failures 系列计数器

场景3:高可用性和恢复能力

  1. 句柄状态% Persistent Handles% Resilient Handles

  2. 恢复统计Total Persistent Handle Reopen Count

  3. 失败情况Total Failed Persistent Handle Reopen Count

场景4:压缩效率

  1. 压缩尝试Attempted Compressed Requests/sec

  2. 压缩成功Successful Compressed Requests/sec

  3. 节省带宽:比较Compressed Bytes Sent/sec与原始带宽

场景5:服务器负载分析

  1. 总负载Requests/sec

  2. 连接数Tree Connect Count

  3. 打开文件Current Open File Count

  4. 队列深度Current Pending Requests


六、最佳实践建议

  1. 基线建立:在正常运行时记录各计数器的基准值

  2. 阈值设置

    • 延迟 (Avg. sec/Read) > 50ms 需要关注

    • 队列深度 (Current Data Queue Length) > 5 可能有瓶颈

    • 错误计数器应始终为 0

  3. 关联分析

    • 网络计数器 + SMB 计数器

    • 磁盘计数器 + SMB 计数器

    • CPU 使用率 + SMB 请求率

  4. SMB Direct 专用监控

    • 监控 Allocation Failures 防止资源耗尽

    • 确保 Protocol Errors 为 0

    • 关注 Stalls 计数器识别瓶颈

这些 SMB 计数器提供了从基础文件操作到高级 RDMA 传输的完整可观测性栈:

  1. 基础层:读写吞吐量、延迟、队列深度

  2. 协议层:信用控制、压缩、元数据操作

  3. 高可用层:持久/弹性句柄、恢复统计

  4. 高级传输层:SMB Direct (RDMA) 连接、内存注册、RDMA 操作

  5. 集群优化层:BypassCSV 计数器

在实际监控中,应根据具体场景(普通文件共享 vs. Hyper-V 实时迁移 vs. SQL Server over SMB)选择关键计数器。对于大多数文件服务器,关注 延迟吞吐量 和 错误 三大类计数器即可;对于高性能计算或存储空间直通 (Storage Spaces Direct) 环境,则需要深入监控 SMB Direct 相关计数器。


Screenshot_2025-10-07-17-30-51-221_com.larus.nova-edit

Screenshot_2025-10-07-17-31-38-475_com.larus.nova-edit

SMB 3.1.1 是 SMB 协议的一个更新版本,主要用于提高文件共享和网络通信的安全性,广泛应用于 Windows 10 和 Windows Server 2016 及更高版本。尽管 SMB 3.1.1 提供了更强的加密功能和安全性,但它仍然受到某些漏洞的威胁。以下是一些与 SMB 3.1.1 相关的漏洞:

CVE-2025-33073|Windows SMB 权限提升漏洞

 

7. CVE-2022-30190 (Follina)

  • 描述:这是一个影响 Microsoft Office 和相关组件的漏洞,但通过 SMB 协议的集成,攻击者能够利用它通过共享文件传播恶意代码。
  • 影响范围:Windows 10、Windows 11、Windows Server 系列。
  • 攻击方式:攻击者构造一个包含恶意代码的文件,用户通过 SMB 共享接收到该文件时,恶意代码可以自动执行,导致远程代码执行。
  • 解决方法:立即更新 Office 或相关组件,并确保操作系统安装了最新的安全补丁。

8. CVE-2022-26925 (SMBv3 信息泄露漏洞)

  • 描述:该漏洞允许攻击者通过 SMBv3 协议泄露内存中的敏感信息,可能导致敏感数据被窃取。
  • 影响范围:Windows 10(版本 20H2 和 21H1),Windows Server 2016、2019 和 2022。
  • 攻击方式:攻击者通过发起特定的 SMBv3 请求,获得目标计算机内存中的敏感信息。
  • 解决方法:微软已发布补丁更新,用户应立即安装这些更新来防范此类攻击。

9. CVE-2022-22047 (SMBv3 DoS 漏洞)

  • 描述:该漏洞使得攻击者能够通过发送特制的 SMB 请求,导致目标计算机崩溃或拒绝服务(DoS)。
  • 影响范围:Windows 10 和 Windows Server 2016/2019/2022。
  • 攻击方式:攻击者通过构造特定的 SMBv3 数据包,使目标系统资源耗尽或发生崩溃。
  • 解决方法:安装微软发布的安全补丁,以防止攻击者利用此漏洞。

10. CVE-2023-28262 (SMBv3 加密漏洞)

  • 描述:该漏洞影响了 SMBv3 的加密机制,攻击者可以通过此漏洞实现解密,获取传输中的敏感信息。
  • 影响范围:Windows 11、Windows Server 2022 和之前版本。
  • 攻击方式:通过特定的 SMB 请求,攻击者能够解密加密的文件或数据流,从而窃取敏感信息。
  • 解决方法:安装相关的安全更新并增强文件传输加密的安全措施。

1. CVE-2017-0144 (EternalBlue) - 对 SMBv1 和 SMBv3 的影响

  • 描述:这个漏洞最初影响 SMBv1,但也影响了 SMB 3.1.1 的早期版本。攻击者利用该漏洞可以通过远程执行代码来完全控制目标系统。
  • 影响范围:Windows 7、Windows 8.1、Windows 10 和 Windows Server。
  • 攻击方式:攻击者发送特制的 SMB 请求,触发远程代码执行,可能导致系统崩溃或被完全控制。
  • 解决方法:安装 Microsoft 的安全更新,并禁用 SMBv1 协议。

2. CVE-2020-0796 (SMBGhost)

  • 描述:SMBGhost 是一个影响 SMB 3.1.1 的严重漏洞,攻击者可以通过该漏洞在目标计算机上执行远程代码。该漏洞特别影响启用了 SMBv3 压缩功能的系统。
  • 影响范围:Windows 10 和 Windows Server 2019。
  • 攻击方式:攻击者通过精心构造的 SMB 请求触发远程代码执行,甚至可以完全控制目标计算机。
  • 解决方法:微软发布了修复补丁,可以通过更新系统来解决这个问题。如果不打补丁,可以禁用 SMBv3 的压缩功能。

3. CVE-2019-0708 (BlueKeep)

  • 描述:虽然这个漏洞主要影响 RDP(远程桌面协议),但它通过与 SMB 协议的集成影响了基于 SMB 3.1.1 的系统。攻击者通过利用该漏洞可以在没有身份验证的情况下执行远程代码。
  • 影响范围:Windows 7、Windows Server 2008 R2 等老旧版本,以及一些支持 SMB 的现代系统。
  • 攻击方式:攻击者通过构造特制的 RDP 请求,远程执行代码。
  • 解决方法:微软发布了相应的安全补丁,强烈建议用户立即更新。

4. CVE-2021-1678 (SMBv3 DoS)

  • 描述:该漏洞可能导致拒绝服务(DoS)攻击,攻击者利用这个漏洞可以通过发送恶意的 SMBv3 请求导致目标计算机崩溃。
  • 影响范围:Windows 10 和 Windows Server 2016/2019。
  • 攻击方式:攻击者通过精心设计的 SMBv3 请求使得目标计算机无法响应正常请求,导致服务中断。
  • 解决方法:安装微软的补丁更新。

5. CVE-2020-1472 (Zerologon)

  • 描述:虽然 Zerologon 漏洞主要影响 Netlogon 协议,但它也可以通过 SMB 协议进行攻击。攻击者可以利用该漏洞绕过身份验证,进一步影响网络中的其他系统。
  • 影响范围:Windows Server 2008 R2、2012、2016 和 2019。
  • 攻击方式:攻击者可以在不提供有效凭据的情况下,控制域控制器并进行进一步的攻击。
  • 解决方法:更新操作系统和域控制器补丁,使用最新的网络安全防护机制。

6. CVE-2021-36942 (SMBv3 信息泄露漏洞)

  • 描述:该漏洞允许攻击者通过利用 SMBv3 的一个设计缺陷,泄露某些信息。
  • 影响范围:影响 Windows 10 和 Windows Server 系列。
  • 攻击方式:攻击者能够在不完全认证的情况下,获取敏感信息。
  • 解决方法:安装相应的微软安全补丁,确保系统的安全性。

对于SMB(Server Message Block)协议1.0的漏洞,主要存在一些安全问题,这些问题可能会导致安全性风险。以下是一些常见的SMB 1.0协议的安全漏洞或问题:

  1. SMB 1.0的安全性问题:SMB 1.0协议存在多个安全性问题,包括但不限于缓冲区溢出、拒绝服务攻击、信息泄露等。

  2. WannaCry勒索软件攻击:2017年的WannaCry勒索软件利用了Windows操作系统中SMB 1.0协议的一个漏洞(命名为EternalBlue),通过此漏洞可以实现远程执行代码,并传播勒索软件。

  3. Badlock漏洞:2016年发布的Badlock漏洞(CVE-2016-2118)涉及到SMB协议的几个实现(包括Samba),影响了许多系统,允许攻击者进行中间人攻击或信息泄露。

  4. NULL会话攻击:SMB 1.0中的NULL会话(空会话)漏洞可以被攻击者利用,通过未经授权的访问获取系统的敏感信息。

  5. SMB1远程代码执行漏洞:还有其他一些与SMB 1.0相关的漏洞,例如远程代码执行漏洞,可能允许攻击者远程执行恶意代码。

  6. 中间人攻击和信息泄漏:SMB 1.0协议在某些情况下可能容易受到中间人攻击的影响,导致敏感信息泄漏。这种攻击可以通过劫持SMB会话来获取或篡改传输的数据。

  7. 不安全的认证机制:SMB 1.0的认证机制相对较弱,容易受到密码嗅探和暴力破解攻击的影响。这可能导致未经授权的用户获取对共享资源的访问权限。

  8. 传输加密缺失:SMB 1.0在默认配置下可能没有数据传输加密,这使得传输的数据包容易被窃听和篡改。特别是在公共网络中,这种情况增加了数据泄露的风险。

  9. 未经授权的访问:由于SMB 1.0协议的一些实现可能存在配置错误或默认设置不安全的问题,攻击者可以利用这些漏洞进行未经授权的访问,并获取系统内的敏感信息或执行未授权操作。

    1. 操作系统和服务的支持限制:随着时间的推移,越来越多的操作系统和服务提供商停止对SMB 1.0的支持。这意味着使用SMB 1.0可能会限制到更老旧的软件和系统版本,这些版本通常存在更多已知的安全漏洞和风险。

    2. 安全性配置建议:如果环境中仍然需要使用SMB 1.0协议,强烈建议对其进行严格的安全性配置,包括但不限于限制访问、实施强密码策略、启用加密传输以及定期审计和监控SMB流量。

    3. 遗留系统和应用支持:某些遗留系统或应用程序可能仍然依赖于SMB 1.0协议,因此在升级或禁用之前,需要确保这些系统或应用能够平稳地迁移到更安全的替代方案或协议。

    4. 行业合规性要求:在某些行业中,可能会有特定的合规性要求或标准,规定必须使用安全性较高的网络协议和措施。这些要求可能涉及禁用SMB 1.0以符合安全标准。

  10.  随着信息安全意识的提升和攻击手法的不断演变,SMB 1.0协议的安全性问题日益凸显。组织和管理员应该采取积极的措施,及时升级或禁用SMB 1.0,以降低因此带来的安全风险,并确保网络和数据的安全性和完整性。


关于SMB 2.0协议的漏洞,需要注意的几个重要问题包括:

  1. SMB 2.0的安全性提升:相较于SMB 1.0,SMB 2.0和后续版本引入了许多安全改进,如消息签名、加密传输等,显著提升了协议的安全性。但是,即使有这些改进,SMB 2.0也并非完全没有漏洞。

  2. 漏洞类型和影响:过去SMB 2.0和SMB 3.x版本曾经发现过一些漏洞,例如中间人攻击、拒绝服务(DoS)攻击等。这些漏洞可能会影响到协议的安全性和稳定性,使得攻击者有机可乘。

  3. 漏洞修复和安全更新:Microsoft和其他供应商通常会定期发布更新来修复SMB协议的漏洞。因此,对于管理员来说,保持及时更新操作系统和相关安全补丁至关重要,以减少已知漏洞对系统的影响。

  4. 最佳实践和安全配置:即使协议本身可能存在漏洞,通过实施安全配置和最佳实践,如启用认证、加密传输、访问控制等措施,可以显著减少SMB协议被利用的风险。

  5. 监控和响应:在现代网络环境中,不仅仅要依赖于预防措施,还应该实施有效的监控和响应策略,及时检测并应对潜在的攻击行为和异常活动。

 虽然SMB 2.0相对于SMB 1.0有了显著的安全改进,但管理员仍然需要注意并采取适当的安全措施来应对潜在的安全威胁和漏洞。

SMB 2.0协议的漏洞,一些已知的问题和安全漏洞包括:

  1. 中间人攻击:在传输过程中,未加密的SMB 2.0流量容易受到中间人攻击的威胁,攻击者可以截取和篡改通信数据。

  2. 拒绝服务攻击(DoS):攻击者可能利用特定的SMB 2.0请求或响应来导致服务拒绝,使服务器无法响应合法用户的请求。

  3. 缓冲区溢出:SMB 2.0实现中可能存在缓冲区溢出漏洞,攻击者通过精心构造的恶意请求可以触发这些漏洞,执行恶意代码或者导致服务崩溃。

  4. 信息泄露:某些情况下,SMB 2.0可能会泄露敏感信息,例如文件路径、用户名等,这可能会被攻击者利用来进一步攻击系统或者进行其他恶意活动。

  5. 未经身份验证的访问:在某些情况下,配置不当或者错误的权限设置可能导致未经授权的用户能够访问SMB 2.0共享的内容,这可能会导致信息泄露或者数据损坏。

这些问题强调了在配置和使用SMB 2.0时需要注意的安全问题。为了减少这些潜在的漏洞带来的风险,管理员应该始终保持系统更新,并且配置SMB 2.0以使用最佳的安全实践,如启用消息签名、加密传输、合适的访问控制等。


SMB 3.0(Server Message Block version 3.0)是一个用于文件共享、打印服务以及作为在应用程序间通信的协议。然而,SMB 3.0协议在处理某些操作时可能存在安全漏洞,这些漏洞可能被攻击者利用以执行未授权操作。其中,较为著名的SMB 3.0漏洞是CVE-2020-0796,以下是关于该漏洞的详细信息:

CVE-2020-0796漏洞

1. 漏洞概述

  • 发布时间:2020年3月10日,微软官方发布了针对该漏洞的安全通告。
  • 漏洞类型:远程代码执行漏洞。
  • 影响范围:主要影响Windows 10的1903和1909版本,以及Windows Server的1903和1909版本(Server Core安装)。
  • 漏洞原理:该漏洞允许未经身份验证的攻击者通过向受影响的SMBv3服务器发送特制的压缩数据包来执行任意代码。攻击者还可以通过配置恶意SMBv3服务器并诱导用户连接来攻击客户端。

2. 漏洞影响

  • 该漏洞的严重程度被标记为Critical(关键),其后果与“永恒之蓝”类似,存在被蠕虫化利用的可能性,如制作类似于WannaCry的蠕虫病毒进行大规模传播和破坏。
  • 由于受影响的Windows 10版本较为常见,因此潜在威胁较大。

3. 缓解措施

  • 禁用SMBv3压缩功能:微软官方建议通过PowerShell命令禁用SMBv3的压缩功能,以阻止攻击者利用该漏洞。具体命令为:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
  • 安装安全补丁:微软发布了针对该漏洞的安全补丁(如KB4551762),用户应及时更新系统以安装补丁。
  • 封堵相关端口:若无业务必要,可在网络安全域边界防火墙封堵文件打印和共享端口(TCP 135/139/445)。

其他SMB 3.0漏洞

除了CVE-2020-0796之外,SMB 3.0协议还可能存在其他未公开的漏洞或已知但影响较小的漏洞。这些漏洞的具体信息和缓解措施可能会随着微软的安全更新而不断变化。

SMB 3.0漏洞,特别是CVE-2020-0796,对用户的信息安全构成了严重威胁。用户应密切关注微软的安全通告,及时更新系统以安装补丁,并采取必要的缓解措施来保护自己的网络安全。同时,也应注意防范其他可能存在的SMB 3.0漏洞。


SMB over QUIC(Server Message Block over QUIC)是Windows Server中的一个相对较新的功能,它使用QUIC(Quick UDP Internet Connections)协议作为SMB(Server Message Block)协议的传输层。SMB over QUIC旨在提供更安全、更可靠的文件共享和打印服务。然而,像其他任何技术一样,SMB over QUIC也可能存在安全漏洞。

SMB over QUIC 的已知漏洞

目前,关于SMB over QUIC的特定漏洞,最为显著的是CVE-2023-24898,该漏洞由Akamai的研究人员发现,并报告给了Microsoft。

CVE-2023-24898

1. 漏洞概述

  • 发现时间:由Akamai的研究人员Ben Barnea在2023年发现。
  • 影响版本:主要影响Windows Server 2022 Azure Edition中启用了SMB over QUIC功能的系统。
  • 漏洞类型:远程服务拒绝(DoS)漏洞。
  • 漏洞原理:该漏洞源于srvnet.sys驱动程序的缓冲区分配中缺少必要的检查。攻击者可以通过发送特制的SMB over QUIC数据包,绕过最大允许大小的验证,并请求异常大的内存分配,从而导致服务器内存耗尽,最终引发服务拒绝攻击。

2. 漏洞影响

  • 仅有使用SMB over QUIC的服务器存在此漏洞。
  • 攻击者无需身份验证即可通过互联网触发此漏洞。
  • 漏洞的利用受到服务器可用内存量的限制,通常在内存不超过32GB的服务器上更容易被利用。

3. 缓解措施

  • 安装补丁:Microsoft已在2023年5月的“Patch Tuesday”中发布了针对此漏洞的安全补丁。用户应尽快为受影响的系统安装补丁。
  • 关闭SMB over QUIC功能:作为临时缓解措施,如果不需要SMB over QUIC功能,可以考虑关闭它。但请注意,这将影响使用SMB over QUIC的文件共享和打印服务。

其他潜在漏洞

虽然目前关于SMB over QUIC的已知漏洞主要集中在CVE-2023-24898上,但随着技术的不断发展和应用范围的扩大,未来可能会出现新的漏洞。因此,用户应密切关注Microsoft和其他安全机构发布的安全通告和更新。

 SMB over QUIC作为一种新兴的技术,在提高文件共享和打印服务的性能和安全性方面具有重要意义。然而,与任何新技术一样,它也存在潜在的安全风险。用户应通过安装补丁、关闭不必要的功能以及密切关注安全通告等方式来降低安全风险。


在 Windows 中,SMB(Server Message Block) 协议经历了多个版本的演变,用于网络共享文件和打印服务。以下是 SMB1.0SMB2.0SMB3.0SMB over QUIC 的发展时间线:

1. SMB 1.0 (Windows NT 4.0及以前的版本) - 初步的网络文件共享协议

  • SMB 1.0 起源于上世纪 1980 年代,由 IBM 开发,并且被 Microsoft 集成到其 Windows 操作系统中。
  • 最初版本的 SMB 1.0 主要用于文件共享、打印共享以及与其他设备之间的通信,但其效率和安全性在现代环境中较为落后。
  • 在 Windows NT 4.0 和 Windows 95 中,SMB 1.0 被用作默认的文件共享协议,但此时的协议效率较低,且缺乏加密和现代安全功能。
  • 缺点: SMB1 由于其安全性差(如无加密和弱身份验证),容易受到 勒索病毒 等攻击(例如 WannaCry)。因此,微软建议禁用 SMB1。

2. SMB 2.0 (Windows Vista 和 Windows Server 2008) - 大幅改进的协议

  • SMB 2.0 于 Windows Vista 和 Windows Server 2008 中首次推出,旨在解决 SMB1.0 的性能问题和限制。
  • 关键改进:
    • 大幅降低了协议的开销和延迟,改进了文件共享的性能。
    • 引入了管道、请求合并和更大的缓冲区,提高了并发文件操作的效率。
    • 支持更强的文件锁定机制和持久连接,改进了连接的稳定性。
  • 支持更高的带宽和更高效的通信方式: 支持更大的数据包、减少了协议头的大小。
  • 在 Windows 7 和 Windows Server 2008 R2 中,SMB 2.0 的进一步优化增加了更多特性,但依旧存在一些安全问题,特别是在企业环境中。

3. SMB 3.0 (Windows 8 和 Windows Server 2012) - 进一步提升安全性和性能

  • SMB 3.0 于 Windows 8 和 Windows Server 2012 中推出。该版本为 SMB 协议带来了重要的性能和安全增强,特别是在企业级应用中。
  • 关键改进:
    • 加密: 引入了端到端的加密机制,保护数据在传输过程中的机密性。
    • 完整性验证: 加入了数据完整性验证,确保传输的数据没有被篡改。
    • 多通道(Multichannel): 支持在多个网络接口上并行传输数据,提高了网络带宽和故障恢复能力。
    • 持久句柄(Persistent Handles): 改进了文件共享的稳定性,允许在网络断开后恢复会话,适用于虚拟化环境。
    • 虚拟化优化: 支持对虚拟机文件的优化访问,减少虚拟机在跨网络迁移时的性能损失。
  • 在 Windows 10 和 Windows Server 2016 中,SMB 3.0 继续得到增强,尤其在存储、虚拟化和大规模文件共享方面。

4. SMB 3.1.1 (Windows 10 和 Windows Server 2016) - 强化的安全性和认证

  • SMB 3.1.1 引入了更强的加密算法,进一步提升了协议的安全性。
  • 关键改进:
    • 更强的加密: 引入了 AES-128 加密算法,取代了之前的加密方式,提供更高的安全性。
    • 安全认证: 加强了 NTLMv2 和 Kerberos 的身份验证,减少了协议的潜在安全漏洞。
    • 预防中间人攻击(Man-in-the-Middle Attacks): 对 SMB 连接进行了加固,防止攻击者在传输过程中篡改数据。
  • 在 Windows Server 2016 中,SMB 3.1.1 成为默认协议,尤其适用于需要高安全性和高性能的企业环境。

5. SMB over QUIC (Windows 11 和 Windows Server 2022) - 通过 QUIC 协议增强 SMB 的远程访问能力

  • SMB over QUIC 是在 Windows Server 2022 和 Windows 11 中引入的新特性,旨在通过 QUIC 协议实现更加安全和灵活的远程文件共享。
  • 关键改进:
    • QUIC 协议: 使用 QUIC 代替传统的 TCP 连接,使 SMB 协议能够在不依赖 VPN 的情况下安全地通过互联网进行通信。QUIC 是一种基于 UDP 的传输协议,提供更低延迟、更快的连接建立和更强的抗干扰能力。
    • 增强的远程访问: SMB over QUIC 使得远程用户可以在没有 VPN 的情况下,安全地访问企业内部的文件共享服务,尤其在云计算和混合云环境中大有帮助。
    • 安全性: QUIC 本身具有强大的加密功能,可以进一步增强 SMB 协议的安全性,保护数据的完整性和机密性。
  1. SMB 1.0 最初推出时是一个基础的文件共享协议,但其安全性和性能问题使得它在现代操作系统中逐渐被淘汰。
  2. SMB 2.0 在 Windows Vista 和 Windows Server 2008 中引入了显著的性能和功能改进。
  3. SMB 3.0 在 Windows 8 和 Windows Server 2012 中进一步提升了安全性、性能和企业级功能,成为现代操作系统的主要文件共享协议。
  4. SMB 3.1.1 在 Windows 10 和 Windows Server 2016 中增强了加密和认证能力,提供更强的安全保障。
  5. SMB over QUIC 是最新的版本,它通过 QUIC 协议优化了远程访问能力,特别适合现代的云计算和混合环境。

这些版本的不断演化使得 SMB 协议能够满足不断变化的网络环境的需求,尤其是在企业、虚拟化和远程工作领域。


在SMB 1.0中,数据传输速度的上限受到多种因素的制约,例如网络带宽、硬件配置、文件大小和数量等等。通常情况下,SMB 1.0的最大传输速度约为100 Mbps(每秒传输1亿位),这主要取决于以太网硬件的限制。但需要注意的是,由于SMB 1.0已经过时,并存在安全漏洞,因此不建议使用它进行数据传输。如果你需要进行文件共享或数据传输,建议升级到更高版本的SMB协议。

SMB 2.0及以上的版本在吞吐量和性能方面都有了显著的改进。根据Microsoft的官方文档,SMB 2.0的理论最大速度约为2 Gbps(每秒传输2亿位),而SMB 3.0甚至可以达到10 Gbps的传输速度。当然,实际的速度还是会受到一些因素的影响,例如网络拥塞、负载均衡、硬盘IO、CPU使用率等等。


各版本的 SMB 协议最大传输速度的表格。请注意,最大传输速度不仅取决于协议本身,还与网络硬件(如网络适配器、带宽、延迟等)和系统配置等因素有关。以下数据基于协议标准和常见的实现方式:

SMB 协议版本 最大传输速度 描述
SMB 1.0 100 Mbps (理论) 在 Windows NT 4.0 和 Windows 95 中使用。性能较低,速度受限。
SMB 2.0 1 Gbps (理论) 在 Windows Vista 和 Windows Server 2008 中推出,提升了性能,支持更大带宽。
SMB 3.0 10 Gbps 以上 (理论) 在 Windows 8 和 Windows Server 2012 中引入,支持多通道和更高带宽。
SMB 3.1.1 10 Gbps 以上 (理论) 在 Windows 10 和 Windows Server 2016 中引入,提供更强的加密和认证。
SMB over QUIC 1 Gbps - 10 Gbps (理论) 在 Windows Server 2022 和 Windows 11 中引入,依赖 QUIC 协议的性能,适合远程访问。

解释:

  • SMB 1.0:由于早期的协议设计和网络带宽的限制,其性能和最大传输速度较低。理论上,最大传输速度通常受限于 100 Mbps
  • SMB 2.0:引入了多项性能改进,如减少协议开销、优化数据传输机制,因此最大传输速度提升至 1 Gbps,并支持更高带宽的网络连接。
  • SMB 3.0:通过引入多通道、加密、数据完整性等功能,能够支持更高的网络带宽,通常可达到 10 Gbps 及以上,并适应更现代的网络环境。
  • SMB 3.1.1:进一步加强了加密和安全性,支持企业级环境中的高带宽和快速文件传输。
  • SMB over QUIC:借助 QUIC 协议,理论上能达到 1 Gbps - 10 Gbps 的速度,适用于低延迟和跨越公共网络的远程访问,尤其适合需要高度安全性的远程工作环境。

请注意,实际的传输速度会受到网络硬件、延迟、加密级别等因素的影响。


SMB(Server Message Block)是一种用于在计算机之间共享文件、打印机和其他资源的网络协议。随着时间的推移,SMB协议也经历了多次更新和改进。以下是SMB 1.0、SMB 2.0和SMB 3.0之间的主要区别和更新:

  1. SMB 1.0:是最早的SMB版本,最初由IBM开发。它使用广泛,但安全性较差,存在多个漏洞,这些漏洞可以被黑客用来进行攻击。因此,建议不要使用SMB 1.0。

  2. SMB 2.0:是SMB协议的重大更新,增加了许多新特性和改进,包括更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。

  3. SMB 3.0:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。

 SMB 2.0和SMB 3.0的主要改进在于性能、可靠性和安全性方面。这两个版本相比SMB 1.0有更好的支持大文件传输和高带宽网络的能力。同时,SMB 3.0提供了更强大的加密、认证和授权功能,以保护数据的安全性。如果可能,建议使用更新的SMB版本。


SMB 3.0(Server Message Block 3.0)是Microsoft在Windows 8和Windows Server 2012中引入的一个协议版本,相比之前的版本,它提供了许多性能提升和安全增强。下面是SMB 3.0的一些关键软件规格和特性:

1. 增强的安全性

  • 加密:SMB 3.0支持端到端加密,这意味着所有通过SMB传输的文件和数据都会被加密,防止在网络上传输过程中数据被窃听或篡改。加密可以是透明的,且不需要修改应用程序。
  • 签名:SMB 3.0加强了数据的完整性,提供了更强的数据签名机制,确保数据在传输过程中的完整性,防止恶意篡改。
  • 多重身份验证:在SMB 3.0中引入了更强的身份验证机制,支持Kerberos认证和基于Windows安全模型的其他身份验证方式。

2. 性能提升

  • 压缩:SMB 3.0支持传输前数据的压缩功能,尤其在传输大量小文件时,能够显著提高网络带宽的利用率和传输速度。
  • 多通道(Multichannel):SMB 3.0支持多通道功能,允许在多个网络接口之间并行传输数据,利用多条网络路径来增加带宽和提高可靠性。这对于高带宽环境(如企业数据中心)非常有用。
  • 异步写入:增强了对异步写入的支持,可以提高磁盘操作的效率,尤其是在高负载的情况下。

3. 高可用性和容错

  • 故障转移(Failover):SMB 3.0增强了对高可用性集群的支持,能够在发生网络或服务器故障时自动切换到备份服务器,从而确保文件共享服务不间断。
  • 多路径 I/O(Multipath I/O,MPIO):通过使用多个路径访问存储设备,SMB 3.0能够提供更高的可用性和容错性,避免单点故障。

4. 共享文件和文件夹的改进

  • SMB Direct(RDMA):SMB 3.0支持远程直接内存访问(RDMA),使得在支持RDMA的硬件环境下,文件传输更加高效,减少CPU的负载,特别适用于大规模的数据中心环境。
  • 透明故障转移:当网络或存储路径发生故障时,SMB 3.0能够透明地切换到备用路径,而无需中断客户端访问。
  • 更高效的目录服务:SMB 3.0增强了目录服务和搜索功能,支持更加高效的文件和文件夹索引,提升了大规模文件共享环境中的搜索速度。

5. 支持虚拟化和云计算

  • 虚拟机迁移:在虚拟化环境中,SMB 3.0提供了虚拟机迁移功能,使得虚拟机的存储可以在不同主机之间迁移,而不会中断服务。
  • 云集成:SMB 3.0为云存储的集成提供了支持,企业可以通过SMB协议将本地存储与云存储连接起来,实现更灵活的混合云存储解决方案。

6. 其他功能

  • 回写支持(Tiered Storage):SMB 3.0支持多级存储,可以自动将数据移动到更适合的存储介质上,优化存储成本和性能。
  • 共享文件的高速缓存:SMB 3.0支持本地缓存文件的快速访问,即使网络连接不稳定,客户端也能快速访问缓存的数据。
  • 支持多种操作系统:尽管SMB 3.0是由Windows操作系统开发并主要在Windows平台上使用,但它也支持Linux、macOS等操作系统,可以通过相应的SMB客户端进行跨平台访问。

SMB 3.0在Windows中的实现

  • Windows 8及Windows Server 2012及以上版本:SMB 3.0作为Windows 8和Windows Server 2012的默认文件共享协议,支持大多数企业网络环境中的需求。
  • Windows 7/Server 2008 R2兼容性:对于旧版本的Windows(如Windows 7/Server 2008 R2),微软提供了更新以支持SMB 3.0的基本功能,但不包括所有高级特性(如多通道和压缩等)。

SMB 3.0与后续版本

  • SMB 3.0为SMB协议奠定了坚实的基础,后续版本(如SMB 3.1.1)在此基础上增加了更多的安全性和性能改进。例如,SMB 3.1.1进一步强化了加密和身份验证功能,提供了更高的安全性。

SMB 3.0是一个功能强大的协议版本,提供了增强的安全性、性能优化、以及更高的可靠性,适合用于大规模企业环境中,特别是需要高可用性、大带宽、高效文件共享的场景。通过多通道支持、压缩、加密、故障转移等功能,SMB 3.0能够显著提升文件共享和存储访问的效率和安全性。


SMB 1.0、2.0、3.0、3.1.1 以及 SMB over QUIC 的差异表格化:

特性 SMB 1.0 SMB 2.0 SMB 3.0 SMB 3.1.1 SMB over QUIC
首次发布 1992年 (Windows for Workgroups) 2006年 (Windows Vista) 2012年 (Windows 8) 2015年 (Windows 10) 2021年 (Windows Server 2022)
协议版本 1.0 2.0 3.0 3.1.1 3.0 (基于 QUIC 协议)
性能优化 无优化,速度较慢 支持大文件传输,减少延迟 支持多通道、高效的带宽利用 增强加密、提高安全性 使用 QUIC 协议增强性能
支持的加密 不支持 不支持 支持加密(AES-128) 更强的加密(AES-128 GCM) 支持 TLS 1.3 加密
多通道支持 不支持 不支持 支持多通道(更高带宽) 支持多通道 支持多通道
数据完整性验证 不支持 不支持 支持数据完整性验证 强化的数据完整性验证 支持数据完整性验证
压缩支持 不支持 不支持 支持数据压缩 增强的压缩支持 支持文件压缩
适用环境 早期 Windows 系统 (Windows 95/98/NT) Windows Vista 及以上系统 Windows 8 及以上系统 Windows 10 及以上系统 适合远程访问与跨网络连接
典型使用场景 本地网络共享、文件访问 本地网络共享、文件访问 本地网络共享、企业文件服务 安全的企业文件传输 远程文件传输、跨地域共享
最大理论带宽 100 Mbps 1 Gbps 10 Gbps 及以上 10 Gbps 及以上 1 Gbps - 10 Gbps
安全性 较低,容易受到攻击 改善了安全性 高安全性(加密、身份验证) 更强的安全性(强化加密) 高安全性(TLS 1.3 加密)
远程访问支持 不支持 不支持 支持 SMB Direct (RDMA) 支持 SMB Direct, 加强加密 完全支持远程访问 (基于 QUIC)
操作系统支持 Windows NT 4.0、Windows 95等 Windows Vista及以上 Windows 8及以上 Windows 10及以上 Windows Server 2022及Windows 11
重要特点 最早的 SMB 协议,功能简陋 增加了效率和性能优化 引入多通道、加密等高级特性 提升加密、安全性增强 跨网络/远程访问的安全传输

关键差异:

  1. 性能与效率:SMB 2.0 引入了许多性能优化,较 SMB 1.0 提升了数据传输效率;SMB 3.0 进一步改进了带宽利用,支持多通道传输;SMB 3.1.1 则在安全性上做出了改进,提升了加密强度。
  2. 安全性:随着版本的迭代,SMB 协议逐步加强了对加密、数据完整性验证和认证的支持。SMB 3.1.1 提供了更强的加密方式和安全性。
  3. 远程访问:SMB over QUIC 通过 QUIC 协议支持高效的远程访问,并且能够提供比传统 SMB 更低的延迟和更好的安全性。
  4. 支持的操作系统:SMB 1.0 和 2.0 支持较老的 Windows 操作系统,而 SMB 3.x 版本主要用于较新的系统,SMB over QUIC 是为了现代远程访问需求而设计。

这些差异反映了 SMB 协议在性能、安全性、跨平台能力以及远程访问支持等方面的不断进步。


SMB 1.0、2.0和3.0的主要差异对比表格:

特性 SMB 1.0 SMB 2.0 SMB 3.0
引入版本 Windows 95 / Windows NT 4.0 Windows Vista / Windows Server 2008 Windows 8 / Windows Server 2012
发布年代 1996年 2006年 2012年
协议版本号 1.0 2.0 3.0
性能 性能较低,较慢 性能有显著提升,减少了协议开销 进一步提升,支持多通道和压缩功能
加密 不支持加密 不支持加密 支持端到端加密
数据签名 不支持自动签名 支持可选的数据签名 强制签名,增强数据完整性
连接稳定性 不稳定,容易受到网络延迟影响 提供了更稳定的连接 提供更高的稳定性,支持自动故障转移
支持的功能 基本文件共享功能,有限的网络性能优化 支持符号链接、目录监控、批量请求等新功能 支持多通道、压缩、透明故障转移等高级功能
网络带宽利用 低效,存在较大的协议开销 改进了协议,减少了网络带宽占用 更高效,支持多路径I/O与压缩提高带宽利用
多通道 不支持 不支持 支持多通道,利用多个网络路径提高带宽
虚拟化支持 无支持 基本支持虚拟化 强化支持,支持虚拟机迁移等功能
回写支持 不支持 不支持 支持多级存储回写功能
操作系统支持 支持较旧的操作系统,如Windows 95、XP等 支持Windows Vista及更高版本 支持Windows 8、Windows Server 2012及更高版本
兼容性 与早期Windows版本兼容 与SMB 1.0兼容,向下兼容性较好 向下兼容SMB 1.0和2.0,但不推荐使用
默认启用 默认启用 默认启用 默认不启用,需手动启用
适用场景 适用于老旧网络和系统 适用于现代网络环境,改善了文件共享性能 适用于大规模企业环境、需要高性能和高安全性的场景

  • SMB 1.0(1996年发布):适用于老旧环境,但性能差且安全性低,现代环境中不推荐使用。
  • SMB 2.0(2006年发布):引入了性能和稳定性改进,适用于大多数现代环境,但仍然缺少一些高级功能。
  • SMB 3.0(2012年发布):增强了安全性和性能,支持多通道、压缩和加密等功能,是现代企业环境中推荐使用的版本。

SMB(Server Message Block)是一个早期的计算机网络协议,用于在计算机之间共享文件、打印机和其他资源。SMB 1.0最早出现在1984年,而SMB 2.0和SMB 3.0则分别于2006年和2012年推出。以下是它们的主要功能和版本信息:

SMB 1.0:

  • 年代:1984
  • 功能:文件和打印机共享、消息传输、远程过程调用等。
  • 版本:也称为CIFS(Common Internet File System),由微软开发。Windows操作系统中默认启用SMB 1.0,但其存在多个安全漏洞,不建议使用。

SMB 2.0:

  • 年代:2006
  • 功能:更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
  • 版本:Windows Vista及以上系统默认启用SMB 2.0,Mac OS X 10.7及以上版本也支持SMB 2.0。

SMB 3.0:

  • 年代:2012
  • 功能:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
  • 版本:Windows 8及以上系统默认启用SMB 3.0,Mac OS X 10.9及以上版本也支持SMB 3.0。

 随着SMB协议的不断更新和改进,每个版本都提供了更多的功能和改善,以确保更好的性能、可靠性和安全性。如果可能,建议使用更新的SMB版本。


SMB(Server Message Block)协议是一种用于在计算机之间共享文件、打印机和其他资源的网络通信协议。目前广泛使用的 SMB 协议有以下几个主要版本:

  1. SMB 1.0:也称为 CIFS(Common Internet File System),是最早的 SMB 协议版本,最初由 IBM 开发。尽管在过去得到了广泛应用,但由于安全性和性能方面的局限性,现在已经逐渐被淘汰。

  2. SMB 2.0:这是对 SMB 协议进行了全面重新设计的版本,引入了更好的性能、可靠性和安全性。SMB 2.0 首次出现在 Windows Vista 和 Windows Server 2008 中。

  3. SMB 2.1:这是对 SMB 2.0 的轻微修改和扩展,主要用于改进性能和修复一些问题。SMB 2.1 首次出现在 Windows 7 和 Windows Server 2008 R2 中。

  4. SMB 3.0:这是当前最新的版本,引入了许多新特性,包括加密传输、持久化句柄、远程 VSS 等,大大提高了性能和安全性。SMB 3.0 首次出现在 Windows 8 和 Windows Server 2012 中。

  5. SMB 3.1.1:这是目前最新的SMB协议版本,引入了一些新的特性,包括预取、加密性能提升、安全性增强等。SMB 3.1.1 进一步改进了SMB 3.0版本的性能和安全性。

  6. SMB Direct:也称为 SMB over RDMA(Remote Direct Memory Access),它允许SMB协议直接在RDMA网络上运行,从而提供了更高的性能和更低的CPU开销。

  7. SMB Multichannel:这是一种SMB协议的特性,允许多个网络连接并行使用,以提高带宽和容错能力。

  8. SMB Encryption:SMB 3.0及更新版本引入了对数据传输的加密支持,通过加密可以保护数据的机密性和完整性。

SMB over QUIC 是 Windows Server 2022 中的一个新特性,它支持通过基于 UDP 的 Quick UDP Internet Connections (QUIC) 协议来进行 SMB 流量传输。这项特性允许通过互联网加速访问文件共享,并可能替代 VPN。SMB over QUIC 利用 TLS 1.3 进行传输层安全性保护,并使用由 Google 开发的 SPDY 协议实现多路复用,允许通过单一连接传输不同的数据流,从而显著减少加载时间。此外,QUIC 还提供了诸如唯一序列号、前向纠错、拥塞控制和身份验证等功能 4 

然而,SMB over QUIC 也存在一些限制。例如,它仅适用于 Windows Server 2022 Azure Edition,并且在 Microsoft 云中可用,或在 Azure Stack HCI 上的虚拟机中运行。普通的 Hyper-V 服务器则不支持。此外,QUIC 的数据包头部包含的明文信息少于 TCP 连接,这使得故障排除、流量控制或网络管理变得更加困难。还有关于拥塞控制的问题,可能会影响传输速率,尽管目前还在对此进行优化 4 

SMB over QUIC 的配置可以通过 Windows Admin Center (WAC) 或 PowerShell 完成。配置时需要选择 SSL 证书,并设置允许客户端连接的地址。高级设置中还包括激活 SMB 加密以及允许对命名管道的访问等选项 4 

需要注意的是,SMB over QUIC 曾存在一个重要漏洞(CVE-2023-24898),位于 srvnet.sys 驱动程序中,可能导致未经身份验证的互联网攻击者对 Windows Server 2022 机器发起远程拒绝服务(DoS)攻击。这个漏洞仅影响使用 SMB over QUIC 的服务器,且只影响 Windows Server 2022 Azure Edition。Akamai 已向微软通报了这一漏洞,微软也在 2023 年 5 月的“周二补丁日”发布了对应的安全补丁


当涉及SMB协议时,还有一些相关的重要概念和技术需要考虑:

  1. SMB文件共享:SMB协议最常见的用途是用于在网络上共享文件和打印机。通过SMB协议,用户可以访问位于远程计算机上的文件、文件夹和打印机,实现资源共享和数据交换。

  2. SMB安全性:随着对网络安全的日益关注,SMB协议的安全性也越来越重要。在新的SMB版本中,加密传输、数字签名验证等安全机制得到了加强,以保护数据不受未经授权的访问和篡改。

  3. SMB管理:针对SMB协议的管理,包括访问控制、共享设置、性能优化等方面,有许多工具和方法可供管理员使用,以确保系统的正常运行和安全性。

  4. SMB在云存储中的应用:随着云计算的发展,SMB协议在云存储中的应用也变得越来越普遍。例如,许多云存储服务提供商支持SMB协议,使用户可以轻松地将其本地存储与云存储进行集成。

 SMB协议作为一种重要的网络文件共享协议,在网络环境中扮演着至关重要的角色。随着技术的不断发展,SMB协议也在不断演进和改进,以满足现代网络环境下对文件共享和数据交换的需求。


  1. TCP 445

    • 这是用于Microsoft Windows网络文件共享服务(SMB/CIFS)的标准端口。它允许计算机之间共享文件、打印机以及其他资源。

Microsoft Windows 网络文件共享服务(SMB/CIFS)TCP 445 端口的历史发展可以追溯到 Windows 操作系统早期的网络协议演进。SMB(Server Message Block)协议在 Windows 中起着至关重要的作用,允许不同计算机之间共享文件和打印机,进行远程管理等。以下是 SMB 协议特别是在 Windows 系统中与 TCP 445 端口的关联的时间线:

1. 1980年代:SMB 协议的起源

  • 1983年,SMB 协议最初由 IBM 作为一个局域网文件共享协议设计,名为 LAN Manager
  • 1985年,Microsoft 购买了 IBM 的网络协议(后来改名为 Microsoft SMB),并开始改进该协议,推动它在 Windows 系统中的使用。

2. 1990年代:SMB 协议的成熟与CIFS协议的引入

  • 1992年,Microsoft 引入了 SMB 协议的第一个广泛版本,称为 Windows for Workgroups
  • 1996年,Microsoft 为了更好地与 Unix 和其他操作系统兼容,开始使用 CIFS(Common Internet File System) 协议,作为 SMB 的扩展和标准化版本。CIFS 解决了 SMB 在跨平台文件共享中的一些问题,并增强了功能。
  • 这时,SMB 协议通过 NetBIOS 在 137-139 端口上运行,通常用于局域网内的文件和打印机共享。

3. 2000年代初:TCP 445 端口的引入

  • Windows 2000(2000年发布)是 SMB 协议与 TCP 445 端口结合的关键时刻。在此版本中,Microsoft 推出了 SMB over TCP/IP,通过 TCP 445 端口直接进行通信,而无需依赖传统的 NetBIOS 协议(137-139端口)。这使得文件共享可以更简洁地通过 IP 网络进行,减少了对 NetBIOS 名称解析的依赖。

  • Windows XP(2001年发布)也使用了 445 端口来支持 SMB 协议,进一步推广了基于 TCP 端口的直接通信。

    • Windows 2000:开始使用 TCP 445 端口进行 SMB 协议通信,取代了以前使用 NetBIOS 的方式。
    • Windows XP:继续使用 TCP 445 端口,增强了对网络共享和远程管理的支持。

4. 2000年代后期:SMB 协议的安全性问题与漏洞

  • 2003年,SMB 协议被暴露出一些安全性漏洞,最著名的例子就是 Sasser 和 Blaster 病毒,这些恶意软件通过 SMB 协议传播并感染大量计算机。
  • 为了增强安全性,Microsoft 在 Windows 操作系统中推出了 防火墙 和 安全更新,并开始定期修复 SMB 相关的漏洞。

5. 2007年:SMB 2.0 引入

  • Windows Vista 和 Windows Server 2008 中引入了 SMB 2.0 协议,这显著提高了文件共享性能,并加强了网络性能和带宽利用率。
  • SMB 2.0 增强了多路复用功能,减少了协议开销,使得大量小文件的传输变得更加高效。此时,TCP 445 端口继续用于 SMB 协议。

6. 2010年:SMB 3.0 的引入

  • Windows 8 和 Windows Server 2012 在 2012 年引入了 SMB 3.0 协议,进一步增强了 SMB 协议的安全性和性能。
  • SMB 3.0 引入了 加密(SMB Encryption)功能,用于保护数据在传输过程中免受中间人攻击。此外,SMB 3.0 还引入了 多通道传输(SMB Multichannel)和 冗余(SMB Direct)功能,进一步提高了网络共享的可靠性和速度。
  • SMB 3.0 为 Windows 环境中的高性能、可伸缩的文件共享提供了强大的支持,尤其是在企业级应用中。

7. 2017年:SMB 1.0 被逐步淘汰

  • Windows 10 和 Windows Server 2016 开始将 SMB 1.0 协议标记为不再推荐使用,并建议用户升级到 SMB 2.0 或 SMB 3.0。
  • WannaCry 勒索病毒(2017年爆发)利用了 SMB 1.0 的漏洞,造成全球范围的重大安全事件。此事件加速了 SMB 1.0 的淘汰进程。
  • Windows 10 和 Windows Server 2016 强烈建议禁用 SMB 1.0,并通过安全更新修复了已知的漏洞。

8. 2018年:SMB 3.1.1 引入

  • Windows 10 和 Windows Server 2019 引入了 SMB 3.1.1 协议,进一步加强了安全性,特别是在 加密 和 身份验证 方面。
  • SMB 3.1.1 提供了更强的加密支持,改进了 AES-128 加密算法的实现,同时增强了 签名 功能,以提高数据完整性验证。

9. 2020年代:SMB 3.1.1 和 TCP 445 的普及

  • 到了 2020 年,SMB 3.1.1 成为 Windows 操作系统中默认的文件共享协议,TCP 445 端口作为 SMB 协议的标准端口已经广泛应用于各类 Windows 系统中,包括 Windows 10Windows Server 2016/2019 等。
  • 各类企业级、云端和远程工作环境中,SMB 协议仍然是主要的文件共享协议之一,并且继续发挥着至关重要的作用。

 TCP 445 端口在 Windows 系统中的发展历程

  • 1990年代:SMB 协议作为局域网共享协议在 Windows 中得到广泛应用。
  • 2000年:Windows 2000 开始使用 TCP 445 端口来代替 NetBIOS 进行 SMB 协议通信。
  • 2007年:Windows Vista 和 Windows Server 2008 引入 SMB 2.0 协议,改善了性能和效率。
  • 2012年:Windows 8 和 Windows Server 2012 引入了 SMB 3.0 协议,增加了安全性和多通道支持。
  • 2017年:SMB 1.0 协议逐步被淘汰,特别是在 WannaCry 勒索病毒事件后。
  • 2018年:Windows 10 和 Server 2019 引入 SMB 3.1.1,进一步加强加密和安全性。
  • 2020年代:SMB 3.1.1 和 TCP 445 成为主流,继续在企业和云环境中发挥重要作用。

通过这些关键的发展,TCP 445 端口和 SMB 协议逐渐成为 Windows 操作系统中进行文件共享和远程访问的核心协议,支持各种现代化的网络环境和需求。

  1. QUIC(Quick UDP Internet Connections)443

    • QUIC是一个由Google开发的基于UDP的传输协议,旨在提供更快的连接建立和传输速度。通常使用UDP端口443进行通信,用于加密的Web服务。

QUIC(Quick UDP Internet Connections)是一种由 Google 首先提出的网络协议,它基于 UDP(用户数据报协议),旨在减少传统 TCP 和 TLS 协议中固有的延迟,并提高网络连接的速度和安全性。QUIC 的核心优势在于减少了连接和加密的延迟,尤其是在移动设备和不稳定网络环境中。

QUIC 协议在 Windows 系统中的发展经历了多个阶段,尤其是在与 443 端口的结合使用上(QUIC 默认使用 UDP 的 443 端口)。以下是 QUIC 协议在 Windows 发展中的关键时间线:

2013年:QUIC 初步提出

  • QUIC 最初由 Google 于 2013 年提出,目标是加速 Web 访问,特别是在移动网络和高延迟环境下。
  • QUIC 使用 UDP 代替 TCP,减少了传统的三次握手过程,并将加密与连接建立相结合,提供更低的延迟。

2015年:Google 首次实现 QUIC

  • Google 在其 Chrome 浏览器中实现了 QUIC 协议,并开始通过 QUIC 连接访问 Google 服务。
  • QUIC 使用 UDP 的 443 端口,与 HTTPS 使用相同的端口,但其数据包结构完全不同,这避免了与传统 HTTPS/TLS 流量的冲突。

2017年:QUIC 开始成为标准化话题

  • IETF(Internet Engineering Task Force)开始讨论将 QUIC 协议标准化。Google 发布了 QUIC 的开放实现,作为未来互联网协议标准化的基础。
  • 在这一阶段,QUIC 逐渐引起了网络协议研究人员的关注,尤其是在减少延迟、提高可靠性和支持 TLS 加密方面的优势。

2018年:Windows 10 开始初步支持 QUIC

  • Windows 10 开始对 QUIC 协议进行实验性支持。通过该支持,用户可以在 Windows 上使用 QUIC 协议与支持 QUIC 的服务器进行通信。
  • 在 Windows 中,QUIC 通常用于 Google 的服务(如 Gmail、YouTube)以及通过 Chrome 浏览器访问的其他支持 QUIC 协议的 Web 服务。
  • Windows 10 开始支持基于 UDP 443 端口的 QUIC 流量,但该协议在 Windows 系统中的广泛使用还处于实验阶段。

2019年:QUIC 协议标准化进程启动

  • IETF QUIC 工作组正式启动,开始标准化 QUIC 协议。Google 提出了 QUIC 协议的基础版本,进行公开审查。
  • 主要关注点是改进现有 QUIC 版本中的性能、兼容性和安全性,特别是在 SSL/TLS 协议的集成方面。
  • 同年,Microsoft Edge 和其他浏览器(如 Firefox)开始在实验性模式下支持 QUIC,以便对该协议进行更多的测试和验证。

2020年:Windows 10 对 QUIC 提供更全面的支持

  • Windows 10(版本 2004 和更高版本)开始正式支持 QUIC 协议,特别是在 Microsoft Edge 浏览器中,用户可以使用 QUIC 协议访问兼容的 Web 服务。
  • Windows 中的 IETF QUIC 实现更加稳定,增加了对协议标准的支持。
  • 由于 QUIC 协议通过 UDP 443 端口传输,它与传统的 HTTPS 流量在端口上没有冲突,因此可以无缝地通过防火墙和 NAT 路由器进行穿透。

2021年:QUIC 协议成为 HTTP/3 的基础

  • HTTP/3 基于 QUIC 协议,成为下一代 Web 协议,旨在通过 UDP 替代 HTTP/2 的 TCP 连接,以减少延迟并提高性能。
  • Windows 10 和 Windows 11 系统开始在默认的浏览器(如 Microsoft Edge 和 Google Chrome)中全面支持 HTTP/3 和 QUIC。
  • 在 Windows 系统中,用户可以直接体验到通过 QUIC 和 HTTP/3 协议提供的加速效果,特别是在访问支持 HTTP/3 的网站时。

2022年:Windows 11 引入对 QUIC 的深入集成

  • Windows 11 进一步增强了对 QUIC 协议的支持,尤其是在默认配置中启用 HTTP/3 和 QUIC。
  • Windows 11 对 QUIC 的支持不仅限于浏览器访问,还扩展到操作系统的网络堆栈和应用程序,以利用 QUIC 提供的低延迟、快速连接和更强的安全性。

2023年:QUIC 的广泛应用与成熟

  • QUIC 协议在各大 Web 服务中得到了广泛的应用,越来越多的网站和在线服务(如 YouTube、Facebook、Twitter)开始全面支持 HTTP/3 和 QUIC。
  • Windows 系统继续优化其对 QUIC 的支持,特别是在企业网络和数据中心中,QUIC 通过增强的安全性和性能优势,逐渐成为标准协议。

 QUIC 在 Windows 的发展

  • 2013年:QUIC 协议首次提出。
  • 2015年:Google 在 Chrome 浏览器中首次实现 QUIC。
  • 2018年:Windows 10 开始实验性支持 QUIC。
  • 2020年:Windows 10 完全支持 QUIC 协议,HTTP/3 提供标准支持。
  • 2021年:HTTP/3 基于 QUIC 成为 Web 标准,Windows 进一步优化 QUIC 支持。
  • 2022年:Windows 11 加强 QUIC 集成,优化网络性能。
  • 2023年:QUIC 成为 Web 连接的核心协议,Windows 在多个领域广泛应用。

通过这些阶段的发展,Windows 系统逐渐成熟了对 QUIC 和 HTTP/3 协议的支持,提供了更快速、更安全的网络体验,尤其是在基于 UDP 443 端口的 QUIC 流量传输中。

  1. RDMA(Remote Direct Memory Access)IWARP 5445

    • RDMA是一种技术,允许计算机系统通过绕过操作系统和CPU来直接访问另一台计算机的内存。IWARP是一种在TCP/IP网络上实现RDMA的技术标准。端口5445通常用于RDMA over Converged Ethernet (RoCE)。

Remote Direct Memory Access (RDMA) 和 iWARP 5445 技术在 Windows 系统上的发展和支持可以追溯到多个版本的演变。以下是 RDMA 和 iWARP 技术在 Windows 系统中的发展时间线:

RDMA 技术发展时间线

RDMA 技术允许计算机直接访问远程计算机的内存,而无需经过操作系统的干预或传统的网络栈,从而提高了数据传输效率和降低了延迟。iWARP 是 RDMA 技术的一种实现,它通过标准的 TCP/IP 协议栈进行数据传输。下面是 RDMA 技术在 Windows 上的发展时间线:


Windows 2008/2008 R2(首次引入 RDMA 支持)

  • Windows Server 2008 和 Windows Server 2008 R2 是微软首次在服务器操作系统中加入 RDMA 支持的版本。
  • 引入了对 RDMA over InfiniBand (IB) 的支持,使得在高速网络环境中进行高效的数据传输成为可能。
  • 这些操作系统版本的 RDMA 主要支持 InfiniBand 硬件,但对其他 RDMA 实现(如 iWARP)支持较为有限。

Windows 2012(扩展 RDMA 支持)

  • Windows Server 2012 和 Windows 8 引入了对 RDMA over Converged Ethernet (RoCE) 和 iWARP 的更广泛支持。
  • iWARP 技术开始得到更多的应用,它允许 RDMA 在以太网网络中传输数据,而不需要额外的硬件支持。
  • 微软提供了 RDMA 驱动程序和支持的硬件,如 Mellanox 适配器、QLogic 适配器等。
  • SMB Direct 功能首次出现在 Windows Server 2012 中,允许 SMB 通过 RDMA 提供更高效的数据传输,显著提高文件共享和存储性能。

Windows 2016(增强 RDMA 支持)

  • Windows Server 2016 引入了对 SMB Direct 的增强支持,进一步优化了 SMB 3.0 协议的 RDMA 支持。
  • RDMA 技术逐渐成为高性能计算(HPC)、存储区域网络(SAN)和云环境中的关键组成部分,iWARP 和 RoCE 得到了更广泛的支持。
  • 提供了 RDMA over Ethernet 的原生支持,使得在企业网络中能够使用标准以太网硬件实现 RDMA。

Windows 2019(RDMA 与 iWARP 进一步集成)

  • Windows Server 2019 继续增强了 RDMA 支持,并改善了网络性能。
  • 通过 RDMA 技术,Windows 系统可以高效地处理更多的数据流,并能在低延迟、高带宽环境下工作,适用于大规模数据中心和高性能计算任务。
  • 对 SMB Direct 和 Storage Spaces Direct 的 RDMA 优化使得企业能够以更高效的方式构建高可用、低延迟的存储解决方案。
  • iWARP 和 RoCE 均得到了增强,尤其是在以太网环境中的 RDMA 支持。

Windows 2022(RDMA 和 iWARP 进一步完善)

  • Windows Server 2022 对 RDMA 和 iWARP 的支持得到了进一步提升。微软继续加强了基于 RDMA 的高性能存储、网络和计算方案。
  • 在 Windows Server 2022 中,SMB over QUIC 功能首次亮相,虽然这是基于 QUIC 协议,但 RDMA 和 iWARP 技术依然在高带宽和低延迟传输场景中发挥重要作用。

 

  • RDMA 支持:Windows 通过多代版本的更新,逐步将 RDMA 支持从 InfiniBand 拓展到 RoCE 和 iWARP,使其能够适用于更多的网络硬件和数据传输场景。
  • iWARP 5445:这是 iWARP 技术的一种具体实现,通常出现在支持 RDMA 的硬件(如 Mellanox 或 Intel 适配器)上。在 Windows 中,它主要用于提高以太网环境下的 RDMA 性能,特别是在大规模数据中心和存储应用中。
  • Windows Server:微软的服务器操作系统是 RDMA 技术的重要支持平台,尤其是在高性能计算和存储环境中。Windows Server 2012 及以后的版本增强了 RDMA 和 iWARP 的支持,提升了文件共享、存储虚拟化和云计算的性能。

通过这些版本的更新,Windows 系统能够为高效的数据传输提供更好的支持,特别是在需要低延迟和高带宽的应用场景中。

这些端口和协议在不同的网络场景中发挥重要作用,如文件共享、加密通信和高性能数据传输。确保网络设备和服务正确配置这些端口和协议,可以帮助保证网络通信的安全性、效率和性能。


PowerShell中的New-SmbMapping命令用于在当前会话中创建一个新的 SMB 映射(SMB share)。这个命令通常用于在 PowerShell 脚本中或交互式会话中连接到远程共享文件夹或网络驱动器。以下是它的功能和作用:

  1. 连接到共享文件夹

    • 可以使用New-SmbMapping命令连接到远程的 SMB 共享文件夹,这允许用户在本地文件系统中访问远程共享的文件和文件夹。
  2. 网络驱动器映射

    • New-SmbMapping命令可以将远程共享映射为本地计算机上的网络驱动器。这样做可以方便用户在文件资源管理器或通过命令行访问共享内容,就像访问本地驱动器一样。
  3. 脚本和自动化

    • 对于脚本和自动化任务,New-SmbMapping可以在脚本中使用,允许程序员和系统管理员动态地创建和管理共享映射,从而简化和自动化文件传输和访问任务。
  4. 参数设置

    • 通过New-SmbMapping命令,可以指定远程共享的路径、本地驱动器的名称、凭据等选项,以确保连接的安全性和正确性。

示例用法如下:

powershellCopy Code
New-SmbMapping -RemotePath "\\server\share" -LocalPath "Z:" -Credential $cred

这条命令将远程的 \\server\share 共享映射为本地的 Z: 驱动器,使用提供的凭据($cred)。这样,用户可以通过 Z: 驱动器访问远程共享的文件和文件夹。

New-SmbMapping是一个强大的 PowerShell 命令,用于在 Windows 系统中管理和连接到 SMB 共享,适用于自动化任务和管理远程文件访问。


 “SMB 1.0 / 2.0 / 3.0 / 3.1.1 / SMB over QUIC 的传输速度对比 与 分解 / 诊断 / 开发 / 交付”

提示(关键)

  • 性能趋势:SMB1 << SMB2 < SMB3(无加密) ≤ SMB3(有加密,视 CPU/硬件);SMB3 + Multichannel/SMB Direct (RDMA) 能接近链路线速。
  • SMB over QUIC 主要针对安全远程访问和高延迟/不可靠网络:在 WAN/高 RTT 场景常优于 TCP+TLS 的握手/重连表现,但在局域网低延迟高带宽场景,吞吐通常比不上直接 RDMA/Multichannel 的最佳表现(取决于实现与硬件加速)。
  • 加密成本显著依赖于硬件(AES-NI/CPU)与算法(AES‑GCM 通常比老算法更高效且并行化友好)。
  1. 协议性能对比(要点)
  • SMB 1.0(旧式)

    • 特点:单线程/blocking、无流水/流水线机制,大量 RTT,协议开销高。
    • 性能:小文件 & 高延迟场景非常差;吞吐与并发能力最低。
    • 适用:仅为兼容遗留系统(应禁用)。
  • SMB 2.0 / 2.x

    • 特点:引入批量请求、流水线、更少 RTT、更好的并发控制。
    • 性能:相比 SMB1 有大幅提升(尤其并发/多小 IO 场景)。
  • SMB 3.0(及 3.x 基本特性)

    • 特点:支持多通道(Multichannel)、SMB Direct (RDMA)、加密、oplocks/leases、durable handles、credits 机制。
    • 性能:启用 Multichannel/Direct 在多 NIC / RDMA 硬件上可接近线速,延迟极低。无加密时吞吐最好;加密开销取决于硬件加速。
  • SMB 3.1.1

    • 特点:引入 preauth integrity、AES‑GCM(更高效的加密模式),增强安全性与协商完整性。
    • 性能:在支持 AES‑GCM 与 AES-NI 的平台上,加密开销更小,性能更好且更安全。
  • SMB over QUIC

    • 特点:把 SMB 封装在 QUIC(基于 UDP、内建 TLS1.3 样式加密)上;设计用于无需 VPN 的远程访问(Windows Server 2022 / Windows 11+ 支持)。
    • 性能:在高延迟或丢包环境优于 TCP+TLS(连接/恢复更快);但在局域网高带宽场景,吞吐取决于 QUIC 实现、CPU 加密开销与 UDP 中断/多路径处理,通常优于普通加密 TCP,但未必能超越 RDMA/Multichannel。
    • 优先场景:远程安全访问、绕过复杂 VPN、改善跨互联网文件访问体验。
  1. 影响传输速度的关键因素(分解)
  • 协议层:SMB 方言、是否支持流水线、credits 大小、oplocks/leases 缓存策略。
  • 传输层:TCP vs UDP(QUIC)、拥塞控制、窗口大小、MTU/Jumbo Frame、丢包/延迟。
  • 硬件:NIC带宽、RDMA 支持、AES‑NI / 加密硬件、DMA/CPU 使用率。
  • 软件/实现:服务器/客户端实现效率(Windows Server、Samba、NAS 固件、QUIC 实现),驱动版本。
  • IO 模式:大量小文件(metadata密集)比大顺序文件吞吐差;并发线程数、IO大小、队列深度。
  • 中间件:负载均衡、VPN、NAT、防火墙/IPS/SSL inspection 会影响 QUIC/TCP 性能与多通道。
  1. 诊断/基准步骤(快速流程)
  • 基准工具
    • 网络基线:iperf3(TCP/UDP)测量纯网速与 RTT/丢包。
    • 存储/文件:fio(通过 CIFS/SMB 挂载)、robocopy(Windows,/J 大文件、/MT 多线程)、smbclient + dd 测试。
    • 实际工作负载:用典型文件集合(小文件/大文件/随机/顺序)测试。
  • 协议/实现检查
    • 抓包:Wireshark(filter tcp.port==445 或 smb2 或 udp.port==443 for QUIC),查看协商、加密协商、重传、rtt。
    • Windows:Get-SmbConnection / Get-SmbSession / Get-SmbOpenFile;Get-SmbServerConfiguration / Get-SmbClientConfiguration;Perfmon(SMB Server/Client counters);Get-NetAdapterRdma。
    • Samba/Linux:smbstatus,dmesg/journalctl,iotop/iostat,tcpdump port 445。
  • 特殊诊断点
    • CPU-bound? 观察 CPU 使用、是否缺 AES-NI(加密成为瓶颈)。
    • Network-bound? 查看 retransmits、window、MTU/fragmentation、Jumbo frame 一致性。
    • Storage-bound? fio 查看 IOPS/latency、队列深度、SSD 写延迟。
    • Multichannel/SMB Direct 是否被建立(Get-SmbMultichannelConnectionState/Network traces)。
  1. 开发注意(实现/互操作)
  • 优先协议:实现时优先 SMB3/3.1.1,支持 Negotiate 回退到较低方言(但企业部署建议禁 SMB1)。
  • QUIC 集成:若要支持 SMB over QUIC,关注平台支持(Windows Server 2022+ 原生支持),证书管理(TLS cert 用于 QUIC),客户端也需支持(Windows 11)。QUIC 在用户态实现多且差异大,互操作测试必做。
  • 性能优化点:支持异步 IO、并发请求、正确利用 credits、实现/利用 multichannel/SMB Direct;使用高效 crypto 库(硬件加速)。
  • 测试矩阵:Windows↔Windows, Windows↔Samba, SMB over QUIC 客户端↔Server;有/无加密、有/无 RDMA、多 NIC/单 NIC,跨 WAN 场景。
  • 安全:确保强制使用现代加密(SMB3.1.1 AES‑GCM)与认证(Kerberos 优先),避免在公网暴露 445(QUIC 用 443/UDP 更安全便捷)。
  1. 交付 / 部署建议(上线检查与调优)
  • 上线前基线测试:在目标网络与存储上做 fio/robocopy/iperf 比较,记录基线;分别测试:SMB3 无加密、SMB3 加密、SMB Direct、多通道、SMB over QUIC(若适用)。
  • 启用策略:禁用 SMB1;在数据中心启用 Multichannel/SMB Direct(若 NIC 支持);在远程访问场景考虑 SMB over QUIC 代替直接暴露 445/VPN。
  • 网络配置:一致 MTU/Jumbo、启用 NIC offloads、QoS(优先文件流量)、允许 UDP 443(QUIC)通过防火墙。
  • 硬件与驱动:确保 NIC/firmware 支持 RDMA、更新驱动、开启 AES-NI/CPU 微码。
  • 监控:会话数、连接数、吞吐/延迟、SMB 错误(NTSTATUS)、credits 利用率、oplock breaks;对 QUIC 也监控 UDP丢包与握手延迟。
  • 回滚:分步骤部署(先测试,再灰度),保存配置快照,记录性能基线与回退方案。
  1. 典型实用命令 / 测试示例(速查)
  • 网络基线:iperf3 -c server -P 8(TCP);iperf3 -c server -u -b 0(UDP)
  • Windows 查看连接/配置:Get-SmbConnection; Get-SmbSession; Get-SmbServerConfiguration; Get-NetAdapterRdma
  • Windows 多通道状态:Get-SmbMultichannelConnectionState (视环境/模块可用)
  • 测试文件拷贝(Windows):robocopy \server\share C:\dest largefile /J /MT:32
  • Linux/Samba:mount -t cifs //server/share /mnt -o vers=3.1.1,username=user ; fio --name=job --filename=/mnt/testfile ...
  • 抓包:tcpdump -i any port 445 -w smb.pcap;tcpdump -i any udp port 443 -w quic.pcap(QUIC)
  • QUIC 特有:检查 UDP 443 是否被 NAT/firewall 转发,确认证书与 SNI 指定(SMB over QUIC 使用证书验证)。
  1. 简单性能期望(非常粗略、示例性)
  • 局域网(10 Gbps):
    • SMB Direct (RDMA) + SMB3 ≈ 接近线速(9–10 Gbps),低 CPU;
    • SMB3 Multichannel (CPU & NIC offloads) ≈ 70–95% 线速,视实现;
    • SMB3 加密(AES‑GCM + AES‑NI)≈ 80–95%(硬件加速)或更低(无加速)。
    • SMB over QUIC ≈ 在 LAN 中可达较高吞吐,但通常会比 RDMA 略低(50–90% 线速,取决实现与 RTT)。
  • WAN/高延迟:SMB over QUIC 常优于 TCP+TLS 的连接建立与丢包恢复,从整体文件传输体验可能更好(尤其多断连/迁移场景)。

可选支持

  • 可以根据你的实际场景(网络带宽/延迟、客户端/服务器 OS、是否有 RDMA 硬件、是否需要远程访问 via QUIC)输出:
    • 具体基准计划(fio/robocopy/iperf3 命令),或
    • Windows Server / Samba 的配置与调优示例(开启 Multichannel、配置 QUIC 证书、禁用 SMB1、调优 credits/IO 大小)。

针对 PowerShell 5.1 脚本的操作,可以使用以下命令来实现关闭 WMI 服务、SMB 防火墙阻止以及 DCOM 防火墙阻止的设置:

  1. 关闭 WMI 服务: 要关闭 Windows Management Instrumentation (WMI) 服务,可以使用以下 PowerShell 命令:

    powershell
    Stop-Service -Name winmgmt -Force

    该命令会停止 winmgmt 服务,通常这是 WMI 服务的名称。

  2. 阻止 SMB 防火墙: SMB(Server Message Block)是一个网络文件共享协议。如果要通过防火墙阻止 SMB 协议,可以设置相关的防火墙规则。使用下面的命令来阻止 SMB:

    powershell
    New-NetFirewallRule -DisplayName "Block SMB" -Protocol TCP -LocalPort 445 -Action Block

    这会创建一个防火墙规则,阻止通过端口 445(SMB 使用的端口)的 TCP 流量。

  3. 阻止 DCOM 防火墙: DCOM(Distributed Component Object Model)允许进程在网络中进行通信。你可以通过防火墙规则阻止 DCOM 协议。以下命令会阻止 DCOM 通信:

    powershell
    New-NetFirewallRule -DisplayName "Block DCOM" -Protocol TCP -LocalPort 135 -Action Block

    这会创建一个防火墙规则,阻止通过端口 135(DCOM 使用的端口)的 TCP 流量。

这些命令都可以通过管理员权限运行 PowerShell 来执行。


PS C:\Users\Administrator> New-NetFirewallRule -DisplayName "Block SMB" -Protocol TCP -LocalPort 445 -Action Block


Name                          : {3c4683ea-fd17-45ec-99b0-b17df7521a8f}
DisplayName                   : Block SMB
Description                   :
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Block
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : 已从存储区成功分析规则。 (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses : {}
PolicyAppId                   :
PackageFamilyName             :

 

PS C:\Users\Administrator> New-NetFirewallRule -DisplayName "Block DCOM" -Protocol TCP -LocalPort 135 -Action Block


Name                          : {e8ad0f54-078f-4fd4-9128-5aca2092853f}
DisplayName                   : Block DCOM
Description                   :
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Block
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : 已从存储区成功分析规则。 (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses : {}
PolicyAppId                   :
PackageFamilyName             :

 

PS C:\Users\Administrator> Stop-Service -Name winmgmt -Force


SMB(Server Message Block)协议是一种网络文件共享协议,常用于局域网(LAN)中,允许不同操作系统之间的文件和打印机共享。它的基本原理包括以下几个方面:

1. 功能和目的

SMB协议主要用于让计算机通过网络共享文件、打印机和其他资源。它支持客户端与服务器之间的通信,允许:

  • 文件共享:客户端可以读取、写入、删除服务器上的文件。
  • 打印机共享:客户端可以访问并使用服务器上的打印机。
  • 远程访问:客户端可以通过远程访问服务器上的资源。

2. 协议工作方式

SMB协议通常在客户端与服务器之间使用请求-响应的方式进行通信。具体流程如下:

  • 客户端请求:客户端发起请求,要求访问某个文件或资源。
  • 服务器响应:服务器处理请求,返回结果(如文件内容、错误信息等)。

3. 基本架构

SMB协议采用了客户端-服务器(C/S)架构。通常,计算机充当客户端或服务器的角色:

  • 服务器:共享文件和打印机的计算机,响应客户端请求。
  • 客户端:请求资源的计算机,向服务器发起访问请求。

4. SMB协议的版本

SMB协议有多个版本,不同版本支持不同的功能:

  • SMB 1.0:最早的版本,已经不再推荐使用,因为存在许多安全漏洞。
  • SMB 2.0:提供了更高的性能和更强的安全性,改进了许多协议设计。
  • SMB 3.0及更新版:增加了加密和完整性校验等安全特性,并进一步提高了性能,支持在广域网环境下的使用。

5. 常用的SMB应用

  • Windows共享:Windows操作系统默认支持SMB协议,用于文件和打印机共享。
  • 跨平台共享:除了Windows,Linux和macOS等操作系统也可以使用SMB协议进行文件共享,通常通过Samba服务实现。

6. 安全性

SMB协议的安全性较为重要,尤其是在现代网络环境中。SMB协议支持以下安全机制:

  • 身份验证:通过用户名和密码验证客户端。
  • 加密:SMB 3.0及以上版本提供数据加密功能,防止数据在传输过程中被窃取。
  • 签名:防止数据篡改,确保传输的数据未被篡改。

7. SMB的工作层

SMB协议工作在OSI模型的会话层应用层之间,使用TCP协议作为其传输协议,通常在端口445上运行。

总体而言,SMB协议通过简化文件共享过程,使得网络上的资源访问变得更加方便和高效,尤其是在企业环境和跨平台环境中非常常见。


SMB(Server Message Block)协议的来源可以追溯到20世纪80年代末期,最初由IBM公司开发,并逐步成为广泛使用的文件共享协议。其发展经历了多个阶段,下面是SMB协议的历史背景和来源:

1. 初期开发

SMB协议最初由IBM(国际商业机器公司)在1980年代末期开发,作为一种用于局域网文件共享的协议。它最早被称为**"IBM LAN Manager"**,并且用于在IBM的操作系统和网络上实现文件和打印机共享。

2. Microsoft的参与

在1987年,IBM与Microsoft合作,开始将SMB协议整合到Windows操作系统中。当时,Windows 3.1及更早版本的Windows操作系统开始使用SMB协议进行网络共享。随着Windows操作系统的发展,SMB协议的功能和实现方式得到了逐步扩展和改进。

3. Samba项目

在Linux操作系统上,SMB协议的实现最初并没有得到广泛支持。为了使Linux系统能够访问Windows共享,Samba项目应运而生。Samba是一个开源实现,允许Linux和Unix系统与Windows系统之间进行SMB协议的通信,实现文件和打印机共享。Samba项目最早由Andrew Tridgell于1991年启动,并逐步成为Linux环境中最流行的SMB协议实现。

4. SMB的演变

SMB协议经历了多个版本的迭代,逐渐增强了性能、安全性和功能:

  • SMB 1.0:最早的版本,最初由IBM和Microsoft共同开发,具有简单的文件共享功能。
  • SMB 2.0:随着Windows Vista的发布,Microsoft推出了SMB 2.0版本。它在SMB 1.0的基础上进行了大量改进,提高了性能、可靠性和安全性。
  • SMB 3.0:Windows 8和Windows Server 2012引入了SMB 3.0,它进一步增强了协议的安全性,包括对数据加密和签名的支持。

5. 现代使用

如今,SMB协议已经成为网络共享中的标准协议,尤其是在Windows操作系统中。它不仅仅局限于Windows平台,Linux、macOS等操作系统也通过Samba等工具支持SMB协议,实现跨平台文件共享。

总结来说,SMB协议的来源可以追溯到IBM的早期工作,后来由Microsoft进一步发展并广泛应用于Windows操作系统中。随着时间的推移,SMB协议不断演进,成为跨平台网络文件共享的核心协议之一。


SMB(Server Message Block)协议的官方文档主要由Microsoft提供,并在其技术支持和开发者资源中详细描述。Microsoft为SMB协议提供了广泛的文档支持,帮助开发者了解协议的工作原理、规范和最新的实现方式。

1. Microsoft官方文档

Microsoft对SMB协议的详细说明通常可以通过其官方的MSDN(Microsoft Developer Network)或Microsoft Docs网站访问。这些文档包含了SMB协议的各个版本的技术细节、接口、协议规范等内容。

  • Microsoft Docs: SMB协议文档

    • 这个页面提供了有关SMB协议的概述、不同版本(如SMB 1.0, SMB 2.0, SMB 3.0等)的变化以及SMB协议在Windows Server中的配置、使用和管理的细节。
  • MSDN(Microsoft Developer Network): MS SMB协议规范

    • 该页面详细描述了SMB协议的技术规范和协议细节,提供了用于开发和理解SMB协议实现的文档。

2. IETF(Internet Engineering Task Force)

虽然SMB协议最初由IBM和Microsoft开发,IETF也提供了与SMB协议相关的标准文档。特别是在网络协议、文件传输等方面,IETF的一些文档与SMB协议有关联。IETF的文档可能包括一些关于SMB在网络环境中如何工作的附加规范。

  • IETF RFC(Request for Comments)RFC 1001
    • 该RFC是与SMB协议相关的一个文档,描述了基于SMB协议的“NetBIOS over TCP/IP”协议,它是早期SMB协议的一部分。

3. Samba文档

Samba作为SMB协议的开源实现,也提供了丰富的文档,帮助用户在Linux/Unix平台上实现和配置SMB协议。Samba项目的官方网站包含了大量有关SMB协议实现和配置的资料。

  • Samba官方网站Samba文档
    • 这里提供了Samba的安装、配置、调试等方面的详细指南,特别是在Linux系统上使用SMB的实现。

4. 相关技术标准

除了Microsoft的官方文档,其他组织如ISO/IEC等也可能会发布与文件共享协议相关的标准,虽然这些标准不专门针对SMB,但它们可以为理解SMB协议提供额外的背景和框架。


SMB协议的官方文档主要来源于以下渠道:

  • Microsoft Docs 和 MSDN 提供了SMB协议的详细技术规范、版本说明和使用指导。
  • Samba项目 提供了SMB协议在Linux/Unix环境中的实现文档。
  • IETF RFC 提供了SMB协议的某些标准文档,尤其是关于网络通信和NetBIOS的部分。

通过这些文档,开发者和系统管理员可以深入了解SMB协议的设计、实现和配置细节。


关于 QUIC over SMB(QUIC协议与SMB协议结合)的官方文档目前并不常见,主要是因为QUIC协议最初并未直接用于SMB协议。QUIC(Quick UDP Internet Connections)是一种由Google提出的基于UDP的协议,旨在提供更低延迟和更高效的传输,特别是在HTTP/3和Web应用中得到了广泛的应用。

但是,QUIC与SMB协议结合的概念可能源于对提高文件共享协议性能和安全性的需求。以下是有关QUIC协议SMB协议的一些相关资源,以及它们如何可能结合起来使用的文献。

1. Microsoft的SMB协议与现代传输协议的结合

Microsoft虽然没有专门针对 QUIC over SMB 提供官方文档,但它对SMB协议的更新和现代化已经在多个版本中进行过改进。例如,SMB 3.0引入了加密、压缩等功能,而在一些新的技术讨论中,QUIC的低延迟、加密等特性逐渐引起了关注。

Microsoft的文档和讨论主要集中在 SMB 3.xSMB Direct 等技术上,它们使用了现代化的网络协议来提高性能和安全性。SMB协议本身并没有直接引入QUIC,但可以推测,QUIC作为一个高效的传输协议,可能在未来的Windows更新中被考虑与SMB协议结合。

  • Microsoft Docs - SMB协议概述: SMB协议文档

  • Microsoft Tech Community (QUIC与SMB的讨论):在某些微软的技术社区中,可能会讨论QUIC协议和SMB协议的结合,尤其是在探索新的低延迟网络应用时。

2. QUIC协议的官方文档与实现

QUIC协议由Google提出,后来被IETF(Internet Engineering Task Force)标准化。QUIC协议在HTTP/3中得到了广泛应用,它通过在UDP之上构建加密的传输层,旨在提供更快的连接建立、更低的延迟和更高的性能。

  • IETF QUIC RFC文档:IETF为QUIC协议定义了RFC 9000及相关文档,详尽描述了QUIC协议的工作机制、流量控制、加密、数据包结构等内容。

这些文档对于理解QUIC的工作原理和如何将其与其他协议(如SMB)结合提供了必要的背景知识。

3. Samba(SMB协议的开源实现)

对于开源社区,Samba实现了SMB协议,可以参考其文档,了解如何在Linux/Unix环境中使用SMB协议,尽管Samba本身并没有直接实现QUIC协议。

4. QUIC和SMB结合的研究与未来

虽然目前没有直接的QUIC over SMB官方文档,但在研究和技术前沿中,网络协议的创新常常促使不同协议间的结合。未来,SMB可能会利用QUIC协议来优化文件传输和提高性能,尤其是在需要低延迟和高带宽的网络环境中。这类工作可能会在未来的技术标准或文献中有所体现。

目前并没有专门的官方文档描述QUIC over SMB,但可以通过以下途径获取相关信息:

  • Microsoft Docs:了解SMB协议的最新特性。
  • IETF的QUIC RFC:了解QUIC协议的标准和实现。
  • Samba文档:了解SMB协议的开源实现和应用。

如果QUIC和SMB协议结合的技术被实际应用,可能会在未来的标准或操作系统更新中得到详细介绍。


SMB over QUIC是一个较新的概念,旨在结合SMB协议(Server Message Block)与QUIC协议(Quick UDP Internet Connections)。这种结合的目的是利用QUIC协议的低延迟、高性能和强大的加密功能,为SMB文件共享提供更好的网络性能和安全性,尤其是在跨广域网(WAN)环境中。微软和开源社区(如Samba)可能会逐步推动这种集成,但目前(截至2025年11月),有关SMB over QUIC的正式文档和开源实现仍在不断发展中。

1. Microsoft官方文档

Microsoft已开始在Windows Server和其他Windows系统中实验性地支持SMB over QUIC。QUIC协议本身已经在HTTP/3中得到广泛应用,Microsoft也在考虑将QUIC的优势扩展到SMB协议上,以改善远程文件访问的速度和安全性。

微软对SMB over QUIC的正式文档可能已经发布在以下资源中:

  • Microsoft Docs - SMB协议和网络文件共享概述:这个文档阐述了SMB协议的工作原理和如何通过QUIC提升文件共享性能。虽然Microsoft没有专门的SMB over QUIC文档,但你可以查找有关SMB协议的现代化进展的内容。

    • SMB协议文档
    • 这是一个关于SMB协议的一般性文档,可能包含有关QUIC支持的部分内容。
  • Windows Server 2022中的SMB over QUIC:随着Windows Server的新版本,Microsoft引入了SMB over QUIC,这使得SMB文件共享能够在不依赖传统的TCP/IP连接的情况下,通过QUIC协议实现快速、安全的传输。这些功能和技术支持通常在Windows Server发布说明中得到更新。

    • 你可以查阅最新的Windows Server 2022或未来版本的发布说明。

2. 开源项目:Samba

Samba是SMB协议的开源实现,虽然它目前没有直接支持SMB over QUIC,但开源社区可能会在未来推出相关的实现。QUIC作为一个现代化的传输协议,逐渐被许多开源项目所关注,可能会有开发者或团队尝试将其集成到Samba中。

  • Samba官方文档Samba Documentation

    • 该文档提供了关于Samba项目的所有资料,包括文件共享、SMB协议的实现等内容。如果有关于SMB over QUIC的开源实现,它们可能会出现在Samba的更新中。
  • GitHub上的Samba项目:Samba的源代码托管在GitHub上,可以查看是否有关于SMB over QUIC的分支或PR(Pull Request)。

3. QUIC协议

QUIC协议是一个由Google提出并由IETF(Internet Engineering Task Force)标准化的协议,它通过基于UDP的加密传输来优化连接性能。QUIC已被广泛用于HTTP/3中,但它作为底层协议,也有可能被用于其他协议如SMB的优化。

  • QUIC协议的IETF RFC:IETF为QUIC协议发布了多个标准文档,这些文档可以帮助理解QUIC的设计思想及其在SMB中的应用前景。

  • Google QUIC概述:Google关于QUIC协议的详细说明,介绍了其设计目标、特性和使用场景。

4. SMB over QUIC的未来

SMB over QUIC的结合仍然是一个相对较新的领域。微软的Windows Server可能会在未来版本中正式集成SMB over QUIC,并发布详细的文档。开发者和系统管理员需要关注Microsoft和开源社区的更新,特别是Windows Server的更新日志和Samba的开发进展。

  • Microsoft的文档:Microsoft在其Windows Server文档中介绍了SMB协议的现代化和改进,可能会在未来的版本中推出SMB over QUIC的正式支持。可以关注Microsoft Docs和Windows Server的更新。
  • Samba的开源实现:目前Samba没有直接实现SMB over QUIC,但开源社区可能会逐步探索这个方向。查看Samba的GitHub仓库和文档是了解其进展的一个好方法。
  • QUIC协议:QUIC协议的IETF RFC和Google的官方文档为理解QUIC如何与其他协议(如SMB)结合提供了技术背景。

随着SMB over QUIC的发展,未来可能会有更多的文档和开源实现。


前提说明

在讲解SMB版本的时延和时间同步特性前,需要先厘清两个核心概念,避免和通用网络指标混淆:

  1. SMB的「时延」:指SMB端到端事务处理的响应时延,即从客户端发起SMB请求(读/写文件、查询属性)到收到服务器响应的总耗时,包含「网络传输+SMB协议栈处理+服务器端磁盘I/O」三部分,和底层网络链路的单向时延是不同维度。
  2. SMB的「时间同步精度」:指SMB协议内置时间戳的精度,以及基于SMB交互实现客户端-服务器时钟对齐的能力。注意:SMB本身不是专门的时间同步协议,它的时间机制主要用于文件系统缓存一致性、分布式锁、集群故障转移场景,而非通用时钟同步。
  3. 参考基准:以下数值为「千兆局域网、SSD存储、无高负载、默认配置」下的典型参考值,实际表现受网络RTT、磁盘类型、系统负载、优化开关影响极大。

各版本核心特性、时延与时间同步精度总览

SMB版本 对应Windows版本 典型SMB同步读时延(1MB文件) 时间同步相关精度 核心相关特性
SMB 1.0 XP/2003/7(Win10后默认禁用) 15~50ms 毫秒级(软件时间戳,无同步机制) 无加密/压缩/多通道,无时间一致性保障能力
SMB 2.0 Vista/2008/Win7 8~25ms 毫秒级(仅传递时间戳,无主动同步) 引入异步批量请求、文件属性缓存
SMB 2.1 Win7/2008 R2/Win8 5~15ms 毫秒级(支持客户端缓存时间戳校验) 引入文件租约(Leasing)、大型MTU支持
SMB 3.0 Win8/2012/2012 R2 3~10ms(开RDMA可低至500μs) 亚毫秒级(支持时钟偏移被动补偿) 引入多通道、SMB Direct(RDMA)、端到端加密、集群故障转移时间同步
SMB 3.1.1 Win10/2016/2019 2~8ms(开RDMA可低至300μs) 亚毫秒级(时间戳加密保护,偏移补偿精度提升) 引入AES-GCM硬件加速加密、预认证完整性、RDMA优化
SMB 3.2+ / SMB over QUIC Win11/Server 2022 1~5ms(局域网)/ 5~20ms(广域网) 亚毫秒级(QUIC内置高精度时间戳,跨网同步能力提升) 支持SMB over QUIC(互联网场景)、RDMA over QUIC、存储缓存直通

各版本详细特性

1. SMB 1.0:高时延、无时间同步能力

  • 时延表现:是性能最差的SMB版本,无异步请求、无缓存机制,每个文件操作都需要和服务器完整交互,且默认开启全包签名(CPU开销大),典型时延是后续版本的3~5倍。若使用HDD存储,随机读写时延甚至会超过100ms。
  • 时间同步特性:仅在返回文件属性时附带服务器端的软件时间戳,精度受Windows系统时钟中断限制(XP/2003默认中断周期为15.6ms,精度最高15ms左右),无任何时间同步或一致性校验机制,客户端和服务器时间差超过阈值时会出现缓存不一致、操作失败等问题。
  • 注:该版本存在严重安全漏洞(如WannaCry勒索病毒利用的漏洞),Windows 10之后默认禁用,不建议使用。

2. SMB 2.0/2.1:时延优化,基础时间一致性保障

  • 时延表现:相比1.0大幅优化,支持异步批量请求(可一次发送多个请求无需等待响应)、文件属性/目录列表客户端缓存,减少了和服务器的交互次数,典型时延降低50%以上。2.1进一步引入大型MTU(最大64KB)支持,减少了TCP分片开销,时延进一步降低。
  • 时间同步特性:仍为被动传递时间戳,无主动同步能力,但2.1开始支持客户端校验服务器返回的时间戳与本地缓存的差值,若超过阈值则强制重新拉取文件属性,减少了因时间差导致的缓存不一致问题,但精度仍为毫秒级,受系统调度影响抖动极大。

3. SMB 3.0:质变版本,引入时间同步机制

  • 时延表现:首次引入SMB Multichannel(多通道),可聚合多网卡带宽、并行传输数据,大幅降低丢包对时延的影响;同时支持SMB Direct(RDMA),数据可在客户端和服务器网卡之间直接内存拷贝,绕过CPU和协议栈开销,开启RDMA时读时延可低至500μs以内。
  • 时间同步特性:首个具备时间同步相关能力的SMB版本,核心是为了支持「透明故障转移」场景:当SMB集群节点故障时,客户端可无缝切换到其他节点,不会出现文件时间戳跳变。SMB 3.0引入了被动时钟偏移补偿机制:客户端会在每次SMB交互中记录服务器时间戳,结合网络RTT计算出客户端和服务器的时钟偏移,后续交互中自动补偿该偏移,保证文件缓存的一致性。此时精度可达到亚毫秒级(局域网RTT<1ms时,偏移补偿误差<500μs)。

4. SMB 3.1.1:加密优化,时间同步精度提升

  • 时延表现:加密机制从SMB 3.0的AES-CCM升级为AES-GCM,支持CPU硬件加速(AES-NI指令集),加密开销仅几微秒,几乎可忽略;同时优化了RDMA的内存注册流程,进一步降低RDMA场景下的时延,典型时延比3.0低20%~30%。
  • 时间同步特性:给SMB时间戳增加了加密完整性保护,防止时间戳被篡改;优化了时钟偏移补偿算法,支持动态调整偏移量,局域网场景下时间差的抖动可控制在300μs以内,集群故障转移时可保证各节点时间差<1ms。

5. SMB 3.2+ / SMB over QUIC:广域网场景优化,时间精度进一步提升

  • 时延表现:首次支持基于UDP的QUIC协议传输SMB,0-RTT握手、多路复用、快速丢包重传等特性大幅降低了广域网场景下的时延和抖动,互联网场景下传输时延比TCP版SMB低30%~50%;同时支持RDMA over QUIC,广域网下也可实现低时延内存级数据传输。
  • 时间同步特性:QUIC协议本身内置了高精度时间戳,用于RTT测量和拥塞控制,SMB over QUIC可直接复用该时间戳,时间戳的生成精度更高(基于高精度性能计数器,而非系统时钟中断),跨广域网场景下的时间同步精度可稳定在1ms以内,优于TCP版SMB。

影响SMB时延和时间精度的关键因素

  1. 网络条件:网络RTT是SMB时延的基础,若局域网RTT<1ms,时延主要受磁盘和协议栈影响;若广域网RTT>50ms,SMB时延至少为50ms以上,和版本关系极小。网络丢包、抖动会直接拉高时延,同时降低时间同步的精度(时间戳误差≈RTT抖动)。
  2. 存储类型:HDD随机读写时延为ms级,会直接拖累SMB时延;SSD/NVMe随机读写时延为μs级,此时SMB时延主要受协议栈和网络开销影响。
  3. 优化开关
    • 开启SMB Multichannel、SMB Direct(RDMA)、SMB Compression可大幅降低时延;
    • 关闭SMB 1.0、禁用不必要的SMB签名可减少协议开销;
    • 开启加密对SMB 3.0+的时延影响极小(硬件加速下开销<10μs)。
  4. 系统负载:服务器CPU、内存、磁盘负载过高时,SMB协议栈处理延迟、时间戳生成延迟都会显著上升,时延和时间精度都会下降。

SMB时间同步能力的用途与限制

适用场景

SMB的时间机制仅用于保障SMB文件共享的一致性,包括:

  • 客户端缓存文件的过期校验,避免读到服务器端的旧文件;
  • SMB集群故障转移时,保证各节点文件时间戳一致,避免客户端出现时间跳变;
  • SMB分布式锁的时间戳校验,避免锁冲突。

核心限制

  1. 无主动时间同步能力:SMB不会主动校准客户端和服务器的系统时间,仅能在SMB交互中被动传递时间戳、补偿时钟偏移,无法用于通用场景的时钟同步。
  2. 精度受网络和系统限制:时间同步精度上限为网络RTT的抖动,若RTT抖动>1ms,时间同步精度无法突破1ms;且时间戳为软件生成,受系统调度影响,无法达到硬件时间戳的纳秒/微秒级精度。
  3. 无法替代专业时间同步协议:如果需要高精度时钟同步,需使用NTP(精度毫秒级)、PTP(精度亚微秒级)或Windows域时间同步(w32time,精度毫秒级),SMB的时间机制无法满足这类需求。

优化建议

  1. 优先使用有线网络,避免使用Wi-Fi/虚拟网卡(如Wi-Fi Direct Virtual Adapter)传输SMB,无线网络的抖动和时延会直接拉低SMB性能和时间精度。
  2. 低时延场景开启SMB Direct(RDMA),需客户端和服务器网卡支持RoCE/iWARP协议。
  3. 跨广域网传输使用SMB over QUIC,替代传统TCP版SMB。
  4. 禁用SMB 1.0,避免安全风险和额外开销。
  5. 不要依赖SMB实现通用时间同步,需单独部署专业时间同步服务。

 

posted @ 2023-06-04 07:36  suv789  阅读(15603)  评论(0)    收藏  举报