Whether or not they know it, millions of people all over the world use SMB protocols each day. They send files, access directories, and utilize network resources that improve the way we communicate and manage data. The ability to access shared networks, including routers, printers, and even IP networks, is important both at home and in the office.
As one of the longest-standing and most impactful network protocols ever created, this protocol played an integral part since its inception in 1985 in furthering inter-process communications. Learning the basics of how it operates can provide valuable insight into network communications, data sharing, and leveraging encryption to protect your information.
How Does SMB Work and Where is it Used?
SMB is an abbreviation for “Server Message Block.” It is a network protocol utilized by Windows-based computers. It grants systems the ability to share files within the same network. With Server Message Block, computers connected to a network can easily access files from other computers on the same network. It’s a robust network protocol that also allows computers and devices to access local printers and serial ports.
Developed initially for use Windows, it is currently utilized on other platforms including Mac OS X and Unix. This is made possible by integrating software called Samba. Samba allows computers running on different operating systems to locally share printers, files, folders, and more. Some basic Server Message Block functionality is:
- Searching for files
- Opening and closing files
- Creating and deleting files
- Reading and writing files
- Managing and accessing directories
- Queueing files in a print spool
Basically, SMB is both a client-server protocol and request-response protocol. It operates as commands to allow local users the ability to access, open, read, write, and share files on a communal network.
Understanding the Protocol, Authentication, and Security
Fundamentally, the Server Message Block protocol establishes a connection with a local server and the client by sending request-response messages between the two. For example, it allows all of the employees on your team to access the same printer from their individual computers.
To do this, a user sends a request to print a file to the computer where the printer is connected. The client, where the document is kept, and the server, where the printer is installed. The server then uses the protocol to queue the file, inform the user it’s being spooled, and print it. It also sends error messages like “low ink” or “out of paper” from the printer to the user.
One of the most important aspects of the connection is ensuring that security measures are put in place by the system administrator to retain safe communication. SMB authentication introduces an added layer of security for all users on a shared network. In most instances, users input a username and password to grant others access to the server. The system administrator has the ability to add users, block them, and monitor who is able to access the network.
Levels of Security
To preserve the safety of all users on a shared network, the SMB model defines two levels of security.
- Share level: Protection for server users where each share has the option for a secure password that can be used to access shared files. This was the initial security model for Server Message Block network protocols.
- User level: Protection for individual files based on the access rights dictated by the client. This requires each user to log in to the server and wait for authentication by the server. The protocol gives the client a UID required on all subsequent uses.
Learning how to leverage and utilize SMB for shared networks introduces a direct way for users on any operating system to access important files, manage them, and send them between computers securely.
Where is SMB Implemented?
In addition to implementation in Windows OS since 1985, this protocol has been utilized in a variety of software projects. These enable secure communication between computers, independent of their operating system. Some of the most popular uses of SMB include:
- Samba: Developed in 1991, Samba is the most well-known example of an SMB implementation outside of Windows OS. Unix/Linux systems use it today.
- Netsmb: Originally released for OS FreeBSD 4.4 and now available for NetBSD and macOS. Netsmb is the implementation of a Server Message Block client and server in the kernel of BSD operating systems.
- YNQ: YNQ (previously known as NQ) is an SMB library created by Visuality Systems Ltd. in 1998. YNQ allows connection between Windows-based devices.
- FreeNAS: Free, open-source software based on FreeBSD and the OpenZFS file system. This is for users who want to run their own NAS server that supports the SMB protocol.
- ConnectedNAS: Developed by Connected Way, ConnectedNAS acts like an SMB server and client for various Android devices. This allows paid app users to share data between a mobile device and any other SMB devices.
For those looking to invest more heavily in utilizing SMB protocols, server implementations are available from many sources, including:
- Microsoft Windows for Workgroups 3.x
- TotalNET Advanced Server from Syntax
- Microsoft Windows 95
- LAN Server for OS/2 from IBM
- Microsoft Windows NT
In addition to server usage, there are an array of variants that relate to protocol dialect and how that affects the security and performance of a system.
Variants on Dialects
On a fundamental level, protocol dialects are the variations of an existing implementation in an open-source network. Developers have created many dialects since 1984, including:
- SMB 1.0: Created in 1984 by IBM to share files in DOS, SMB 1.0 had opportunistic locking, known as OpLock, as a way to reduce network traffic.
- CIFS: CIFS was created in 1996 as an SMB dialect for Windows 95. This dialect supported larger files and direct transport over TCP/IP.
- SMB 2.0: Created in 2006 as part of the release for Windows Vista and Windows Server 2008, SMB 2.0 improved overall performance. In addition, it created scalability and introduced WAN acceleration support.
- SMB 2.1: Created in 2010 and launched with Windows Server 2008 R2 and Windows 7, SMB 2.1 replaced OpLock with the client oplock leasing model. That enhanced caching and improved energy efficiency as well as performance.
- SMB 3.0: Created in 2012 and included in Windows 8 and Windows Server 2012, SMB 3.0 introduced upgrades which improved availability, management, and security. In fact, it also enhanced SMB Multichannel, SMB Direct, SMB Encryption, as well as other improvements.
- SMB 3.02: Created in 2014 and used in the release of Windows 8.1 and Windows Server 2012 R2, SMB 3.02 introduced disabling functionality for CIFS/SMB 1.0.
- SMB 3.1.1: Created in 2015 and launched with Windows 10 and Windows Server 2016, SMB 3.1.1. introduced support for advanced encryption requests as well as other improvements.
What It All Means
Since the initial inception of SMB, developers have created many protocol variants to manage more complex environments and requests. Of course, things have come a long way since the first protocol variant, referred to as the Core Protocol or PC Network Program 1.0. This protocol handles a limited set of operations, including locking byte ranges, setting file attributes, searching directories, accessing files, and more.
Development of SMB network protocols has improved year after year, helping users on a variety of different systems to safely share and manage important files and information.