什么是服务器消息块 (SMB)?
服务器消息块 (SMB)
称为 SMB(服务器消息块)的客户端/服务器协议控制对文件、整个目录和其他网络资源(包括打印机、路由器和网络接口)的访问。SMB 协议可用于处理系统中各种进程之间信息共享,有时称为进程间通信。
该协议由 IBM 的 IT 部门于 1983 年创建,并且多年来经历了多次修订和实施。SMB 最初作为 OS/2 LAN Manager 和 LAN Server 网络操作系统的功能提供给公众。由于 Windows 操作系统系列的网络服务与 SMB 向后兼容,因此它们一直是该协议的主要应用。
这使得运行较新版本 Microsoft 操作系统的设备可以轻松地与运行较旧版本的设备连接。此外,开源 Samba 项目提供了一种在 Linux 和 Unix 发行版中使用服务器消息块的方法,从而实现跨平台 SMB 通信。
SMB 设计用于在其上运行的网络基本输入/输出系统 (NetBIOS) 和 NetBIOS 扩展用户界面 (NetBEUI) 如下所示:
NetBIOS 帧
IPX/SPX,也称为通过互连网络数据包交换的 NetBIOS,
传输控制协议/互联网协议 (TCP/IP) 和 NetBIOS
NetBIOS 的特点
使用运行 Windows 的台式机和服务器
包括适用于 Unix 和类似 Unix 系统的 Samba 协议守护进程
支持跨旧版 Windows 进行 NetBIOS 传输
利用称为网络邻居 (NetHood) 协议的 NetBIOS 传输服务。
使用分布式计算环境/远程过程调用 (DCE/RPC) 服务来验证多进程通信通道。
SMB 如何工作?
客户端可以使用服务器消息块协议与同一网络上的其他用户交互,从而访问网络上对其提供的任何文件或服务。为了使这能够工作,另一台机器也必须安装网络协议并使用 SMB 服务器程序来接受和处理相关的客户端请求。但是,为了建立连接,双方必须首先相互发送等效的消息。
SMB 在 IP 网络中使用传输控制协议 (TCP),这使得在建立连接之前客户端和服务器之间进行三次握手成为可能。TCP 协议的规则管理后续数据的传输。
在哪里可以使用服务器消息块?
在本帖中,已经介绍了关键的 SMB 应用场景。该协议的主要优势在于计算机和文件服务器之间的客户端/服务器交互,因为访问文件系统是其主要重点。但是,两个设备或两个进程之间简单的信息交换也属于其应用范围,因为协议的其他元素显然是为了进程间通信而设计的。
除了包含在不同 Windows 版本中之外,服务器消息块还被纳入大量其他软件项目,以允许 Microsoft 家族以外的实体之间进行通信。以下是其中一些最著名的 SMB 实现:
Samba − 计算机程序 Windows 之外最著名的 SMB 实现可能是 Samba。程序员 Andrew Tridgell 于 1991 年开始创建此开源软件,该软件允许使用服务器消息块协议在 Unix/Linux 系统上进行通信。
Netsmb − SMB 客户端和服务器直接在 BSD 操作系统的内核中实现。它们最初是为 FreeBSD 4.4 提供的,但现在受许多 BSD 操作系统支持,包括 NetBSD 和 macOS。
YNQ − 自 1998 年以来,以色列软件初创公司 Visuality Systems Ltd. 一直在开发 YNQ。
FreeNAS − NAS 软件以 OpenZFS 文件系统和 FreeBSD 为基础。
ConnectedNAS − ConnectedNAS 高级软件用户可以使用他们的移动设备和其他 SMB 设备快速私下或在 SMB 设备之间传输数据。ConnectedNAS 支持的唯一 SMB 协议是版本 2 的协议。
SMB 版本
自 SMB 于 1983 年首次推出以来,网络标准已经过多次修改,这反映在不同的协议版本中。这些范围从 SMB 1.0 到最新的版本 SMB 3.1.1,微软与 Windows 10 一起发布了该版本。以下各部分概述了服务器消息块协议创建过程中的关键阶段。
SMB 的主要方言包括:
CIFS/SMB 1.0
SMB 2.0
SMB 2.1
SMB 3.0
SMB 3.02
SMB 3.1.1
SMB 加密
SMB 加密提供 SMB 数据的端到端加密,并防止在不安全的网络上窃取数据。SMB 加密可以轻松设置,尽管可能需要为专业硬件或软件支付少量额外费用。它不需要 WAN 加速器或互联网协议安全 (IPsec)。SMB 加密可以在数据通过不受信任的网络传输的多种情况下设置,并且可以针对每个共享或针对文件服务器整体进行配置。