What are the differences between CIFS and SAMBA? When would you use one over the other? Are there any performance differences between the two?
SAMBA was originally SMB Server - but the name had to be changed due to SMB Server being an actual product. SMB was the predecessor to CIFS. SMB "server message block" and CIFS "common internet file system" are protocols. Samba implements CIFS network protocol. This is what allows Samba to communicate with (newer) MS Windows systems. Typically you will see it referred to SMB/CIFS. However, CIFS is the extension of the SMB protocol so if someone is sharing out SMB via Samba to a legacy system still using NetBIOS it will typically connect to the Samba server via port 137, 138, 139 and CIFS is strictly port 445.
So to answer your question directly Samba provides CIFS file shares. The time when you might use SMB over CIFS is if you are providing access to Windows 2K systems or earlier or you just want to connect to port 139 instead of 445.
If you truly want to know about CIFS one of the definitive books is available free online.
If you want to get deeper into Samba this book is available online free as well.
Though there is a newer edition out but not free online that I am aware of.
If your question is meant as "what is the difference between the
cifs file system type of the mount command on Linux?" then I have an answer for you.
The file system
smbfs is an older FS, originating form the Samba project, that was heavily coupled with the Samba tools (smb.conf, smbmount, etc.). This file system has been deprecated though not yet removed for backward compatibility, although users should see warnings when using it (at least for the first mount use). There is no maintainer for the smbfs.
The file system
cifs is the newer file system in the Kernel. It has improved support (like SMB2 though still experimental) and is properly maintained. It does not rely on Samba tooling (like smb.conf).
SAMBA is an implementation of SMB (Server Message Block), which, if wikipedia is to be trusted, got its name changed to CIFS (Common Internet File System) back in 1996, so, directly answering your question, SAMBA is an implementation, CIFS is a protocol, but I guess you were asking about SMB and CIFS, which seem to be the same protocol, although I guess you can say CIFS is a newer version of SMB.