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
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
|
^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
THE GOAL, RESOURCE SHARING 1
The principal goal of all resource-sharing computer networks,
including the now international ARPA Network (the ARPANET), is to
usefully interconnect geographically distributed hardware, software,
and human resources [1]. Achieving this goal requires the design
and implementation of various levels of support software within each
constituent computer, and the specification of network-wide
"protocols" (that is, conventions regarding the format and the
relative timing of network messages) governing their interaction.
This paper outlines an alternative to the approach that ARPANET
system builders have been taking since work in this area began in
1970, and suggests a strategy for modeling distributed systems
within any large computer network. 1a
The first section of this paper describes the prevailing ARPANET
protocol strategy, which involves specifying a family of
application-dependent protocols with a network-wide inter-process
communication facility as their common foundation. In the second
section, the application-independent command/response discipline
that characterizes this protocol family is identified and its
isolation as a separate protocol proposed. Such isolation would
reduce the work of the applications programmer by allowing the
software that implements the protocol to be factored out of each
applications program and supplied as a single,
installation-maintained module. The final section of this paper
proposes an extensible model for this class of network interaction
that in itself would even further encourage the use of network
resources. 1b
-1-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
The Current Software Approach to Resource Sharing
THE CURRENT SOFTWARE APPROACH TO RESOURCE SHARING 2
Function-Oriented Protocols 2a
The current ARPANET software approach to facilitating resource
sharing has been detailed elsewhere in the literature [2, 3, 4].
Briefly, it involves defining a Host-Host Protocol by which the
operating systems of the various "host" computers cooperate to
support a network-wide inter-process communication (IPC) facility,
and then various function-oriented protocols by which processes
deliver and receive specific services via IPC. Each
function-oriented protocol regulates the dialog between a resident
"server process" providing the service, and a "user process" seeking
the service on behalf of a user (the terms "user" and "user process"
will be used consistently throughout this paper to distinguish the
human user from the computer process acting on his behalf). 2a1
The current Host-Host Protocol has been in service since 1970.
Since its initial design and implementation, a variety of
deficiencies have been recognized and several alternative protocols
suggested [5, 6]. Although improvements at this level would surely
have a positive effect upon Network resource sharing, the present
paper simply assumes the existence of some form of IPC and focuses
attention upon higher level protocol design issues. 2a2
Each of the function-oriented protocols mentioned in this paper
constitutes the official ARPANET protocol for its respective
application domain and is therefore implemented at nearly all of the
75 host installations that now comprise the Network. It is
primarily upon this widely implemented protocol family (and the
philosophy it represents) that the present paper focuses. Needless
to say, other important resource sharing tools have also been
constructed within the ARPANET. The Resource Sharing Executive
(RSEXEC), designed and implemented by Bolt, Beranek and Newman, Inc
[7], provides an excellent example of such work. 2a3
Experience with and Limitations of Hands-On Resource Sharing 2b
The oldest and still by far the most heavily used
function-oriented protocol is the Telecommunications Network
protocol (TELNET) [8], which effectively attaches a terminal on one
computer to an interactive time-sharing system on another, and
allows a user to interact with the remote system via the terminal as
if he were one of its local users. 2b1
-2-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
The Current Software Approach to Resource Sharing
As depicted in Figure 1, TELNET specifies the means by which a
user process monitoring the user's terminal is interconnected, via
an IPC communication channel, with a server process with access to
the target time-sharing system. TELNET also legislates a standard
character set in which the user's commands and the system's
responses are to be represented in transmission between machines.
The syntax and semantics of these interchanges, however, vary from
one system to another and are unregulated by the protocol; the user
and server processes simply shuttle characters between the human
user and the target system. 2b2
Although the hands-on use of remote resources that TELNET makes
possible is a natural and highly visible form of resource sharing,
several limitations severely reduce its long-term utility: 2b3
(1) It forces upon the user all of the trappings of the
resource's own system.
To exploit a remote resource, the user must leave the
familiar working environment provided by his local system and
enter an alien one with its own peculiar system structure
(login, logout, and subsystem entry and exit procedures) and
command language discipline (command recognition and
completion conventions, editing characters, and so on).
Hands-on resource sharing thus fails to provide the user with
the kind of organized and consistent workshop he requires to
work effectively [9].
(2) It provides no basis for bootstrapping new composite
resources from existing ones.
Because the network access discipline imposed by each
resource is a human-engineered command language, rather than a
machine-oriented communication protocol, it is virtually
impossible for one resource to programatically draw upon the
services of others. Doing so would require that the program
deal successfully with complicated echoing and feedback
characteristics; unstructured, even unsolicited system
responses; and so forth. Hands-on resource sharing thus does
nothing to provide an environment in which existing resources
can be used as building blocks to construct new, more powerful
ones.
These inherent limitations of hands-on resource sharing are
removed by a protocol that simplifies and standardizes the dialog
between user and server processes. Given such a protocol, the
-3-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
The Current Software Approach to Resource Sharing
various remote resources upon which a user might wish to draw can
indeed be made to appear as a single, coherent workshop by
interposing between him and them a command language interpreter that
transforms his commands into the appropriate protocol utterances
[10, 11]. The construction of composite resources also becomes
feasible, since each resource is accessible by means of a
machine-oriented protocol and can thus be readily employed by other
processes within the network. 2b4
Standardizing the Inter-Machine Dialog in Specific Application Areas 2c
After the TELNET protocol had been designed and widely
implemented within the ARPANET, work began on a family of
function-oriented protocols designed for use by programs, rather
than human users. Each such protocol standardizes the inter-machine
dialog in a particular application area. While TELNET dictates only
the manner in which user and server processes are interconnected via
the IPC facility, and the character set in which the two processes
communicate once connected, each member of this family specifies in
addition the syntax and semantics of the commands and responses that
comprise their dialog. 2c1
Protocols within this family necessarily differ in substance,
each specifying its own application-specific command set. The File
Transfer Protocol (FTP) [12], for example, specifies commands for
manipulating files, and the Remote Job Entry Protocol (RJE) [13]
specifies commands for manipulating batch jobs. Protocols
throughout the family are, however, similar in form, each successive
family member having simply inherited the physical features of its
predecessors. Thus FTP and RJE enforce the same conventions for
formulating commands and responses. 2c2
This common command/response discipline requires that commands
and responses have the following respective formats: 2c3
command-name <SP> parameter <CRLF>
response-number <SP> text <CRLF>
Each command invoked by the user process is identified by NAME and
is allowed a single PARAMETER. Each response generated by the
server process contains a three-digit decimal response NUMBER (to be
interpreted by the user process) and explanatory TEXT (for
presentation, if necessary, to the user). Response numbers are
assigned in such a way that, for example, positive and negative
acknowledgments can be easily distinguished by the user process. 2c4
-4-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
The Current Software Approach to Resource Sharing
FTP contains, among others, the following commands (each listed
with one of its possible responses) for retrieving, appending to,
replacing, and deleting files, respectively, within the server
process' file system: 2c5
Command Response
RETR <SP> filename <CRLF> 250 <SP> Beginning transfer. <CRLF>
APPE <SP> filename <CRLF> 400 <SP> Not implemented. <CRLF>
STOR <SP> filename <CRLF> 453 <SP> Directory overflow. <CRLF>
DELE <SP> filename <CRLF> 450 <SP> File not found. <CRLF>
The first three commands serve only to initiate the transfer of a
file from one machine to another. The transfer itself occurs on a
separate IPC channel and is governed by what amounts to a separate
protocol. 2c6
Since the general command format admits but a single parameter,
multiparameter operations must be implemented as sequences of
commands. Thus two commands are required to rename a file: 2c7
Command Response
RNFR <SP> oldname <CRLF> 200 <SP> Next parameter. <CRLF>
RNTO <SP> newname <CRLF> 253 <SP> File renamed. <CRLF>
-5-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
A COMMAND/RESPONSE PROTOCOL, THE BASIS FOR AN ALTERNATIVE APPROACH 3
The Importance of Factoring Out the Command/Response Discipline 3a
That FTP, RJE, and the other protocols within this family share a
common command/response discipline is a fact not formally recognized
within the protocol literature, and each new protocol document
describes it in detail, as if for the first time. Nowhere are these
conventions codified in isolation from the various contexts in which
they find use, being viewed as a necessary but relatively
unimportant facet of each function-oriented protocol. "This common
command/response discipline has thus gone unrecognized as the
important, application-independent protocol that it is." 3a1
This oversight has had two important negative effects upon the
growth of resource sharing within the ARPANET: 3a2
(1) It has allowed the command/response discipline to remain
crude.
As already noted, operations that require more than a
single parameter are consistently implemented as two or more
separate commands, each of which requires a response and thus
incurs the overhead of a full round-trip network delay.
Furthermore, there are no standards for encoding parameter
types other than character strings, nor is there provision for
returning results in a command response.
(2) It has placed upon the applications programmer the burden of
implementing the network "run-time environment (RTE)" that
enables him to access remote processes at the desired,
functional level.
Before he can address remote processes in terms like the
following:
execute function DELE with argument TEXTFILE
on machine X
the applications programmer must first construct (as he
invariably does in every program he writes) a module that
provides the desired program interface while implementing the
agreed upon command/response discipline. This run-time
environment contains the code required to properly format
outgoing commands, to interface with the IPC facility, and to
parse incoming responses. Because the system provides only
-6-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
the IPC facility as a foundation, the applications programmer
is deterred from using remote resources by the amount of
specialized knowledge and software that must first be
acquired.
If, on the other hand, the command/response discipline were
formalized as a separate protocol, its use in subsequent
function-oriented protocols could rightly be anticipated by
the systems programmer, and a single run-time environment
constructed for use throughout an installation (in the worst
case, one implementation per programming language per machine
might be required). This module could then be placed in a
library and, as depicted in Figure 2, link loaded with (or
otherwise made available to) each new applications program,
thereby greatly simplifying its use of remote resources.
Furthermore, since enhancements to it would pay dividends
to every applications program employing its services, the
run-time environment would gradually be augmented to provide
additional new services to the programmer.
The thesis of the present paper is that one of the keys to
facilitating network resource sharing lies in (1) isolating as a
separate protocol the command/response discipline common to a large
class of applications protocols; (2) making this new,
application-independent protocol flexible and efficient; and (3)
constructing at each installation a RTE that employs it to give the
applications programmer easy and high-level access to remote
resources. 3a3
Specifications for the Command/Response Protocol 3b
Having argued the value of a command/response protocol (hereafter
termed the Protocol) as the foundation for a large class of
applications protocols, there remains the task of suggesting the
form that the Protocol might take. There are eight requirements.
First, it must reproduce the capabilities of the discipline it
replaces: 3b1
(1) Permit invocation of arbitrary, named commands (or functions)
implemented by the remote process.
(2) Permit command outcomes to be reported in a way that aids
both the program invoking the commmand and the user under
whose control it may be executing.
-7-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
Second, the Protocol should remove the known deficiencies of its
predecessor, that is: 3b2
(3) Allow an arbitrary number of parameters to be supplied as
arguments to a single command.
(4) Provide representations for a variety of parameter types,
including but not limited to character strings.
(5) Permit commands to return parameters as results as well as
accept them as arguments.
And, finally, the Protocol should provide whatever additional
capabilities are required by the more complex distributed systems
whose creation the Protocol seeks to encourage. Although others may
later be identified, the three capabilities below are recognized now
to be important: 3b3
(6) Permit the server process to invoke commands in the user
process, that is, eliminate entirely the often inappropriate
user/server distinction, and allow each process to invoke
commands in the other.
In the workshop environment alluded to earlier, for
example, the user process is the command language interpreter
and the server process is any of the software tools available
to the user. While most commands are issued by the
interpreter and addressed to the tool, occasionally the tool
must invoke commands in the interpreter or in another tool. A
graphical text editor, for example, must invoke commands
within the interpreter to update the user's display screen
after an editing operation.
(7) Permit a process to accept two or more commands for
concurrrent execution.
The text editor may wish to permit the user to initiate a
long formatting operation with one command and yet continue to
issue additional, shorter commands before there is a response
to the first.
(8) Allow the process issuing a command to suppress the response
the command would otherwise elicit.
This feature would permit network traffic to be reduced in
those cases in which the process invoking the command deems a
-8-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
response unnecessary. Commands that always succeed but never
return results are obvious candidates for this kind of
treatment.
A Formulation of the Protocol That Meets These Specifications 3c
The eight requirements listed above are met by a protocol in
which the following two messages are defined: 3c1
message-type=COMMAND [tid] command-name arguments
message-type=RESPONSE tid outcome results
Here and in subsequent protocol descriptions, elements enclosed in
square brackets are optional. 3c2
The first message invokes the command whose NAME is specified
using the ARGUMENTS provided. The second is issued in eventual
response to the first and returns the OUTCOME and RESULTS of the
completed command. Whenever OUTCOME indicates that a command has
failed, the command's RESULTS are required to be an error number and
diagnostic message, the former to help the invoking program
determine what to do next, the latter for possible presentation to
the user. The protocol thus provides a framework for reporting
errors, while leaving to the applications program the tasks of
assigning error numbers and composing the text of error messages. 3c3
There are several elements of the Protocol that are absent from
the existing command/response discipline: 3c4
(1) RESULTS, in fulfillment of Requirement 5.
(2) A MESSAGE TYPE that distinguishes commands from responses,
arising from Requirement 6.
In the existing discipline, this distinction is implicit,
since user and server processes receive only responses and
commands, respectively.
(3) An optional transaction identifier TID by which a command and
its response are associated, arising from Requirements 7 and
8.
The presence of a transaction identifier in a command
implies the necessity of a response echoing the identifier;
and no two concurrently outstanding commands may bear the same
identifier.
-9-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
Requirements 3 and 4--the ability to transmit an arbitrary number
of parameters of various types with each command or response--are
most economically and effectively met by defining a small set of
primitive "data types" (for example, booleans, integers, character
strings) from which concrete parameters can be modeled, and a
"transmission format" in which such parameters can be encoded.
Appendix A suggests a set of data types suitable for a large class
of applications; Appendix B defines some possible transmission
formats. 3c5
The protocol description given above is, of course, purely
symbolic. Appendix C explores one possible encoding of the Protocol
in detail. 3c6
Summarizing the Arguments Advanced So Far 3d
The author trusts that little of what has been presented thus far
will be considered controversial by the reader. The following
principal arguments have been made: 3d1
(1) The more effective forms of resource sharing depend upon
remote resources being usefully accessible to other programs,
not just to human users.
(2) Application-dependent protocols providing such access using
the current approach leave to the applications programmer the
task of constructing the additional layer of software (above
the IPC facility provided by the system) required to make
remote resources accessible at the functional level, thus
discouraging their use.
(3) A single, resource-independent protocol providing flexible
and efficient access at the functional level to arbitrary
remote resources can be devised.
(4) This protocol would make possible the construction at each
installation of an application-independent, network run-time
environment making remote resources accessible at the
functional level and thus encouraging their use by the
applications programmer.
A protocol as simple as that suggested here has great potential
for stimulating the sharing of resources within a computer network.
First, it would reduce the cost of adapting existing resources for
network use by eliminating the need for the design, documentation,
and implementation of specialized delivery protocols. Second, it
-10-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A Command/Response Protocol, the Basis for an Alternative Approach
would encourage the use of remote resources by eliminating the need
for application-specific interface software. And finally, it would
encourage the construction of new resources built expressly for
remote access, because of the ease with which they could be offered
and used within the network software marketplace. 3d2
-11-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A High-Level Model of the Network Environment
A HIGH-LEVEL MODEL OF THE NETWORK ENVIRONMENT 4
The Importance of the Model Imposed by the Protocol 4a
The Protocol proposed above imposes upon the applications
programmer a particular model of the network environment. In a
heterogeneous computer network, nearly every protocol intended for
general implementation has this effect, since it idealizes a class
of operations that have concrete but slightly different equivalents
in each system. Thus the ARPANET's TELNET Protocol alluded to
earlier, for example, specifies a Network Virtual Terminal that
attempts to provide a best fit to the many real terminals in use
around the Network. 4a1
As now formulated, the Protocol models a remote resource as an
interactive program with a simple, rigidly specified command
language. This model follows naturally from the fact that the
function-oriented protocols from which the Protocol was extracted
were necessitated by the complexity and diversity of user-oriented
command languages. The Protocol may thus legitimately be viewed as
a vehicle for providing, as an adjunct to the sophisticated command
languages already available to users, a family of simple command
languages that can readily be employed by programs. 4a2
While the command/response model is a natural one, others are
possible. A remote resource might also be modeled as a process that
services and replies to requests it receives from other computer
processes. This request/reply model would emphasize the fact that
the Protocol is a vehicle for inter-process communication and that
no human user is directly involved. 4a3
Substituting the request/reply model for the command/response
model requires only cosmetic changes to the Protocol: 4a4
message-type=REQUEST [tid] op-code arguments
message-type=REPLY tid outcome results
In the formulation above, the terms "REQUEST", "REPLY", and
"op-code" have simply been substituted for "COMMAND", "RESPONSE",
and "command-name", respectively. 4a5
The choice of model need affect neither the content of the
Protocol nor the behavior of the processes whose dialog it governs.
Use of the word "command" in the command/response model, for
example, is not meant to imply that the remote process can be
coerced into action. Whatever model is adopted, a process has
-12-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A High-Level Model of the Network Environment
complete freedom to reject an incoming remote request that it is
incapable of or unwilling to fulfill. 4a6
But even though it has no substantive effect upon the Protocol,
the selection of a model--command/response, request/reply, and so
on--is an important task because it determines the way in which both
applications and systems programmers perceive the network
environment. If the network environment is made to appear foreign
to him, the applications programmer may be discouraged from using
it. The choice of model also constrains the kind and range of
protocol extensions that are likely to occur to the systems
programmer; one model may suggest a rich set of useful extensions,
another lead nowhere (or worse still, in the wrong direction). 4a7
In this final section of the paper, the author suggests a network
model (hereafter termed the Model) that he believes will both
encourage the use of remote resources by the applications programmer
and suggest to the systems programmer a wide variety of useful
Protocol extensions. Unlike the substance of the Protocol, however,
the Model has already proven quite controversial within the ARPANET
community. 4a8
Modeling Resources As Collections of Procedures 4b
Ideally, the goal of both the Protocol and its accompanying RTE
is to make remote resources as easy to use as local ones. Since
local resources usually take the form of resident and/or library
subroutines, the possibility of modeling remote commands as
"procedures" immediately suggests itself. The Model is further
confirmed by the similarity that exists between local procedures and
the remote commands to which the Protocol provides access. Both
carry out arbitrarily complex, named operations on behalf of the
requesting program (the caller); are governed by arguments supplied
by the caller; and return to it results that reflect the outcome of
the operation. The procedure call model thus acknowledges that, in
a network environment, programs must sometimes call subroutines in
machines other than their own. 4b1
Like the request/reply model already described, the procedure
call model requires only cosmetic changes to the Protocol: 4b2
message-type=CALL [tid] procedure-name arguments
message-type=RETURN tid outcome results
In this third formulation, the terms "CALL", "RETURN", and
"procedure-name" have been substituted for "COMMAND, "RESPONSE", and
-13-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A High-Level Model of the Network Environment
"command-name", respectively. And in this form, the Protocol might
aptly be designated a "procedure call protocol (PCP)". 4b3
"The procedure call model would elevate the task of creating
applications protocols to that of defining procedures and their
calling sequences. It would also provide the foundation for a true
distributed programming system (DPS) that encourages and facilitates
the work of the applications programmer by gracefully extending the
local programming environment, via the RTE, to embrace modules on
other machines." This integration of local and network programming
environments can even be carried as far as modifying compilers to
provide minor variants of their normal procedure-calling constructs
for addressing remote procedures (for which calls to the appropriate
RTE primitives would be dropped out). 4b4
Finally, the Model is one that can be naturally extended in a
variety of ways (for example, coroutine linkages and signals) to
further enhance the distributed programming environment. 4b5
Clarifying the Procedure Call Model 4c
Although in many ways it accurately portrays the class of network
interactions with which this paper deals, the Model suggested above
may in other respects tend to mislead the applications programmer.
The Model must therefore be clarified: 4c1
(1) Local procedure calls are cheap; remote procedure calls are
not.
Local procedure calls are often effected by means of a
single machine instruction and are therefore relatively
inexpensive. Remote procedure calls, on the other hand, would
be effected by means of a primitive provided by the local RTE
and require an exchange of messages via IPC.
Because of this cost differential, the applications
programmer must exercise discretion in his use of remote
resources, even though the mechanics of their use will have
been greatly simplified by the RTE. Like virtual memory, the
procedure call model offers great convenience, and therefore
power, in exchange for reasonable alertness to the
possibilities of abuse.
(2) Conventional programs usually have a single locus of control;
distributed programs need not.
-14-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
A High-Level Model of the Network Environment
Conventional programs are usually implemented as a single
process with exactly one locus of control. A procedure call,
therefore, traditionally implies a transfer of control from
caller to callee. Distributed systems, on the other hand, are
implemented as two or more processes, each of which is capable
of independent execution. In this new environment, a remote
procedure call need not suspend the caller, which is capable
of continuing execution in parallel with the called procedure.
The RTE can therefore be expected to provide, for
convenience, two modes of remote procedure invocation: a
blocking mode that suspends the caller until the procedure
returns; and a non-blocking mode that releases the caller as
soon as the CALL message has been sent or queued. Most
conventional operating systems already provide such a mode
choice for I/O operations. For non-blocking calls, the RTE
must also, of course, either arrange to asynchronously notify
the program when the call is complete, or provide an
additional primitive by which the applications program can
periodically test for that condition.
Finally, the applications programmer must recognize that by no
means all useful forms of network communication are effectively
modeled as procedure calls. The lower level IPC facility that
remains directly accessible to him must therefore be employed in
those applications for which the procedure call model is
inappropriate and RTE-provided primitives simply will not do. 4c2
-15-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Some Expectations
SOME EXPECTATIONS 5
Both the Procedure Call Protocol and its associated Run-Time
Environment have great potential for facilitating the work of the
network programmer; only a small percentage of that potential has
been discussed in the present paper. Upon the foundation provided
by PCP can be erected higher level application-independent protocol
layers that further enhance the distributed programming environment
by providing even more powerful capabilities (see Appendix D). 5a
As the importance of the RTE becomes fully evident, additional
tasks will gradually be assigned to it, including perhaps those of: 5b
(1) Converting parameters between the format employed internally
by the applications program, and that imposed by the
Protocol. 5b1
(2) Automatically selecting the most appropriate inter-process
transmission format on the basis of the two machines' word
sizes. 5b2
(3) Automatically substituting for network IPC a more efficient
form of communication when both processes reside on the same
machine. 5b3
The RTE will eventually offer the programmer a wide variety of
application-independent, network-programming conveniences, and so,
by means of the Protocol, become an increasingly powerful
distributed-system-building tool. 5c
-16-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Acknowledgments
ACKNOWLEDGMENTS 6
Many individuals within both SRI's Augmentation Research Center
(ARC) and the larger ARPANET community have contributed their time
and ideas to the development of the Protocol and Model described in
this paper. The contributions of the following individuals are
expressly acknowledged: Dick Watson, Jon Postel, Charles Irby, Ken
Victor, Dave Maynard, and Larry Garlick of ARC; and Bob Thomas and
Rick Schantz of Bolt, Beranek and Newman, Inc. 6a
ARC has been working toward a high-level framework for
network-based distributed systems for a number of years now [14].
The particular Protocol and Model described here result from
research begun by ARC in July of 1974. This research included
developing the Model; designing and documenting the Protocol
required to support it [15]; and designing, documenting, and
implementing a prototype run-time environment for a particular
machine [16, 17], specifically a PDP-10 running the Tenex operating
system developed by Bolt, Beranek and Newman, Inc [18]. Three
design iterations were carried out during a 12-month period, and the
resulting specification implemented for Tenex. The Tenex RTE
provides a superset of the capabilities presented in the body of
this paper and Appendices A through C as well as those alluded to in
Appendix D. 6b
The work reported here was supported by the Advanced Research
Projects Agency of the Department of Defense, and by the Rome Air
Development Center of the Air Force. 6c
-17-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix A: Suggested Data Types
APPENDIX A: SUGGESTED DATA TYPES 7
The Protocol requires that every parameter or "data object" be
represented by one of several primitive data types defined by the
Model. The set of data types below is sufficient to conveniently
model a large class of data objects, but since the need for
additional data types (for example, floating-point numbers) will
surely arise, the set must remain open-ended. Throughout the
descriptions below, N is confined to the range [0, 2**15-1]: 7a
LIST: A list is an ordered sequence of N data objects called
"elements". A LIST may contain other LISTs as elements, and can
therefore be employed to construct arbitrarily complex composite
data objects. 7a1
CHARSTR: A character string is an ordered sequence of N ASCII
characters, and conveniently models a variety of textual
entities, from short user names to whole paragraphs of text. 7a2
BITSTR: A bit string is an ordered sequence of N bits and,
therefore, provides a means for representing arbitrary binary
data (for example, the contents of a word of memory). 7a3
INTEGER: An integer is a fixed-point number in the range
[-2**31, 2**31-1], and conveniently models various kinds of
numerical data, including time intervals, distances, and so on. 7a4
INDEX: An index is an integer in the range [1, 2**15-1]. As
its name and value range suggest, an INDEX can be used to address
a particular bit or character within a string, or element within
a list. INDEXes have other uses as well, including the modeling
of handles or identifiers for open files, created processes, and
the like. Also, because of their restricted range, INDEXes are
more compact in transmission than INTEGERs (see Appendix B). 7a5
BOOLEAN: A boolean represents a single bit of information,
and has either the value true or false. 7a6
EMPTY: An empty is a valueless place holder within a LIST or
parameter list. 7a7
-18-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix B: Suggested Transmission Formats
APPENDIX B: SUGGESTED TRANSMISSION FORMATS 8
Parameters must be encoded in a standard transmission format
before they can be sent from one process to another via the
Protocol. An effective strategy is to define several formats and
select the most appropriate one at run-time, adding to the Protocol
a mechanism for format negotiation. Format negotiation would be
another responsibility of the RTE and could thus be made completely
invisible to the applications program. 8a
Suggested below are two transmission formats. The first is a
36-bit binary format for use between 36-bit machines, the second an
8-bit binary, "universal" format for use between dissimilar
machines. Data objects are fully typed in each format to enable the
RTE to automatically decode and internalize incoming parameters
should it be desired to provide this service to the applications
program. 8b
PCPB36, For Use Between 36-Bit Machines 8c
Bits 0-13 Unused (zero) 8c1
Bits 14-17 Data type 8c2
EMPTY =1 INTEGER=4 LIST=7
BOOLEAN=2 BITSTR =5
INDEX =3 CHARSTR=6
Bits 18-20 Unused (zero) 8c3
Bits 21-35 Value or length N 8c4
EMPTY unused (zero)
BOOLEAN 14 zero-bits + 1-bit value (TRUE=1/FALSE=0)
INDEX unsigned value
INTEGER unused (zero)
BITSTR unsigned bit count N
CHARSTR unsigned character count N
LIST unsigned element count N
Bits 36- Value 8c5
EMPTY unused (nonexistent)
BOOLEAN unused (nonexistent)
INDEX unused (nonexistent)
INTEGER two's complement full-word value
BITSTR bit string + zero padding to word boundary
CHARSTR ASCII string + zero padding to word boundary
LIST element data objects
-19-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix B: Suggested Transmission Formats
PCPB8, For Use Between Dissimilar Machines 8d
Byte 0 Data type 8d1
EMPTY =1 INTEGER=4 LIST=7
BOOLEAN=2 BITSTR =5
INDEX =3 CHARSTR=6
Bytes 1- Value 8d2
EMPTY unused (nonexistent)
BOOLEAN 7 zero-bits + 1-bit value (TRUE=1/FALSE=0)
INDEX 2-byte unsigned value
INTEGER 4-byte two's complement value
BITSTR 2-byte unsigned bit count N + bit string
+ zero padding to byte boundary
CHARSTR 2-byte unsigned character count N + ASCII string
LIST 2-byte element count N + element data objects
-20-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix C: A Detailed Encoding of the Procedure Call Protocol
APPENDIX C: A DETAILED ENCODING OF THE PROCEDURE CALL PROTOCOL 9
Although the data types and transmission formats detailed in the
previous appendixes serve primarily as vehicles for representing the
arguments and results of remote procedures, they can just as readily
and effectively be employed to represent the commands and responses
by which those parameters are transmitted. 9a
Taking this approach, one might model each of the two Protocol
messages as a PCP data object, specifically a LIST whose first
element is an INDEX message type. The following concise statement
of the Protocol then results: 9b
LIST (CALL, tid, procedure, arguments)
INDEX=1 INDEX/EMPTY CHARSTR LIST 9b1
LIST (RETURN, tid, outcome, results)
INDEX=2 INDEX BOOLEAN LIST 9b2
The RESULTS of an unsuccessful procedure would be represented as
follows: 9c
LIST (error, diagnostic)
INDEX CHARSTR 9c1
-21-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix D: A Look at Some Possible Extensions to the Model
APPENDIX D: A LOOK AT SOME POSSIBLE EXTENSIONS TO THE MODEL 10
The result of the distributed-system-building strategy proposed
in the body of this paper and the preceeding appendices is depicted
in Figure D-1. At the core of each process is the inter-process
communication facility provided by the operating system, which
effects the transmission of arbitrary binary data between distant
processes. Surrounding this core are conventions regarding first
the format in which a few, primitive types of data objects are
encoded in binary for IPC, and then the formats of several composite
data objects (that is, messages) whose transmission either invokes
or acknowledges the previous invocation of a remote procedure.
Immediately above lies an open-ended protocol layer in which an
arbitrary number of enhancements to the distributed programming
environment can be implemented. Encapsulating these various
protocol layers is the installation-provided run-time environment,
which delivers DPS services to the applications program according to
machine- and possibly programming-language-dependent conventions. 10a
The Protocol proposed in the present paper recognizes only the
most fundamental aspects of remote procedure calling. It permits
the caller to identify the procedure to be called, supply the
necessary arguments, determine the outcome of the procedure, and
recover its results. In a second paper [19], the author proposes
some extensions to this simple procedure call model, and attempts to
identify other common forms of inter-process interaction whose
standardization would enhance the distributed programming
environment. Included among the topics discussed are: 10b
(1) Coroutine linkages and other forms of communication between
the caller and callee. 10b1
(2) Propagation of notices and requests up the thread of control
that results from nested procedure calls. 10b2
(3) Standard mechanisms for remotely reading or writing
system-global data objects within another program. 10b3
(4) Access controls for collections of related procedures. 10b4
(5) A standard means for creating and initializing processes,
that is, for establishing contact with and logging into a
remote machine, identifying the program to be executed, and
so forth. This facility would permit arbitrarily complex
process hierarchies to be created. 10b5
-22-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Appendix D: A Look at Some Possible Extensions to the Model
(6) A mechanism for introducing processes to one another, that
is, for superimposing more general communication paths upon
the process hierarchy. 10b6
These and other extensions can all find a place in the open-ended
protocol layer of Figure D-1. The particular extensions explored in
[19] are offered not as dogma but rather as a means of suggesting
the possibilities and stimulating further research. 10c
-23-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
References
REFERENCES 11
1. Kahn, R. E., "Resource-Sharing Computer Communications
Networks," Proceedings of the IEEE, Vol. 60, No. 11, pp.
1397-1407, November 1972. 11a
2. Crocker, S. D., Heafner, J. F., Metcalfe, R. M., Postel, J. B.,
"Function-oriented Protocols for the ARPA Computer Network,"
AFIPS Proceedings, Spring Joint Computer Conference, Vol. 40,
pp. 271-279, 1972. 11b
3. Carr, C. S., Crocker, S. D., Cerf, V. G., "Host-Host
Communication Protocol in the ARPA Network," AFIPS Proceedings,
Spring Joint Computer Conference, Vol. 36, pp. 589-597, 1970. 11c
4. Mc Kenzie, A. A., Host/Host Protocol for the ARPA Network, Bolt
Beranek and Newman Inc., Cambridge, Massachusetts, January 1972
(SRI-ARC Catalog Item 8246). 11d
5. Walden, D. C., "A System for Interprocess Communication in a
Resource Sharing Computer Network," Communications of the ACM,
Vol. 15, No. 4, pp. 221-230, April 1972. 11e
6. Cerf, V. G., Kahn, R. E., "A Protocol for Packet Network
Intercommunication," IEEE Transactions on Communications, Vol.
Com-22, No. 5, pp. 637-648, May 1974. 11f
7. Thomas, R. H., "A Resource-Sharing Executive for the ARPANET,"
AFIPS Proceedings, National Computer Conference, Vol. 42, pp.
155-163, 1973. 11g
8. TELNET Protocol Specification, Stanford Research Institute,
Menlo Park, California, August 1973 (SRI-ARC Catalog Item
18639). 11h
9. Engelbart, D. C., Watson, R. W., Norton, J. C., "The Augmented
Knowledge Workshop," AFIPS Proceedings, National Computer
Conference, Vol. 42, pp. 9-21, 1973. 11i
10. Engelbart, D. C., English, W. K., "A Research Center for
Augmenting Human Intellect," AFIPS Proceedings, Fall Joint
Computer Conference, Vol. 33, pp. 395-410, 1968. 11j
11. Irby, C. H., Dornbush, C. F., Victor, K. E., Wallace, D. C., "A
Command Meta Language for NLS," Final Report, Contract
-24-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
References
RADC-TR-75-304, SRI Project 1868, Stanford Research Institute,
Menlo Park, California, December, 1975. 11k
12. Neigus, N. J., File Transfer Protocol, ARPA Network Working
Group Request for Comments 542, Bolt Beranek and Newman Inc.,
Cambridge, Massachusetts, July 1973 (SRI-ARC Catalog Item
17759). 11l
13. Bressler, R. D., Guida, R., Mc Kenzie, A. A., Remote Job Entry
Protocol, ARPA Network Working Group Request for Comments 360,
Dynamic Modeling Group, Massachusetts Institute of Technology,
Cambridge, Massachusetts, (undated) (SRI-ARC Catalog Item
12112). 11m
14. Watson, R. W., Some Thoughts on System Design to Facilitate
Resource Sharing, ARPA Network Working Group Request for
Comments 592, Augmentation Research Center, Stanford Research
Institute, Menlo Park, California, November 20, 1973 (SRI-ARC
Catalog Item 20391). 11n
15. White, J. E., DPS-10 Version 2.5 Implementer's Guide,
Augmentation Research Center, Stanford Research Institute, Menlo
Park, California, August 15, 1975 (SRI-ARC Catalog Item 26282). 11o
16. White, J. E., DPS-10 Version 2.5 Programmer's Guide,
Augmentation Research Center, Stanford Research Institute, Menlo
Park, California, August 13, 1975 (SRI-ARC Catalog Item 26271). 11p
17. White, J. E., DPS-10 Version 2.5 Source Code, Augmentation
Research Center, Stanford Research Institute, Menlo Park,
California, August 13, 1975 (SRI-ARC Catalog Item 26267). 11q
18. Bobrow, D. G., Burchfiel, J. D., Murphy, D. L., Tomlinson, R.
S., "TENEX, a Paged Time Sharing System for the PDP-10,"
Communications of the ACM, Vol. 15, No. 3, pp. 135-143, March
1972. 11r
19. White, J. E., "Elements of a Distributed Programming System,"
Submitted for publication in the Journal of Computer Languages,
1976. 11s
-25-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
NCC 76 A High-Level Framework for Network-Based Resource Sharing
Figure List
FIGURE LIST 12
Figure 1. Interfacing a remote terminal to a local time-sharing
system via the TELNET Protocol. 12a
Figure 2. Interfacing distant applications programs via their
run-time environments. 12b
Figure D-1. Software and protocol layers comprising a process
within the distributed programming system. 12c
-26-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
-27-^L
NWG/RFC# 707 JEW 14-JAN-76 19:51 34263
A High-Level Framework for Network-Based Resource Sharing
23-DEC-75
James E. White
Augmentation Research Center
Stanford Research Institute
Menlo Park, California 94025
(415) 326-6200 x2960
This paper proposes a high-level, application-independent
protocol and software framework that would extend the local
programming environment to embrace modules in other computers
within a resource sharing computer network, and thereby
facilitate the construction of distributed systems and encourage
the sharing of resources.
The work reported here was supported by the Advanced Research
Projects Agency of the Department of Defense, and by the Rome Air
Development Center of the Air Force.
This paper has been submitted for publication in the
Proceedings of the 1976 National Computer Conference.^L
|