Adding more docs.
[ira/wip.git] / docs / docbook / projdoc / IntroSMB.sgml
1 <chapter id="IntroSMB">
2 <chapterinfo>
3         &author.dlechnyr;
4         <pubdate>April 13, 2003</pubdate>
5 </chapterinfo>
6
7 <title>Introduction to Samba</title>
8
9 <para>
10 Samba provides MS Windows file and print services over TCP/IP and provides compatible support for
11 all SMB/CIFS enabled clients. Samba can be used to provide seemless interoperability between unix
12 / Linux systems and MS Windows clients and servers. A global team of about 30 active programmers
13 is responsible for the development of Samba, a marvelous tool that was originally developed by
14 Andrew Tridgell. That team of developers is known as the Samba-Team.
15 </para>
16
17 <sect1>
18 <title>Background</title>
19
20 <para>
21 Once long ago, there was a buzzword referred to as DCE/RPC. This stood for Distributed Computing
22 Environment/Remote Procedure Calls and conceptually was a good idea. It was originally developed
23 by Apollo/HP as NCA 1.0 (Network Computing Architecture) and only ran over UDP.  When there was
24 a need to run it over TCP so that it would be compatible with DECnet 3.0, it was redesigned,
25 submitted to The Open Group, and officially became known as DCE/RPC. Microsoft came along and
26 decided, rather than pay $20 per seat to license this technology, to reimplement DCE/RPC
27 themselves as MSRPC. From this, the concept continued in the form of SMB (Server Message Block,
28 or the "what") using the NetBIOS (Network Basic Input/Output System, or the "how") compatibility
29 layer. You can run SMB (i.e., transport) over several different protocols; many different
30 implementations arose as a result, including NBIPX (NetBIOS over IPX, NwLnkNb, or NWNBLink) and
31 NBT (NetBIOS over TCP/IP, or NetBT). As the years passed, NBT became the most common form of
32 implementation until the advance of "Direct-Hosted TCP" -- the Microsoft marketing term for
33 eliminating NetBIOS entirely and running SMB by itself across TCP port 445 only. As of yet,
34 direct-hosted TCP has yet to catch on. And so the story goes.
35 </para>
36
37 <para>
38 Perhaps the best summary of the origins of SMB are voiced in the 1997 article titled, CIFS:
39 Common Insecurities Fail Scrutiny:
40 </para>
41
42 <para><emphasis>
43 Several megabytes of NT-security archives, random whitepapers, RFCs, the CIFS spec, the Samba
44 stuff, a few MS knowledge-base articles, strings extracted from binaries, and packet dumps have
45 been dutifully waded through during the information-gathering stages of this project, and there
46 are *still* many missing pieces... While often tedious, at least the way has been generously
47 littered with occurrences of clapping hand to forehead and muttering 'crikey, what are they
48 thinking?
49 </emphasis></para>
50
51 <sect2>
52 <title>Terminology</title>
53
54 <itemizedlist>
55
56         <listitem><para>
57         SMB: Acronym for "Server Message Block". This is a Microsoft's file and printer
58         sharing protocol.
59         </para></listitem>
60
61         <listitem><para>
62         CIFS: Acronym for the "Common Internet File System". Around 1996, Microsoft apparently
63         decided that SMB needed the word "Internet" in it, so they changed it to CIFS.  
64         </para></listitem>
65
66         <listitem><para>
67         Direct-Hosted: A method of providing file/printer sharing services over port 445/tcp
68         only, using DNS for name resolution instead of WINS.
69         </para></listitem>
70
71         <listitem><para>
72         IPC: Acronym for "Inter-process Communication". A method to communicate specific
73         information between programs.
74         </para></listitem>
75
76         <listitem><para>
77         Marshalling: - A method of serializing (i.e., sequential ordering of) variable data
78         suitable for transmission via a network connection or storing in a file. The source
79         data can be re-created using a similar process called unmarshalling.
80         </para></listitem> 
81
82         <listitem><para>
83         NetBIOS: Acronym for "Network Basic Input/Output System". This is not a protocol;
84         it is a method of communication across an existing protocol. This is a standard which
85         was originally developed for IBM by Sytek in 1983. To exaggerate the analogy a bit,
86         it can help to think of this in comparison your computer's BIOS -- it controlls the
87         essential functions of your input/output hardware -- whereas NetBIOS controlls the
88         essential functions of your input/output traffic via the network. Again, this is a bit
89         of an exaggeration but it should help that paradigm shift. What is important to realize
90         is that NetBIOS is a transport standard, not a protocol. Unfortunately, even technically
91         brilliant people tend to interchange NetBIOS with terms like NetBEUI without a second
92         thought; this will cause no end (and no doubt) of confusion.
93         </para></listitem>
94
95         <listitem><para>
96         NetBEUI: Acronym for the "NetBIOS Extended User Interface". Unlike NetBIOS, NetBEUI
97         is a protocol, not a standard. It is also not routable, so traffic on one side of a
98         router will be unable to communicate with the other side. Understanding NetBEUI is
99         not essential to deciphering SMB; however it helps to point out that it is not the
100         same as NetBIOS and to improve your score in trivia at parties. NetBEUI was originally
101         referred to by Microsoft as "NBF", or "The Windows NT NetBEUI Frame protocol driver".
102         It is not often heard from these days.
103         </para></listitem>
104
105         <listitem><para>
106         NBT: Acronym for "NetBIOS over TCP"; also known as "NetBT". Allows the continued use
107         of NetBIOS traffic proxied over TCP/IP. As a result, NetBIOS names are made equivilant
108         to IP addresses and NetBIOS name types are conceptually equivilant to TCP/IP ports.
109         This is how file and printer sharing are accomplished in Windows 95/98/ME. They 
110         traditionally rely on three ports: NetBIOS Name Service (nbname) via UDP port 137, 
111         NetBIOS Datagram Service (nbdatagram) via UDP port 138, and NetBIOS Session Service 
112         (nbsession) via TCP port 139. All name resolution is done via WINS, NetBIOS broadcasts, 
113         and DNS. NetBIOS over TCP is documented in RFC 1001 (Concepts and methods) and RFC 1002 
114         (Detailed specifications).
115         </para></listitem>
116
117         <listitem><para>
118         W2K: Acronym for Windows 2000 Professional or Server
119         </para></listitem>
120
121         <listitem><para>
122         W3K: Acronym for Windows 2003 Server
123         </para></listitem>
124
125 </itemizedlist>
126
127 </sect2>
128
129 <sect2>
130 <title>Related Projects>
131
132 <para>
133 Currently, there are two projects that are directly related to Samba: SMBFS and CIFS network
134 client file systems for Linux, both available in the Linux kernel itself.
135 </para>
136
137 <itemizedlist>
138
139         <listitem><para>
140         SMBFS (Server Message Block File System) allows you to mount SMB shares (the protocol
141         Windows 95/98/ME, Windows NT/2000/XP and OS/2 Lan Manager use to share files and printers 
142         over local networks) and access them just like any other Unix directory. This is useful 
143         if you just want to mount such filesystems without being a SMBFS server.
144         </para></listitem>
145
146         <listitem><para>
147         CIFS (Common Internet File System) is the successor to SMB, and is actively being worked
148         on in the upcoming version of the Linux kernel (2.5/2.6). The intent of this module is to 
149         provide advanced network file system functionality including support for dfs (heirarchical 
150         name space), secure per-user session establishment, safe distributed caching (oplock), 
151         optional packet signing, Unicode and other internationalization improvements, and optional 
152         Winbind (nsswitch) integration. If you enable CONFIG_CIFS in the Linux kernel, be aware 
153         that it is currently in an early development stage and may not be as stable as the existing 
154         CONFIG_SMB_FS option.
155         </para></listitem>
156
157 </itemizedlist>
158
159 <para>
160 Again, it's important to note that these are implementations for client filesystems, and have
161 nothing to do with acting as a file and print server for SMB/CIFS clients.
162 </para>
163
164 </sect2>
165
166 <sect2>
167 <title>Miscellaneous</title>
168
169 <para>
170 This chapter is Copyright © 2003 David Lechnyr. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation. A copy of the license is available at http://www.gnu.org/licenses/fdl.txt.
171 </para>
172
173 </sect2>
174 </sect1>
175 </chapter>