SMB、CIFS 和 Samba 是在计算机网络中用于文件共享的相关协议和软件,很多朋友看到这几个单词会比较陌生,它们之间有什么区别和联系呢?
如果你已经是一名在“社会大学”混迹许久的上班族,那么或多或少用过 Windows 系统的“网上邻居”(WinXP时代叫法),或者叫“网络”(Win7及更高版本系统的叫法)。在“我的电脑”、“计算机”或者“此电脑”的左侧一般都能看到它,如下图。

既然 NAS 名为“网络存储器”,那么“共享访问”才是让它名副其实、最基础的系统功能,而 SMB 协议又是最常见、通用的共享协议,所以市面上现有的 NAS 产品,无论是老牌厂商的群晖、威联通、铁威马、万由、爱速特(原华芸)、华硕等,还是国内 NAS 品牌新秀的极空间、绿联、奥睿科等,又或是 UNRAID、TrueNAS、FreeNAS、OpenMediaVault 等独立的 NAS 系统开发商,都会内置支持 SMB 协议,作为产品系统里对“网络共享”功能提供最基本的支撑。
在 SMB 协议出现之前,如果需要在各个电脑之间交换数据,可能需要用到软盘或者其他介质的硬件设备进行拷贝,再在另一台电脑上读取修改。或者通过 FTP 协议传输,但是 FTP 协议无法像 SMB 一样可以直接在远程主机上修改文件,只能下载到本地修改再上传,这样就显得异常繁琐,还可能因为忘记上传导致其他人调用的数据不同步。
而SMB协议诞生之后,通过它就可以轻松访问到其他电脑(设备)上的文件,在公司内部可以方便地在各个电脑之间实现文件的共享传输、甚至是直接打开修改、保存远程电脑上的文件等操作;或者家用场景中,直接用电脑、手机等终端设备直接播放NAS上的影音文件。
下面再来说说,SMB、CIFS 和 Samba 三者之间的区别和联系。
SMB
SMB(Server Message Block)是一种用于在计算机网络中进行文件和打印机共享的协议,是 IBM 公司在80年代中期开发的一种文件共享协议,后来由微软引入 Windows 操作系统中。SMB 协议允许计算机之间共享文件、打印机和其他资源,以便用户可以在网络上访问和使用它们。SMB 协议通常运行在 TCP/IP 网络上。
CIFS
CIFS 全称是“Common Internet File System”译为“通用互联网文件系统”,是90年代中期由微软公司开发,以一种特殊方式实现的SMB协议,属于SMB协议的衍生,且当时微软曾提议将 SMB 更名为 CIFS,但时至今日无论是产品厂商还是用户都更愿意使用SMB,所以在某些 NAS 上会同时看到 SMB 和 CIFS 的名词。虽然两者在实际功能上略有不同,但是两者都是共享协议。CIFS 是 SMB 协议的一种扩展,它添加了对跨互联网的文件访问的支持。CIFS 协议运行在 TCP/IP 上,并使用 NetBIOS(Network Basic Input/Output System)或者 TCP 端口445进行通信。
Samba
由于初期 SMB 协议仅在 Windows 平台流行,后来一个名为 Samba 的软件项目被创立,用于实现在 Linux 或 UNIX 等非 Windows 系统下兼容 SMB 协议,使得非 Windows 系统也能够通过 SMB 协议在各个设备之间实现“共享访问”等功能。而现在主流的 NAS 系统均以 Linux 系统底层进行开发,所以在一些专业的 NAS 系统中,可能会看到 Samba 这个名词的身影。
总结
现如今 SMB 已经“占领”了全平台,成为了通用性最强的共享协议!常见的微软 Windows 系,开源的 Linux 系(如 Ubuntu、CentOS 等),谷歌的 Android(手机、平板、电视、投影仪等)、苹果的 macOS、iOS、iPadOS、Apple tvOS 等系统,均支持SMB协议,这就使得所有平台的设备均可以通过SMB协议进行数据交互,也就让 NAS 设备作为家庭、企业的“数据共享中心”成为了可能。
当然SMB只是诸多共享协议中的一种,虽然其得到全平台的支持成为通用性的“最强王者”,但是在某些兼容性方面,可能会有不一样的表现,所以其他平台也有各自的共享协议,例如 Linux 的 NFS 协议、macOS 的 AFP 协议等。
因此,SMB 是最初的文件共享协议,CIFS 是 SMB 协议的互联网扩展,而Samba是一个开源软件套件,用于在 Linux 和 UNIX 系统上实现 SMB/CIFS 协议,实现与 Windows 系统的互操作性。












