What is SMB/CIFS?
SMB and CIFS are generally used to refer to the protocols used by most Windows clients for "file sharing". It's what goes over the network when a Windows user asks to "Map a network drive" or otherwise connect to a server that supports Windows style file sharing. The SMB/CIFS protocols are now also used by many clients and servers other than Windows.
In Windows file sharing, the server offers a collection of "shares", and clients "map a share" or "connect to a share". On the client side, mapped shares (also known as connected trees) can be seen and manipulated with the "net use" command.
The illumos CIFS client is a pair of components: (1) a file system module,(7FS) that allows mounting a Windows-compatible share on a unix mount point, and (2) a "connection manager" (smbiod(1M)) that handles connection setup (etc.) for smbfs(7FS), smbutil(1), and other consumers. Note that the connection manager is an SMF(5) service, which must be enabled before any CIFS client features can be used. Enable the service using:
The CIFS client code was derived from the Apple smbfs implementation that shipped with Tiger, which in turn was derived from the FreeBSD smbfs implementation.
The illumos CIFS server includes a service demon, smbd(1M), that runs as the SMF(5) service, and a kernel module (smbsrv) that handles the low-level SMB file access protocol messages. There are also several Windows-compatible Remote Procedure Call (RPC) services, currently implemented as libraries that run inside the smbd process. SMB protocol messages that refer to "named pipe" endpoints are conveyed from the kernel-mode smbsrv up to the user space smbd, where they are then handled by the RPC libraries.