一、SMB介绍
1.1、SMB说明
SMB协议上的最早文档是1985年IBM的理查德.夏普(Richard Sharpe)编写(0包含IBM PC网络SMB协议)。目前可以访问SMB文档是1987年的Microsoft / Intel文件,称为Microsoft Networks / Opennet-File共享协议。协议随后由Microsoft与他人进一步发展。在SMB0文档区域的FTP.microsoft.com它提供了许多定义SMB协议文件。
0SMB作为客户端-服务器(CS)请求响应协议【客户端向服务器发送请求,服务器接收请求0后0返0回0响应给客户端】,SMB如下图所示:
SMB的请求 - 响应0性质的唯一例外是客户端要求资源锁时(Oplocks),然而,服务器必须打破授予的资源锁(这是因为另一个客户要求使用与授予的资源锁不兼容的模式打开文件)。在这种情况下,服务器0向客户发送未请求的信息,以指示资源锁的中断。
网络上的客户端00文件系统或其它资源(打印机、邮件、命名管道、API)内容。客户计算机可能有自己的硬盘,但他们也希望访问服务器上的共享文件系统和打印机。
客户端使用TCP / IP连接到服务器(实际上是RFC1001和RFC1002文档指定TCP / IP上的NetBIOS【在线基本输入输出系统(英语:NetworkBasic Input/Output System)它提供了缩写OSI模型中的会话层服务允许在不同的计算机上运行的不同程序在局域网中连接并共享数据,包括:NetBEUI或IPX / SPX)。一旦建立了连接,客户端可以下令(SMB)发送到服务器,允许他们访问和共享,打开文件,读写文件,并通常使用文件系统执行所有类型的内容。但是,在SMB在网络上完成这些事情。
如上所述,SMB可通过各种协议运行,如下图所示:
SMB可用于TCP / IP,NetBEUI和IPX / SPX。若正在使用TCP / IP或NetBEUI,同时也用过NetBIOS API。SMB也通过DECNET协议发送。
TCP / IP上的NetBIOS似乎很多名字都提到了。Microsoft它被称为某些地方和其他人NBT(特别是在其Windows NT文档中和Windows NT注册表中)。其他人称之为。RFCNB。NetBEUI有时被Microsoft称为NBF(NetBIOS帧格式)
1.2、网上基本输入输出系统名称
如果SMB用于TCP / IP,DECNet或NetBEUI,在许多情况下,必须使用在线基本输入输出系统【NetBIOS】名称。NetBIOS名字长达15个字符,通常运行NetBIOS计算机名称。Microsoft和其他实现者一起坚持NetBIOS名称是大写的,特别是当服务器呈现为名称时。
当NetBIOS名称通过线路发送时,它们将填充到15个字符,其中包含空格,并添加16个字符,指定NetBIOS名称类型。Microsoft将这些称为NetBIOS后缀。
有两种NetBIOS名称,唯一的名称和全局名称。Microsoft还定义了其他类别:Internet组,域和多宿主。
1.3、SMB协议的变体
自SMB自成立以来,许多协议变体已经开发出来处理日益复杂的环境。
事实上,协议使用变体客户端和服务器Negprot SMB协商必须是连接上发送的第一个SMB。
第一个协议体为核心协议,该协议为SMB作为PC网络程序1.0的实现。处理8个基本操作:
①连接或断开共享文件或打印机;
②打开和关闭文件;
③打开和关闭打印文件
④读写文件;
⑤创建和删除文件和目录;
⑥搜索目录;
⑦获取和设置文件属性;
⑧锁定和解锁文件字节范围;
随后的变体引入了更多的功能,包括一些变体和相关版本LAN管理者是:
SMB Protocol Variant | Protocol Name | Comments |
---|---|---|
PC NETWORK PROGRAM 1.0 | Core Protocol | The original version of SMB as defined in IBM's PC Network Program. Some versions were called PCLAN1.0 |
MICROSOFT NETWORKS 1.03 | Core Plus Protocol | Included Lock&Read and Write&Unlock SMBs with different versions of raw read and raw write SMBs |
MICROSOFT NETWORKS 3.0 | DOS LAN Manager 1.0 | The same as LANMAN1.0, but OS/2 errors must be translated to DOS errors. |
LANMAN1.0 | LAN Manager 1.0 | The full LANMAN1.0 protocol. |
DOS LM1.2X002 | LAN Manager 2.0 | The same as LM1.2X002, but errors must be translated to DOS errors. |
LM1.2X002 | LAN Manager 2.0 | The full LANMAN2.0 protocol. |
DOS LANMAN2.1 | LAN Manager 2.1 | The same as LANMAN2.1, but errors must be translated to DOS errors. |
LANMAN2.1 | LAN Manager 2.1 | The full LANMAN2.1 protocol. |
Windows for Workgroups 3.1a | LAN Manager 2.1? | Windows for Wrkgroups 1.0? |
NT LM 0.12 | NT LAN Manager 1.0? | Contains special SMBs for NT |
Samba | NT LAN Manager 1.0? | Samba's version of NT LM 0.12? |
CIFS 1.0 | NT LAN Manager 1.0 | Really NT LM 0.12 plus a bit? |
一些变体引入了新的SMB,有些简单地改变了现有的SMB或响应的格式,并且有些变体都表现出来。
1.4、SMB的安全
SMB模型定义了两个安全级别:
保护应用于服务器上的共享级别。每个共享都可以拥有密码,并且客户端只需要输入该密码以访问该共享下的所有文件。这是SMB具有的第一个安全模型,并且是核心和CorePlus协议中唯一可用的安全模型。Windows for Workgroups'vserver.exe实现共享级别安全性,默认情况下,Windows 95也是如此。
应用于每个共享中的各个文件,并基于用户访问权限。每个用户(客户端)必须登录服务器并由服务器进行身份验证。经过身份验证时,客户端获取到一个UID,该UID用于该账户下后续服务器资源的访问。自LAN管理器1.0以来,此模型已获得。
1.5、网络浏览
如果在开发式的网络中存在大量的服务器,但是用户却找不到它们,这是十分糟糕的。当然,客户端也可以在它们的环境中简单的配置它们的服务器,但是这在新引入服务器或删除旧服务器时并没有多大的帮助。
为了解决这个问题,需要先介绍了浏览:即每个服务器都可以广播有关其存在的信息,客户端侦听这些广播并建立浏览列表;在NetBEUI环境中,这是令人满意的;但在TCP / IP环境中,会出现问题这是因为TCP / IP广播通常不会在它们发起的子网外发送(尽管某些路由器可以选择性地传输到其他子网)。
微软介绍了浏览服务器和Windows Internet名称服务(WINS)以帮助克服这些问题。
1.6、CIFS:最新的化身?
微软联合其他供应商(美国DEC公司,数据通用,思科,网络设备CORP等)正在开发SMB协议的公共版本。预计CIFS 1.0将基本上是NT LM 0.12,可以更容易地使用互联网进行一些修改。
1.7、一个SMB的交换示例
客户端和服务器交换的协议元素(请求和响应)称为SMB。它们具有特定的格式,对于请求和响应非常相似。每个包括固定大小的报头部分,其次是可变大小的参数和数据部分。
在通过NBF,NetBT等连接NetBIOS级别之后,客户端已准备好从服务器请求服务。但是,客户端和服务器必须首先识别它们自身都能解析哪些协议变量。
《1》客户端向服务器发送NegProT SMB,列出其理解的协议语法。服务器响应它想要使用的协议语法的索引,或者如果没有任何可接受协议语法内容,则为0xFFFF。在核心和CorePlus协议中选择最新的NegProt响应中提供信息,以指示其功能(最大缓冲区大小,规范文件名等)。
《2》一旦建立了协议,如果需要,客户端可以继续登录服务器;他们用sesssetupx smb协议响应指示它们是否提供了有效的用户名密码对,如果是,则可以提供其他信息。响应最重要的一个方面之一是登录用户的UID。必须将此UID与该连接的所有后续SMB提交到服务器。
《3》一旦客户端登录上服务器(则无法使用在旧的协议 - 核心和CorePlus -登录),客户端就可以继续连接到树。客户端发送TCON或TCONX SMB指定他们希望连接的共享的网络名称,如果一切是合法的,则服务器响应客户端一个TID令牌用于SMB接下来该共享相关的内容使用。
客户端已连接到树,则可以使用打开的SMB打开文件,然后用读取的SMB读取它,用写入SMB写作,并用关闭的SMB关闭它。
1.8、目前可用的SMB客户端和服务器
目前有一些SMB客户端和一系列供应商提供了相对大量的服务器。
SMB客户端主要是来自微软,并包含在Workgroups 3.x,Windows 95和Windows NT的Windows中;当您使用文件管理器或Windows 95 Explorer时,体现最明显,因为它们允许您通过网络连接到服务器。但是,当您使用UNC(通用命名约定)打开文件时也会使用它们。
我所知道的其他一些SMB客户端是:
①来自Samba的Smbclient.
②Linux的SMBFS
③smblib(开发使用的SMB客户端库)
以下的许多来源都可以获得服务器实现:
②Microsoft Windows for Workgroups 3.x
③Microsoft Windows 95
④Microsoft Windows NT
⑤来自数字的Pathworks系列服务器
⑥OS / 2,SCO等的LAN Manager
⑦来自SCO的Visionfs
⑧来自 Syntax的TotalNet Advanced Server
⑨来自AT&T的UNIX的高级服务器(NCR)
⑩来自IBM的OS / 2的LAN服务器
接下来的两部分将依次讨论上述每个部分:
二、SMB涉及内容
在讨论SMB服务器之前,先讨论清楚工作组和域之间的区别。
2.1、工作组
一个工作组是很多计算机的集合,集合中的每个计算机都维护自己的安全信息,使用Windows的工作组,每个服务器都在分享级别安全性。Windows 95可以将用户身份验证传递给NT或LAN管理器服务器。
然而,工作组的点是分发安全性,而不是集中的。
2.2、域
域是集中处理安全性的计算机集合。每个域都有一个或多个域控制器。通常有一个主要域控制器和几个备份域控制器。域控制器维护与用户(客户端)相关的帐户样式信息,如帐户名称,加密密码,使用授权小时,用户所属的组等。
2.3、
Samba是Andrew Tridgell给Unix开发的一套免费可用的SMB协议软件,OpenVMS(最近移植且可能不是非常稳定的SMB服务器,并由世界各地的一群爱好者维护。Samba在很多Unix变体上运行(Linux,Solaris,Sunos,HP-UX,Ultrix,Dec OSF / 1,数字UNIX,Dynix(Sequent),IRIX(SGI),SCO开放服务器,DG-UX,UNIXware,AIX,bsdi,netbsd,nextstep,a / ux等)。
Samba实现了NT LM 0.12协议方言。Samba现在可以加入域(兼作PDC和域的成员),它可以参与浏览,可以是浏览管理员。Samba还可以处理Windows 95系统的登录请求。
Samba实现了用户级安全性,但共享内容可以是公开的,其中访问映射到分享的所有者等。
2.4、微软的Windows服务器
微软有许多用于操作系统Windows范围的SMB服务器实现。这些不是单独的产品,相反,它们是Windows操作系统的组成部分。但是,它们可以通过控制面板或命令行(DOS提示符处的NET STOP服务器)关闭它们。
从Windows 95和Windows NT SMB服务器对某些SMB序列反应的事实中可以清楚地看出,微软的每个服务器从不使用相同的代码(尽管工作组和Windows 95实现的Windows可能来自于相同的代码)。
①Windows for Workgroups 3.11为Workgroups 3.0a协议变体实现了Windows,并实现共享级别安全性。
②Windows 95实现NT LM 0.12协议级别并实现共享和用户级安全性。
③Windows NT实现NT LM 0.12协议级别,并实现共享和用户级安全性。
2.5、
微软和AT&T GIS将各种LAN管理器版本移植到UNIX操作系统。此代码构成了来自许多供应商的UNIX操作系统可用的许多SMB服务器的基础。
一些示例是:用于SCO,用于HP-UX(高级服务器/ 9000)等的LM服务器的LM / X.
此软件的最新版本似乎是UNIX 2.2版的LAN Manager,它实现了Lanman2.1协议变体。
2.6、
VisionFS是来自SCO的重写的SMB服务器。它可用于Solaris 2.x,HP-UX和SCO(SCO OpenServer和Unixware)。
2.7、
本产品来自SMB规则。它是一个完全独立的SMB服务器,可能是UNIX的第一个SMB服务器。如今,它配备了额外的模块,提供AppleShare和NetWare在一个产品中服务。
2.8、
LM / X,NCR(用于ATT GIS的)(可能与Microsoft提供帮助)将Windows NT SMB服务器代码移植到UNIX,以提供与Windows NT相同的功能。
2.9、
Pathworks是数字设备公司的产品系列的名称。它包括服务器和客户端,服务器运行:
- VAX and Alpha VMS
- VAX and MIPS ULTRIX
- DEC OSF/1 for AXP and Digital UNIX (DEC OSF/1 renamed)
- OS/2
客户端在DOS,Windows,Windows for Workgroups,Windows NT和Windows 95上运行,如下所述。
数字的客户端和服务器通过DECNET和TCP / IP实现SMB,最近,NetBEUI更新。从未发布过DeCNET规范的SMB。
数字的原始PATHWORKS服务器用于VAX / VM,并实现了COREPLUS协议(Microsoft Networks 1.03方言)。该产品经历了多个版本,并在4.2版中持久化。经过一段时间,为Ultrix进行了一个版本,称为Ultrix V1的Pathworks,其最高版本为1.3。这些产品流都在内部开发。
随后,数字使用AT&T和Microsoft LAN Manager for UNIX(LM / X)代码。这是作为OpenVMS(LAN Manager)的Pathworks V5.0和Digital UNIX(LAN Manager)的Pathworks V5.0发布。本产品实现了UNIX V2.2的LAN Manager,它识别的最高SMB方言是LANMAN2.1(和DOS LANMAN2.1)。每个产品名称结束时括号中LAN管理器的原因是产品还支持NetWare功能。
Pathworks V5能够参与基于Windows NT的域,尽管仅用作为备份域控制器或成员服务器。
最近,数字已经宣布了UNIX(高级服务器)的PATHWORKS V6.0,它基于AT&T的ASU(UNIX的高级服务器)产品。
3.0、用于OS / 2的LAN服务器
这是一个IBM产品,似乎以某种方式从Microsoft的LAN管理器代码中派生。
三、SMB客户端
3.1、一些SMB客户端
这是一些SMB客户端:
- Microsoft Clients
- Windows NT
- Windows 95
- Windows for Workgroups 3.11
- Digital's PATHWORKS clients
- Samba's smbclient
- Linux's smbfs
- SMBlib
3.2、SMB的其他资源
以下是您可以访问与SMB协议相关的其他一些网页:
- CIFS Explained by John Klevin
- Samba
- SMBlib
- SCO's VisionFS
- Syntax's TotalNET Advanced Server
- Digital's PATHWORKS products
- Microsoft's Windows NT products
- IBM's LAN Server products
- IBM's PC Integration with AIX
- Data General's Support of Advanced Server for UNIX
- smbfs LSM entry (and smbfs ftp location)
- CIFS Home page
- Network Appliance's Support for CIFS
- HP Ships NT Server Network Operating System on Enterprise-Class HP-UX Platform
- AT&T GIS announces Advanced Server for UNIX Systems
- Thursby's Dave, Macintosh Client Software for Microsoft Networking
- Solstice LM Server
- Triteal's TEDfs, an SMB server for CDE (Unix) machines.