Hi folks,
Per today's PSI telecon question (from Kirk Ocke) about the content
of an SMB reference, see "SMB Filesharing URL Scheme":
ftp://ftp.ietf.org/internet-drafts/draft-crhertel-smb-url-03.txt
Abstract
The Server Message Block (SMB) protocol is one of the most widely
used network filesystem protocols in existence. This document
describes a format for an SMB Uniform Resource Locator. The SMB URL
can be used to indicate SMB workgroups, servers, shares, files,
inter-process communications pipes, print queues, and devices; the
objects in the SMB network filesystem space.
This is an excellent spec, with good references. That said, the
complexities of an SMB reference (and how to resolve one for NetBIOS
names to and from DNS names and IP addresses) are sufficient that
I propose we (PSI) punt and just use URL forms for SMB references.
Cheers,
- Ira McDonald
High North Inc
-------------------------------------------------------------------
[some excerpts]
Table of Contents
1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. URL Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 NBT Transport. . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 nbt_name . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 ntdomain . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 nbt_context. . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Relative SMB URLs. . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Fragments. . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4. Use of the 'port' Field. . . . . . . . . . . . . . . . . . . . 7
3. Relationship Between the URL and the UNC Formats. . . . . . . . . . 7
4. Authentication and Security Considerations. . . . . . . . . . . . . 7
5. SMB URL Semantics . . . . . . . . . . . . . . . . . . . . . . . . . 8
6. Character Encoding Issues . . . . . . . . . . . . . . . . . . . . . 9
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . 9
8. References. . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
9. Author's Address. . . . . . . . . . . . . . . . . . . . . . . . . .10
Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
1. Introduction
The Server Message Block protocol (SMB) was created in the 1980's by
Dr. Barry Feigenbaum at IBM Corporation. It was later extended by
IBM, 3Com, Intel, and Microsoft. SMB is now also known by the name
CIFS, which stands for Common Internet FileSystem.
SMB was originally carried via a proprietary network transport, the
interface to which was called NetBIOS (Network Basic Input Output
System). Two Internet RFCs ([RFC1001], [RFC1002]) were published
which describe a mechanism for implementing the NetBIOS API on top
of TCP and UDP. Those RFCs are now known collectively as Internet
Standard #19 (STD 19), and the protocol they describe is known as
NBT (for NetBIOS over TCP).
SMB is intended to be transport independent. In addition to
transport via NBT, SMB may be carried directly on TCP/IP without the
intervening NetBIOS emulation layer.
Several attempts have been made to document and even standardize the
SMB protocol ([XOPENSMB], [ONET], [SNIACIFS]), yet the further
development of SMB remains under the control of Microsoft. Despite
its proprietary nature, the workings of SMB are sufficiently well
known that SMB filesharing has been successfully implemented by
several third-party commercial vendors, and in Open Source. SMB
server and client software is available for a wide variety of
operating system platforms. The very large number of systems which
support this form of filesharing make an SMB URL scheme both
practical and desirable.
1.1. Purpose
This document does not attempt to describe the implementation of the
SMB protocol itself. The goal is to present the syntax of the SMB
URL, and explain how it maps to the features of SMB.
2. URL Definition
An SMB URL may begin with one of two protocol prefixes: "smb" or
"cifs". Both are considered to be equivalent.
The following grammar defines the syntax of the SMB URL. It is
based upon the grammar given in Appendix A of [RFC2396], as amended
by [RFC2732]. Refer to those RFCs for any token definitions missing
from the grammar below.
smb_URL = ( SMB_absURL | SMB_relURL ) [ "#" fragment ]
smb_absURL = scheme "://"
[ smb_net_path ] [ "?" [ nbt_context ] ]
smb_relURL = abs_path | rel_path
scheme = "smb" | "cifs"
smb_net_path = smb_server [ abs_path ]
smb_server = [ smb_userinfo "@" ] smb_srv_name [ ":" port ]
smb_srv_name = nbt_name | host
nbt_name = netbiosname [ "." scope_id ]
netbiosname = 1*( netbiosnamec ) *( netbiosnamec | "*" )
netbiosnamec = ( alphanum | escaped | ":" | "=" | "+" | "$" |
"," | "-" | "_" | "!" | "~" | "'" | "(" | ")" )
scope_id = domainlabel *( "." domainlabel )
smb_userinfo = [ ntdomain ";" ] username [ ":" password ]
ntdomain = *( unreserved | escaped |
"&" | "=" | "+" | "$" | "," )
username = *( unreserved | escaped |
"&" | "=" | "+" | "$" | "," )
password = *( unreserved | escaped |
"&" | "=" | "+" | "$" | "," )
nbt_context = nbt_param *(";" nbt_param )
nbt_param = ( ( "NBNS=" | "WINS=" ) host )
| ( "CALLED=" netbiosname )
| ( "CALLING=" netbiosname )
| ( ( "WORKGROUP=" | "NTDOMAIN=" ) nbt_name )
This archive was generated by hypermail 2b29 : Tue Aug 06 2002 - 15:35:25 EDT