1. Introduction

In this tutorial, we’ll learn about file-sharing protocols. Specifically, we’ll cover the differences between the NFS, SMB, and CIFS protocols.

Unlike other well-known file protocols like FTP and HTTP, the NFS, SMB, and CIFS protocols were designed for sharing and accessing files with a seamless experience, as if directories and files were local to our computer.

Distributed file systems may implement either of these protocols; therefore, we’ll look at how they work and compare their differences.

2. What Are Distributed File Systems?

File systems provide a logical framework for managing files. For example, operating systems implement file systems to organize, store and retrieve files in our local computer. Distributed file systems, on the other hand, implement the same file management concept but across multiple servers that communicate over a network.

Because distributed file systems enable remote file sharing and access, protocols such as NFS, SMB, and CIFS were created to provide these capabilities. These file-sharing protocols provide seamless access as if the user navigated on their local system without the typical request-response model. It’s worth noting that these protocols are optimized for LAN networks.

Next, we’ll learn how these protocols work before highlighting their differences.

3. NFS

NFS (Network File System) is a file-sharing protocol primarily used in Unix-like operating systems. This protocol consists of a client and an NFS server as the central repository of files and directories.

To access files using NFS, the client must initiate a request to mount the shared directories from the server. Furthermore, the NFS server configuration specifies which directories are accessible to clients with the appropriate permissions. We refer to these files as the NFS share. Once the client mounts the file system, the client can interact with the remote files.

Performing file operations will send requests to the NFS server. As a result, subsequent access to the files will retrieve the latest version. Nonetheless, NFS also provides conflict-resolution techniques such as file locking to prevent conflicts between concurrent client connections.

Finally, when the client no longer needs access to the NFS share, the client unmounts the directories and disconnects from the server automatically.

4. SMB

Unlike NFS, the SMB (Server Message Block) protocol is primarily used in Windows systems. The authentication system is user-based. That is, a client’s IP address doesn’t grant or deny access but user credentials do.

To read from or write to files using SMB, first, the client establishes a connection to the server. Then, all client requests to the server indicate the device and operation. Similar to NFS, the SMB protocol supports file locking that prevents multiple processes from corrupting files.

Also, SMB is commonly used for print-sharing capabilities. In other words, the SMB protocol allows printers to be shared as network resources. This allows the SMB server to manage print jobs and queues among multiple clients.

In SMB, there is no concept of mounting/unmounting shares; therefore, the user can close the session once it no longer needs access to the server.

5. CIFS

CIFS (Common Internet File System), is an implementation of the SMB protocol. Microsoft developed CIFS solely based on the original version of SMB, called SMB1. Consequently, later versions of SMB provide more capabilities and enhancements than the CIFS implementation.

When Microsoft released CIFS, some of the improvements included direct client-server communication bypassing NetBIOS. Also, CIFS enabled multiple connections from a single client to the same or multiple servers.

Because CIFS is no longer developed, there are various improvements in later versions of SMB that are not present in CIFS. We can find better performance, security and encryption, and compatibility among these features.

Currently, CIFS is disabled by default in modern Windows systems.

6. Differences Between NFS, SMB, and CIFS

The NFS, SMB, and CIFS protocols operate at the application layer of the network with the same purpose of resource sharing. However, their differences may determine which is most suitable for our use case. In the following table, we present some of these differences and capabilities.

Keep in mind that the following table content shows the features of the current versions of these protocols. Those are NFSv4.2, SMB3.1.1, and SMB1 for NFS, SMB, and CIFS, respectively:

NFS

SMB

CIFS

Environment

Optimized for Unix-like systems

Optimized for Windows systems

Optimized and support for older Windows systems

Cross-Platform

Supported

Supported

Supported

Authentication

Host-based Authentication and Kerberos

User-based Authentication and Kerberos

User-based Authentication

Encryption

Not enabled by default

AES enabled by default

Not supported

File Locking

Advisory and Mandatory locking handled by NLM

Opportunistic locking (oplocks)

Opportunistic locking (oplocks)

Network Resources

File sharing and Network Block Devices (NBD)

File sharing and print sharing

File sharing and print sharing

7. Conclusion

In this article, we covered three network file-sharing protocols and their differences. First, we defined Distributed File Systems, which raised the question of which protocol is more convenient for file sharing. Then, we briefly covered the NFS, SMB, and CIFS protocols before identifying their differences.

We observed that CIFS is an obsolete SMB implementation; therefore, NFS and SMB must be the best options to consider. Nonetheless, we identified the differences among these protocols in various aspects, such as authentication, network resources, encryption, and more.


» 下一篇: 理解随机快速排序