CIFS: The Common Internet File System Explained

The Common Internet File System (CIFS) is a protocol that provides access to files, folders and other shareable network resources like printers. This site is brought to you by Visuality Systems, the SMB protocol experts.

What is CIFS?

The Common Internet File System (CIFS) is a protocol that provides access to files, folders and other shareable network resources like printers.

What can a CIFS client do?

A CIFS client application can read, write, edit and even remove files on a remote server. CIFS clients can communicate with any servers that are configured to receive CIFS client requests.

When was CIFS introduced?

Microsoft implemented CIFS in the 1990s with the release of Windows 95. CIFS is based on the Server Message Block (SMB) protocol developed by Barry Feigenbaum at IBM in the 1980s.

CIFS transport layer

SMB was originally designed to run over NetBIOS / NetBEUI transport (typically implemented with NetBIOS Frames – NBF, NetBIOS over IPX/SPX, or NetBIOS over TCP/IP – NBT) in order to regulate local file access in a network file system.

CIFS first steps

Microsoft then merged CIFS with LAN Manager, incorporating both client and server. The client sends a request and the server responds, enabling data exchange with authenticated computers.

CIFS and network management

CIFS was initially introduced for file sharing, but it was later used for network management and other network services to support a growing need for privilege separation and scale of use.

Operating systems supporting CIFS

Various versions of CIFS have been released over time in order to adapt the protocol to various operating systems:

DOS

The original model was simply for file sharing in a NetBIOS environment. It worked by specifying directory and file names to be shared, eventually with one password per share.

Windows NT

A concept of grouping computers into domains was developed. Terms such as DC (Domain Controller), PDC (Primary Domain Controller) and Domain Membership were first introduced.

Windows 2000

This is the first operating system supporting Active Directory through modified open protocols. The concept of an active domain implies central points of authority. Several domains can exist, with fewer limits on domain size.

From SMB1 to SMB2

CIFS / SMB 1.0 was used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2. The need to:

  1. increase the scale of file sharing,
  2. boost performance to support compound requests,
  3. enhance larger reads and writes, and
  4. strengthen security and robustness by using HMAC SHA-256 (Hash-based Message Authentication Code) instead of MD5 for signature and data integrity

represented a radical change. Since Microsoft wanted to move away from the justified perception of CIFS as buggy, the updated protocol was renamed SMB2.

SMB 2.0, integrated in Windows Vista and Windows Server 2008, was much more durable than SMB1. SMB 2.1, in Windows 7 and Windows Server 2008 R2, made improvements in file leasing and added large MTU support and BranchCache.

SMB3 and higher

SMB 3.0, used with Windows 8 and Windows Server 2012, introduced SMB Multichannel, SMB Direct and transparent failover, which improved performance and scale-out. It includes more features for backup, security and management, SQL Server, PowerShell and more. It also introduced security enhancements like end-to-end encryption and a new AES-based signing algorithm.

With SMB 3.02, Microsoft introduced the option to completely disable CIFS/SMB1 support in Windows 8.1 and Windows Server 2012 R2, including the actual removal of the related binaries. Even though it is not the default configuration, Microsoft recommended disabling the older version of the protocol in scenarios where it is not needed, like Hyper-V over SMB.

SMB 3.1.1 was introduced with Windows 10 and Windows Server 2016. It supports AES-128-GCM (in addition to AES-128-CCM) for encryption and includes a SHA-512 hash for pre-authentication integrity checking. In addition, SMB 3.1.1 forces secure negotiation when connecting to clients that use SMB2 and higher.

SMB versions at a glance

Version Introduced with Key changes
CIFS / SMB 1.0 Windows 2000, XP, Server 2003 and 2003 R2 Original protocol; perceived as buggy and later disabled or removed
SMB 2.0 Windows Vista, Server 2008 Renamed protocol; much more durable, compound requests, HMAC SHA-256 signing
SMB 2.1 Windows 7, Server 2008 R2 File leasing, large MTU support, BranchCache
SMB 3.0 Windows 8, Server 2012 Multichannel, SMB Direct, transparent failover, end-to-end encryption, AES-based signing
SMB 3.02 Windows 8.1, Server 2012 R2 SMB1 can be completely disabled or its binaries removed
SMB 3.1.1 Windows 10, Server 2016 AES-128-GCM encryption, SHA-512 pre-authentication integrity, forced secure negotiation

Conclusion

If you are looking to achieve scalability, best performance, high availability and, last but not least, overall security in your CIFS / SMB assets, then you should update all of them to the latest SMB version.