I’ve received quite a few questions from both new and experienced sysadmins, about networked filesystems and file sharing protocols. One question that comes up frequently is, “What is the difference between CIFS and SMB?”
There are many idiosyncrasies, and the terminology can be confusing, so I’m going to boil down the essentials in an easy-to-follow blog post.
Here we go.
SMB stands for “Server Message Block.” It’s a file sharing protocol that was invented by IBM and has been around since the mid-eighties. It was designed to allow computers to read and write files to a remote host over a local area network (LAN). The directories on the remote hosts made available via SMB are called “shares.”
CIFS stands for “Common Internet File System.” CIFS is a dialect of SMB. That is, CIFS is a particular implementation of the Server Message Block protocol, created by Microsoft.
So what’s the difference?
Most people, when they use either SMB or CIFS, are talking about the same exact thing. The two are interchangeable not only in discussion, but also in application – i.e., a client speaking CIFS can talk to a server speaking SMB and vice versa. Why? Because CIFS is a form of SMB.
Which should I use?
This day and age, you should always use the acronym SMB.
I know what you’re thinking – “but if they’re essentially the same thing, why should I always use SMB?”
1.) The CIFS implementation of SMB is rarely used these days. Under the covers, most modern storage systems no longer use CIFS, they use SMB 2 or SMB 3. In the Windows world, SMB 2 has been the standard as of Windows Vista (2006) and SMB 3 is part of Windows 8 and Windows Server 2012.
2.) CIFS has a negative connotation amongst pedants. SMB 2 and SMB 3 are massive upgrades over the CIFS dialect, and storage architects who are near and dear to file sharing protocols don’t appreciate the misnomer . It’s kind of like calling an executive assistant a secretary.
Two other things you should know about which fall within the realm of file sharing protocols: Samba and NFS.
Samba is an implementation of SMB written for UNIX by a fellow named Andrew Tridgell. Samba was designed to allow Windows clients to access UNIX directories and files via the SMB protocol, just as if they were talking to a Windows server. Samba now runs on multiple platforms and is a mainstay on most Linux distros.
NFS stands for “Networked File System.” It was developed by Sun Microsystems and serves essentially the same purpose as SMB (i.e., to access files systems over a network as if they were local), but is an entirely different protocol. This means that NFS clients can’t speak directly to SMB servers.