1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
|
Network Working Group D. Crocker
Request for Comments: 645 UCLA-NMC
NIC: 30899: JUNE 1974
Obsolets: 615 (NIC: 21531)
Network Standard Data Specification Syntax
INTRODUCTION
This document defines the basic components of a Network Standard Data
Specification (NSDS) syntax. A NSDS is intended to provide a
mechanism for specifying all the attributes of a collection of bits.
The definition of a complete NSDS syntax is expected to require an
extended effort. Therefore the initial scope of this document has
been constrained to provide only a basic syntactic environment.
In order to demonstrate a specific use for the NSDS, this document
also provides the complete syntax for specifying the PATHNAME
attributes of a collection of bits, to the level of a file. Addition
of new subparamters should not be difficult.
In this context, "pathname" referes to that information which
specifies the LOCATION of a collection of bits.
The pathname syntax is essentially the same as that proposed in
RFC 615 (NIC -- 21531,). Modifications were made in order to
allow for graceful addition of other file attributes and to
optimize use by humans and by processes.
I would like to thank Jon Postel, Jerry Popek, Vint Cerf, Jim White,
Charlie Kline, Buz Owen, Ken Pogran, Jerry Burchfiel and Tom Boynton
for their suggestions.
Crocker [Page 1]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
HUMAN AND MACHINE FACTORS
Since computers tend to prefer more highly structured envireonments
than do humans, aspects of the NSDS syntax are permitted to be
different for computers than they are for humans. Specifically:
For computers (highly-structured mode), keyword fields are fixed
length and the variable-length data subfields are prefaced by a
byte count. Additionally in highly structured mode, the possible
contents of data subfields may be more constrained than for the
semi-structured mode.
For humans (semi-structured mode), keyword subfields are variable
length and data subfields are surrounded by delimeter characters.
A keyword must be long enough to distinguish it from other
keywords. That is, partial-name specification is permitted.
STRUCTURE OF THE GENERAL SYNTACTIC ENVIRONMENT
Overview:
A NSDS is prefaced by one or two percent signs, followed by a set of
fields subject to context-free interpretation, and terminated with a
space. Pathname fields precede any other file attribute
specifications.
The BNF:
<NSDS> ::= <flag> <path> <otherstuff> <sp>
<flag> ::= % / %%
<path> ::= pathname fields, as described below.
<otherstuff> ::= fields for specifying data storage and accesss
characteristics, to be defined later.
<sp> ::= space.
Crocker [Page 2]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
Comments:
The <flag> indicates escape-tp-NSDS-syntax. One percent sign
indicates semi-structured syntax, two indicate that highly-structured
syntax is being used.
Only <flag> must be considered in relation to any host's current
syntax. It is not currently known to conflict with any host's
syntax.
Exclamation mark (!) is the only other character that seems
permissible (on the assumption that the character should be a
graphic). Its use would cause minor problems at Multics; but
more importantly as a graphic, it is too similar to the numeral
"1".
The basic (highest-level) syntax for individual <path> and
<otherstuff> fields is the same, as defined below. The remaining
lower-level syntax (including permissible keywords and data subfield
contents) for <otherstuff> fields is left for later.
BASIC UNITS OF SUBSTRUCTURE
Overview:
A semi-structured field begins with a varying-length descriptor. The
descriptor is followed by a varying-length data subfield, which is
surrounded by delimeter characters.
Highly-structured fields have fixed-length descriptors, followed by a
data byte-count, followed by the data
BNF for individual fields:
<field> ::= <machine> / <human>
<machine> ::= <stru-field> / <stru-field> <machine>
<stru-field> ::= <stru-key> <count> <data>
<stru-key> ::= 4-character field definition keyword; see
below.
<count> ::= one-byte binary count of number of bytes of
<data>.
<human> ::= <h-field> / <h-field> <human>
Crocker [Page 3]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
<h-field> ::= <h-key> <h-rest>
<h-key> ::= Variable-length field definition keyword; see
below.
<h-rest> ::= <l-delim> <data> <r-delim>
/ <l-delim> <data> <r-delim> <h-rest>
<l-delim> ::= any non-alphabetic printable character that is
not in the succeeding <data> subfield and that
is acceptable to the object site. For visual
aesthetics and to facilitate human parsing,
anything <l-delim> is a left-bracket character
(<, [, (, -), <r-delim> must be the
complementary right-bracket
character (>, ], ), |).
<r-delim> ::= either 1) the same character as <l-delim> or 2)
if the <l-delim> character is a left-bracket
character (<, [, (, -) then its complementary
right-bracket (>, ], ), |).
<data> ::= any sequence of characters acceptable to the
object site. This is the actual data subfield
with the file, directory, device (or whatever)
attribute value.
Elaboration:
Case is irrelevant to the syntax, though some sites will care about
case in <data> subfields.
They key (<stru-key> or <h-key>) indicates what part of the NSDS the
next <data> subfield refers to.
<R-delim> amd <l-delim> are used to delimit the beginning and end of
the <data> subfield.
<Fields> for pathnames ARE order dependent, but defaulted ones may be
omitted. The order is as indicated for <key>s, below. That is,
Network, Host, ... Siteparm.
Keywords are used, even though pathname attributes are ordered, to
facilitate the addition of new fields and to be consistent with
the syntax for <otherstuff> fields which are expected to be
unordered.
Crocker [Page 4]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
<Field>s or <h-rest> subfields may be repeated, as permitted by the
object site. A series of <h-rest> subfields, without any <h-key>
subfields is interpreted as a series of <h-field>s with identical
<key>s.
Also, note that since the syntax does not constrain the contents
of <data> subfields, compound names within a single <data>
subfield are allowed. The delimeter used to separate names within
a <data> subfield must be different from <l-delim>/<r-delim> and
the same as that used at the object site, since that is the only
site which will be able to interpret the <data> subfield.
The validity of any combinations of <field>s is entirely site-
dependent. For example, if a site will accept it, an NSDS with a
Host field, and nothing more, may be permissible.
The validity of <data> subfields' contents is generally site-
dependent. Some exceptions are noted below.
PATHNAME ATTRIBUTES AND VALUES
The basic syntax does not need to be altered, to create the ability
to specify pathnames. Only <key> values need to be defined.
Definitions of Pathname <key>s:
They keyword for semi-structured mode is given first, followed by
the keyword for highly-structured mode, if different. For
highly-structured mode, keywords that are less than four
characters should be padded with blanks at the right.
Semi Highly Meaning
NETWORK NET Reference to the network (e.g., ARPA)
connected to the HOST that contains or will
contain the collection of bits.
HOST Reference to host machine that contains or
will contain the collection of bits. Also see
section on "Numbers".
PERIPHERAL PERI Peripheral device being referred to.
VOLUME ID VOL The volume (e.g., specific tape reel or disk
pack) associated with the named peripheral
device.
Crocker [Page 5]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
DIRECTORY DIR Name of directory which contains a pointer to
the entity (directory or filename) specified
in the following <field>.
FILE Basic name of the file (data set).
TYPE Optional modifier to the filename. (Tenex
calls it the Extension.)
VERSION VER Optional third party to basic filename.
Usually used to distibguish updated files.
The <data> subfield will usually contain a
number.
SITEPARM SITE A parameter, such as an access specification
or account number, peculiar to the object
site. The contents of the <data> subfield
must serve to identify what Siteparm is
involved. Each site will be responsible for
defining the syntax of Siteparm <data>
subfields it will accept. Note that the
SITEPARM field allows specification of other
than pathname data (e.g., access and account
number).
Some reserved PERIPHERAL <data>s:
The alternate forms are merely for typing convenience and are not
related to the semi/highly structure modes.
DISK or DSK: Immediate, direct-access secondary
storage.
ONLINE or ONL: Whatever immediately-accessible
(measured in fractions of a second)
storage the user accesses by default;
usually disk.
TAPE or TAP: Industry-compatible magnetic tape.
TAPE7 or TP7: 7-Track industry compatible tape.
TAPE9 or TP9: 9-Track industry compatible tape.
DECTAPE or DEC: DEC Tape.
Crocker [Page 6]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
OFFLINE or OFF: Any tertiary storage; usually tape,
though "devices" like the Datacomputer
are permissible. The user should
expect to wait minutes or hours before
being able to access OFFLINE files.
LINE PRINTER or LPT: Any available line-printer.
DOCUMENT PRINTER or DOC: Upper/lower case line printer,
preferably with 8 1/2" X 11" unlined
paper.
PAPER TAPE READER or PTR: Paper tape reader.
PAPER TAPE PUNCH or PTP: Paper tape punch.
CARD PUNCH or PUN: Standard 80-column card punch.
CARD READER or RDR: Standard 80-column card reader.
OPERATOR or OPR: System Operator's console.
CONSULTANT or CON: On-line consultant.
DEFAULTS FOR PATHNAME <DATA> SUBFIELDS:
Often, the appropriate default will be the last-used value. However,
defaults will generally be context dependent. Consequently, the
following defaults are offered only as guidelines:
Network: ARPA.
Host: The host interpreting the NSDS.
Peripheral: ONLINE (DISK).
Volume id: Catalogued system space.
Directory: The user's current "working" directory, usually set
by the logon process.
Filename: None.
Type: None.
Siteparm: None.
Crocker [Page 7]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
NUMBERS
The following scheme is recommended for specifying numbers in <h-
field> data subfields:
A sequence of numberic characters, optionally followed by a
character indicating the radix. The default radix is ten. "H"
indicates hexadecimal; "O" (oh) indicates octal; "B" indicates
binary; and (gratuitously) "D" indicates decimal.
In <stru-field> data subfields, the number should be pure binary.
Therefore, reference to a host on the Arpanet would require one 8-bit
byte.
GENERAL COMMENTS
The syntax is intended to be adequate for all hosts, so any given
portion of it may be inappropriate for any given host.
A site is expected to permit specifications in a given field if
that site already has a way of accepting the same information.
Having two modes of specification (highly- and semi-structured)
may prove to be unnecessary. They are defined here merely as a
convenience for experimentation.
I believe that modifications to the syntax will be graceful
additions, rather than wholesale redesign, and thus can be deferred
for a while. Currently, any undefined attributes must be specified
in a Siteparm field.
The first version of the syntax was a mix of Tenex and Multics
conventions. That is:
(Network)[Host]Peripheral:Directory>Filename.Type;Sireparm
Through visually more attractive and generally quicker to type, it
lacks extensibility. For example, adding a version number as a
standard field would be difficult.
It is asserted (conceded) that, as long as extensibility is kept as a
design goal, no standardized [semi-structured] syntax will be as
pleasant to use as currently exists on some systems.
Crocker [Page 8]
^L
RFC 645 Network Standard Data Specification Syntax June 1974
SOME SAMPLE PATHNAMES
Pathnames in NSDS that occupy more than one line, below, do so only
because they are too long for a single line. Bracketed numbers
(e.g., <8>) indicate a single byte with the number as its decimal
value. Blanks (spaces) are indicated by <sp>.
My message file at ISI (<DCROCKER>MESSAGE.TXT;P770404):
Semi-structured
%H[ISI]D<DCROCKER>F(MESSAGE>T(TXT)S/P770404/<sp>
Highly-structured
%%HOST<1><86>DIR<sp><8>DCROCKERFILE<7>MESSAGETYPE<3>TXTSITE<7>P
770404<sp>
ARP061.LAD.DOCUMENT at UCLA-CCN. (Note the use of multiple Directory
fields):
Semi-structured
%H[65]DIR[ARP061][LAD]F[DOCUMENT]<sp>
Highly-structured
%%HOST<1><65>DIR<sp><6>ARP061DIR<sp><3>LADFILE<8>DOCUMENT<sp>
>udd>CompNet>Map>Mail at Mit-Multics. (Note that the initial NSDS
Directory <data> subfield is empty, in keeping with Multics' method
of starting at the top of its directory structure):
Semi-structured
%h(540)DI[]DI[udd][CompNet]D(Map)FIL(Mail)<sp>
Highly-structured
%%HOST<1><44>DIR<sp><0>DIR<sp><3>uddDIR<sp><7>CompNetDIR<sp><3>
MapFILE<4>Mail<sp>
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by Alan Ford 12/99]
Crocker [Page 9]
^L
|