在 5 分钟或更短时间内解释通用 Internet 文件系统 (CIFS)

通用 Internet 文件系统(CIFS)简介

通用 Internet 文件系统 (CIFS) 是一种网络协议,它允许网络中的各种计算机访问文件、打印机和串行端口。通过 CIFS,用户可以打开、读取和编辑共享文档,这些文档会自动保存在本地计算机上。此外,用户还可以使用进程间通信服务和打印队列。

CIFS 协议起源于 20 世纪 80 年代初,由 IBM 开发。

CIFS 的运作机制

CIFS 遵循客户端-服务器模式。在这个模式中,有三个主要实体:客户端、服务器以及应用程序。

  • 客户端负责发起大部分消息协议。
  • 服务器则负责执行协议并提供服务。
  • 应用程序是指执行诸如图形用户界面、文件管理或文字处理等功能的软件。

以下是 CIFS 的工作流程:

  • 首先,在客户端和服务器之间建立一个 NetBIOS 会话,用于访问共享资源。
  • 双方会进行协商,以确定将使用的具体协议版本(方言)。
  • 客户端会向服务器提交身份验证凭据,通常是用户名和密码,以此来证明自己的身份。
  • 身份验证过程主要由活动目录处理。但 CIFS 本身并不直接参与身份验证。
  • 如果身份验证成功,服务器将返回一个唯一的标识符。
  • 服务器会检查客户端是否拥有所需的权限,并验证共享名称是否有效。如果所有信息都有效,客户端将被允许访问共享资源,例如文件和文件夹。

CIFS 协议的主要特点

传输独立性

CIFS 协议对其承载的 SMB 消息的传输协议没有特定要求。CIFS 本身是一个面向连接的协议。

文件访问

客户端或用户可以在目标服务器上打开、读取、修改和关闭多个文件。服务器的主要职责是文件共享,这意味着多个客户端可以同时在不同的设备上打开和读取同一个文件。

文件、目录和卷属性

CIFS 协议可以查询和在一定程度上设置目录、文件和卷属性。同时,CIFS 还支持访问控制列表 (ACL)。

扩展子协议

CIFS 协议支持各种子协议,这些子协议允许直接访问服务器的附加功能。

命名管道进程间通信支持

客户端可以打开、写入、读取和关闭特定服务器上的命名管道。命名管道为服务器和客户端服务之间的通信提供了一个通道。

灵活连接性

一个客户端可以连接到多个服务器。此外,一个客户端可以与单个服务器建立一个或多个连接。

功能协商支持

协议支持的功能集和方言是在每个连接的基础上协商确定的。

文件和记录锁定及安全缓存

CIFS 协议支持文件和记录锁定。同时,协议还允许机会性文件锁定,这使得客户端有机会缓存数据,以提高性能。

目录和文件更改通知

CIFS 协议允许客户端发送请求,以便在资源发生更改时接收通知,例如目录中的文件或服务器上的目录。

分布式文件系统 (DFS) 支持

DFS 在多个服务器上创建一个包含资源的全局命名空间。

多个安全上下文支持

客户端可以通过特定连接使用和创建一个或多个安全上下文。

使用 CIFS 的前提条件

CIFS 通常需要底层的面向连接的网络传输。在某些情况下,CIFS 消息可以通过无连接传输进行传输,但需要进行一些修改。

在通过面向连接的传输交换 CIFS 消息之前,必须建立连接。

对于通过此类网络交换的消息,CIFS 假设以下一种或多种资源可用:

  • 本地打印队列,用于向打印机发送打印作业以提供打印服务。
  • 本地文件系统或数据库,以文件系统的形式呈现,用于实现文件共享。在这种情况下,资源被称为对象存储。
  • 进程间通信,使用命名管道抽象,这需要 CIFS 服务器内置的合适模拟或对命名管道的文件系统支持。

服务器还应具有或提供对密码数据库的访问权限,以便进行身份验证。

密码数据库存储 NT LAN Manager (NTLM) 和 LAN Manager (LM) 密码哈希值,以支持挑战或响应身份验证。

在 Windows 上配置 CIFS

大多数用户可能不会直接使用 CIFS,因此该功能在 Windows 10 和 11 上默认是禁用的。

以下是在 Windows 上启用 CIFS 的步骤:

  • 打开控制面板,点击“程序和功能”,然后在左侧选择“启用或关闭 Windows 功能”。

  • 向下滚动,找到“SMB 1.0/CIFS 文件共享支持”,并勾选该复选框。点击“+”图标查看所有选中的选项。

