服务器消息块 (SMB) 是一种客户端/服务器文件共享协议,由 IBM 在上世纪 80 年代末开发,用以规定共享网络资源的结构,例如目录、文件、打印机以及串行端口。 这是一种请求/响应协议。

SMB 协议中规定了文件系统访问和客户请求文件的方式, 以及 SMB 协议进程间通信的方式。 所有的 SMB 消息都采用一种格式。 该格式采用固定大小的文件头,后跟可变大小的参数以及数据组件。

SMB 消息可以:

Microsoft 网络配置中主要采用 SMB 形式实现文件共享和打印服务。 从 Windows 2000 系列软件开始,Microsoft 修改了软件的基础结构,使其适用 SMB 协议。 而在以前的 Microsoft 产品中,SMB 服务需要使用非 TCP/IP 协议来执行域名解析。 从 Windows 2000 开始,之后的所有 Microsoft 产品都使用 DNS 命名,使 TCP/IP 协议能够直接支持 SMB 资源共享,如图 1 所示。 Windows PC 之间的 SMB 文件交换过程如图 2 所示。

与文件传送协议 (FTP) 支持的文件共享不同,SMB 协议中的客户端要与服务器建立长期连接。 建立连接后,客户端用户就可以访问服务器上的资源,就如同资源位于客户端主机上一样。

在 LINUX 和 UNIX 操作系统中,通过 SAMBA(SMB 的一个版本)可以实现与 Microsoft 网络的资源共享。 在 Apple Macintosh 操作系统中,通过 SMB 协议也可以实现资源共享。