CIFS is the short form of “Common Internet File System”. CIFS protocol was established in 1980’s and in initial years was known as Server Message Block (SMB). The intent behind introducing SMB was to run over the NetBIOS / NetBEUI API for the purpose of tuning file access (local) to network file system. The directories on the remote hosts which were made available via SMB were called “shares.” The operations of CIFS includes read, write, create, delete, and rename are all supported and the files are on a remote server.Its worth mentioning that CIFS is a stateful protocol. In order to preserve security contexts, crypto security, and semantics of file access (like caching etc), it is required to sustain this stateful behaviour.
CIFS Working –
The protocol sends packets from the client to server where each packet type is a request (Request may be to open a file, close, or read a file). On receiving the packet, the server checks to see if the request is legitimate, validates whether client has the appropriate file permissions. Once validated, it executes the request and returns a response packet towards the client. The client then analyses the response packet from server to determine whether or not the request was successful.
Related – CIFS vs NFS
CIFS Footprint –
CIFS protocol is universally used with Microsoft operating systems. Starting from Windows for Workgroups, since then all the Microsoft operating systems have been used both as a CIFS server and client. CIFS has been used for –
- Remote file operations
- Browsing (on Network Neighborhood icon)
- Authentication on NT and Windows 2000
- Remote printer services.
Microsoft has been such a successful and widely preferred protocol. This is substantiated by the fact that Unix flavours also implement a CIFS client/server via the Samba program. Apple computers too have the capability to use CIFS clients and servers.
Benefits of CIFS protocols –
- Concurrency– CIFS protocol allows multiple clients to access and update the same file simultaneously.
- Fault tolerance -. CIFS is capable to bear considerable amount of network and server failures and still bring back the lost connections and continue the process of file opening after connection reestablishment.
- Fine tuned to support slow speed links – CIFS protocol is designed to support slow-speed links like dial-up lines.
- Security – CIFS protocol is capable of supporting both anonymous file transfers and secure authenticated access to named files.
- Scalabaility – Integration of CIFS servers and OS is regulated to provide high maximum system performance which is easy to administer
Features supported by CIFS protocol include –
- File and printer access – A client can perform plethora of activities like open, read, write, modify, delete, and even close multiple files on the same server. Also, clients have ability to open the same file simultaneously.
- File and record locking – CIFS not only supports file and record locking, but also opportunistic locking of files to allow clients to cache data for superior performance.
- Safe caching, read-ahead, and write-behind – The protocol is capable of supporting caching, read-ahead, and write-behind. Infact unlocked files are also supported , unless they are not safe.
- File change notification – CIFS has the feature where applications can request to server of being notified when a file or directory is modified on the server.
- Protocol version negotiation – There are several versions of this protocol . A particular version is called a dialect. On a per connection basis, it allows dialect and related features of protocol to be negotiated.
- Extended attributes – CIFS supports sub protocols to provide direct access for extended server functionality.
- Distributed file system support – The protocol supports file system subtrees, and for the clients it looks like a single volume , however in reality span multiple volumes and servers. CIFS provides a single consistent object naming scheme which can span across an array of different servers .
- Server name resolution using DNS – It supports resolution of server names using the DNS, therefore allowing access to the files of other organizations over Internet, or hierarchical organization of servers’ names inside an organization.
- Batched requests – The protocol supports the batching wherein multiple requests are bundled into a single message, therefore minimizing round trip latencies.
- No dependence on connection-oriented or connection-less transports – The protocol does not rely on type of transport protocol for message exchange between the client and the server.
- Unicode file names – Support for both extended ASCII character set and Unicode file names.