SMB协议

注:linux支持SMP协议,安装协议后可以直接与windows通信

Samba 的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMA Server Message Block)
这两个协议运行于TCP/IP通信协议之上,并且使用Windows 95的NETBEUI协议让LINUX 可以在网络邻居上被
Windows 95看到。 其中最重要的就是SMB协议(Server Message Block),这是一个用于不同计算机之间共享打印机、
串行口和通讯抽象(如命名管道、邮件插槽等)的协议。SMB协议是一个非常重要的协议,在所有的
Microsoft Windows系列操作系统中广为应用。 Samba是SMB服务器在类UNIX系统上的实现。
它是开放源代码的GPL自由软件。目前Samba可以在几乎所有的UNIX变种上运行。

一、SMB/CIFS协议的区别     

     在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们LanManager和WindowsNT服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协议在局域网系统中影响很大。
  随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Internet上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为CIFS(Common Internet FileSystem),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。

      SMB(Server Message Block)协议在NT/2000中用来作文件共享,在NT中,SMB运行于NBT(NetBIOSover TCP/IP)上,使用137,139(UDP),139(TCP)端口。在2000中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP445端口。因此在2000上应该比NT稍微变化多一些。可以在“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)。当2000使用网络共享的时候,就面临着选择139或者445端口了。下面的情况确定会话使用的端口:

1、如果客户端启用了NBT,那么连接的时候将同时访问139和445端口,如果从445端口得到回应,那么客户端将发送RST到139端口,终止这个端口的连接,接着就从445端口进行SMB的会话了;如果没有从445端口而是从139得到回应,那么就从139端口进行会话;如果没有得到任何回应,那么SMB会话失败。

2、如果客户端禁用了NBT,他就将只从445端口进行连接。当然如果服务器(开共享端)没有445端口进行SMB会话的话,那么就会访问失败了,所以禁用445端口后,对访问NT机器的共享会失败。

3、如果服务器端启用NBT,那么就同时监听UDP137、138端口和TCP139,445。如果禁用NBT,那么就只监听445端口了。所以对于2000来说,共享问题就不仅仅是139端口,445端口同样能够完成。

二、SMB包头部分:

SMB协议_第1张图片

其中SMB Header的长度为32个byte,NETBIOS Header的长度为4个byte,TCPHeader为20个byte,SMB Command Header的长度不是固定的,不同的命令有不同的长度。



你可能感兴趣的:(C/C++,linux/unix,计算机基础,计算机网络)