Samba is a system that enables sharing files and other resources across networked machines. A simple thing as sharing files across machines needs some very complicated engineering indeed. The following article discusses the elements that complicate the sharing of files across machines and how they are addressed. In doing so we present a brief history of samba.
The first obstacle in the path is solving the problem of communicating among machines. When the PC was first developed and TCP/IP was non existent or nascent, companies solved issues in communication like addressing, protocol etc differently.
IBM and Sytec co-developed a simple networking system designed for building small LANs. The system included something called NetBIOS, or Network Basic Input Output System. NetBIOS was a chunk of software that was loaded into memory to provide an interface between programs and the network hardware. It included an addressing scheme that used 16-byte names to identify workstations and network-enabled applications.
Once NetBIOS was developed, programs written for the PC used NetBIOS to communicate with machines over the network.
Next, Microsoft added features to DOS that allowed disk I/O to be redirected to the NetBIOS interface, which made disk space share-able over the LAN. The file-sharing protocol that they used eventually became known as SMB.
This file sharing protocol was standardized and was named “Common Internet File System” or CIFS.
Andrew Tridgell, wanted to serve out files from a Linux server and access it on a windows machine. Hence, he reverse engineered the smb protocol and created a server side component that would run on linux and would serve out the files using this protocol. This came to be known eventually as samba.