SMB协议是在windows环境中非常常见的一中协议,在学习SMB协议的过程中经常出现SMB2,CIFS,Samba,Netbios,NTLM,kerberos等概念,如下下图1,那么SMB和这些观念之间的关系是什么呢。 在详细介绍SMB协议的细节之前,本文尝试阐述SMB协议与这些概念之间的关系,理清楚这些关系后,将有助于SMB协议的学习,同时后续专栏《计算机网络协议快速入门教程》章节将会对各种概念和协议进行详细介绍。
图1
什么是SMB
- SMB是一种协议,是Server Message Block的缩写。
- SMB最初由IBM开发设计,后续微软尔等公司对该协议进行了增强和完善。
- SMB协议设计的初衷是在局域网中(例如域环境,域环境通常是局域网环境)进行文件共享,打印机服务调用等。
- 由于微软将SMB协议的实现默认集成到了各个版本的windows系统中,使得SMB协议成为windows域环境中最为常见的基础协议。
- SMB仅仅表示的是一种协议的统称,由于SMB协议自从诞生之日开始也是处于不断地发展之中,因此SMB协议发展出出了不同的版本例如CIFS,SMB1,SMB2,SMB3等等。
什么是CIFS
- CIFS是common internet file system的缩写,是微软针对SMB协议的早期版本的实现。
- CIFS系统在早期随着微软的windows版本进行发布,主要是windowsNT以及windows95等系统。
- CIFS是针对SMB协议正式实现的一个版本,并且集成到windows之中,从而得到一定范围的应用,因此很多人认为CIFS就是SMB1的别名。如下图2所示,详细链接见这里:
图2 - 由于在后续的windows版本中,不在使用CIFS,而是改用SMB(SMB1)表示对于CIFS的扩展,因此CIFS只存在于特定几个版本的windows系统中。
什么是SMB1,SMB2,SMB3
- SMB1的实现其实是要早于CIFS的,但是由于早期SMB1不是正式的版本(CIFS是正式版本),因此早期的SMB1可以忽略。
- 在后续的windows版本中,微软在CIFS基础上继续完善SMB协议,但是并没有使用CIFS的名称,而是改用了SMB,更为准确的叫法应该是正式版本的SMB1。可以认为这个时候的SMB1是对于早起非正式SMB1以及CIFS的统一以及加强。
- 由于微软把此时的版本默认称之为SMB(而非SMB1),导致很多人认为SMB协议是windows专有,事实上SMB协议还有其他系统的实现,见后续。
- 在windowsXP等系统中,均使用SMB1 ,关于正式SMB1的详细链接见这里,如下图3:
图3 - 同样的SMB2和SMB3即微软针对SMB协议的进一步改进演进的版本,关于SMB2,SMB3的详细链接见这里。
- 除了SMB2,SMB3等大版本之外,SMB协议还有很多小的版本,每个版本针对安全性以及性能进行了改进,实现特定的功能。这些不同的版本被称之为SMB的dialects,见下图4和图5:
图4
图5
- 由于微软针对SMB开发了诸多不同的版本,每个版本可能只适用于某些windows操作系统,各个不同的SMB实现版本和windows系统的对应关系如下图6:
图6
对于CIFS主要针对windowsNT和windows95,SMB1主要针对windowsXP和 Server 2003。
什么是samba
- Samba和CIFS以及SMB1,SMB2,SMB3一样,都是SMB协议的一种实现。
- 不同的是Samba针对的是Linux,Unix以及MacOS的实现,而CIFS,SMB1等版本针对是windows系统的实现。
- 和TCP等协议一样,SMB协议本身只是定义了要实现的能力方向,但是其软件的实现会因操作系统,网络环境等出现不同的版本。
- 在Linux等系统中可以查看Samba的版本信息,如下图7:
图7
什么是NFS
- 通常来说,描述同一中事务的方式往往不止一种,针对文件共享的协议也不例外。
- NFS是Network File System的缩写,也是用来描述文件共享的协议,是有Sun公司设计开发
- 由于历史的一些原因,NFS只在Linux/Unix系统中流行。就像SMB由微软主导开发,主要在windows中流行一样
- NFS的资料介绍可以参考RFC文档,见这里。
SMB 和TCP,Netbios,NTLM等协议关系
SMB是一个承上启下的协议,向上可以承载RFC等协议,同时可以集成NTLM,Kerberos等身份认证协议,向下可以运行在NetBios以及TCP协议之上,关于这些协议之间的关系在微软的官方也有给出描述,如下图8,图9:
图8
图9
上图说明了SMB,SMB2和TCP,Netbios,CIFS,RPC等协议的关系,其中图中的SPNG是 Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) Extension的缩写,其中就包含可NTLM以及Kerberos协议,在后续专栏中会进行详细的说明。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。