In einer gemischten Umgebung, der der man untereinander kommunizieren will, müssen sich alle Teilnehmer auf den kleinsten gemeinsamen Nenner einigen.
Auch wenn Linux in solch einer Umgebung mit z.B. NFS oder anderen Netzwerkdiensten aufwarten kann - Windows-Rechner können es, zumindest von Haus aus, nicht. Was aber Microsoft all seinen neueren Produkten beilegt, ist das SMB-Protokoll.
Um also in einem Windows-Netzwerk mit seinem Pinguin nicht nur mitreden zu können, sondern standesgemäß den Ton angeben zu können, ist SAMBA das Mittel der Wahl.
Andrew Tridgell, Informatikstudent am Computer Science Lab der Australia National Univerity in Canberra, versuchte 1991 eine Verbindung zwischen seinem DOS-Rechner und dem SMB-Server von DCE aufzubauen.
Er begann, die Kommunikation zwischen Client und Server zu analysieren. Er schrieb ein Analysetool, das er
sockspy.c nannte und das auch lange Zeit zu SAMBA gehörte.
Irgendwann verstand er die Kommunikation und bastelte ein einfaches Serverprogramm. Im Januar 1992 veröffentlichte
er Server 0.1
, im monatlichen Abstand folgten Server 0.5
und Server 1.0
.
Nachdem er Linux entdeckte ;-), portierte er das nach Linux, es lief auf Anhieb. Er hatte inzwischen auch die Dokumentation zu dem SMB-Protokoll erhalten und begann, das Programm weiterzuentwickeln. Dennoch blieb die Entwicklung durch Reverse-Engineering kennzeichnend für SAMBA, insbesondere, weil Microsoft das Protokoll zwar ständig weiterentwickelte, aber keine Details veröffentlichte. Mittlerweile ist der 'harte Kern' der Entwickler ca. 20 Personen groß.
Das SMB-Protokoll (Server Message Block) legt fest, wie Windows-Computer im Netzwerk kommunizieren. SMB ermöglicht den Zugriff auf Dateien, Drucker, serielle Schnittstellen und Kommunikationskanäle wie benannte Pipes und Mail-Slots. SAMBA ist eine freie SMB-Implementierung.
Der Ursprung von SMB ist gemeinsam mit NetBIOS, was ursprünglich sowohl Programmierschnittstelle als auch Transportprotokoll war und 1983 von Sytec für IBM programmiert wurde. Das Transportprotokoll nennt IBM NetBIOS Frame Protocol (NBF), was häufig auch als NetBIOS-Protokoll bezeichnet wird.
Im Laufe der Zeit zeigte sich, daß NetBIOS den Anforderungen größerer Netze nicht gerecht wurde, das NBF wurde durch das NetBIOS Extended User Protocol ersetzt.
Da es keinerlei Konfiguration erfordert (außer daß jeder Rechner einen eigenständigen NetBIOS-Namen haben muß), setzte es sich schnell in Windows-Netzwerken durch.
Später wurden Möglichkeiten geschaffen, SMB-Daten in anderen Transportprotokollen zu kapseln. Dies ermöglicht es, Netzwerkfreigaben auch über Routergrenzen hinweg zu nutzen. Die Kapselung in TCP/IP wird von MS NetBIOS over TCP/IP (NBT, NetBT) genannt.
Zentraler Punkt dieser Integration ist die Auflösung der NetBIOS-Namen in IP-Adressen. Sie erfolgt über Namens-Server für NetBIOS, den NBNS (NetBIOS Name Server), Microsoft verwendet dafür den Begriff WINS (Windows Internet Name Service).
Für diese ganze Geschichte, also der korrekten Namensauflösung, dient unter SAMBA der nmbd.
Für das Bereitstellen der Freigaben ist der smbd zuständig.