Client systems use the CIFS (Common Internet File System) protocol to request file and print services from server systems over a network. It is based on the Server Message Block (SMB) protocol.
Several dialects of the SMB protocol are in use by a variety of servers with differing capabilities. A CIFS client determines an acceptable dialect to use, and the capabilities of a server, when it first negotiates a session with the server.
The protocol supports the following features.
|File operations include open, close, read, write, and seek.
|File and record locking
|After a file or record is locked, non-locking applications are denied access to the file.
|Safe caching, read-ahead, and write-behind
|Allows read/write access to a file from multiple clients simultaneously.
|File change notification
|Applications can register with a server to be notified when a file or directory contents are modified.
|Protocol version negotiation
|When client and server first come into network contact, they negotiate the version (dialect) to be used. Different dialects can include new message types as well as changes to the field formats in other dialects.
|Non-file system attributes, such as the author's name, can be added to the built-in file attributes, such as creation and modification times.
|Distributed replicated virtual volumes
|The protocol supports multi-volume file system subtrees which look like to clients as if they are on a single volume. If the subtree files and directories are physically moved or replicated, the CIFS protocol uses referrals to transparently direct a client to the appropriate server.
|Server name resolution independence
|Clients may resolve server names using any name resolution mechanism. Using the name resolution server DNS, for example, permits access to file systems over the Internet.
|Multiple file requests may be grouped into a single message, in order to minimize round trip latencies, even when a later request depends on the results of an earlier one.
|Unicode file names
|Unicode strings may be exchanged. Unicode strings include file names, resource names, and user names.
The following topics describe more information about CIFS.