- 中文名
- 服务器信息块
- 外文名
- Server Message Block
- 简 称
- smb
- 类 型
- 协议名
- 研 制
- 贝瑞·费根鲍姆
- 作 用
- Web连接和客户端与服务器之间的信息沟通
随着网络通信技术和网络资源共享机制的不断发展,针对网络间支持数据共享的协议和机制等技术的研究受到了研究人员的广泛关注。其中,网络文件共享传输过程的安全性研究更是成为该领域的热点问题。其中,SMB(Server Message Block)协议作为一种局域网文件共享传输协议,常被用来作为共享文件安全传输研究的平台。但是,SMB协议中采用控制文件安全传输的机制是使用客户身份验证的方式,该方式通过客户端向服务器端发送验证密码来获取文件传输的权限,不过针对该机制的网络攻击相对严重,攻击程序通过对验证密码的截获来窃取文件的访问权限,局域网下文件传输的安全性得不到保障。 [1]
SMB协议可以为局域网用户提供相关的功能和机制,来保证传输的可靠性。局域网中90%的数据包以及95%的字节是通过SMB协议进行传输,这是为了解决网络的稳定性和数据流在共享带宽时的公平性、拥塞控制及效率等问题。由于SMB传输应用的普遍性和重要性,关于SMB传输这一课题计算机领域中很多学者致力于这一方面潜心研究,就SMB协议及其多个版本在各类网络下的传输效率问题做了大量的研究和实验。在局域网发展之初该网内的文件共享是通过FTP协议进行传输。用户必须首先从服务器下载该文件的数据到本地(客户端),然后对数据文件进行修改操作,之后,用户重新将客户端的文件上传到FTP服务器中,但是用户不能直接对FTP上的数据信息等进行修改操作。如果用户在该过程中对文件进行了修改操作,但并没有将修改后的文件上传到FTP服务器,那么之后申请读取该文件的用户就无法下载最新的文件。
1984年,安德鲁Tridgwell曾遇到这样的问题,他用三台个人电脑都运行DOS系统,通过电脑计算机DEC的Unix数字系统以及Sun公司的Unix系统进行试验。当时,安德鲁Tridgwell写了一个程序,以检测通信协议在DEC的Unix系统下计算机处理哪些信息,在信息传输过程中,对程序中的相关参数进行更改,便可读取来自不同计算机的信息文件等内容,进而实现了计算之间的信息数据的互通。通过这种方式他们发现了一种可以进行操作系统之间信息通信的协议,并在此协议的基础上进行改进,将改进后的协议命名为SMB协议,该协议的文件传输系统可以实现不同操作系统间文件和信息的共享。在这之后,安德鲁Tridgwell开始应用SMB服务器作为软件的注册商标。这是SMB的由来。为了能够在不同的Windows主机设备之间实现共享文件数据的目的,便出现了更高版本的SMB协议。但最常见的(在Windows98,WindowsNT中,Windows2000和XP)是NTLM0.12版本。SMB协议可以实现相邻网络中间的计算机中文件的共享功能,该协议包含两部分分别是服务器端和客户端,它通过网络中的TCP、NetBEUI等通信协议建立会话连接,然后用户可以通过该协议的客户端发起文件共享请求,并通过服务器接收到的请求将文件发送给用户来实现文件的共享。
SMB1.0协议由于在文件共享传输过程中存在的传输效率低以及传输空间小等缺陷被人们所摒弃。为了更好的实现网络中文件的共享过程,在SMB1.0的基础上开发了新的网络文件传输协议,并将其命名为SMB2.0。该协议在实现了文件共享传输的基本功能的基础上对文件传输的效率、文件缓存的空间以及文件并发传输等问题进行改进,使得在局域网或更高配置的网络环境下,文件传输过程的速度和效率等得到了很大的提升。并且,由于对于SMB研究领域已经出现了可以对该文件共享过程进行信息截取等恶意攻击方法,故而在SMB版本更新的过程中加入了对文件传输过程的安全性保障机制。在对SMB协议的研究过程中,很多文献均选择对文件传输效率等问题进行改进,但是对该协议的本质内容并没有做改变,其主要原因是SMB协议自身的复杂性和其对操作系统的依赖性。但是,正是由于SMB依赖于操作系统等底层的架构,所以对于文件的传输等过程的控制和性能提升等操作可以通过它所依赖的底层系统来进行修改,进而达到对文件传输过程的控制和优化。 [1]
后来微软对这个发展进行了重大更改,这个更改后的版本也是最常见的版本。微软将SMB协议与它和3Com一起发展的网络管理程序结合在一起,并在Windows for Workgroups和后来的Windows版本中不断加入新的功能。
SMB一开始的设计是在NetBIOS协议上运行的(而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上),Windows 2000引入了SMB直接在TCP/IP上运行的功能。在这里我们必须区分SMB协议和运行在这个协议上的SMB业务,以及NetBIOS和使用SMB作为认证隧道的DCE/RPC业务。此外我们还要区分主要(但不仅仅)直接使用NetBIOS数据报的“网络邻居”协议。
1996年,Sun推出WebNFS的同时,微软提出将SMB改称为Common Internet File System。此外微软还加入了许多新的功能,比如符号链接、硬链接、提高文件的大小。微软还试图支持直接联系,不依靠NetBIOS,不过这个试图依然处于尝试阶段,并需要继续完善。微软向互联网工程工作小组提出了部分定义作为互联网草案。不过这些提案均已过期。
由于SMB协议对于与占主要地位的Microsoft Windows平台通讯时的重要性,而该平台使用的SMB协议与初始的版本相比有巨大的改变,因此Samba项目就是被创立来逆向工程来提供一个与SMB软件兼容的自由软件,使得非微软操作系统也能够使用它。
服务器信息块(SMB)是一个网络文件共享协议,它允许应用程序和终端用户从远端的文件服务器访问文件资源。微软最初将SMB定位为Windows Server 2008和Vista系统中通用互联网文件系统(CIFS)的后续产品。最新版本的SMB 3.0在Windows Server 2012操作系统中出现,并且与Windows 8客户端共同工作。
SMB 3.0极大的提升了性能、可靠性和安全性。具体来说,当它与Windows Storage Spaces(Windows Server 2012的一个功能,将普通的硬盘虚拟化为高性能、高可用性的存储)结合时,SMB 3.0可以使用廉价的直连存储(DAS)、JBOD或RBOD,创建一个特定的NAS设备(或SAN存储阵列)。IT组织可以因此在不购买昂贵的SAN存储的情况下得到企业级存储的特性,而且管理也变得更加简单。此外,SMB 3.0支持一些以前只在块存储环境下才可以使用的应用程序,如SQL Server。
SMB 也是由软件定义数据中心 (SDDC) 解决方案(如存储空间直通、存储副本和其他)使用的结构协议。SMB版本3.0已引入到Windows Server 2012中,并在后续版本中不断得到改进,包括:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2。 [2]
SMB一种客户机/服务器、请求/响应协议。通过SMB协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过SMB协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。
在TCP/IP环境下,客户机通过NetBIOS over TCP/IP(或NetBEUI/TCP或SPX/IPX)连接服务器。一旦连接成功,客户机可发送SMB命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。
从Windows 95开始,Microsoft Windows 操作系统(operating system)都包括了客户机和服务器SMB协议支持。Microsoft 为 Internet提供了SMB的开源版本,即通用 Internet 文件系统 (CIFS)。与现有 Internet 应用程序如文件传输协议(FTP)相比,CIFS灵活性更大。对于UNIX系统,可使用一种称为Samba的共享软件。