以上步骤会启用 CIFS,但是您还需要配置您的网络连接,以便 CIFS 正常工作。以下是配置步骤:

  • 返回控制面板主页,点击“网络和 Internet”。

  • 点击“网络和共享中心”。在左侧,点击“更改高级共享设置”。

  • 点击“更改高级共享设置”。现在您可以启用网络发现,并开启文件和打印机共享。最后点击“保存更改”。

在文件夹上设置 CIFS

为了演示目的,我们将在磁盘 E 上创建一个名为“示例文件夹”的文件夹。

  • 右键点击“示例文件夹”,选择“属性”,然后选择“共享”选项卡。

  • 点击“共享”。

需要注意的是,列出的用户仅是当前在您 Windows 计算机上设置的用户。如果接收者想要访问已发送的文件,他们也需要在他们那边配置所有内容。

CIFS 与 SMB:区别

在比较 CIFS 和 SMB 之前,首先需要理解什么是服务器消息块 (SMB)。

服务器消息块旨在允许客户端读取、写入和编辑服务器上的文件。在这种情况下,服务器是指局域网 (LAN) 中的一台计算机。

SMB 的发展历程

  • SMB 1.0: SMB 的第一个版本,与 CIFS 等同。它是为 Windows NT 4.0 创建的,并通过 NetBIOS 接口进行通信。
  • SMB 2.0: 微软于 2006 年通过 Windows Vista 操作系统推出了此版本。它引入了更好的可扩展性、对符号链接的支持以及改进的消息签名等特性。
  • SMB 2.1: 这个版本随 Windows 7 于 2007 年推出。2.1 版本提供了改进的性能优化和新的锁定机制。
  • SMB 3.0: 这个版本与 Windows 8 一起在 2012 年发布。SMB 3.0 最初名为 SMB 2.2,后来更名。这个版本首次允许通过远程直接内存访问 (RDMA) 进行远程存储访问。
  • SMB 3.1.1: 这是目前最新的版本。SMB 3.1.1 于 2015 年为 Windows 10 创建,并在身份验证之前引入了完整性检查。这个版本还使用 Galois/Counter Mode (GCM) 进行加密。

很多人容易混淆 CIFS 和 SMB。值得注意的是,SMB 的推出早于 CIFS。

微软在 20 世纪 90 年代对 SMB 进行了改进,创建了 CIFS,这使得 CIFS 成为 SMB 的一种方言。然而,微软一直在不断改进 CIFS,目前最新的版本是 SMB 3.1.1。

以下是 CIFS 和 SMB 3.1.1 之间的一些主要区别:

SMB 3.1.1 CIFS
创建年份 微软在 1990 年代初创建,是对 SBM 的增强版本 IBM 在 20 世纪 80 年代初创建
性能 SMB 3.1.1 的创建是为了解决 CIFS 和早期 SMB 版本中的大部分挑战。提供了预身份验证检查,以保护服务器上文件的安全。 创建 CIFS 时,文件传输和安全等方面存在许多问题。
身份验证 SMB 3.1.1 使用 AES 身份验证来确保服务器上共享文件的安全。用户必须提供用户名和密码才能访问文件。 CIFS 缺少身份验证,因此文件在网络上是不受保护的。
数据存储 SMB 3.1.1 使用 32 位或 64 位数据存储字段,以支持大型文件的存储。它使用类似于 HTTP 和 FTP 协议的 IP/TCP 协议。
工作原理 一种客户端-服务器通信协议,用于共享对网络资源的访问。客户端/用户在位于同一网络上的另一计算机系统的服务器上请求文件。

CIFS 的缺点

  • 缺少身份验证: CIFS 的主要缺点之一是缺乏身份验证机制,这与后来的 SMB 版本不同。
  • 有限的文件大小处理: CIFS 可能不适合传输非常大的文件,这会导致延迟,甚至可能在传输过程中造成损坏。

结论

尽管云文件共享和访问服务日益普及,但像 CIFS 这样的传统协议仍然有一定的用武之地。CIFS 的最大优势之一是它支持通过 TCP 端口 445 进行直接连接。虽然微软现在专注于推进 SMB,但 CIFS 作为 SMB 的一种方言仍然不可忽视。

此外,您还可以了解如何在 Windows 11/10 中运行系统文件检查器。