f OF ILLINOIS LIBRARY 'AT URBANA-CHAMPAIGN

ENGINEERING

lunrvmr

The person charging this material is responsible for its returp t£> the library frgmwhich it was withdrj on or ^before the Latest D$gft(££| below.

Theft, Lla'i 4|| iri$|n| nary action and may resainrfal

II Telephone Center, 333-8400

UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN

L161— O-1096

10. ENGINEERING LI8RARV C-^y^^

w Mm

fjl (. 3 <L. UNI V: ITY OF ILLINOIS

UXBANA, ILLINOIS

w

wmammm

I

UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN

URBANA, ILLINOIS 61801

she Ubrery of ttie

CAC Document Number 230 CCTC-WAD Document Number 7511

Networking Research in Front Ending and Intelligent Terminals

OFFLOADING ARPANET PROTOCOLS TO A FRONT END

by John D. Day

Prepared for the

Command and Control Technical Center

WWMCCS ADP Directorate

Defense Communications Agency

Washington, D.C. 20305

under contract DCA100-76-C-0088

The person charging this material is re sponsible for its return to the library frorr which it was withdrawn on or before the Latest Date stamped below.

Theft, mutilation, and underlining of books are reason for disciplinary action and may result in dismissal fron the University.

Center for Advanced Computatic University of Illinois at Urbana-Ch Urbana, Illinois 61801

11982

September 30, 1977

Approved fo

r Release: _\ ^xJ*^** T*\ - A"

Peter A. Alsberg, Prin&i

pMf

L161— O-1096

Digitized by the Internet Archive

in 2012 with funding from

University of Illinois Urbana-Champaign

http://archive.org/details/networkingresearOOdayj

Table of Contents

Page

Summary 1

Background 1

Offloading the Telnet Protocol 1

Offloading the File Transfer Protocol 2

Offloading Other ARPANET Protocols 3

Introduction 4

Host-to-Front-End Protocol 5

Future Work 6

General Characteristics of Offloading 8

Two General-Purpose Process-to-Service Protocols 12

Offloading the Telnet Protocol 14

Offloading the User Telnet Application 15

Offloading the Telnet Protocol Implementation 17

Offloading the File Transfer Protocol 24

Offloading the User FTP 26

Offloading the Server FTP 35

The File-Access Process-to-Service Protocol 40

Offloading the Network RJE Protocol 43

Offloading the User RJE 43

Offloading the Server RJE 45

Offloading Teleconferencing 47

Offloading Network Graphics Protocol 48

References 57

Table of Contents (continued)

Page

Appendix 1. Program Access Process-to-Service

Protocol Specification 61

Appendix 2. File Access Process-to-Service

Protocol Specification 79

Appendix 3. ARPANET Host-Host Process-to-Service

Protocol Specification 119

Appendix 4. Network Virtual Terminal Process-to-Service

Protocol Specification 145

Appendix 5. User FTP Process-to-Service

Protocol Specification 185

Appendix 6. Server FTP Process-to-Service

Protocol Specification 221

Summary

Background

Under contract DCA100-76-C-0088, the Center For Advanced Computation of the University of Illinois at Urbana-Champaign is investigating the capabilities of network front ends. As a part of this contract, an experimental network front end (ENFE) is being developed to interface a WWMCCS H6000 to the ARPA Network and to conduct experiments with a host- to-front-end protocol (HFP) . In this project, the HFP and associated higher level process-to-service protocols are used in offloading network access and Telnet facilities from the host to the front end. The ENFE necessarily implements only one of many possible ways to offload Telnet facilities. There are also other network facilities - particularly file transfer - which one might like to offload. In this document we present a broad survey of offloading strategies for the most important ARPA Network facilities. This survey should be useful as a basis both for the future design of expanded front ends and for quantitative studies to determine optimal offloading strategies. Offloading the Telnet Protocol

The ARPANET Telnet protocol provides a standard method for interfacing terminals and terminal-oriented processes to each other. Three key ideas went into the development of the Telnet protocol:

1. the concept of a network virtual terminal (NVT) ,

2. the principle of negotiated options, and

3. a symmetrical view of terminals and processes.

A Telnet implementation must handle the translation between real terminal data representations and the NVT representation, the negotiation of options, and the opening and closing of network connections. Connection

handling can best be handled in the front end. Translation can be done in either the host or the front end. The best place to handle any particular option depends on the characteristics of the option. In this document, we discuss in detail the trade-offs involved in different degrees of offloading and provide a brief analysis of the potential for offloading each of the Telnet options. We also discuss which process- to-service protocols are needed to implement the various schemes. The symmetry of this protocol allowed us to develop a new process-to-service protocol (the network virtual terminal PSP) designed to efficiently implement an intermediate level of Telnet offloading. (The maximum offloading strategy adopted for the ENFE was implemented with two separate PSP's - one for the user side and one for the server side.) Offloading the File Transfer Protocol

The ARPANET File Transfer Protocol (FTP) consists of two major sections: a command-and-response section and a data transfer section. The File Transfer Protocol is inherently asymmetric. Commands are sent from the User FTP to the Server FTP to provide for user authentication, to specify parameters for data transfer, and to request service. We have identified two major aspects of FTP that are candidates for offloading: the data transfer process and the bookkeeping and marker handling required for restarting a transfer that has aborted. Since FTP makes use of the Telnet protocol, the Telnet functions can also be offloaded. We found that for User FTP there are eight possible offloading schemes that differ from one another in important ways.

The offloading of Server FTP presents an even more complicated problem. File systems in the host must be distinguished from file systems in the front end. For another thing, Server FTP is not the simple sequence of stages which characterizes User FTP. (An exception seems to be the data translating and reformatting functions, which we

believe should generally be assigned to the front end.) We have therefore confined ourselves to examining the individual FTP commands, classifying them as to whether they must be handled in the host or can be handled in the front end. In some cases (e.g., user authentication) a command is likely to be handled by both the front end and the host.

For offloading FTP, we have designed three new process-to- service protocols: a User FTP PSP, a Server FTP PSP, and a File Access PSP. The last provides a general facility for transferring files between host and front end. This facility should also be useful for purposes other than offloading FTP. Offloading Other ARPANET Protocols

Although our major contractual obligation was to study the offloading of FTP (and Telnet as a natural conjunct of this) , we also looked briefly at three other protocols: Remote Job Entry (RJE) , Teleconferencing, and Network Graphics.

RJE makes heavy use of FTP; thus in studying FTP we have covered the major points of interest in offloading RJE. There are a few functions, of course, specific to RJE itself; these in general can not be offloaded.

There is no ARPANET Teleconferencing Protocol as such. However, we felt that teleconferencing is a sufficiently important network service to be included in this study. Our conclusion is that teleconferencing can and should be entirely offloaded, provided that the front end has its own file system. If the file system of the host must be used, all of the teleconferencing functions should still be placed in the front end, with the File Access PSP used to read and write files when necessary.

We also find the Network Graphics Protocol highly suitable for offloading. An exact assignment of duties, however, would depend heavily on the capabilities of the graphics terminal, the host and the front end.

Introduction

Network software is a significant burden on large hosts connected to a resource sharing network. This burden might be lessened through the use of a network front end. A network front end is a mini- computer interposed between host and network. Some network software functions could be "offloaded" to the network front end. This study explores what network software functions could be offloaded to a network front end. The Host- to-Front-End Protocol (HFP) [19] serves as the vehicle for this study. Familiarity with HFP is assumed.

Connecting a large computer to a packet-switched network requires a rather large investment in the development or modification of network software. The host-to-network interface or protocol must be implemented. An end-to-end protocol is required for general interprocess communication. These programs are complex and, if the operating system is unsuited to networking, may be large. Modification of the operating system is often necessary. Moreover, in order to make network services available to the user a host must implement one or more higher level protocols Examples of higher level protocols are virtual terminal protocols, file transfer protocols, remote job entry service, graphics protocols, etc. But the network software burden on a host is not only in large one-time costs for software development, but also in large recurring costs for the processor, memory, and channel time consumed by the network software, and in software maintenance. It has been hoped that most of this burden could be offloaded to a relatively inexpensive network front end. A front end could also transform network communications to make them more suit- able to the host. Standardization of the front end would allow the same

system to be used to front end a variety of hosts. This would save development and modification costs. On the other hand, tailoring the front end to a specific host would improve performance. There is clearly a tradeoff between these two goals. Host-to-Front-End Protocol

The vehicle for the present study is the Host-to-Front-End Protocol (HFP) [19]. This protocol can be divided into three major sections:

1. a link protocol for control and communication on the actual physical connection between the two machines,

2. a channel protocol that provides a set of error-free, reliable, logical channels between processes in the host and services in the front end, and

3. a family of process-to-service protocols (PSP's) that provide the means for offloading the network protocols.

The channel protocol defines a set of Command and Response Messages. Each Message has a header field containing control information and a text field containing data. Four pairs of Commands and Responses provide communication between the host process and the front-end service. The PSP's use the text fields of the channel Commands and Responses to send PSP commands and responses between the process and the service. The channel Commands and Responses are:

The BEGIN Command and Response are used to establish a logical channel between the host and the front end.

The END Command and Response are used to terminate a logical channel.

The TRANSMIT Command and Response are used to transfer data.

The EXECUTE Command and Response are used to send requests out-of-band with the TRANSMIT Commands and Responses.

Each PSP is defined in terms of the channel protocol. A PSP defines how the text field of each channel protocol Command and Response is used for a particular service.

A PSP represents a class of offloading strategies for one or more protocols. The six PSP's are:

1. The Program Access PSP, which provides a general facility by which a process in the host may invoke a terminal-oriented program or system command in the front end.

2. The File Access PSP, which provides a general facility for moving bulk data between the host and the front end. It is used in offloading FTP or similar protocols.

3. The ARPA Host-Host PSP, which provides access to the ARPANET Host-Host protocol implementation in the front end.

4. The Network Virtual Terminal PSP, which provides low-level process-oriented classes of offloading of the Telnet protocol.

5. The User FTP PSP, which provides low-level process-oriented classes of offloading of the user side of the File Transfer Protocol.

6. The Server FTP PSP, which provides classes of offloading for the server side of a File Transfer Protocol.

Future Work

While this study explores what could be offloaded, it does not determine what should be offloaded. A given installation will attempt to provide a particular class of service to its users; for example, a timesharing service, a data management service or an archival service. The installation may have to handle a large number of terminals or perhaps only a few. Because of the finite resources of the front end one may not be able to offload everything and still provide adequate performance for the preferred services. For example, a

timesharing service supporting a large number of terminals and not much bulk transfer might maximize the offloading of Telnet and minimize response time. On the other hand, an archival service or a data manage- ment service might maximize the offloading of FTP and minimize the off- loading of Telnet. The nature of these tradeoffs must be investigated. A methodology for determining how an installation should configure its front end must be developed. Similar work has been done for satellite graphics processors [18, 34, 35] . This work might be extended and adapted to the offloading problem. Also, the modeling framework [16] recently developed at CAC could be used to aid the investigation of these questions.

General Characteristics of Offloading

It is possible to discern a pattern in the way protocols could be offloaded. This pattern is related to the symmetry of the network protocol. A symmetrical protocol is one whose operation is identical for both sides. The ARPA Host-Host and Telnet protocols are symmetrical. In the Host-Host protocol no distinction is made between source and destination or between user and server. Either side may initiate the connection. The passing of data from one host to another is treated identically regardless of direction. In Telnet no distinction is made between terminals and processes. On the other hand, the FTP protocol is not symmetrical. One side (User) must initiate the connection, generate commands and receive responses; while the other side (Server) receives commands, performs the indicated task and sends responses.

As one would expect, symmetrical protocols offload in one way and asymmetrical protocols offload in another. For a symmetrical protocol, a single PSP is used for offloading; for an asymmetrical protocol two PSP's are required - one for each side.

Schemes for offloading the user side of an asymmetrical protocol show one pattern and those for offloading the server side show a distinctly different pattern. .

This is a consequence of the structural differences between the two sides. The user side is simply a sequence of stages. A message from the user is transformed successively by each stage, e.g., the user interface, the protocol interpreter, the Telnet interface, and the NCP. But on the server side, the protocol interpreter must perform host- specific operations. On the server side, these host-specific operations

are the crux of the matter. While the sever side has stages analogous to those of the user side, they are of less importance, particularly with respect to offloading.

As a general principle, the structure of the user side of an asymmetrical protocol favors offloading in terms of stages. Thus, for the user side, there are the following offloading strategies:

1) Offload everything, leaving a simple process in the host which relays data between the user and the front end;

2) Leave the user interface in the host;

3) Offload nothing at this protocol level.

There may be variations on these three strategies, but as major classes they always appear.

The structure of the server side of an asymmetrical protocol favors offloading in terms of the operations. Most of these operations deal with the handling of protocol commands. (See figure 1.) Some operations must be done in the host, some must be done in the front end. Some can be done either place. Thus the question of offloading strategy is reduced to those cases for which there is a choice. It is then a question of the relative advantage or disadvantage of having each such operation performed in the host or in the front end. Since offloading an operation to the front end may not only affect the performance of the front end in undesirable ways, but may also require more complex mechanisms to control the offloaded operation from the host, the net gain to be realized by such a strategy must be carefully determined. Large variations in operating system architectures make it difficult to determine which operations should be offloaded without careful investigation of individual cases.

10

PSP's may also differ by being location-dependent or location- independent. Most are location-dependent. The process or user on whose behalf a service is performed is located in the host and the service is in the front end. However, there are some PSP's, such as the File Access PSP, which make the distinction between a user and a service but do not require their association with the host or front end.

11

Two General-Purpose Process-to-Service Protocols

Two of the PSP's used in this work to offload network software are not associated with a particular network protocol. One is the Program Access PSP and the other is the File Access PSP.

The Program Access PSP (see appendix 1) is a general purpose protocol that combines some of the functions of a virtual terminal protocol with a simple mechanism allowing host processes or users to invoke programs or commands in the front end. The Program Access PSP (PA-PSP) can be used to provide a direct connection from the user's terminal to a front-end program with minimal interference by the host. Depending on the nature of the terminals and the operating system in the host, the process side of a PA-PSP may have to carry out such operations as:

querying the user for usercode and password,

handling break characters from the terminal,

flushing data going to the terminal,

handling half -duplex terminals,

diverting binary or character data to auxiliary devices, and

modifying terminal parameters that control echoing.

Of course, the more items from this list that are required, the less the savings to be gained by using this PSP. Also, since this PSP may communicate with the front end system at the level of the user command language interface, it will be inappropriate for use by processes.

The File Access PSP (see appendix 2) is a general purpose protocol that facilitates the movement of files or bulk data among the host, the front end and the network. It allows the host to access the front-end's file system or vice versa, and the host to transfer data

12

between its file system and the network. The File Access PSP (FA-PSP) allows the user to access any point in a file and supports a mechanism for restarting file transfers. This mechanism is compatible with most File Transfer Protocols.

13

Offloading the Telnet Protocol

The ARPANET Telnet protocol provides a standard method for interfacing terminals and terminal-oriented processes to each other. The protocol is based upon three ideas:

1. the concept of a Network Virtual Terminal (NVT) ,

2. the principle of negotiated options, and

3. a symmetrical view of terminals and processes.

When a Telnet connection is established, each end is assumed to terminate in an NVT. The NVT represents a canonical terminal. It was designed to strike a balance between being overly restrictive and overly inclusive. The principle of negotiated options provides the mechanism by which terminals and processes that find the NVT too restric- tive may enhance its properties [23]. Such options include changing the echo mode, the line width, or the page size, and setting tabstops. For a more complete description of the protocol and the current options, the reader should consult references [4-13,17,20,23-31,36,37].

In most systems there are two major uses of the Telnet protocol. First, it is used as a general terminal-oriented communication medium. Second, a host may have a local interactive program (User Telnet) that uses the Telnet protocol to connect a local user to a remote host as if that user were directly connected to the remote host. Those aspects of the protocol itself that may be offloaded are character translation, connection manipulation, and some of the options. The User Telnet application program in a user host may offload all of the above func- tions and the user interface to the User Telnet program. The section below takes a closer look at how the offloading may be done.

14

Offloading the User Telnet Application

There are three basic schemes for offloading the User Telnet Application: maximum offloading, placing the user interface in the host, and placing everything in the host. (See table 1.)

Scheme

Functions

Functions in

PSP's

Number

in the Host

the Front End

Used

1

Local terminal handling

User Interface

PA-PSP

Relay Process

Telnet

Go-Aheads

Connection handling

2

User Interface

Telnet

NVT-PSP

Local Terminal Handling

Connection handling

Relay Process

Go-Aheads

3

User Interface

Telnet

Local Terminal Handling

Relay Process

Go-Aheads

Connection Handling

ARPA-HH

Table 1. User Telnet Offloading Schemes

For the maximum offloading scheme (see figure 2), the Program Access PSP is used. As noted above, this scheme requires a "relay" process in the host to move data between the user's terminal and the program access service (PAS) module in the front end. There are two disadvantages to this scheme. Firstly, as noted above, the more func- tions required of the relay process, the more complex the relay process must be and the less that might be saved. In fact, the relay process may become so complex as to require a user interface for requesting information from the user. This is exactly the part of Telnet that the PA-PSP was intended to offload. Secondly, processes in the host that wish to use Telnet must use a human- oriented interface. This may be unwieldy and overly complex, and in some cases impossible. In these cases the Network Virtual Terminal PSP (NVT-PSP) should be used.

15

cr3

RELAY PROCESS

HOST

PROGRAM ACCESS MODULE

FRONT END

c^Z]

TELNET

USER

INTERFACE

TELNET

Figure 2 Maximum Offloading of User Telnet

In order to support some Telnet options, the relay process may have to map them into local terminal parameters. The best example of such a case is a system that wishes to support the remote controlled transmission and echoing (RCTE) option. When the option is negotiated, the terminal handler in the host must be notified of the change in echoing and transmission. It may not be possible to handle this case at all with the PA-PSP scheme, but the NVT-PSP is capable of handling it easily.

The Network Virtual Terminal PSP (see appendix 4) provides the facilities for the second offloading scheme shown in table 1. The user interface is placed in the host and uses the NVT-PSP to access the User Telnet process in the front end. (See figure 3.) The only problem created by this scheme is that two possibly incompatible user interfaces will be required, one in the front end and one in the host. The advantage of this scheme is that it provides a process-oriented interface to the

16

TELNET

USER

INTERFACE

HOST

£3

FRONT END

TELNET

USER

INTERFACE

TELNET

Figure 3 Telnet User Interface in the Host

host side. Thus programs don't have to decipher responses intended for a human. Some systems may use both the maximum offloading scheme (for the high use User Telnet application) and the NVT-PSP for use by resource sharing programs. Also, systems that require a rather complex relay process to implement the PA-PSP are perhaps better off using just the NVT-PSP. Since the NVT-PSP and the Telnet protocol are both symmetrical, the details of using this scheme to offload the User Telnet application are identical to the offloading of the Telnet protocol itself. Offloading the Telnet Protocol Implementation

The functions of the Telnet implementation are manipulating network connections, negotiating Telnet options, mapping between local and network representations, transmitting data over connections, han- dling special control functions, and interfacing remote terminals so that they appear as local terminals. (Since the protocol is symmetrical, this is true of both the User and Server sides). The offloading scheme

17

represented by this model places connection manipulating and data trans- mitting in the front end. The interfacing of remote terminals so that they appear as local terminals must be done in the host. The scheme is flexible in that the remaining functions (option negotiation, special control functions, and translation between local and network representa- tions) may be implemented in either the front end or the host, depending on local installation constraints. Typically the translation will be done in the front end.

There are several Telnet control functions that one would like to consider offloading. These are Interrupt Process, Break, Are You There and Abort Output. Since for all of these except the last the effect of the control function is on the process itself, the most that can be done is to ensure that the control function arrives at the earliest possible moment. This is done by sending it to the host via the out-of-band EXECUTE Command.

In the case of Abort Output a little more can be done. When the NVT service in the front end receives an Abort Output control func- tion, it should pass the control function to the host via the EXECUTE Command. Since this HFP Command is sent out-of-band with respect to the data, the Abort Output will be sent to the host as early as possible. The front end can then respond to the Abort Output control function according to the Telnet protocol by sending a Host-Host Protocol INS command associated with this connection to the remote host, flushing any data it has buffered for transmission to the network and continuing to flush data until a Telnet Data Mark is received from the host. The front end may send a Telnet Data Mark to the remote system as soon as it has flushed all queued data or it may wait for the Data Mark from the host. (If it does the former, it should not pass the Data Mark received

18

from the host on to the remote system.) When the host receives the Abort Output control function, it should flush all data it has queued for the front end, and send a Telnet Data Mark to the front end. (Note: Neither side should request the HFP Channel Protocol to flush data. The Telnet protocol states that an Abort Output flushes only data, not control functions, and a channel-level flush does not distinguish between the two.)

An installation may take either of two basic approaches to offloading the Telnet Options. It may offload nothing, in which case the Telnet service in the front end need only reformat the data stream, perhaps do character translation, and handle the network connections. Or, the installation may wish to offioad as much as possible (given its host's characteristics) in which case the front end must also be able to negotiate and execute some of the Telnet options.

Unfortunately, it is not possible to say definitively for some of the Telnet options whether they should be offloaded or not. Table 2 can be used as a guide to how easily the various options may be offloaded.

In most cases, two attributes of each option determine whether or not it can be offloaded:

1. An option may or may not affect the host's terminal-handling parameters.

2. An option's taking effect may or may not require synchroniza- tion with a particular point in the data stream.

If an option affects the host's terminal-handling parameters, then, although some of its processing may be offloaded, some processing will have to be done in the host.

If an option requires synchronization with the data stream, it may be very difficult, if not impossible, to offload.

19

Option Name

Telnet Option Num.

Host

Dep.?

Coord

w/Data

Stream

Can be Offloaded?

Approximate Message Size

4

no

no

yes

Binary Transmission*

0

yes

yes

no

Byte Macro*

19

yes

yes

yes

Data Entry Terminal*

20

yes

yes

maybe

Echo*

1

no

yes

no

Extended ASCII

17

no

yes

yes

Logout*

18

yes

no

no

Output Carriage Ret. Dispos.

10

no

no

yes

Output Formfeed Dispos.

13

no

no

yes

Output Horz. Tab Stops

11

yes

no

no

Output Horz. Tab Stops Dispos.

12

no

no

yes

Output Linefeed Dispos.

16

no

no

yes

Output Line Width*

8

1

no

maybe

Output Page Size*

9

1

no

maybe

Output Vert. Tabstops

14

yes

no

no

Output Vert. Tabstops Dispos.

15

no

no

yes

Reconnection

2

no

yes

yes

RCTE*

7

yes

yes

no

Status*

5

yes

yes

some

Suppress Go Ahead*

3

no

no

yes

Timing Mark

6

yes

yes

no

Table 2. Classification of Telnet Options Offloading these options is discussed in further detail in the text.

20

Table 2 lists the current ARPANET Telnet options. Those options marked with an asterisk are discussed below in greater detail. For the rest, the table indicates whether they can be offloaded. Note that all options that are not supported by the host may be offloaded; i.e., the front end can refuse negotiations without involving the host.

Binary Transmission. In most cases, this option cannot be offloaded. However, the fact that it has been negotiated may be of interest to the service module in the front end. If the front end has been doing (or normally does) some translation tasks for the host, it will be necessary to coordinate the beginning of binary data with the cessation of such translation.

Byte Macro. If this option is supported and any other options or functions are offloaded, then this option must be offloaded. This option provides a means for mapping arbitrary strings into one byte. Therefore, when this option is in effect, the macro expansion must take place at the earliest point.

Data Entry Terminal (PET) . It may be possible to offload all or part of this option depending on the nature of the host system. If the host supports only one form of data entry terminal, then the front end can map many DET option subcommands into the form required by the local terminals or programs.

Echo. In general, it is not possible to offload this option, since the process in the host which is connected to this terminal may wish to echo characters other than those typed. However, there are cases where it might be desirable if the front end did handle this option for certain kinds of hosts.

For example, consider computers that support only half-duplex terminals, such as IBM 360' s, Burroughs 6700* s, or Honeywell 6000' s.

Suppose that a user connects to such a host and asks it to DO ECHO. It would be quite reasonable to have the front end handle the echoing and present the host with an apparent line- at- a- time environment. This would avoid many of the difficulties of trying to fit a line-at-a-time system into a character-at-a-time mode.

Output Line Width. Once again the decision to offload this option rests heavily on how line width regulation is enforced. If the regulation of line width is done by simple "line folding", then this function may be performed by the front end. However, if regulating line width requires more fundamental adjustments or more sophisticated action, it is quite likely that it will not be possible to offload this option.

Output Page Size. The decisions that are relevant for off- loading this option are similar to the ones described for output line width. Some systems may interpret the regulation of page size as fol- lows. The maximum number of lines in a page is sent. If there is still data to be sent, the sender pauses, waiting for an input from the user indicating that he is ready to proceed. If this is the sort of regula- tion desired when this option is negotiated, then it can be offloaded. However, if more fundamental adjustments or more sophisticated action is required, it may not be possible to offload it.

Remote Controlled Transmission and Echoing. The RCTE option is meant as a more general mechanism to replace the Echo option. If RCTE is used to replace the Echo option, then it may be offloaded under the same conditions as the Echo option. Otherwise, offloading is not possible and actually defeats the purpose of the RCTE option.

Status. Since not all options may be offloaded, it is neces- sary to offload part of the Status option and to leave part of it in the front end. It is suggested that the Status option be handled in the following way:

22

When the service module in the front end receives a Status option negotiation, it will respond favorably to the request by sending a WILL STATUS to the sender. It will then relay the option to the host in the normal manner and wait for a response from the host. When the host receives the DO STATUS command from the front end, it will transmit back to the front end the subnegotiation specifying the state of the options it handles. When this subnegotiation is received by the front end, it will insert into this subnegotiation the status of the options it handles and then it will send the completed subnegotiation to the foreign host.

If no options are supported in the host or if no options are supported in the front end, then, of course, this procedure may be avoided and the whole operation done in the front end or in the host, respectively. Also, it is possible for the front end to know what options are not supported and supply the default status information.

Suppr ess-Go-Ahead. In a sense, the Suppress-Go-Ahead option is always off loadable. If the host always generates go-aheads, then it is no problem for the front end to filter them out when the option is negotiated. However, it is impossible for the front end to insert go- aheads.

Telnet "Synch" Sequences. In some cases, searching for "interesting" characters in the data stream may be offloaded. For example, if the only characters deemed "interesting" are the Telnet special characters, then this function may be offloaded. Or the front end may be provided with a list (on either a static or dynamic basis) of strings to be searched for. However, even if these functions are performed in the front end, they must also be done in the host before the "synch" sequence is received.) The only reason for offloading this function is to increase the response to the user's request.

23

Offloading the File Transfer Protocol

The ARPANET File Transfer Protocol (FTP) [21,22] consists of two major sections: a command-and-response section called the Protocol Interpreter (PI) and a data transfer section called the Data Transfer Process (DTP). The model used in the FTP specification is shown in figure 4. The Telnet protocol is used to control the character-oriented command connection. Commands are sent from the User FTP module to the Server FTP module. These commands consist of a verb and single parameter. The commands may be divided into three major classes:

1. access control commands (USER, PASSWORD, etc.),

2. transfer parameter commands (TYPE, MODE, etc.), and

3. service commands (RETRIEVE, STORE, DELETE, etc.).

USER FTP

- "I

r

SERVER FTP

r~

USER INTERFACE

OPERATIONS

FTP PI

USER TELNET

SERVER TELNET

FTP PI

TO FILE SYSTEM

1 DATA 1 FROM

DATA TO

1 FILE SYSTEM

DTP

DATA CONNECTION

DTP

FILE SYSTEM

_ J

L _

1

Figure 4 ARPANET FTP Model

24

The Server FTP module responds to each command with one or more FTP replies. A reply consists of a three digit code called a reply code and one or more lines of text. The reply code makes the replies useful to programs, while the text makes available more complete information to a human user.

The transfer parameter commands are used to coordinate the mechanism for transferring the data, and to describe the format of the data to be transferred. Once these parameters have been agreed on, the User and Server FTP's open a separate connection for transferring the data. This is loosely referred to as the data transfer process or DTP.

There are two major aspects of FTP that are candidates for offloading: the transfer restart mechanism and the data transfer pro- cess. Although restart does require direct manipulation of the file and this function cannot be offloaded, there is a fair amount of restart marker "bookkeeping" that must be done. The front end can keep track of the markers and the position they correspond to in the local file. The primary functions of the data transfer process are manipulating the data connection and doing any translation of the data into a form suit- able for storage in the local file system or for sending to the remote site. Offloading this translation function also means that, in most cases, the transfer parameter commands that are used to define the translation may be offloaded as well. Offloading translation should provide considerable savings to hosts which transfer data to or from computers unlike themselves, especially if the front end has efficient bit-level operations.

The User and Server FTP offloading models described here use the File Access PSP to offload the data transfer portion of the FTP. We will note some of the properties of this File Access PSP as we describe

25

the models. We complete this section with a review of the requirements for the File Access Service.

For systems that don't allow access to FTP from terminals attached to the host, the File Access Service (FAS) module is the only portion of software for a User FTP that must be in the host.

If file systems are supported in both the host and the front end, then some way must be provided to distinguish a pathname as be- longing to one or the other. Since remote filenames are the only ones sent as parameters in the FTP commands, an offloaded User FTP in a system with files in both the front end and the host only needs some local mechanism in the user interface for distinguishing the two file systems. Given this information as part of a command, the FTP user interface or protocol interpreter can access the correct open file. However, when an offloaded Server FTP which serves file systems in both the front end and the host is involved, some property of the pathname transferred in the data transfer command must be used to indicate where the file is. Several techniques might be used. The pathname might be prefixed with the characters HOST or FRONT END to indicate where the file is. The front end might have a partial copy of the host's file system directory indicating which files are where. Or, a non-technique might be used: attempt to access the pathname on the front end; if the attempt fails, try to access it on the host. Offloading the User FTP

We have identified eight distinct schemes for offloading User FTP. These are summarized in Table 3 and described in detail in this section.

1. Maximum offloading. This scheme is analogous to the maximum User Telnet offloading scheme. As shown in figure 5, this model uses the Program Access Service (PAS) to provide a full duplex path to the User FTP in the front end. The File Access Service (FAS), which may

26

Scheme

Functions

Functions in

PSP's

Number

in the Host

the Front End

Used

1

Relay Process

User Interface

PA-PSP

FAM

FTP-PI

PTP-DTP

Telnet

Host-Host

Restart

FA-PSP

2

FTP User Interface

FTP-PI

FTP-PSP

FAM

FTP-DTP Telnet Host-Host Restart

FA-PSP

3

FTP User Interface

FTP-DTP

UT-PSP

FTP-PI

Telnet

FA-PSP

FAM

Host-Host

Restart

4

FTP User Interface

FTP-DTP

ARPA-HH

FTP-PI

Host-Host

FA-PSP

FAM

Telnet

Restart

5

FTP-DTP

User Interface

PA-PSP

Relay Process

FTP-PI Telnet ARPA-HH Restart

FA-PSP

6

User Interface

FTP-PI

FTP-PSP

FTP-DTP

Telnet

ARPA-HH

Restart

FA-PSP

7

FTP-DTP

Telnet

UT-PSP

User Interface

ARPA-HH

ARPA-HH

FTP-PI

Restart

8

FTP-DTP

User Interface

FTP-PI

Telnet

ARPA-HH

ARPA-HH

Table 3. User FTP Offloading Schemes

C

P M

C

P M

^^ 1

RELAY PROCESS

PROGRAM ACCESS MODULE

USER FTP

DTP

r 1

r

FILE ACCESS MODULE

i 1

FILE ACCESS MODULE

1

HOST

FRONT END

Figure 5 Maximum User FTP Offloading

be synonymous with the data transfer process of the FTP, is used to move the data to the proper file in the host. The FAS module must be able to log a user into the host, open a file, read or write to it, abort a transfer cleanly, handle restart reporting and positioning, return error conditions on access, etc.

With this scheme, the PAS in the host and the FAS in the host are completely independent. Any decision to transfer a file and thus use the FA-PSP is recognized only by the User FTP in the front end. Thus, use of the FA-PSP is initiated by the front end. There are several ways to handle this: 1) the host can always have a BEGIN Command outstanding for a connection to the FAS, or 2) the front end can send a BEGIN Command to the host requesting service. The first case is analogous to the mechanism used in the Network Virtual Terminal PSP. However, there is one major difference. The user of the FA-PSP must be logged in to the host in order to access the file. In order to minimize

28

the amount of negotiation required before a transfer can commence, the BEGIN Commands should probably go to the host.

The other major requirements for this scheme are that the FAS module must be able to report back to the User FTP in the front end that all records on bytes preceding a restart marker have been actually written onto the file, and that the service in the front end must be able to translate a marker into a local file position in the event a restart is required.

2. FTP user interface in the host. This scheme moves the FTP user interface into the host. (See figure 6.) Several advantages result from this configuration. First, since the user interface knows when the user has requested a transfer, it may initiate the FA-PSP. This strategy avoids the necessity of sending BEGIN Commands to the host. The FA-PSP would use the "channel" connection type (see appendix 3) to open the data connection on the default transfer sockets. For similar reasons the protection problem encountered in the above model (i.e., the user's having to log in to the host) is avoided. However, if the file is in the front end's file system, the user may have to log in to the front end. This would depend on the particular security and protection arrangements.

Restart bookkeeping can be done in either the host or the front end. If done in the host the FAS module in the host must be able to pass information to the user interface to inform the user of the markers. However, if the restart management is done in the front end, the same mechanisms described above apply.

If there is no file system in the front end, then the FTP-PI has very little to do except act as a relay for commands and responses and initiate the data transfer process (DTP); the user interface can

29

t^3

HOST FILE SYSTEM

FTP

USER

INTERFACE

FILE ACCESS MODULE

HOST

USER INTERFACE

FTP PI

DTP/ FA MODULE

FRONT END

CT3

NETWORK

Figure 6 FTP User Interface in the Host

generate the actual FTP commands. If a file system does exist in the front end, then the user interface must be able to tell the DTP (or the DTP must be able to determine) in which file system the file to be accessed resides.

The major disadvantage to this scheme is that two user inter- faces are required to the FTP-PI (one in the host and one in the front end), and there is every likelihood that they will not be the same.

The functions offloaded by this scheme are connection handling, User Telnet, protocol state management, the DTP, and possibly restart.

3. Telnet and Data Transfer in the FE. This scheme (see figure 7) primarily offloads the Telnet and data formatting functions. It is necessary that the FTP-PI be able to explicitly coordinate the data connection with the Telnet connection or always use the SOCK

30

r^

FTP PI

USER INTERFACE

=y-

rn

C

P

M

C

P M

USER

FTP PI

USER TELNET

YTERFACE

J—

^

t

NETWORK

\

M

ST FILE

FILE ACCESS MODULE

DTP/FA MODULE

YSTEM

HOST

FRONT END

Figure 7 Telnet and Data Transfer in the FE

command. If the PA-PSP is used to access Telnet then the FTP-PI must be able to specify the contact socket to the Telnet user interface and it must also be able to manipulate the human-oriented Telnet interface. This is probably a good candidate for using the Network Virtual Terminal PSP.

There must be communication between the FTP-PI and the FAS in the host to specify the mode, type, etc., that will be used for the transfer. The most reasonable way to handle this is to pass the infor- mation through the FAS module in the host.

Although restart management could be handled in the front end, it seems to be overly complex to consider such an assignment. (The host

31

FAS module would have to tell the front-end FAS module that data had been written. Then the front end would have to pass that information to the user back through the FAS module.) Thus, it seems most reasonable to assume that restart would be done in the host for this model. Restart management in the host could be done without additional complexity in the FA-PSP. All that would be required would be for the restart report to be channelled to the FTP-PI in the host rather than to send it back to the front end.

This model requires two user interfaces and two FTP-PI' s if access is allowed through the front end and the host. Problems might arise since these may be significantly different.

4. Data Transfer in the Front End. In essence, this model (see figure 8) merely offloads some of the connection manipulation and data translation and re-formatting. Again it is necessary that the FTP- PI in the host and FAS module in the front end be able to communicate. This would be done through the FAS module. It is also necessary for the FTP-PI to be able to coordinate its control connection with the data connection opened by the FAS or to use the FTP SOCK command. If a file system exists on the front end then it may be necessary for the FAS module in the host to log in to the front end on behalf of the user.

Data Transfer in the Host. There is a variation of each of the above offloading models that puts the data transfer process in the host. We will consider each one in turn:

5. Only DTP in the host. This scheme (see figure 9) has many of the same problems as its counterpart (scheme 1) . Since the relay process is independent of the DTP, the front-end side of the FAS must log in to the host. Thus BEGIN' s will generally go to the host. In this case, however, more information (mode, type, etc.) must be sent to the

32

-IS

CO

£U

o

h-

X

(-«

to>:

o<f>

X

33

C

P M

C

P M

^ 1

RELAY PROCESS

USER INTERFACE

FTP PI

^ u

^ '

^ '

r

DTP/ FA MODULE

* >

FA MODULE

u

ncT

CDftMT CTMH

Figure 9 Data Transfer in the Host

host before the transfer can commence. Of course, the DTP must be able to report restart markers back to the front end.

6. User interface and DTP in the host. This scheme exhibits most of the advantages of its counterpart. The DTP can be initiated by the host, thus solving several problems. Restart management can be handled by either side. The front-end side of the FAS becomes very simple, since mode, type, etc., parameters could be supplied by the user interface.

7. Telnet in the front end. The only problem this variation presents is coordinating the Telnet connection and the data connection if the default sockets are used.

8. Nothing is offloaded. Everything is done through the ARPA Host-Host PSP [13]. If a file system exists in the front end, it will be necessary to duplicate the DTP in the front end. Thus, in systems where file systems exist in both, it is probably not worthwhile to consider models with the DTP in the host.

34

The question may occur to some, why consider putting the DTP in the host at all? The best example would be a situation where the front-end's instruction set, although very well suited for message switching, is not well-suited to the kind of bit-manipulations done by the DTP. In such a case, considerable savings may be gained by putting the DTP in the host. Offloading the Server FTP

Unlike the situation for User FTP, the offloading of Server FTP does not follow the clear functional lines of the FTP model. We will use the model shown in figure 10 as a basic framework for the descriptions of offloading Server FTP. This model can be used to represent virtually all of the FTP offloading schemes. For the present, we have placed the DTP functions of translating and reformatting the data in the front end. Although these functions could be assigned to the host (see User FTP scheme 5), the most likely assignment is to the front end. We will consider this case later. The schemes described in this section also use a File Access-PSP to move data into the host. The requirements for this FA-PSP are virtually identical to the one described above.

Offloading Server FTP is complicated somewhat by the fact that a file system may exist on both the host and the front end. For the Server FTP this means that some well publicized convention for dis- tinguishing these two file systems may be required in the pathname.

Interestingly enough, when allocating functions between the host FTP-PI' s and the FAS module, the division appears to be that file management functions are performed by the FTP-PI and file transfer functions are performed by the FAS module.

35

C

P M

C

P M

FTP PI

FTP PI

"-

>■

^

FA MODULE

DTP/FA MODULE

HOST

FRONT FMn

Figure 10 Server FTP Offloading

Thus, for FTP sessions that perform operations on the host file system, the following functions must be in the host FTP-PI (see table 4) : RENAME DELETE SITE

STATUS <arg> LIST

NAME-LIST ALLOCATE

Depending on the particular host operating system, it may not be possible to assign the last three commands of this list to the host FTP-PI. The LIST and NAME-LIST commands use the data connection to transfer their results to the user. Some operating systems may require that these functions be done by the host FTP-PI; but some implementations may require that access to the data connection be gained only through the host FA-PSP. Similarly, hosts which require an allocate before

36

APPEND

RETRIEVE

STORE

ALLOCATE

SITE

RENAME TO

STATUS arg

RENAME FROM

LIST

DELETE

NAME-LIST

Replies tc

all

of

the above

FTP Commands that Must Be Done in the Host

USER

ACCOUNT

PASSWORD

REINITIALIZE

BYE

BYTE

SOCKET

PASSIVE

TYPE

STRUCTURE

MODE

RESTART

STATUS

HELP

NOOP

ABORT

Replies

for

all of

these Commands

FTP Commands that Can Be Offloaded

Table 4. Offloading Server FTP

37

accepting a file may be better able to handle it if it is done through the FAS. The FTP commands for user authentication (USER, PASS, and ACCT) may or may not be offloaded depending on the security policy arrangement between the host and the front end.

Although the FTP-PI in the host must report the success or failure to the FTP-PI in the front end, it might be reasonable for the host to generate a highly encoded reply and the front end to generate a "proper" FTP reply. For configurations that support file systems on both the host and front end, this strategy has the added advantage of presenting a common reply repertoire to the network. The feasibility of this mechanism will depend heavily on the particular host and front end.

Given that these functions must be done in the host, let us consider the ones that may be in the front end:

Access Control Commands,

Transfer Parameter Commands,

RETRIEVE, STORE, APPEND, RESTART,

ABORT, HELP, STATUS, and

replies for all of the above.

It is not clear just how much of the Access Control Commands (i.e., USER, PASS, and ACCT) can be done in the FE. This will depend on the log-in arrangement between the front end and the host. It is possible that a successful log in to the front end is equivalent to a successful log in to the host. Or the front end may have to log the user into the host by initiating a host FTP-PI in the user's name before indicating success or failure of the attempt.

All of the Transfer Parameter Commands can be offloaded. These commands affect the format and encoding of the data for trans- mission and the manipulation of the data connection. It should be noted

38

that if these commands are not handled in the same machine as the DTP, then some means must be provided for communicating their values to the DTP or FAS. The DTP should be tailored to individual systems to trans- late the data from the transmission form (determined by the MODE, TYPE, STRUCTURE, and BYTE commands) to a form acceptable to the host. (Such translations must be invertible.)

Because data transfers are accomplished by using the FA-PSP, it is possible to do some of the processing of the RETRIEVE, STORE, APPEND, and RESTART commands in the front end. The front-end FTP-PI can interpret the command, initiate the file access process, and re-format its responses into standard FTP replies.

It is also possible for the HELP command to be done in the front end. Since the only function of this command is to return text explaining the local effects of FTP commands and implementation pecu- liarities, there is no reason this text cannot be stored in the front end.

There are two forms of the STATUS command. One has a pathname argument and returns information on a particular file. For files on the host, this command cannot be offloaded. The other form of the command does not have an argument and returns the status of a transfer that is in progress, or, if no transfer is in progress, the current value of all transfer parameters and the status of all connections. This function can be offloaded to the front end.

The last major aspect of offloading FTP is handling restart markers. There are two main cases to consider: data going out to the net and data coming in from the net. Let us first consider data moving out. If the front end can exert enough addressing control through the FA-PSP, it is possible to allow the FAS in the front end to insert the

39

restart markers, thus offloading this function from the host. The only requirement is that the FAS in the front end be able to address the same point in the file when given the restart marker and commence the transfer at that point. If this is not possible then these functions must be in the host.

For data coming into the host, it is necessary for the Server FTP to be able to report to the User FTP when the data associated with a particular marker has been entered into the file, and to associate with the user-specified markers a locally generated marker that can be used to restart the transfer at this point.

A restart function can be provided in two ways: either the FAS in the host can report the markers to the host FTP-PI, or they can be sent back to the FAS in the front end and reported to the front-end FTP-PI. If the latter approach is used, the FAS in the front end could generate the local markers and send these to the remote host, while the front-end FTP-PI handles the marker bookkeeping. If it is not possible for the FAS in the front end to assign markers, then it must be done by the host. The File Access Process-to-Service Protocol

In each of the models just described we have postulated a utility for moving files between the host and the front end. In this section, we will review the operations that such a utility must be able to perform and discuss some of the problems involved in its design. The FA-PSP resembles the Bulk Transfer Facility described by [32] for EIN or the File Access Protocol [15]. In the models described above, we have indicated that the Data Transfer Process of FTP should be asso- ciated with one side of the FA-PSP. Typically, the front-end imple- mentation would perform the DTP functions, including the transformation

40

of data from the network format to a form acceptable to the host. The host side typically would ensure that the data was written to or read from the proper file.

The front end must be able to request that the host perform the following operations:

open a file,

read data from the file,

write data to a file,

start a transfer from some point in the file (for restarts),

append to a file (this is a special case of the last point),

close a file, and

abort a transfer. Some systems may also require the FAS module to

allocate space for a file, and

provide directory information.

In addition, the FAS module in the host must be able to pro- vide a sufficiently rich set of responses to allow reasonable FTP replies to be generated by the FTP-PI. The FAS module must also be able to report to either the host or front-end FTP-PI that all data ahead of a restart marker have been written on the file. Some implementations may wish to have the front-end side generate restart markers for out- going data. However, if marker assignment requires knowledge of the data (i.e., record boundaries, etc.) it may have to be done in the host.

A major concern in the use of the FA-PSP is how access control is to be provided. The most obvious solution is to have the FA-PSP "log-in" to the host on behalf of the user who initiated this session. This raises the question of whether or not there are separate usercodes

for the host and the front end. As long as the only file system being accessed is in the host, there is really no problem. The real diffi- culties arise when there are file systems in both host and front end, so that it may be desirable to have separate usercodes. For the time being, resolution of this problem will have to be left as an installa- tion policy decision.

Unlike most PSP's, the FA-PSP maintains two major communica- tion channels. On the one hand there must be a channel for the data that are moving between the host and the network, and on the other hand there must be a channel for control and state information to be passed to either the host or front-end FTP-PI. In the FA-PSP all data is sent via TRANSMIT Commands and all Control information is sent via EXECUTE Commands.

42

Offloading the Network RJE Protocol

This part of the study uses the ARPANET RJE Protocol (NETRJE) as a basis for discussion. Although other RJE protocols have been devised (the UCLA-CCN NETRJS [1] and the one proposed by Day and Grossman [14]), the major points that must be considered are well illustrated by the ARPANET protocol.

The ARPANET NETRJE protocol [2] is built on top of the Telnet and File Transfer Protocols. By means of the User NETRJE program on his local host, a user of NETRJE establishes a Telnet connection to a Server NETRJE process at the host where he wishes to submit a job. (See figure 11.) The user then sends to the Server process appropriate commands to log in, to describe where the job is that is to be submitted, to describe how the job is to be transferred, and to describe what is to be done with the output when the job is completed. The Server NETRJE process on the foreign host then uses its User FTP program to transfer the input file to the foreign host, and then may use FTP again later to send the output back to the user. This protocol is very general and allows a user to submit his input from one host, process it at a second, and send the output to a third. Offloading the User RJE

For User NETRJE, the only offloading scheme (see figure 12) that is at all interesting uses the PA-PSP to get to the NETRJE user interface. (A scheme could be constructed that put the user interface in the host. Such a scheme would then use Telnet either through the PA- PSP, which would require some command- language emulation, or through the Network Virtual Terminal PSP. In either case, the resulting models are simplified versions of those considered in the User FTP section above.)

43

TELNET CONNECTION

FTP CONTROL CONNECTION

FTP DATA CONNECTION

OR CARD READER

Figure 11 The Model of the ARPANET RJE Protocol

TO LOCAL RJE

c^3

RELAY PROCESS

HOST

PROGRAM ACCESS MODULE

RJE

USER

INTERFACE

USER TELNET

FRONT END

Figure 12 User RJE Offloading

44

Most of the offloading that can be accomplished for NETRJE consists of the offloading of FTP. However, for an offloaded FTP that uses the FA-PSP, there is an additional facility that the FA-PSP must have in order to be used with NETRJE. Since the remote host will use FTP to retrieve input and store output, the FA-PSP should be able to access the card readers (or their agents) for input requests and to access line printers or spooling queues for disposing of output. Offloading the Server RJE

There is some difficulty in determining exactly how much of the server function can be offloaded in any general way. Many RJE or batch systems for contemporary operating systems are rather monolithic in their structure. Therefore it is not clear how separable some functions are from the whole. In fact, for some implementations Server NETRJE may be a translator between the local RJE system and the network conventions.

Assuming that functions are fairly separable, we notice that NETRJE functions can be divided into two types: those used to control the FTP and those used to control the RJE system. The FTP functions can be offloaded to as great a degree as FTP can be. Since most RJE systems are monolithic and the tables containing the information specifying the disposition of the jobs are in the host, the RJE functions in general cannot be offloaded. (See table 5.)

The offloaded Server NETRJE must be able to associate job-ID 's with host pathnames or be able to direct output from the RJE system to the FAS. Also, it must be able to direct input from the FAS to the RJE system and associate it with the NETRJE session.

45

REINIT

OUT +

change"1"

ABORT (output)"1"

back"1", skip"1"

STATUS

CANCEL

ALTER

NETRJE Commands that Must be Handled in the Host

REINIT

USER, PASS*

INID,INPASS

OUTID,OUTPASS

INPUT, INPATH

ABORT

RESTART,

RECOVER, HOLD

NETRJE Commands that May be Handled in the Front End

Table 5. Server NETRJE OFFLOADING

It may be possible to offload these commands, depending on how user authentication is handled.

Some systems may spool network output to the front end, in which case these commands could be offloaded.

46

Offloading Teleconferencing

Most teleconferencing systems exist as programs, not protocols. The only example of a teleconferencing system that is constructed as a protocol is Calvin's [3], In this system, the user interface for the system is located on one host and the conferencing system itself is located on another.

Even though such systems are not protocols, they are important network services. Let us consider how they may be offloaded. If the front end has its own file system, then it is possible to offload the entire teleconf erencer . If no file system exists or there is insuffi- cient file space in the front end, then all of the conferencing func- tions could reside in the front end and the FA-PSP could be used to write the transcript in a file on the host. Given the structure of most tele- conferencing systems, it appears that most aspects of the conference management functions are sufficiently tightly related that they should not be separated. However, sophisticated teleconf erencers that provide the use of such facilities as graphics displays, simulation programs and data management systems may allow greater flexibility in offloading.

Offloading Network Graphics Protocol

Although the Graphics protocol is, strictly speaking, outside the scope of this document, we will consider briefly how it may be offloaded. The ARPANET Network Graphics Protocol (NGP) is much too complex to describe in detail. It is a general purpose protocol limited to "calligraphic pictures, to moderate interaction demands, and to 'best effort' attempts to generate the required graphics" [33]. Several aspects of graphic systems, such as shading and animation, are not included because of a lack of understanding of how best to model these fairly new facilities.

To describe the NGP model we quote directly from the protocol

document [33]. (The figures have been renumbered to keep the numbering

consistent throughout the present document.)

"The philosophy behind the network graphics protocol can be demonstrated by giving a model of a general-purpose graphics system and combining it with the network model of Figure 13. The model of the system is shown in Figure 14... To avoid misunderstandings, and for the sake of defining terminology, it is worthwhile to describe briefly each of the elements of Figure 14:

1. The input devices keyboard, stylus etc. are used by the operator of the application program to provide data and to control the program during execution.

2. The application data structure contains data, basically nongraphical, relating to the application program.

3. The input routines receive data from the input devices, make appropriate changes to the application data structure, and hand control to other routines.

4. The non-1/0 routines analyze and modify the application data structure.

5. The output routines build a structured picture definition from data drawn from the application data structure. Effectively they define how this data may be visualized for display purposes.

48

^^

DISPLAY PROCESSOR a CONSOLE

SERVER HOST

USER HOST

Figure 13

A graphics application program (AP) running in one computer (the Server Host) drives a display console attached to another host (the User Host).

49

APPLICATION

^n

TRANSFORMATIONS

CONCAT

M

DIS- PLAY

Application Program:

IN Input Routines

OUT Output Routines

NON 1/0 Application Routines

DATA Application Data Structure

Graphics Package and Hardware:

IR Interrupt Routines

BUILD Routines to build the SPD

SPD Structured Picture Definition

TRACE Routines to trace the SPD

CONCAT Concatenation routine

T&C Transformation and clipping routines

DCG Display code generator

TDF Transformed Display File

DGEN Display generator

Figure 14

A Conceptual Model of a Graphics Application Program, a Graphics Package and Display Console

50

6. The structured picture definition defines the entire picture to be displayed, part or all of which may be visible on the screen. The picture definition is generally made up of a number of elements, representing parts of the picture known collectively as subpictures; subpictures may them- selves be made up of other subpictures. A familiar type of subpicture is the symbol which is often

used many times within a single picture or subpicture. Each reference or call to a subpicture element may denote a transformation scale, rotation, etc. to be applied to the subpicture.

7. The transformation routines apply the trans- formations specified in the structured picture definition and clip out information that lies off- screen. Often an arbitrary rectangular viewport is used as the clipping boundary instead of the screen edge. These routines also handle the concatenation of transformations necessitated by multi-level structured picture definitions.

8. The transformed display file is essentially what remains of the picture after transformation and clipping. It is defined in the screen's coordinate system and is generally stored in a format that allows direct refresh or regeneration of the picture. The display file contains "primitives" that specify lines, dots and text

to be displayed.

9. The display generator generally includes a vector generator and a character generator, which transform the contents of the transformed display file into signals that the display's deflection system can understand.

10. The display itself.

"We shall now analyze Figure 14 to see how the system can be implemented. The diagram illustrates three information structures (an application data structure, the structured picture definition, and the transformed display file) , and three processes (the output routines, the transformation, and the display generator) . The design of a general- purpose graphics system requires specifying the roles of all of these elements, with the exception of the application data structure. Our examination amounts to asking: what can the hardware do, and what does the graphics programmer think he can do?...

"Most display hardware is "processor" hardware, capable of implementing some or all of the three processes in Figure 14. If, for example, a display processor is available that implements transformations and display generation, then the transformed display file is absent, and we can view the

51

hardware as "an interpreter of structured picture defini- tions." If the available hardware has fewer capabilities (e.g. no transformation ability), the picture is refreshed from the transformed display file, and the hardware is "an interpreter of transformed picture definitions." Or, if the hardware is a storage-tube terminal that does not require a display file for refreshing purposes, part of the display generation process is a software process. (However, a display file is still required, as we shall see below.)

"Determination of what the programmer can do is somewhat more subtle, because the graphics system designer has complete control of the facilities he presents to the programmer. For example, the programmer of the system shown in Figure 14 would think he was creating a struc- tured picture definition: the output routines allow him to create, modify, and delete elements of that struc- ture. The remaining processes (transformation and display generation) and structures (transformed display file, if it exists) are inaccessible to the programmer; in some sense, he thinks that a "display processor" is inter- preting the structured picture definition in order to generate a display. He cannot determine whether a transformed display file exists, nor whether transforma- tions are done in hardware or software, etc.

"If the structured picture definition is deleted, the programmer sees a quite different set of facilities. The output routines create (after transformation) a transformed display file. The programmer now thinks that the hardware is a "transformed display file interpreter." Again, the programmer is unaware of the details of the display generator process (for example, if the display is a storage tube termi- nal, the display generator is a combination of a software display-file interpreter and some hardware vector and char- acter generators. If, on the other hand, the transformed display file is used to refresh a display, the display generator is presumably entirely in hardware) .

"The discussion suggests that relative device independence can be provided if we permit two different kinds of output information: (1) information for building structured pic- ture definitions, or (2) information for building trans- formed picture definitions directly. The first of these is matched to high-performance displays such as the LDS-2 or LDS-1; the second to standard refresh displays such as the IMLAC or GT-40.

"How does this relate to network protocol? We can essen- tially view the UP [user program] as a "display processor," i.e. an "interpreter of structured picture definitions," or an "interpreter of transformed picture definitions." The network protocol is used to build and modify a picture definition contained in the user host. Various UP options are shown in Figure 15 (the dotted lines surround those

52

TRANSFORMED FORMAT

b) STORAGE TUBE

TRANSFORMED FORMAT

-• TDF -}• DGEN —/ r

STRUCTURED C) HIGH FORMAT

PERFORMANCE

13.

STRUCTURED FORMAT

El

BUILD

SPD TRACE

CONCAT I

HfDGEN-^S-

•) STORAGE TUBE

m

BUILD SPD TRACE

teONCAT|

Figure 15

Various configurations for the user program.

Dashed lines surround processes implemented with hardware.

Hatched processes are omitted in the particular configuratic

53

processes that are implemented with display processor hardware) . Figures 15a and 15b show the network used to transmit transformed information; the UP uses this infor- mation to build a display file for refreshing a display or for updating a storage- tube. Figures 15c, 15d and 15e show the network being used to transmit information for building a structured picture definition; the UP is an interpreter of a structured display file.

"Figure 16 illustrates some possibilities for the server; the server can generate either structured or transformed display information. In Figures 16a and 16b the program- mer "sees" a structured picture definition; in Figure 16c a transformed picture definition.

"In the protocol, the UP tells the SP [server program] which kinds of format it can implement. It is perfectly possible for the UP to implement both the display images due to each of the formats are merged onto the screen.

"The two different kinds of output format can be summarized as follows:

Transformed

The protocol is used to build and modify a set of "segments" (sometimes called "records") of a trans- formed display file, stored in the user host. A segment is a list of graphical primitives that specify lines, dots and text to be displayed at specific positions on the display screen. Indivi- dual segments may be deleted or replaced; they may be added to or removed from a list of segments to actually display on the screen (this is called "posting" and "unposting" segments). If a picture is composed of many segments, changes to the pic- ture can often be made by replacing one or two segments; thus segmenting the display file helps to reduce the amount of information that must be transmitted through the network to effect a change. Considerable experience with this type of picture definition has demonstrated that device independence can easily be achieved...

One advantage of transformed format is that the UP can be kept very simple; no transformations need be performed in the UH [user host] . A UP along the lines of Figure 15a should be able to be imple- mented in an IMLAC. The burden of transformation is left to the SH [server host] , presumably a large computer quite capable of being programmed to do transformations .

54

o)

NON I/O

IN

OUT

lS

STRUCTURED FORMAT

b) r

» IN

NON I/O

OUT

[™r] ;

Hi_l

BUILD

SPD

n

CONCAT

Tac

TRANSFORMED FORMAT

TRACE

c)

TRANSFORMED FORMAT

Various configurations for the server program. These mate with the user program configurations of figure 15.

55

Structured

The protocol is used to build and modify "figures;" each figure is a collection of "units." A unit may be a list of graphical primitives, such as lines, dots and text; or it may specify a "call" on another figure, together with a transformation to apply to the called figure. The protocol can replace indivi- dual units; altering a figure that is called in several places may cause widespread changes to the visible display. The structured format requires (in principle) even less network bandwidth for updates than does the transformed format; many updates may involve changing a single transforma- tion (e.g. to change the viewing transformation for a three-dimensional object).

Although a structured picture definition can be interpreted directly by a few display processors that have transformation ability, most UP's that implement structured format will perform the trans- formation in software. . . This implementation is relatively difficult, and certainly requires a fairly powerful UH computer."

As one can readily see, of all the protocols considered here this protocol is the most suitable for offloading. Figures 14, 15 and 16 provide us with a fairly good idea of how the protocol functions should be placed. An exact assignment of duties, however, would depend heavily on the capabilities of the graphics terminal, the host, and the front end. Some work along these lines has already been done by Van Dam [35] and Foley [18]. These two investigators have considered the problem of how to best share the load for a graphics application between a host and a dedicated satellite graphics processor. Further work would be necessary to evaluate a system consisting of a host, a network front end, and a graphics display with or without its own satellite processor.

56

References

1. Braden, Bob

1971, "Interim NETRJS Specification," RFC 189, NIC #7133.

2. Bressler, R. ; Guida, R. ; and McKenzie, A.

1972, "Remote Job Entry Protocol," RFC 407.

3. Calvin, James 0.

1974, "The Design and Implementation of an Interactive Teleconferencing Environment," Undergraduate thesis, Case Western Reserve.

4. Crispin, Mark

1977, "Telnet Logout Option," RFC 727, NIC #40025.

5. Crocker, D.H. and Postel, J.B.

1973, "Remote Controlled Transmission and Echo Telnet Option, NIC #19859.

6. Crocker, D.H.

1974, "Telnet Output Carriage-Return Disposition Option," RFC 652, NIC #31155.

7. Crocker, D.H.

1974, "Telnet Output Horizontal Tabstops Option," RFC 653, NIC #31156.

8. Crocker, D.H.

1974, "Telnet Output Horizontal Tab Disposition Option," RFC 654, NIC #31157.

9. Crocker, D.H.

1974, "Telnet Output Formfeed Disposition Option," RFC 655, NIC #31158.

10. Crocker, D.H.

1974, "Telnet Output Vertical Tabstops Option," RFC 656, NIC #31159.

11. Crocker, D.H.

1974, "Telnet Output Vertical Tab Disposition Option," RFC 657, NIC #31160.

12. Crocker, D.H.

1974, "Telnet Output Linefeed Disposition Option," RFC 658, NIC #31161.

13. Crocker, D.H.

1977, "Telnet Byte Macro Option," RFC 729, NIC #40036.

57

14. Day, J.D. and Grossman, G.R.

1977, "An RJE Protocol for a Resource Sharing Network, RFC 715.

15. Day, J.D.

1973, "A Proposal for a File Access Protocol," RFC 520.

16. Day, J.D.

1976, "Cost and Response Time Models for Network Applications," Internal Modeling Memo #14, Center for Advanced Computation, University of Illinois at Urbana-Champaign.

17. Day, J.D.

1977, "Telnet Data Entry Terminal Option," RFC 731, NIC #40652.

18. Foley, James and Brownlee, Edward

1974, "A Model of Distributed Processing in Computer Networks with Application to Satellite Graphics," Proceedings of ICCC.

19. Grossman, G.R.

1977, The Host- to-Front-End Protocol, CAC Document #219, Center for Advanced Computation, University of Illinois at Urbana-Champaign.

20. Mock, Tovas and Postel, Jon

1974, "Telnet Extended ASCII Option," RFC 698, NIC #32964.

21. Neigus, N.

1973, "The File Transfer Protocol," RFC 542.

22. Neigus, N. ; Pogran, K. ; and Postel, J.

1974, "A New Schema for FTP Reply Codes," RFC 640.

23. Postel, Jon

1973, "Telnet Protocol Specification," NIC #15372.

24. Postel, Jon

1973, "Telnet Option Specifications," NIC #15373.

25. Postel, Jon

1973, "Telnet Binary Transmission Option," NIC #15389.

26. Postel, Jon

1973, "Telnet Echo Option," NIC #15390.

27. Postel, Jon

1973, "Telnet Reconnection Option," NIC #15391.

28. Postel, Jon

1973, "Telnet Suppress Go Ahead Option," NIC #15392.

29. Postel, Jon

1973, "Telnet Status Option," NIC #16237.

58

30. Postel, Jon

1973, "Telnet Timing Mark Option," NIC #16238.

31. Postel, Jon

1973, "Telnet Extended-Option-List Option," NIC 16239.

32. Schicker, Peter; Duenki, Ann; and Baechi, W.

1975, "Bulk Transfer Function," INWG Protocol #31, EIN/ZHR/75/20.

33. Sproull, Robert F. and Thomas, Elaine L.

1974, "A Network Graphics Protocol," NIC #24308.

34. Stone, Harold

1977, "Multiprocessor Scheduling with the Aid of Network Flow Diagrams," IEEE Transactions on Software Engineering, Volume SE-3, No. 1.

35. Van Dam, Andries; Stabler, George M. ; and Harrington, Richard J.

1974, "Intelligent Satellites for Satellite Graphics," Proceedings of IEEE, Volume 62, No. 4.

36. Walden, David C.

1973, "Telnet Output Line Width Option," NIC #20196.

37. Walden, David C.

1973, "Telnet Output Page Size Option," NIC #20197.

59

Appendix 1

Program Access Process -to-Service Protocol Specification

CAC Technical Memorandum #81

by

John Day Steve Holmgren

61

Program Access

Process-to-Service Protocol

Specification

I. Service Code Number

II. Description of the Service

This document is a process-to-service protocol specification as defined in the Host-to-Front-End Protocol (HFP) Specification [ARPANET RFC 710]. It describes a process-to- service protocol for the execution of, or attachment to, arbitrary programs in the front end. The intent is to provide a general mechanism that will allow the host to access terminal- oriented front-end services. Examples of such services are User Telnet and teleconferencing.

This protocol allows terminals directly connected to the host to appear to the front end as if they were local front-end terminals. This strategy for handling host terminals has two advantages. Users are confronted with a common command language and services can be almost completely offloaded to the front end.

The protocol described here assumes that the program access service itself is completely offloaded to the front end. The only software remaining in the host is a relay process that passes properly formatted data between a host terminal or process and the program-access-service module in the front end. HFP

63

DRAFT

6/23/77

PA PSP Description of the Service

Messages are used for this data transmission.

For some implementations, the relay process software must

1 . ensure that security infornation is properly transmitted in BEGIN Commands (this may require querying the user for usercode and password);

2. properly handle half-duplex terminals (via the GO AHEAD facility);

3. transform interrupt characters into EXECUTE Commands;

M . flush data when instructed to do so;

5. accept data from terminals with differing character sets and properly transform them for transmission to the front end;

6. divert binary or character data to auxiliary devices; and

7. modify terminal parameters that control echoing.

The more items from this list that a PA-PSP host implementation must support, the less the savings to be gained by using this PSP. Since most implementations will give the user of this protocol access to the front end at the command language level, it will be inappropiate for use by processes.

The only support that the relay process requires is the ability to access the front end and to be accessed by host terminals or processes. Some systems may experience difficulty providing one interface that can handle both.

The program-access-service module must have the ability to attach to and to execute user-level programs within the front

64

b/23/77 PA PSP

Description of the Service

end and pass data to and from the user-level programs and the channel protocol module (CPM).

The program access process-to-service protocol uses HFP Messages to carry information between the relay process and the service module. A brief summary of the function of specific Message types follows.

BEGIN Command

from the process

requests access to a program in the front end.

3EGIN Response

from the service module

a) confirms that access has been accomplished or

b) reports the reason for failure.

END Command

from either side

requests that communication with the other side be terminated.

END Response

from either side

acknowledges that an END Command has been received and that the proper action has been taken .

TRANSMIT Command

from either side

transfers data to the other side.

TRANSMIT Response

from either side

acknowledges receipt of data from the other side.

EXECUTE Command and Response

are not used in this protocol.

The details of the use of HFP Messages follow.

65

DRAFT

6/23/77

PA PSP BEGIN Command

III? ftegsa^e Use

III A. BEGIN Command

II? A 1 . When sent

When a terminal or process in the host wishes to execute a front-end program, which may be a service in its own right, it will start up or attach to a host relay process. The relay process will then send a BEGIN Command to the program-access-service module in the front end. The TEXT of the BEGIN Command will contain a front-end command line formatted to installation standards. The command line will specify the front-end program to be executed and will provide any required parameters.

Ill A 2. Action on receipt

When a BEGIN Command is received by the program- access-service module in the front end, the module will attempt to execute or attach to the specified program. Once the service module has completed a connection to the program, it should issue a BEGIN Response to the host relay process. Subsequent communications on this channel from the relay process to the service will be directed to the program .

Ill A 3. TEXT field syntax

Security: VARIAELE(?) Command: VARIABLE(?)

Ill A 4. TEXT fjgld semantics

III A 4 a. Security

This field can be used by the front end to verify the validity of the user and his access to the program. The actual contents of this field are installation dependent. If the security field is empty, the effect is to connect the user to the front end at the pre-login stage. The Command field will be ignored in this case. Note: At this writing, not enough is known about security in networks and front ends to make any statement about the utility of validation at this point in the system. This field is included in case some systems require validation at this point.

Ill A 4 b. Command

For most front ends the Program Access PSP

provides general access to the front end command

language or a set of procedures callable by host users.

The command field will usually contain a string of

66

DRAFT

8/23/77

PA PSP BEGIN Command

characters to invoke that with any parameters in would be typed by a user.

nmand or procedure along form similar to the way it

Example:

run telnet

If the Command field is empty but the Security field is not, then the effect is to log the user in to the front end.

67

DRAFT

6/23/77

PA PSP BEGIN Response

III E. BEGIN Response

III b 1 . When seat

The BEGIN Response is generated by the service when a determination has been made as to the success or failure of the BEGIN Command. The Status field in the HEADER will indicate the success or failure.

When the process receives a BEGIN Response indicating a successful connection, it may proceed to send and receive data on the connection. When the process receives a BEGIN Response indicating an unsuccessful connection, it should perform the appropriate error recovery.

Ill, B 1. TEXT field syptax

Result:

FIXED(3)

XII B 4. TEXT field semantics

III B k a. Result

If the BEGIN Command was successful, this field will have a value of zero. A non-zero value indicates failure. The particular value indicates the reason for failure. The Result values and their meanings are:

0 Success

1 Access to program denied

2 Illegal Command field format

3 Program not found

k Front end terminating service

68

DRAFT

8/23/77

PA PSP END Command

III C 1. When sent

The END Command may be issued by the program-access- service module or the host relay process. If sent by the relay process, it usually indicates that the user has requested that the front-end program be terminated and the communication path be destroyed. The service may send an END Command because of events external to the operation of the relay process and the program or in response to the termination of the front-end program.

Ill C 2. Action on receipt

When the relay process receives an END Command, it should acknowledge it promptly with an END Response and clean up any data structures associated with the communication path. When the program-access-service module receives an END Command, it should generate an END Response and terminate the process associated with the Channel.

Ill C 1, TEXT field syntax

Cause: FIXED(3)

III C H. TEXT field semantics

III C 3 ?, Cause

This field indicates the reason for termination of

communi cation . meanings are:

0 1 2 3 k

The values of the field and their

Normal completion of the proeram

Program failure

User requested termination

Unknown

Front end terminating service

69

DRAFT

6/23/77

PA PSP END Response

III Pt ENP Response HI D 1, When sept

The END Response is sent either by the relay process or by the program-access-service module to acknowledge that an END Command has been received and the proper action taken.

HI D 2. Action on receipt

When an END Response is received, all dialogue over the associated logical channel is complete. All Commands over the logical channel will be ignored until the receipt of another BEGIN Command referencing that channel.

Ill D 3. TEXT field syntax

The TEXT field in the END Response is not used in this process-to-service protocol. The contents of the field will be ignored.

70

8/23/77

PA PSP TRANSMIT Command

III E. TRANSMIT Command

The description below assumes that a Go-Ahead facility is needed for the host relay process to handle half-duplex terminals. Not all installations will need this facility. Those that do not should set the Control field in the TEXT to zero and ignore the specification of how this field is interpreted .

Ill 6 1. When sept

The TRANSMIT Command may be sent by either side to transfer data. Data may be sent only when the communication path is ESTABLISHED and the flow control discipline permits. (See the HFP specification.)

HLE iLi AgtlPP on receipt

III E 2 a* Pv the relay process

When the relay process receives a TRANSMIT Command, it will relay the contents of the Data field to the host process or terminal. If the Go-Ahead bit is set to 0 for data going to the host, then the host may assume that the front end has completed sending and the host may now send any data it has. A Go-Ahead bit set to 1 indicates that the sender has more data to send and the receiver must wait.

Ill E 2 b. By the program-access-?ervlce module

When the service module receives a TRANSMIT Command, it will relay the contents of the Data field to the program. If the Go-Ahead bit is set to 0 for data going to the front end, then the front end may assume the host has completed sending and the front end may send any data it has. A Go-Ahead bit set to 1 indicates that the sender has more data to send and the receiver must wait.

Ill e Li text field syntax

Control: FIXED(1)

Go-Ahead/More Data Data: VARIABLE(?)

Ill E k. TEXT field semantics

III E 4 a. Control

The single bit in this field indicates whether or not the sender of the TRANSMIT Command has completed sending data. It is used to facilitate handling half- duplex terminals connected to the relay process. The

71

6/23/77

PA PSP TRANSMIT Command

receiver of a TRANSMIT Command with the Go-Ahead bit set to 0 (default) should assume the sender has completed sending data and that the receiver is now free to send any data that it has. If the bit is set to 1 the sender has more data to send and the receiver should not send data at this time.

72

DRAFT

8/23/77

PA PSP TRANSMIT Response

III F. TRANSMIT Response

The TRANSMIT Response is used as described in the HFP specification .

73

DRAFT

6/23/77

PA PSP SIGNAL Command

III G. SIGNAL Command

The SIGNAL Command is not used in the process-to- service protocol. SIGNAL Commands may be generated by process or service to request that the CPM carry out the appropriate potion on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel (HFP) level.

74

DRAFT

8/23/77

PA PSP SIGNAL Response

III H. SIGNAL Response

The SIGNAL Response is not used by either process or service.

75

DRAFT 8/23/77 PA PSP

EXECUTE Command/Response

HI I. EXgCVTE Command,

The EXECUTE Command is not used in this protocol. If an EXECUTE Command is received, an EXECUTE Response with Status equals 67 (Unused Command) should be sent.

Ill J. EXECUTE Response

The EXECUTE Response is not used in this protocol except as noted above.

76

DRAFT

6/23/77

PA PSP Scenario

IV. Scenario

Let us consider how the Program Access PSP would be used to offload User Telnet. Let us assume that the host relay process does not have to implement any of the special functions noted in Section II. The user at a terminal connected to the host types:

"connect ILL-CAC"

The connect command starts the relay process and hands it the parameter ILL-CAC. The relay process then generates a BEGIN Command :

<BEGINXC>telnet ILL-CAC

(This installation does not use the security field.) The BEGIN Command is passed to the front end. The Program Access Service in the front end invokes the command line present in the TEXT field and sends a BEGIN Response to the host:

<EEGlNXCXresult = success>

The User Telnet program is started and it attempts to open a connection to ILL-NTS, and sends a message to the user which the Program Access Service passes on to the host:

<TRANSMITXOAttempting connection to ILL-NTS

At this point the User Telnet program thinks it is talkincr to a user local to the front end. The Program Access Service maintains this charade passing messages back and forth to the user connected to the host. From the point of view of the user he is directly connected to the front end.

77

Appendix 2

File Access

Process -to -Service

Protocol Specification

CAC Technical Memorandum #102

by John Day

79

File Access

Process-to-Service Protocol

Speci f icati on

T. Service Code Number 6

II. Description of the Service

This document is a process-to-service protocol specification as defined in the Host-to-Front-End Protocol (HFP) Specification [ARPANET RFC 710]. This protocol provides a general utility for file access between the host and the front end. This protocol is also used for offloading the data transfer portion of a network file transfer protocol (either user or server). This protocol also provides a general utility for file access between the host and the front end.

The file access process-to-service protocol differs from most others in that the distinction between the host side and the front-end side disappears. For this process-to-service protocol, one distinguishes between the side requesting service (the using side) and the side providing service (the serving side). No distinction is made as to which one is in the host and which in the front end. In fact, a file access module (FAM) may be constructed in such a way as to be both using and serving, depending on how each channel is established, (i.e., on who sends each BEGIN Command).

DRAFT

6/23/77

FA PSP Description of Service

This specification describes a general file access utility that allows a process in one system to open a file and read or write data to or from any point in that file. The protocol provides separate indices into the file for reading and writing. These are called the read pointer and the write pointer. Although the ability to address within a file makes restart markers superfluous, protocols that don't explicitly allow addressing may require their use. Since restart marker "bookkeeping" might be offloaded, a set of operations are provided for controlling it. Not all fields listed in the descriptions of message use will be used in every case. Exactly what fields are present in the various Commands will depend on the offloading application. Details of FTP offloading schemes using the file access process-to-service protocol are described in detail in CAC Document 230 [1].

The facilities required by this process-to-service protocol depend heavily on the particular use being made of it. The maximum requirements would be access to the file systems of both the host and the front end, and implementations of FTP, Telnet, and an NCP in the front end (in the ARPANET case). The minimum requirements for the ARPANET case would be an NCP in the front end.

The file access process-to-service protocol uses HFP Messages to carry information between a file access module in the host and a file access module in the front end. A brief summary of the function of specific Message types follows:

82

DRAFT 8/23/77 FA PSP

Description of Service

BEGIN Command

from the using file access module

requests that service be provided.

BEGIN Response

from the serving file access module

a) confirms the establishment of service, or

b) reports the reason for failure.

ENP Cofnand

from either file access module

requests the termination of service and indicates the conditions for termination.

ENP Response

from either file access module

acknowledges the termination of service.

TRANSMIT Command

from either file access module

carries data between the using and serving file access modules.

TRANSMIT Response

from either file access module

acknowledges the receipt of data.

EXECUTE Command

from the using file access module

requests of the serving file access module that

a) data transfer parameters be set;

b) a file be opened;

c) data be read from a file;

d) data be written to a file;

e) a read pointer position be set;

f) a write pointer position be set;

g) a network connection be opened;

from either file access module (depending on which is data source and which is data receiver)

a) sets a restart marker window width,

b) acknowledges a restart marker, or

c) aborts a transfer.

EXECUTE Response

from either file access module

a) acknowledges the completion of actions requested via an EXECUTE Command.

b) reports the reason for failure of an EXECUTE Command; or

c) reports on the status of the network connection.

DRAFT 8/23/77 FA PSP

Description of Service

III- Message Use

III A, PEQ1N Cpmmand

III A 1, When sent

A BEGIN Command is sent by the using file access module (UFAM) to the serving file access module (SFAM) to request that a channel be established for the transfer of one or more files between the host and the front end.

Ill A ?. Action on receipt

When a SFAM receives a BEGIN Command, it will evaluate its ability to satisfy the request specified by the parameters in the TEXT field and reply accordingly.

Ill A 3, TEXT field syptax

Security: VARIABLE(?)

File Parameters: COMPLEX*?)

Pathname: VARIABLE*?)

Direction: FIXED(2)

Position: FIXED( )

Size: FIXED( )

Record size: FIXED( )

Data Parameters: COMPLEX(M)

Type: FIXED(3)

Mode: FIXED(2)

Structure: FIXED(1)

Byte size: FIXED(8)

Connection Parameters: C0MPLEX(8)

Control-bits: FIXED(5)

Init/Listen

Socket/Channel

Duplex/Simplex

Relative/Absolute

Unattachable/Attachable

Host: FIXED(32)

Foreign Socket: FIXED(32)

Messages: FIXEDM6)

Bits: FIXED(32)

Local Socket: FIXED(32)

Timeout: FIXED(16)

Byte Size: FIXED(8)

III A k. TEXT field, semantics

Since the file access process-to-service protocol may be used in a variety of offloading schemes, the parameters of the BEGIN Command are quite extensive. They fall into four categories: Security, File Parameters, Data Transfer Parameters, and Connection Parameters. These groups of

84

DRAFT

8/23/77

FA PSP BEGIN Command

parameters will be present if the UFAM is remotely controlling the functions of validating the user, manipulating files, controlling the FTP Data Transfer Process, or establishing network connections, respectively.

HI A 4 a, security

This field can be used to validate the requestor's access privileges to the file or network resources. It is particularly important to limit access to network security objects such as local socket 1 . The substructure and content of this field are installation dependent .

NOTE: At this writing, not enough is known about security in networks and front ends to make any statement about the utility of validation at this point in the system. This field is included in case some systems require validation at this point.

Ill A M frt File Parameters

These parameters specify what file is to hn transferred, in what direction, where the transfer is to begin, and how long the file is. These parameters will be present if the UFAM is in the front end and the file is in the host, or vice versa.

Ill A M t> (1), Pathname

This field contains a locally recognizable file name for the file which is to be transferred into or out of the system in which the SFAM resides. If this then the pathname will be specified Note: It is an error to issue a the EXECUTE Command (see below) 1 pathname.

field is empty, at a later time. Read variant of before specifying

III A M b (2) . Direction

This field specifies the direction of the transfer. The values are:

1 data is transferred toward the SFAM (write)

2 data is transferred toward the UFAM (read)

3 data is transferred in both directions

The default value of this field is 3 (both).

Ill A H b H), PosiUpn

The contents of this field specify where within the file the transfer is to begin. This facility is

85

DRAFT

8/23/77

BEGIN

FA PSP Command

used for restarting transfers and randomly accessing files. The position pointer that is set is determined by the contents of the direction field. If the direction field specifies "both", then both the read and write pointers are set to the position indicated. The width of . this field and the units represented by it are installation parameters.

Ill A » b (iQt Size

The contents of this field are used to indicate the size of the file to be written into the file system in the SFAM's computer. Some systems require that space be allocated for a file before beginning the transfer. The width of the field and the units represented by it are installation parameters.

Ill A » b (5), Record 9Ue

The contents of this field specify the maximum record size of the file to be transferred. This field will only be present if such specification is required by the system and the file is record- structured. The width of the field and units represented by it are installation parameters.

HI A M ct patfr Transfer Parameters

For offloading schemes in which the UFAM must remotely control the FTP data transfer process, these parameters are used to specify how the data is expected to arrive from the network. It is assumed that the host and front end have agreed on what form data will be presented by each to the other.

Ill A » c (1), Type

This field indicates the type of data to be sent in accordance with the classifications of the ARPANET FTP. The values of the field and their meanings are:

0 ASCII - Nonprint

1 ASCII - Telnet

2 ASCII - Carriage Control (ASA)

4 EBCDIC - Nonprint

5 EBCDIC - Telnet

6 EBCDIC - Carriage Control (ASA)

7 Image

The default value of this Nonprint) .

field is zero (ASCII

86

8/23/77 FA PSP

BEGIN Command

III A H C (2). Mode

The contents of this field indicate the mode in which the data is transferred over the network in accordance with the categories used in the ARPANET FTP. The values of the field are:

0 Stream

1 Blocked

2 Compressed

The default value of the field is zero (Stream).

Ill A ** c H)t Structure

The contents of this field indicate the structure of the file to be transferred. The structures supported are those used by the ARPANET FTP. The values are:

0 File

1 Record

The default value of the field is zero (File structure ) .

Ill A ^ g m, Evte site

This field contains the byte size for data transfer on the connection. If this field contains zero (default), the byte size will be 8 bits.

Ill A M d. Connection parameter?

These parameters are used for offloading schemes in which the UFAM must remotely specify the nature of the network connection. For example, if the only parts of FTP that are offloaded are Telnet and the Data Transfer Process, the UFAM in the host would have to be able to specify the parameters for opening the data connection.

Ill A 4 d (1). Control. bits

The bits in this field govern the kind of

connection to be established, the method of its

establishment, and the interpretation of the parameters.

Ill A l.d (1) (a), InU/Ugten

When this bit is zero (default), the connection is to be actively initiated by the NCP. When this bit is one, the connection is to be

87

DRAFT 8/23/77 FA PSP

BEGIN Command

passively "listened" for by the NCP. Ill A » 4 (1) (t>)t SocKet/channel

If this bit is zero, the logical channel from the UFAM is to be established to a new ARPANET connection. If this bit is one, the logical channel from the UFAM is to be attached to an already existing HFP channel (e.g., a channel already established to the host-host service module and therefore providing access to an existing network connection.) The default value is zero.

Ill k k * (1) (g), Duplex/Simplex

When this bit is zero (default), the connection is to be full duplex and is therefore to consist of two ARPANET connections (one in each direction). When this bit is one, the connection is to be unidirectional according to the gender of the socket numbers supplied in the Foreign Socket and/or Local Socket fields. The use of this bit in specifying connection sockets is detailed in table 1.

Ill 4 * <M1) (4). ReUUve/AbspJ.ute

This field affects the value of the socket for the local connection. Sep III A M d (6) for details .

Ill A 4 d (1) (e). Unattachable/Attachable

When this bit is one, the SFAM is requested to make the logical channel available for attachment by other service modules within the front end (such as a data transformation service). If this bit is zero (default), the SFAM is not requested to make the logical channel available for attachment within the front end.

Ill A 4 d (2), Host

This field specifies the network host with which the connection is to be made. A value of zero in this field indicates that the connection may be established with any host on the network. A zero value is valid only if the Init/Listen bit is one (Listen) .

The Host field is parsed as;

8/23/77 FA PSP

BEGIN Command

Network: FIXED(6) IMP: FIXEDM6)

Host-at-IMP: FIXED(8)

III A M d M). Foreign Socket

This field is used as follows to construct the effective foreign socket (e.f.s.) for making the connection .

Case 1. Foreign Socket field = zero.

Init/Listen bit = one. Foreign host

chooses the e.f.s. Case 2. Foreign Socket field = zero. Init/Listen

bit = zero. The e.f.s. is one. Case 3- Foreign Socket field i zero. The e.f.s.

is the contents of the Foreign Socket

field.

The default value of this field is zero. The relationship between the e.f.s. and the foreign sockets for the connection is defined in table 1.

HI A 1 d m « Messages

This field and the Bits field allow the UFAM to indicate to the SFAM the flow rate desirable on the data connection. The SFAM may use this information in any way its implement ors deem desirable.

This field contains the number of ARPANET Host- Host messages the UFAM suggests be allocated on the data connection. If the value of this field is zero (default), the SFAM chooses the number of messages on its own. In some cases use of this field must be coordinated with similar information provided through other protocols (e.g., User and Server FTP process- to-service protocols).

Ill A H 4 (5), Pita

This field contains the number of bits the UFAM suggests be allocated for the data connection. If the value of this field is zero (default), the SFAM chooses the number of bits on its own. In some cases use of this field must be coordinated with similar information provided through other protocols (e.g., User and Server FTP process-to-service protocols).

Ill A ** d (fr)t local Socket

This field is used as follows to construct the effective local sooket (e.l.s.) for making the connection .

89

6/23/77

FA PSP BEGIN Command

Case 1 .

Case 2.

Case 3-

Relative/Absolut Socket field i contents of th HEADER will be low-order 20 bit field to form th Relative/Absolut field = zero, will choose a nu bits are equal t HEADER.

Relative/Absolut the effective the contents of

e bit = zero,

zero. In this c

e Group field

concatenated

of the Local

e . 1 . s .

= zero, Local In this case, mber whose high o the Group fiel

e = one . In th local socket is the Local Socket

Local

ase, the

in the

with the

Socket

Socket the SFAM order 12 d in the

is case

equal to

field.

The relationship between the e.l.s. and the local sockets for the connection is defined in table 1.

Ill A 4 d (7). Timeout

This field contains the maximum length of time, in seconds, that the SFAM is to attempt to establish the connection (in the absence of an error or exceptional condition). If the SFAM has been unable to establish the connection within this time period, it is to abandon the attempt. If this field contains zero (default), the time period is to be infinite.

Ill A k d ($). Byte Size

This field contains the byte size for data transfer on the connection. If this field contains zero (default), the byte size will be 8 bits.

90

DRAFT

8/23/77

FA PSP BEGIN Command

Table 1

Control Bit

Foreign Sockets for the connection

Local Sockets for the connection

Duplex

e. f . s . and e. f . a . 1

e. 1 . s . and e. 1 . s . 1

Simplex

e.f .a.

e.l.s.

91

DRAFT

6/23/77

FA PSP BEGIN Response

III B. BEGIN Pcaponae III B 1, When sent

A BEGIN Response is sent by the SFAM to report the outcome of an attempt to access a file or establish a transfer requested by a BEGIN Command. The Status field in the HEADER will indicate whether the attempt was successful or unsuccessful.

Ill P 2t Action on receipt

When the UFAM receives a BEGIN Response indicating a successful connection, it may proceed to use the channel. When the UFAM receives a BEGIN Response indicating an unsuccessful connection, it should perform the appropriate error recovery.

Ill B 1. TEXT field syntax

Security: File Results: Data Results: Connection Results:

Connection State:

Host:

Foreign Socket:

Messages:

Bits:

Local Socket:

VARIABLE*?)

FIXED(4)

FIXED(5)

C0MPLEX(8) FIXED(M) FIXED(32) FIXED(32) FIXED(16) FIXED(32) FIXED(32)

III B U. TEXT field semantics III B * at Security

This field may be used to validate the access privileges of the user. The default value of the field is empty. Note: At this time, very little work has been done on the organization of security for networks or these kinds of systems. It is not clear where access control should be placed. This field has been included in case some systems require validation at this point.

Ill B 4 b, File results

If the BEGIN Command was not successful (as indicated by the Status field in the HEADER), this field will contain an encoded identification of any problems with the File Parameters. The values are:

1 File not found

2 File name not allowed

3 File too large

92

8/23/77

FA PSP BEGIN Response

M File not presently available

5 Record size too long

6 Position information not valid

7 Direction not supported

6 Illegal parameter combination

XII B 4 c . Data t r answer results

If the EEGIN was not successful (a? indicated bv the Status field of the HEADER), this field will contain an encoded identification of any errors in the Data Transfer Parameters. The values are:

1 Improper Type

2 Improper Mode

H Improper Structure

8 Byte size not supported

16 Illegal parameter combination

If there was more than one error, the associated codes may be added to form the value of the field. This addition amounts to just setting the proper bits. If the reason is "illegal parameter combination" (16), the SFAM should also try to indicate the parameters in conflict by setting the appropriate bits.

Ill B H Connection results

If no connection was associated with Command, these fields will not be present.

Ill B *♦ d (Pt connection-state

the BEGIN

If the connection attempt was successful (as indicated by the Status field in the HEADER), this field will contain the value 1 which will be compatible with the "open" state value defined for this field in the TEXT of the EXECUTE Response (See III K H g (1).)

If the connection attempt was unsuccessful, this field contains an encoded reason for the failure. The codes are:

0 Illegal control bit combination

1 Invalid local socket

2 Invalid host

3 Byte size not supported by front end

4 Byte size not supported by foreign

host

5 Connection attempt timeout

6 Network not available

7 Foreign host dead

93

DRAFT

8/23/77

FA PSP BEGIN Response

8 Connection refused

9 Front end terminating service 10 Improper access

III P * d (g)T Host

If the connection attempt was successful, this field contains the ARPANET host address of the host to which the connection was established (see III A 4 d (2)).

Ill P 1 d (1). Foreign Socket

If the connection attempt was successful, this field contains the socket number at the foreign host to which the connection was established.

Ill B U d (it). Messages and Bits

If the connection attempt was successful, these fields contain the flow control parameters for the connection at the time the BEGIN Response was generated.

Ill B 4 d (5) . Local Socket

If the connection attempt was successful, this field contains the local socket number for the connection .

Ill B H d (6). Bvte Size

If the connection attempt was successful, this field contains the byte size, in bits, for the connecti on .

94

b/23/77

FA PSP END Command

III C. END Command III C 1. When gent

An END Command is sent by either file access module to terminate a session on a particular channel.

Ill C 2, ActiPP UPpn receipt

When a file access module receives an END Command, it should finish writing any data it has in hand onto the file or network connection (unless Flush away (bit 1) is set in the Control field of the HEADER), close the file or network connection, and clean up whatever loose ends there may be. When all is in order (files and connections closed, etc.), the FAM should send an END Response.

Ill c 3, TEXT field syntax

Cause: FIXED(3)

III C L. TEXT field semantics

This field contains an encoded reason for sending the END Command. The codes are:

0 Normal completion (default)

1 Network/process failure

2 Foreign host failure

3 User requested termination

4 Front end terminating service

5 Improper access

DRAFT

6/23/77

FA PSP END Response

III P, END Response III P 1, When gent

The END response is sent by either FAM to acknowledge the receipt of an END Command and to complete the termination of the associated logical channel.

Ill P Action on receipt

When a FAM receives the END Response, it should consider the logical channel to be terminated.

Ill P 3. TEXT field syntax

The TEXT field in the END Response is not used in this protocol.

96

DRAFT

fe/23/77

FA PSP TRANSMIT Command

HI E. TRANSMIT Command,

III g 1. When sent

III E 1 a. By the FAM in the host

The TRANSMIT Command is sent by the FAM in the host to pass data and restart markers to the FAM in the front end for transmission over the network to the foreign host, or to the file system in the front end.

Ill E 1 b. gy the FAM in the front end

The TRANSMIT Command is sent by the FAM in the front end to pass data from the network or the front- end's file system to the FAM in the host.

Ill E 2. Action on receipt

III E 2 a. By the FAM in the host

When the FAM in the host receives a TRANSMIT Command, it will treat the contents of the Data field as data to be processed as directed by the associated EXECUTE Command.

Ill E 2 b. By the FAM In the frpnt ep d

When the FAM in the front end receives a TRANSMIT Command, it will treat the contents of the Data field as data to be transmitted over the network, or to the local file system.

Ill E 3. TEXT field syntax

Special Conditions: FIXED(2)

No-EOT/EOT

No-EOF/EOF Marker: VARIABLE*?)

Data: VARIABLE*?)

Ill E 4. TgXT field semantics

HI E 4 a. Special Conditions

This field indicates special conditions relevant to the transmission of the data.

Ill EM a M ) . No-EOT/EOT

When this bit is zero (default), there is more data to follow in subsequent TRANSMIT Commands. When this bit is one, it indicates that the data in this

97

8/23/77

FA PSP TRANSMIT Command

TRANSMIT Command completes a read or write operation.

Ill 6 * 3 (2), NP-EQF/BQF

When this bit is zero (default), no end of file condition exists. When this bit is one, it indicates that the data in this TRANSMIT Command completes the file. Note: If this bit is set, the No-EOT/EOT bit will be set also.

Ill E » b. Marker

This field contains the restart marker. Since the restart marker must be at the front of the message, the FAM will have to place data into messages in such a way that each marker falls at the beginning of a new message. The form of the restart marker is left to the decision of the installation. This field can also be used to synchronize read and write EXECUTE Commands with the data they refer to.

Ill E 4 c. Data

This field contains the data to be passed over the channel .

98

DRAFT 8/23/77 FA PSP

TRANSMIT Response

HI XraaaiU Raaponae

The TRANSMIT Response is used as described in the HFP specification.

8/23/77

FA PSP SIGNAL Command

III Gt SIONAL Command

The SIGNAL Command is net used in the process-to-service protocol. SIGNAL Commands may be generated by process or service to request that the CPM carry out the appropriate action on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel (HFP) level.

DRAFT 8/23/77 FA PSP

SIGNAL Response

III H. SIGNAL Rcaponae

The SIGNAL Response is not used by either process or service.

101

DRAFT 6/23/77 FA PSP

EXECUTE Command

HI J. EXECUTE Command III J K When sent

III J 1 a. Bv the UFAM

The UFAM sends an EXECUTE Command to request that the SFAM

(1) set Data Transfer Parameters,

(2) open a file ,

(3) read from a file,

(4) write to a file

(5) move the read pointer in the file,

(6) move the write pointer,

(7) open a network connection, or

(8) return a description of the status of the connection.

Ill J 1 b. Bv UFAM or the SFAM

Either FAM may send EXECUTE Commands to the other

(1) to set the marker window width,

(2) to abort a transfer, or

(3) to acknowledge a marker

Which FAM may send these commands depends upon which one is the data source and which the data receiver. The data source sets the marker window width. Only the receiver sends marker acknovl pd^emen t s . Either side may abort the transfer.

Ill J 2. Action upon receipt

When the SFAM or UFAM receives an EXECUTE Command it should decode it and attempt to perform the action indicated.

Ill J 3, TEXT field syntax

Code: FIXED(4)

Parameters: VARIABLE(?)

Ill J 4. TEXT field semantics

III J 4 a. Code

This field contains an encoding of the type of request. The codes are:

0 Set Data Transfer Parameters

1 Open

102

8/23/77

FA PSP EXECUTE Command

2 Read

3 Write

4 Set read position

5 Set write position

6 Abort

7 Open network connection

8 Set marker window

9 Return connection status 10 Marker acknowledgement

HI J 1 b. Parameter?

This field contains any parameters required to perform the request indicated in the Code field. A discussion of these parameters follows.

Ill J » p (D , §et Pata Transfer Parameters

For offloading schemes where the UFAM must remotely control the FTP data transfer process, these parameters are used to specify how the data is to be formatted for transmission over the network. It is assumed that the host and front end have agreed on the form in which data will be presented to each other.

Ill J H b (1) (a), Parameter field, syntax

Type: Mode:

Structure : Byte Size:

FIXED(3) FIXED(2) FIXED( 1 ) FIXED(8)

III J *♦ P (1) (b), Parameter field semantics

For detailed semantics of these fields see sections III A 4 c (1) - (4) above.

Ill J 4 b (2). Open

These parameters specify what file is to be transferred in what direction, the size of the file, and the record size, if applicable. The Security field is provided for file passwords or simply to revalidate the user's access privileges.

Ill J 1 b (2) (a). Parameter field syntax

Security: Pathname : Direction : Position : Size:

VARIABLE*?) VARIABLE*? ) FIXED(2) FIXEDC ) FIXED( )

103

DRAFT 6/23/77 FA PSP

EXECUTE Command

Record Size: FIXED( )

III J 4 b (2) (b). Parameter field semantics

For detailed semantics see sections III A 4 a and III A 4 b. Note: Files are closed implicitly by sending an Open request for a new file.

Ill J 4 b H). Read

This request is sent by the UFAM to the SFAM to request that the amount of data specified by the parameter be transferred from the file. The read begins at the present position of the read pointer. When the operation is complete, the pointer is positioned one unit beyond the last unit of information read; i.e., at the next unit of information to be read.

Ill J 4 b (3) (a). Parameter field syntax

Amount: FIXED( ) Marker: VARIABLE( )

III J 4 b (3) (b). Parameter field semantics

The contents of the Amount field specifies the amount of data to be read from the file. The size of the field and the units represented by it are installation parameters.

The Marker field is used to synchronize the request with the data transferred by the TRANSMIT Command. This Marker and the Marker in the first TRANSMIT Command carrying data referred to by this Command should be the same.

Ill J Mb (4) . Write

This request is sent by the UFAM to the SFAM to request that the amount of data specified by the parameter be transferred to the file. The write begins at the present position of the write pointer. When the operation is complete, the write pointer is positioned one unit beyond the last unit written; i.e. at the next unit of information to be written.

Ill J 4 b (4) (a). Parameter field syntax

Amount: FIXED( ) Marker: VARIABLE* )

104

8/23/77 FA PSP

EXECUTE Command

III J 4 b (k) (b). Parameter field semantics

The contents of the Amount field specifies

the amount of data to be written to the file. The

size of the field and the units specified by it are installation parameters.

The Marker field is used to synchronize the request with the data transferred by the TRANSMIT Command. This Marker and the Marker in the first TRANSMIT Command carrying data referred to by this Command should be the same.

Ill J ^ b (5)f Set Read, Pointer

This request is sent by the UFAM to the SFAM to request that the read pointer be set to the value indicated by the parameter. The next Read request will begin at this point.

Ill J 4 P (5) (a). Parameter Field Syptgx

Position: FIXED( )

XII J ^ P (5) (b). Parameter Field Semantics

The contents of this field indicate the new position of the read pointer. The size and units of the field are installation parameters. It is recommended that special values be provided to denote the beginning and end of the file.

Ill J 4 b (6). Set Write Pointer

This request is sent by the UFAM to the SFAM to request that the write pointer be set to the value indicated by the parameter. The next Write request will begin at this point.

Ill v* 4 b (v) (a), Parameter field syntax

Position: FIXED( )

III J » b (6) (b)t Parameter fjeld semantics

The contents of this field indicate the new position of the write pointer. The size and units of the field are installation parameters. It is recommended that special values be provided to denote the beginning and end of the file.

Ill J M b (7). Abort

105

DRAFT

8/23/77

FA PSP EXECUTE Command

This request is sent by the receiving file access module to request that the current transfer of data be aborted. The sending FAM should immediately stop sending and await further commands.

Ill J 4 b (6). Open Network Connection

This request is sent by the UFAM to the SFAM to request that a network connection be opened according to the parameters.

Ill J 4 b (6) (a). _ Pa ram eter field sy n t a x

Connection parameters:

Con t rol-bit s : Init/Listen Socket/Channel Duplex/Simplex Relative/Absolute Unattachable/Attachable

Host:

Foreign Socket:

Me ssages :

Bits:

Local Socket:

Timeout :

Byte Size:

COMPLEX ( b) FIXED(5)

FIXEDC32) FIXED(32) FIXED( 16) FIXED(32) FIXED(32) FIXED(16) FIXED(o)

III J 4 b (6) (b). Parameter field semantics

For detailed semantics, see section III A 4 d.

Ill tl 4 b (9). Set Marker Window

This request is sent by the sender of the data to set the width of the restart marker window. In protocols that use restart markers, this request is used to indicate how many markers can be sent without receiving a Marker Acknowledgement. The marker window should be set by the FAM sending the data. (Note: the use of the marker window mechanism is optional. )

III J * b (9) (a). Parameter field syntax

Window Width: FIXED( )

III J 4 b (9) (b). Parameter field semantics

The contents of this field indicate the width of the marker window. The size of this field and its units are installation parameters.

106

6/23/77

FA PSP EXECUTE Command

III J H b (IP), Return Connection Status

No additional parameters need for this request.

to be specified

III il—i-b (i1)t Marker Acknowledgement

This request is sent by the receiver of the data to inform the sender that all data sent before a specified marker have been written on the file. The receiver of this request should advance the left edge of the marker window to the position indicated by the parameter. (Acknowledgement of several markers is allowed . )

III J 1 b (11) (a), Parameter field, syntax

Marker: FIXED( )

III J ^ b (11) (b). Parameter fjeld semantics

This field contains the marker beinc; acknowledged. If several markers are being acknowledged, this field contains the last marker in the sequence. The size of the field and the form of the restart markers are installation parameters.

107

DRAFT

8/23/77

FA PSP EXECUTE Response

III Kt EXECUTE Response ill k 1, When sent

A file access module sends an EXECUTE Response when

a) it has completed the operation requested by an EXECUTE Command,

b) it has received an EXECUTE Command whose TEXT is in error, or

c) report on the status of the network connection.

Ill K 2. AQtjon on receipt

When a FAM receives an EXECUTE Response, it should examine the TEXT to see whether the Response indicates an error. If no error is indicated, it may consider that the action requested by the previous EXECUTE Command was successful. If an error is indicated, appropriate error recovery action should be initiated. This action is idiosyncratic to the process.

Ill y 3. TEXT field syntax

Misc. -Result :

FIXED(M)

File Results:

FIXED(M)

Data Transfer Results:

FIXED(5)

Marker Results:

FIXED(3)

Ref-code:

FIXED(iJ)

Marker :

VARIABLES)

Connection Results:

C0MPLEX(8)

Connection State

FIXED(M)

Host

FIXED(32)

Foreign Socket

FIXED(32)

Messages

FIXED( 16)

Bits

FIXED(32)

Local Socket

FIXED(32)

III K M. TEXT field semantics

III k » a. Misc, -Result

This field contains an encoding of the result of the request (in a previous EXECUTE Command) to which the EXECUTE Response is a reply. The codes are:

1 Success

2 Illegal code in request 11 TEXT too short

8 Illegal parameter combination

HI K 4 b, File Resylts

This field contains an encoding of errors in the

108

8/23/77 FA PSP

EXECUTE Response

file parameters. The default value is zero (no errors). The codes are:

0 Success

1 File not found

2 File name not allowed

3 File not presently available

4 Size too large

5 Record size too long

6 Position not valid

7 Direction not valid

III K 4 ct Pata Transfer Results

This field contains an encoding of any errors in the Data Transfer Parameters. The codes are:

1 Improper type

2 Improper mode

4 Improper structure

8 Byte size not supported

16 Illegal parameter combination

III Md, Marker Result?

This field contains an encoding of any errors resulting from the handling of restart markers. The codes are:

0 Success

1 Marker window too wide

2 Marker window too narrow

3 Illegal marker

4 Marker outside window

III K t et Ref-code

This field contains the same value as the Code field of the TEXT of the EXECUTE Command to which the EXECUTE Response is a reply.

Ill Pf, Marker

The Marker field is used to identify the EXECUTE Command for which this is the Response. This field should match the Marker field in the EXECUTE Command.

Ill K 4 g, Connection Results

This field is used in replies to Open Network Connection and Return Connection Status requests. It has the same meaning as its identically named and formatted counterpart in the TEXT of the BEGIN

109

6/23/77 FA PSP

EXECUTE Response

Response, with the following exception:

III K R (1)t Connection-state

When the Response is to a Return Connection

Status request, this field indicates the present state of the connection. The possible values of

this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

110

6/23/77 FA PSP

Description of the File Access PSP

IV. Description of the File Access PSP

Basic Operation . Although the primary purpose of the File Access PSP is to facilitate offloading FTP functions from a host, it serves the more general purpose of providing the host or front end access to the other machine's file system. This access is controlled by the liFAM. The UFAM first sends a BEGIN Command to the SFAM to instruct it to establish a session, to validate or identify the user, and to prepare for access to a particular file or network port. Once everything is in readiness data transfer may commence with the UFAM issuing reads and writes and transmitting data.

The File Access Process-t o-Service Protocol associates a read pointer and a write pointer with an open file. The read and write pointers indicate the location where the next read or write operation will begin. After the read or write, the respective pointer is left pointing after the last unit of information read or written. Since the level of file addressing varies considerably from host to host the File Access PSP does not define the units represented by the read and write pointers. Implementations should choose units that allow efficient addressing and information transfer. Implementors should also provide a mechanise for th J UFAM to specify the beginning or end of a file without actually knowing the address of the beginning or end.

When the transfer is complete, the UFAM may open another

8/23/77 FA PSP

Description of the File Access PSP

file and transfer data to or from it. When the UFAM has finished its task it closes the channel by sending an END Command .

Coordination of Commands and data . In the FA- PSP, the operations to be performed (read, write, open, etc.) are transferred by TRANSMIT Commands. When reads and writes are used to access the file randomly, some way must be provided to match operations with their data, since EXECUTE Commands and Responses are sent out of band with TRANSMIT Commands.

Two methods may be used. The implementations in the host and front end may be designed so that an EXECUTE Command cannot be sent until the EXECUTE Response from the previous EXECUTE Command has been received. The SFAM would then withhold the EXECUTE Response until it had completed the operation. This method, however, does not allow overlapping requests and could significantly cut down the bandwidth. Alternatively, the Marker fields in the read and write EXECUTE Commands and in the TRANSMIT Commands can be used to tag the operations and the corresponding data. fey this device the SFAM can determine what it is to do with the data by matching the marker in the EXECUTE Command with the data in the TRANSMIT Command. Similarly the UFAM can determine what operations have completed by matching the Marker field in an EXECUTE Response with the Markers for outstanding EXECUTE Commands.

Use of markers for restart. File Transfer Protocols

112

6/23/77 FA PSP

Description of the File Access PSP

structured similarly to the File Access PSP do not require an explicit restart mechanism for transfers of complete files. If the host can determine the length of the file and an explicit address for the end of the file, then a restart can be accomplished by determining the address of the last data unit received and setting read and/or write pointers accordingly for the transfer. Since many FTP'S do not provide the ability to address a file, the File Access PSP supports a fairly general restart mechanism that should be capable of encompassing most restart facilities found in FTP'S.

There are two major aspects to this restart facility: 1) the use of markers associated with the data, and 2) a restart marker window (RMW). The protocol allows markers to be placed in the TRANSMIT Command with the data. When the data has been written on the file so that a system crash will not cause it to be lost, the FAM controlling the data sends an EXECUTE Command to the FAM controlling restart to acknowledge the marker. In order that one FAM not get too far ahead of the other, a restart marker window is provided. An EXECUTE Command variant is provided to set the width of the RMW; however, installations should define a default RMW width. This window works exactly like the ones found in low-level protocols such as TCP and the CYCLADES TS, except that in this case the window is used to control the flow of markers and only indirectly the flow of data. The sending FAM can continue to send data as long as the window is open. Each marker sent or received moves

DRAFT

6/23/77 FA PSP

Description of the File Access PSP

the left edge of the window and each marker acknowledgement sent or received moves the right edge of the window. If the FAM controlling the data gets too far behind in acknowledging markers, the window will close and the transfer will stop until one or more markers are acknowledged. The File Access PSP does not specify the form of the markers or how they relate to the data or amount of data transferred. However, implementors would be wise to generate markers in a form such that, when a marker acknowledgement is received, it can be assumed to acknowledge all preceding markers. Also, implementors should try to define a marker form that makes it easy for the FAM controlling the transfer to be able to tell what markers came before the one currently under consideration and to what point in the file this restart point corresponds.

The RMW is useful for several reasons. It can ensure that if a failure occurs the amount that must be retransmitted is not too large. Also, if the format of markers is such that a table must be kept to map markers into the corresponding file address, the window restricts the table to a fixed, manageable size.

Use in offloading FTP. The File Access Process- to-Service Protocol is used in several different ways to offload file transfer protocols. Details of these schemes may be found in "Offloading ARPANET Protocols to a Front End," CAC Document 230. The most important distinction between the schemes is

114

DRAFT

8/23/77 FA PSP

Description of the File Access PSP

whether the UFAM is in the host or in the front end.

If the UFAM is in the host, then the FA-PSP is used to offload network access for data transfer to and from remote hosts. If the data transfer process is in the front end, the FA-PSP is also used to offload data translation tasks. Unless the UFAM is attempting to access a file system in the front end, the file parameters of the BEGIN Command will not be used. Only the Data Connection Parameters will be present. The restart marker apparatus will only be present if marker bookkeeping and assignment is done in the host. These markers will be present, however, to implement the marker mechanism of the FTP rather than to offload it.

If the UFAM is in the front end, then the FA-PSP is being used to offload network access for data transfer, access to the host's file system, and possibly data translation and restart. The Connection Parameters will never occur in the BEGIN Command. The Data Parameters may occur if the data translation is done in the host. (However, translation will most likely be done in the front end.) The File Parameters will always be present. In this case, the FA-PSP can be used to offload more of the restart bookkeeping to the front end. Of course, markers and marker acknowledgements may be present merely to implement FTP rettart, regardless of whether restart is offloaded.

115

DRAFT

8/23/77

FA PSP Scenario

V. Scenario

Let us consider how this protocol is used to transfer files between the host and front end. In this scenario, the Using File Access Module (UFAM) is in the front end. Another front-end module (e.g., the user or server FTP service module) has passed the UFAM the necessary information to initiate a transfer. To be specific, let us assume that the server FTP service module (SFSM) has just given the UFAM the user identification, pathname, and network port information for starting a transfer across the network. The UFAM then sends a BEGIN Command to the host to request access to the file:

<BEGINXCXsecurity = day,johnXpathname = junk.note> <direction = 2>

The Serving File Access Module (SFAM) in the host successfully opens the file and sends a BEGIN Response:

<BEGINXRXStatus = 0>

The UFAM is now ready to begin the transfer of the data. It notifies the SFSM, so it can send the user the FTP reply indicating begin of transfer, and sends a read to the SFAM:

< EXE CUTEXCX coder 2>< Amount rALL>

(This implementation has defined the string "ALL" to indicate that the entire file is to be read.) Data begins to flow immediately via the TRANSMIT Commands:

116

DRAFT 8/23/77 FA PSP

Scenario

<TRANSMITXCXspecialrOXthe data>.

At some time, perhaps before the first TRANSMIT Command, the SFAM sends a response to the read:

<EXECUTEXR>

(No parameters are required since the read was successful.) Finally the last of the file is moved across:

<TRANSMITXCXspecialr3><data>

The UFAM notifies the SFSM after the last message has been written to the net, so that the SFSM can send the FTP reply indicating the end of the transfer. The UFAM then waits for another request from the SFSM. However, the user is done and has sent an FTP EYE Command to the SFSM. The SFSM notifies the UFAM that the session is terminating and the UFAM sends an END Command indicating normal completion:

<ENDXCXcause = 0>

The SFAM replies immediately with an END Response:

<ENDXR>.

117

6/23/77

FA PSP References

VJI. References

1. Day, J. "Offloading ARPANET Protocols to a Front End," CAC Document No. 230, Center for Advanced Computation, University of Illinois at Urbana-Champai gn , 1977.

2. Neigus, N. "The File Transfer Protocol," ARPANET RFC 542, 1973.

3. Neigus, N.; Pogran, K.; and Postel, J. "A New Schema for FTP Reply Codes," ARPANET RFC 640, 1974.

4. Schicker, P.; Duenki, A.; and Baechi, W. "Bulk Transfer Facility," INWG Protocol Note #31. EIN /ZHR/75/20 , 1976.

Appendix 3

ARPANET Host-Host Process -to -Service Protocol Specification

CAC Technical Memorandum 80

by

John Day Gary Grossman

119

ARPANET Host-Host

Process-to-Service Protocol

Specification

If Service Code Nvaber

II. Description of the Service

This document is a process-to-service protocol specification as defined in the Host-to-Front-End Protocol (HFP) Specification [ARPANET RFC 710]. It specifies a process-to-service protocol for providing ARPANET Host-Host Protocol and Initial Connection Protocol services to a process through the HFP.

The Host-Host Protocol is the basic inter-process communication protocol for the ARPANET [ARPANET NIC Document 8246]. The program which implements it in each host is the Network Control Program (NCP). The service described here provides an interface, through the HFP, between a process in a host and an NCP in a front end. This enables the process to establish and use ARPANET connections.

The Initial Connection Protocol (ICP) is the mechanism in the ARPANET which enables a process in one host to connect to a multi-user facility, such as the virtual terminal server or the file transfer server, in another host [ARPANET NIC Documents 7101, 7155, 7103]. The service described here enables a process

121

DRAFT 8/23/77 HH PSP

Description of the Service

in a host to establish ARPANET connections via the ICP.

The ARPANET Host-Host process-to-service protocol uses HFP Messages to carry information between the process and the service module. A brief summary of the function of specific Message types follows.

begin Command

from the host process

requests that a connection be established.

BEGIN Response

from the service module

a) confirms the establishment of the connection or

b) reports the reason for failure.

END Command

from the process

requests the closing of the connection, from the service module

reports the closing of the connection by the

foreign host.

END Response

from the process

acknowledges the closing of the connection, from the service module

acknowledges the closing of the connection.

TRANSMIT Command

from the process

carries data to the service module for

transmission to the foreign host over the

ARPANET, from the service module

carries data received over the ARPANET to the

process .

EXECUTE Command

from the process

requests that the service module

a) send an ARPANET Host-Host INR command referencing the connection,

b) alter flow control parameters for the connection, or

c) report the status of the connection.

EXECUTE Response

122

DRAFT 6/23/77 HH PSP

Description of the Service

from the service module

a) acknowledges the completion of actions requested by the process via EXECUTE Commands and

b) reports the status of the connection.

Security and protection problems are posed by the way that local sockets are used in the ARPANET protocols. If processes were permitted to use any socket number without restriction, a process could 'masquerade' as another (e.g., the logger) and gain access to privileged information (e.g., passwords). For this reason, two modes of access to the local socket name space are provided. The "relative" mode restricts the process to a unique, distinct subset of the local socket name space. This mode requires no special privilege. The "absolute" mode allows the process to access any local socket number. Its use requires the process to have special privileges. The modes are distinguished by the Relative/Absolute bit in the TEXT of the BEGIN Command. (See sections III A H b (1) (d) and III A H b (6).)

Some front ends may be so structured that it is possible for service modules to communicate with each other. This facility could be used to permit service modules such as Telnet to communicate with the ARPANET host-host service module and use network connections which the process had already separately established. A process could request the host-host service module to connect to a remote host. Then the process could request the Telnet service to "attach" to the already existing logical channel associated with the host-host service module and thus use the already existing network connection. The

123

DRAFT

8/23/77 HH PSP

Description of the Service

"Unattachable/Attachable" bit in the TEXT of the BEGIN Command is used to enable this feature for a given logical channel. See section III A 4 b (1) (e).

The detailed specification of the use of HFP Messages follows.

124

DRAFT

8/23/77

HH PSP BEGIN Command

III, Meaaflftc Umm

III A. BEGIN CoBBftn<3

III A 1. When sent

A BEGIN Command is sent by the process to request that the service module attempt to establish an ARPANET connection .

Ill A 2. Action on receipt

When the service module receives the BEGIN Command, it will attempt to establish the connection according to the parameters in TEXT.

Ill A 3. TEXT field syntax

VARIABLES) C0MPLEX(8) FIXED(5)

Security: Establishment: Control-bits :

Init/Listen

ICP/Direct

Duplex/Simplex

Relative/Absolute

Unattachable/Attachable Host: FIXED(32)

Foreign Socket: FIXED(32)

Messages: FIXEDM6)

Bits: FIXED(32)

Local Socket: FIXED(32)

Timeout: FIXED(16)

Byte Size: FIXED(8)

III A L, TEXT field gjBjmiU&a

This field can be used to validate the process' access privileges to network resources. It is particularly important to limit access to network security objects such as local socket 1. The substructure and content of this field are Installation dependent .

NOTE: At this writing, not enough is known about security in networks and front ends to make any statement about the utility of validation at this point in the system. This field is included in case some systems require validation at this point.

125

DRAFT

8/23/77

HH PSP BEGIN Command

III A t p, Establishment

This set of parameters governs the establishment of the network connection.

Ill A 4 b M), control-bits

The bits in this field govern the kind of

connection to be established, the method of its

establishment, and the interpretation of the parameters.

Ill A ^ t> (1) (a)t InU/Listeji

When this bit is zero (default), the connection is to be actively initiated by the NCP. When this bit is one, the connection is to be passively "listened*1 for by the NCP. The use of this bit in specifying connection sockets is detai led in table 1 .

Ill A 4 b (1) (b). ICP/Direct

When this bit is zero (default), the

connection is to be established via the Initial

Connection Protocol. When this bit is one, the

connection is to be established directly to the specified foreign socket. The use of this bit in

specifying connection sockets is detailed in table 1.

This bit is relevant only if the ICP/Direct bit is one. When this bit is zero (default), the connection is to be full duplex and is therefore to consist of two ARPANET connections (one in each direction). When this bit is one, the connection is to be unidirectional according to the sender of the socket numbers supplied in the Foreign Socket and/or Local Socket fields. The use of this bit in specifying connection sockets is detailed in table 1.

Ill A 4 b (1) (d). Relative/Absolute

This field affects the value of the socket for the local connection. See III A 4 b (6) for details.

Ill A 4 b (1) (c). Unattachable Ik 1 1 a chable

When this bit is one, the host-host service

126

6/23/77 KH PSP

BEGIN Command

module is requested to make the logical channel available for attachment by other service modules within the front end (such as Telnet or a data transformation service). If this bit is zero (default), the host-host service module is not requested to make the locical channel available for attachment within the front end.

HI A 1 b (2) . Host

This field specifies the network host to which the connection is to be made. A value of zero in this field indicates that the connection may be established with any host on the network. A zero value is valid only if the Init/Listen bit is one (Listen) .

The Host field is parsed as:

Network: FIXED(ft) Imp: FIXED(16)

Host-at-Imp: FIXED(fc)

III A k b (3). Foreign Socket

This field is used as follows to construct the effect! ve foreign socket (e.f.s.) for making the connection.

Case 1. Foreign Socket field = zero;

Init/Listen bit = one. Foreign host

chooses the e.f.s. Case 2. Foreign Socket field = zero;

Init/Listen bit = zero. The e.f.s. is

one . Case 3. Foreign Socket field i zero. The e.f.s.

is the contents of the Foreign Socket

field.

The default value of this field is zero. The

effective foreign socket is used in various ways,

depending upon the values of certain of the control

bits, to effect the connection. See table 1 for detai Is .

Ill A 4 b (M). Messages

This field and the Bits field allow the process to indicate to the service module the flow rate desirable on the connection. The service module may use this information in any way its implement ors deem desirabl e.

This field contains the number of ARPANET Host-

127

DRAFT

8/23/77

HH PSP BEGIN Command

Host messages the process suggests be allocated on the connection. If the value of this field is zero (default), the service module chooses the number of messages on its own.

Ill A 1 b (5)t Pit?

This field contains the number of bits the process suggests be allocated for the connection. If the value of this field is zero (default), the service module chooses the number of bits on its own.

b (6 ) . Local Socket

This field is used as f effective local socket connection .

Case 1. Relati ve/Absolu Socket field contents of the will be conca 20 bits of the the e. 1 . s .

Case 2. Relati ve/Absolu Socket field service will ch order 12 bit field in the HE

Case 3- Relative/Absolu case the effec to the conten field.

ollows to construct the (e.l.s.) for making the

te bit = zero, Local i zero. In this case, the Group field in the HEADER tenated with the low-order Local Socket field to form

te bit = zero, Local = zero. In this case, the oose a number whose high are equal to the Group ADER.

te bit = one. In this tive local socket is equal ts of the Local Socket

The effective local socket is used in various ways,

depending upon the values of certain of the control

bits, to effect the connection. See table 1 for details.

Ill A 4 b (7), Timeout

This field contains the maximum length of time, in seconds, that the service module is to attempt to establish the connection (in the absence of an error or exceptional condition). If the service module has been unable to establish the connection within this time period, it is to abandon the attempt. If this field contains zero (default), the time period is to be infinite.

Ill A 4 b (8). Bvte Size

This field contains the byte size for data

128

DRAFT

8/23/77

HH PSP BEGIN Command

transfer on the connection. If this field zero (default), the byte size will be b bits.

contain s

129

DRAFT

8/23/77

HH PSP BEGIN Command

Table 1

Control Bits { Foreign Sockets ! Local Sockets

i for the connection i for the connection

! {The e.f.s. will be used! j las the contact socket {

i Init {for the connection. {e.l.s. + 2 and e.l.s. +3 ! {The data sockets will | ! !be chosen by the for- J i ieign host. i ICP I ------- | -___-----_-_-_---_--- { -----------------------

i ! iThe e.l.s. will be used ' * las the contact socket I 1 {for the connection. {Listen le.f.s. -4-2 and e.f.s. +3!The data sockets will 1 } |be chosen by the I I 1 service as in Case 2 of I I ! Ill A H b (6).

(Duplex | e.f.s. and e.f.s. +1 I e.l.s. and e.l.s. 1 Direct | ------- j ----------------------- { --- -_--_-_---_------

{Simplex! e.f.s. ! e.l.s.

130

DRAFT

8/23/77

HH PSP BEGIN Response

III L. BEGIN Response III P 1, Wnen sent

A BEGIN Response is sent by the service module to report the outcome of an attempt to establish a connection requested by a BEGIN Command. The Status field in the HEADER will indicate whether the connection attempt was successful or unsuccessful.

Ill b 2. Action on receipt

When the process receives a BEGIN Response indicating a successful connection, it may proceed to send and receive data on the connection. When the process receives a BEGIN Response indicating an unsuccessful connection, it should perform the appropriate error recovery.

Ill B 3. TEXT field syntax

Connect! on -info:

Connection-state:

Host:

Foreign Socket:

Messages :

Bits:

Local Socket:

Byte Size:

COMPLF.X(?) FIXED(U) FIXED(32) FIXED(32) FIXED( 16) FIXED(32) FIXED(32) FIXED(8)

nantics

III 3 4 a, Connection-state

If the connection attempt was successful (as indicated by the Status field in the HEADER), this field will contain the value 1 which will be compatible with the "open" state value defined for this field in the TEXT of the EXECUTE Response (which see).

If the connection attempt was unsuccessful, this field contains an encoded reason for the failure. The codes are:

0 Illegal control bit combination

1 Invalid local socket

2 Invalid host

3 Byte size not supported by front end

4 Byte size not supported by foreisrn host

5 Connection attempt timeout

6 Network not available

7 Foreign host dead

8 Connection refused

9 Front end terminating service

131

DRAFT 8/23/77 HH PSP

BEGIN Response

III B » b, Hogt

If the connection attempt was successful, this field contains the AEFA.NET host address of the host to

which the connection w a ? established.

Ill B 4 c. For eign Socket

If the connection attempt was successful, this field contains the socket number at the foreign host to which the connection was established.

Ill B U d. Messages and Bits

If the connection attempt was successful, these fields contain the flow control parameters for the connection at the time the BEGIN Hesponse was generated.

Ill p U et Local Socket

If the connection attempt was successful, this field contains the local socket number for the connection .

Ill g 4 f. Evt* Size

If the connection attempt was successful, this field contains the byte size, in bits, for the connection .

132

DRAFT

0/23/77

hH PSP END Command

III C , END Command

III C 1. When sent

III C 1 a. By the process

An END Command is sent by the process to request the service module to close the network connection.

J.II C 1 b. By the service module

An END Command is sent by the service module to notify the process that the connection has been closed by the foreign host or by a failure of the foreign host or the network.

Ill C 2. Action on receipt

When the process receives an END Command, it should consider the connection closed. The process should send an END Response and take appropriate recovery action.

Ill C 2 b. Bv the service module

When the service module receives an END Command, it should allow data queued for transmission to the network to drain, unless Flush awav (bit 1) is set in the Control field. It should then initiate the process of closing the connection. When the connection is closed, the service module should send an END Response.

Ill C 3 . TEXT field syntax

Cause: FIXED(3) [II C *♦ TEXT field semantics

III C 4 a. Cause

This field contains an encoded reason the END Command. The codes are:

for sending

0 Normal completion (default)

1 Network/process failure

2 Foreign host failure

3 User requested termination

M Front end terminating service

133

DRAFT

8/23/77

HH PSP END Response

III D. END Response

III P 1. When gent

III P Is, Py the process

The END Response is sent by the process to acknowledge the receipt of an END Command and complete the termination of the associated logical channel.

Ill P 1 &. Py the service module

The END Response is sent by the service module to

acknowledge receipt of an END Command, notify the

process that the connection has been closed as requested, and terminate the logical channel.

Ill P 2t Action on receipt

III P ? a, Py the process

When the process receives the END Response, it should consider the ARPANET connection to be closed and the HFP logical channel to be terminated.

Ill P 2 bt py the service module

When the service module receives the END Response, it should consider the logical channel to be terminated.

The TEXT field in the END Response is not used in this process-to-service protocol.

134

8/23/77

HH PSP TRANSMIT Command

XII E. TRANSMIT Command

III E 1. When sent

III E 1 a. Bv the process

The TRANSMIT Command is sent by the process to pass data to the service module for transmission over the network to the foreign host.

Ill E 1 b. Bv the service module

The TRANSMIT Command is sent by the service module to pass data that has arrived over the network from the foreign host to the process.

Ill E 2. Action on receipt

III E 2 a. Bv the process

When the process receives a TRANSMIT Command, it will treat the contents of the TEXT as data to be processed .

Ill E 2 b. Bv the service module

When the service module receives a TRANSMIT Command, it will treat the contents of the TEXT as data to be transmitted over the network.

Ill E L, TEXT field syntax

TEXT contains the data to be transferred by the TRANSMIT Command.

Ill E M. TEXT field semantics

The data in the TEXT have no other semantics than those described in sections III £ 1 and III E 2.

135

DRAFT 8/23/77 HH PSP

TRANSMIT Response

III Ft TFANSHIT Bcappnge

The TRANSMIT Response is used as described in the HFP specification .

136

DRAFT

8/23/77

HH PSP SIGNAL Command

III C. SIGNAL Command

The SIGNAL Command is not used in the process-to- service protocol. SIGNAL Commands may be generated by process or service to request that the CPM carry out the appropriate action on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel (HFP) level.

137

DRAFT

8/23/77

HH PSP SIGNAL Response

XII H, SIGNAL Response

The SIGNAL Response is not used by either process or service .

138

DRAFT

8/23/77

HH PSP EXECUTE Command

III J. EIECUTE Command

III J 1. When sent

The process sends an EXECUTE Command to request that the service module

a) send an ARPANET Host-Host INR command,

b) alter the suggested allocation on the connection, or

c) return a description of the status of the connection .

The service module does not send EXECUTE Commands for this protocol .

Ill J 2, Action PP_T_ft.fi£lJBl

When the service module receives an EXECUTE Command, it will decode the TEXT and act upon it.

Ill J L. TEXT field syntax

Code: Messages:

Bits:

FIXED(2) FIXED( 16) FIXED(32)

III J L, TEXT field semantic? Ill J H a, Code

This field contains an encoding of the type of request. The codes are:

0 Send INR

1 Alter suggested allocation

2 Return connection status

The Messages and Bits fields need be present only if the Code field contains the value 1 (Alter suggested allocation) .

Ill J * bt Messages

This field is valid only if the request is "Alter suggested allocation" (Code = 1). It contains the number of ARPANET messages the process suggests be allocated on the connection. If the value of this field is zero (default), the service module chooses the number of messages on its own.

This field is valid only if the request is "Alter suggested allocation" (Code = 1). It contains the number

139

DRAFT 8/23/77 . HH PSP

EXECUTE Command

of bits the process suggests be allocated for the connection. If the value of this field is zero (default), the service module chooses the number of bits on its own.

140

DRAFT 8/23/77 HH PSP

EXECUTE Response

III K. EXECUTE Regpongg III K 1. When sent

The service module sends an EXECUTE Response when

a) it has completed tha operation requested by an EXECUTE Command or

b) it has received an EXECUTE Command whose TEXT is in error.

The service module does not send EXECUTE Commands for this process-to-service protocol. Therefore, the process does not send EXECUTE Responses.

Ill K 2. Action on receipt

When the process receives an EXECUTE Response, it should examine the TEXT to see whether the response indicates an error. If no error is indicated, it may consider that the action requested by a previous EXECUTE Command was successful. If an error is indicated, appropriate error recovery action should be initiated. This action is idiosyncratic to the process.

Ill K 3, TEXT field syntax

Result: FIXED(2)

Ref-code: FIXED(2)

Connection-info: COMPLEX(?)

Connection-state: FIXED(2)

Host: FIXED(32)

Foreign Socket: FIXED(32)

Messages: FIXED(16)

Bits: FIXED(32)

Local Socket: FIXED(32)

Byte Size: FIXED(8)

III K L. TEXT rigid semantics

III £ 4 a. ResyU

This field contains an encoding of the result of the request (in a previous EXECUTE Command) to which the EXECUTE Response is a reply. The codes are:

0 Successful

1 Illegal code in request

2 TEXT too short

The "TEXT too short" error can occur only if the request was "Alter suggested allocation".

141

DRAFT

6/23/77

HH PSP EXECUTE Response

III K k b. Ref-code

This field contains the same value as the Code field of the TEXT of the EXECUTE Command to which the EXECUTE Response is a reply.

HI K k ct Connection-info

This field has the same meaning as its identically named and formatted counterpart in the TEXT of the BEGIN Response, with the following exception:

III k 4 c (i), Connection-state

This field indicates the present state of the connection. The possible values of this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

142

DRAFT

6/23/77

HH PSP Scenario

iv. Scenario

Let us consider how this PSP can be used to remotely

control a Network Control Program in the front end. We will

assume that there is a program in the host that wishes to open a

Telnet connection to remote host 12. A BEGIN Command is sent to the front end:

<BEGINXC><host = 12Xmsgs = 15><bits = 12000>

Because the defaults for the HH-PSP favor initiating a Telnet connection (i.e., a duplex connection established by an ICP to socket 1) the BEGIN Command does not have to specify many of the parameters. The HH Service in the front end opens the connection and sends a BEGIN Response to the host:

<BEGINXRXSTATUSrO><state=1><host = 12><Fgnskt = 523 9> <msgs= 12><bits= 12000>

indicating that the connection attempt was successful. The program now sends and receives via TRANSMIT Commands.

At some time later the program in the host receives an END Command:

<ENDXCXcause = Foreign host failure>

This indicates that the network connection has been closed because the remote host crashed. The front end wishes to terminate the service. The program immediately sends an END Response:

<ENDXR>

The channel is now closed. At some later time the program may attempt to re-establish the connection.

143

DRAFT 8/23/77 HH PSP

References

Y, References

1. McKenzie, A. A. "Host/Host Protocol for the ARPA Network," NIC #7117, 1972. Also in the ARPANET Protocol Handbook.

2. Postel, J. "Official Initial Connection Protocol," NIC #7101, 1971. Also in the ARPANET Protocol Handbook.

144

Appendix 4

Network Virtual Terminal

Process-to-Service

Protocol Specification

CAC Technical Memorandum 103

by John Day

145

Network Virtual Terminal

Process-to-Ser vi ce Protocol

Specification

I. Service Code Number

5

II. Description of the Service

This document is a process-to-service protocol specification as defined in the Host-t o-Front-End Protocol ( H b P ) Specification [ARPANET RFC 710]. It describes a protocol for offloading a network virtual terminal protocol (e.g., Telnet for the ARPANET) to a front end. This protocol allows some flexibility in the decree of offloading that may be achieved. Although the protocol is applicable to a general virtual terminal service, the discussion below is in terms of the ARPANET Telnet Protocol, which is currently the only such protocol widely used.

The functions of the typical network virtual terminal implementation are:

1. manipulating network connections,

2. negotiating Telnet options,

3. mapping between local terminal representations and network virtual terminal representations,

4. transmitting data over connections,

5. handling special control functions, and

147

DRAFT

8/23/77

NVTS PSP Description of the Service

6. interfacing the remote network connections so that they appear to the host to be local terminals.

The offloading scheme represented by this model places manipulating connections and transmitting data over the net in the front end. The interfacing of remote terminals so that they appear as local terminals must be done in the host. The scheme is flexible in that the remaining functions (option negotiation and translation between local and network representations) nay be implemented in either the front end or the host, depending on local installation constraints. Typically the translation will be done in the front end. Section IV below discusses the offloading of Telnet options.

The only support this service requires in the front end is access to an ARPANET NCP. In the host it is necessary for the residual part of the Telnet implementation to be able to make its logical channels appear as if they were terminals connected to the host. This may require system modification in some cases.

There are several possible ways in which service could be initiated and controlled. The scheme described in this protocol appears to be the simplest and most flexible. In this scheme, BEGIN Commands only go from the host to the front end. When the front end service module receives a BEGIN Command, it either does a listen on the contact socket or it sets up a connection as requested. It sends a BEGIN Response to the host when a

148

8/23/77

NVTS PSF Description of the Service

connection is established. The host process must generate a distinct BEGIN Command lor each connection it is willing to accept. Thus, the host is able to limit the number of Telnet users by withholding BEGIN Commands. The front end may also limit demand on its resources by refusing BEGIN Commands from the hos t .

The network virtual terminal process-to-service protocol uses HFP Messages to carry information between the residual part of Telnet in the host (the "process") and the network virtual terminal service module (the "service") in the front end. A brief summary of the specific Message types follows.

BEGIN Command

is used to initiate connections.

EEGIN Response

is used to confirm the establishment of a connection, or to refuse a BEGIN Command.

END Command

is used to terminate a connection.

END Response

is used to confirm the termination.

TRANSMIT Command

is used to transfer data (including Telnet option negotiations and control functions) to and from the Telnet connection.

TRANSMIT Response

is used to acknowledge data transfer.

EXECUTE COMMAND

is used by the process to request the service module

a) to send a Telnet control function,

b) to modify the suggested allocation,

c) to negotiate Telnet options, or

d) to report the status of the connection.

149

DRAFT

ft/23/77

NVTS PSP Description of the Service

is used by the service to pass to the process out- of-band Telnet control functions (e.g. IP, AO, and Break) .

EXECUTE Response

a) is used to acknowledge the success or failure of the action requested by the process via the EXECUTE Command, and

b) if requested reports on the status of the connection.

Systems which can easily set terminal parameters may offload many

functions using the EXECUTE Command. For such systems

adaptations of this process-to-service protocol could define

requests in a form that would allow the host to be ignorant of

the actual negotiation mechanism. For instance, an adaptation

could define an EXECUTE Command request to indicate that a

certain system primitive was to be called and given such and such

parameters. Since not all systems can do this, and the means

available to the ones that can differ considerably, we have left

the specification of such features for the adaptation

descriptions.

This process-to-service protocol requires the implementation in the front end of the following additional protocols: ARPANET Host-Host Protocol ARPANET Initial Connection Protocol ARPANET Telnet Protocol

The details of the use of HFP Messages are given in the following section.

150

fc/23/77

NVTS P3P ELGIN Command

III. Message Use

III A. BEGIN Command

III A 1 . When sent

A BEGIN Command is sent by the host process to

indicate that it wishes to establish a Telnet connection.

The host process sends a BEGIN Command for each Telnet connection it will accept.

Ill A 2. Action on rece i £ t

When the service module receives a BEGIN Command, it

attempts to set up a connection as specified by the

parameters in the TEXT. The service module may refuse the BEGIN Command by sending an appropriate BEGIN Response.

Ill A 3. TEXT field syntax

Security : Establishment :

Control-bits : Init/Listen Socket /Channe 1 ICP/Direct Relative/Absolute Unattachable /Attachable

host :

1* oreicrn Socket :

Mess ages :

Bits:

Local Socket:

Timeout:

field semanti cs

VAhlALLL( ? ) COMPLEX (6 ) F1XED(5)

FIXED(32) F1XED( 32) tIXED( 16) FIXED( 32) F1XED(32) F 1 X E D ( 1 b )

III A 4 a. Security

This field may be used by the host to validate the access privileges of the sender of the BEGIN Command. The default value of the field is empty. Note: At this time, very little work has been done on the organization of security for networks or these kinds of systems. It is not clear where access control should be placed. This field has been included in case some systems require validation at this point.

Ill A 4 o . Establishment

This set of parameters describes the kind of connection t > te associated with this channel. The default values of the establishment parameters are

151

DPAFT

8/23/77

NVTS PSP BEGIN Command

chosen to favor the Server Telnet service. This means that a BEGIN Command specifying only defaults would cause the front end to listen for an ICP connection on the standard Telnet contact socket (socket 1) from any host for an indefinite period of time. The default values of the fields are set at zero; the default value may be indicated by the absence of the field. Thus, a BEGIN Command sent to the front end for a server Telnet session may have an empty TEXT field.

Ill A 4 b (1). Control-bUs

The bits in this field govern the kind of connection to be established and the interpretation of the parameters.

Ill A 4 b (1) (a), Ijsten/Init

When this bit is zero (default), the connection is to be passively listened for. When this bit is one, the connection is to be actively initiated. The use of this bit in specifying connection sockets is detailed in table 1.

Ill A 4 b (1) (b). Socket/Channel

If this bit is zero, the logical channel from the process is to be established to a new ARPANET connection. If this bit is one, the logical channel from the process is to be attached to an already existing HFP channel (e.g. a channel already established to the host-host service module and therefore providing access to an existing network connection.) The default value is zero .

Ill A 4 b (1) (Q). ICP/Direct

This bit is relevant only when a new network connection is requested. (Socket/Channel bit is zero.) When this bit is zero (default), the connection is to be established via the Initial Connection Protocol. When this bit is one, the connection is to be established directly. The use of this bit in specifying connection sockets is detai led in table 1 .

Ill A 4 b (1) (d). Relative/Absolute

This field affects the value of the local sockets for the connection. See III A 4 b (6) for details. The default case is Relative (value zero) .

152

fa / ,: 3 / 7 7

NVTS PSt EEG1N Command

III A k b ( 1 ) ( e ) . Una ttachable/A t tachable

When this bit is one, the network terminal service module is reauested to make the logical channel available for attachment bv other service modules within the front end (such as a data transformation service). Otherwise this bit is zero (default). See CAC lechnical f-.emorandum No. bO, p. for a discussion of this feature.

Ill A 4 b (2) . Host

This field specifies the network hosts from which (or tc which) the lelnet connection is to be established. The default value is zero, indicating that a connection from any host will be accepted. (The default value is legal only if the Listen/lnit bit is zero (Listen), otherwise a host must be specified. )

The host field is parsed as:

Network : IMP :

host-at-lK P :

frIXEPU) H X E D ( 1 fc ) t IXED(fa )

III A k b (i). t-oreisrr Socket

This field is used as follows to construct the e f f ect i ve foreign socket (e.f.s.) for making the con ne c t i on .

Case 1. foreign Socket field = ?. ero; Listen/lnit bit = zero. foreign host choo s es the e.f.s. Case 2. Foreign Socket field = one; Listen/lnit

bit = zero. The e.f.s. is one. Case 3- Foreign Socket field i zero. The e.f.s. is the contents of the Foreirn Socket field.

1 h e default value of this field is •>. e r o . Ihe

effective foreign socket is used in various ways,

depending upon the values of certain of the control

hits, to effect the connection. See table 1 for de tai Is .

Ill A 4 b (k) . Message?

'ihis field and the tits field allow the process to indicate to the service module the flow rate desirable on the connection. The service module may use this information in any way its implementors deem

153

DRAFT

8/23/77

NVTS PSP BEGIN Command

desi rable.

This field contains the number of Host-Host messages the process suggests be allocated on the connection. If the value of this field is zero (default), the service module chooses the number of messages on its own.

Ill A 4 b (5). bits

This field contains the number of bits the process suggests be allocated for the connection. If the value of this field is zero (default), the service module chooses the number of bits on its own.

Ill A H b (6). Local Socket or Logical Channel

If the Socket/Channel bit is one, this field contains the channel Group and Member values specifying the HFP channel to which connection is to be made. The format of this field is then:

<not used): F1XED(4) Group: FIXED(12) Member: FIXED(16)

If the Socket/Channel bit is ze used as follows to construct th .l.s.) for making the conne Relative/Absolute bit Socket field i zero contents of the Grou HEADER will be conca low-order 20 bits of t field to form the e.l.s Relative/Absolute = zer field = zero. In this will choose a number wh bits are equal to the G HEADER .

Case 3. Relati ve/ Absolu te = one the effective local s the contents of the Loc

socket (e.

Case 1 ,

Case 2.

ro , this field is e effective local ction .

= zero, Local In th i s case, th e p field in the tenated with the he Local Socket

o, Local Socket case, the service ose high order 12 roup field in the

In this case ocket is equal to al Socket field.

The effective local socket is used in various ways, depending upon the values of certain of the control bits, to effect the connection. See table 1 for detai Is .

Ill A * b (7). Timeout

This field contains the maximum length of time, in seconds, that the service module is to attempt to

154

DRAFT

8/23/77

NVTS PSP BEGIN Command

establish the connection (in the absence of an error or exceptional condition). If the service module has been unable to establish the connection within this time period, it is to abandon the attempt. If this field contains zero (default), the time period is to be infinite.

155

DRAFT

b/23/77

NVTS PSP EEGIN Command

Tab}? 1

Control Bits i Foreign Sockets ! Local Sockets

j for the connection i for the connection

i IThe e.f.s. will be used! ! las the contact socket |

{ Init i f or the connection. ie.l.s. + 2 and e.l.s. + 3 ! jThe data sockets will i ! |be chosen by the for- i ! ! eign host . i ICp j _ „__ j „„„ _--.- .

i ! jThe e.l.s. will be used ! ! las the contact socket ! I {for the connection. [Listen je.f.s. +2 and e.f.s. +3!The data sockets will ! ! ibe chosen by the i i {service as in Case 2 of ! i ! Ill A 4 b (6).

Direct ! e.f.s. and e.f.s. +1 i e.l.s. and e.l.s. + 1

156

6/23/77

NVTS PSP PEGIN Response

IU B, BEGIN Respond

III B 1 . When sent

The BEGIN Response is sent by the service module to indicate that a successful network connection has been established, or that the BEGIN Command has been refused.

Ill B 2. Action on receipt

When the BEGIN Response is received, the host process should determine whether a successful connection was made. If so, it may send or receive data. If not, it may be appropriate to invoke an error recovery procedure.

Ill B 3, TEXT field syntax

Security : Connection-info:

Connection-state:

Host:

Foreign Socket:

Messages:

Bits:

Local Socket:

III B 4. TEXT field semantics 111 B 4 a. Security

VARIAELE(?) COMPLEX( ? ) FIXED (4) FIXED(32) FIXED(32) F1XED( 16) FIXED(32) FIXED(32)

This field may be used to allow the front end to validate the access privileges of the user (in the case where the front end performs some user authentication tasks) and to pass the information along to the host. This field could be particularly important for monitoring access by terminals directly connected to the front end.

HI B M bt CpnnecUon-infQ

This field describes the connection associated with this channel.

Ill B 1 b (1!

Connection-state

This field indicates the success or failure of the BEGIN Command. The value zero indicates success while any non-zero value indicates failure. The particular value of the non-zero field gives the reason for failure. The possible values of this field and their meanings are:

157

DRAFT

8/23/77

NVTS PSP BEGIN Response

0 Success

1 Illegal connection type

2 Invalid local socket

3 Unknown host

4 Improper access

5 Front end terminating service

6 Connection attempt timeout

7 Network not available b Foreign host dead

9 Connection refused by foreign host

Others may be defined later, or in the adaptation descriptions.

XII B H b (2), Host

If the connection attempt was successful, this field contains the ARPANET host address of the host to which the connection was established. (See III A 4 b (2). )

III B 4 b M). Foreign Socket

If the connection attempt was successful, this field contains the socket number at the foreign host to which the connection was established.

If the connection attempt was successful, these fields contain the flow control parameters for the connection at the time the BEGIN Response was generated .

Ill B 4 b (5). loc3l Socket

If the connection attempt was successful, this field contains the local socket number for the connection.

158

DRAFT

6/23/77

NVTS PSP END Command

III C. END Command

III C 1. When sent

III C 1 a, By the process

The END Command may be sent by either the process or the service to terminate a Telnet connection. If sent by the process, it usually indicates that the host has requested that the connection be closed.

Ill C I bt by the service module

The service module may send an END Command because the foreign host has closed the connection in response to a user request, or because some failure condition has occurred that requires that the connection be aborted.

Ill c g, Action on receipt

III C 2 a. By the process

When the process receives an END Command, it should acknowledge it as promptly as possible by sending an END Response.

Ill c g b. py the service module

When the service module receives an END Command, it should close the Telnet connection. Once the connection is closed, it should send the END Response to the process .

Ill C ^ TEXT field syntax

Status: FIXED (3)

III C 4 at, Status

This field indicates the cause of the termination of the TELNET connection. The values of the field and their associated meanings are:

0 Normal close by foreign host

1 Network failure

2 Foreign host failure

3 User requested close

4 Improper Access

5 Front end terminating service

Other causes for failure may be defined at a later date.

159

DRAFT

8/23/77

NVTS PSP END Command

The default value of the field is zero.

160

6/23/77

NVTS PSF END Response

III D. END Response

III D 1 . When sent

The END Response is sent by either the process or the service module to acknowledge that an cND Command has been received and proper action taken.

Ill D 2. Action on receipt

When either the process or the service receives an END Response, it should assume that all dialogue associated with this logical channel has completed, and it should ignore any other Commands on this channel except a BEGIN Command.

Ill D 1. TEXT field syntax

The TEXT field in the END Response is not used in this protocol .

DRAFT b/23/77 NVTS PSP

TRANSMIT Command

III E. TRANSMIT Command

The description below assumes that a Go-Ahead facility is needed for the handling of half duplex terminals. Not all installations will need this facility; those that do not should set the Go-Ahead/More-Data Control bit to zero and ignore the specification of how this bit is interpreted.

Ill 6 It When sent

The TRANSMIT Command may be sent by either side to transfer data. Data may be sent only when the connection is in the ESTABLISHED state and when the flow control discipline permits. (See HFP Specification.)

Ill E 2. Action 0n receipt

III E 2 a. by the process

When the process receives a TRANSMIT Command, it will treat the contents of the Data field of the TEXT as data to be processed.

Ill g 2 bt By the service module

When the service module receives a TRANSMIT Command, it will treat the contents of the Data field of the TEXT as data to be transmitted over the Telnet connection.

Ill E 3. TEXT field syntax

The TEXT field contains one or more instances of the following structure.

Control-bits: FIXED(2)

Text/Control

Go-Ahead/ More-Data Data: VARIABLES)

III E 4, Text field semantics

III e ^ a, control bits

The Control bits indicate the nature and the mode of the information in the associated Data field being passed to the process or service.

Ill 6 ** a d)f Text/control

When this bit is zero (default), it indicates that the Data field contains text to be transmitted. When this bit is one, it indicates that the Data

162

DRAFT

8/23/77

NVTS PSP TRANSMIT Command

field contains a specific Telnet function .

option or control

III 6 » 3 (2). Qo-Ahead/Mpre-Pata

when this bit is zero (default), it specifies that the sender has transmitted all the data it wishes and the receiver may now "turn the line around" and send data. It is convenient for the host process if the service makes each Data field of the TEXT correspond to one line of input from the terminal, including the end-of-line character. (This may be agreed on by the service and process.) In this way, only one of the processes must be bothered with looking for end-of-line sequences. If this bit is one, there is more data to follow.

Ill E 4 b. Data

If the Text /Con t rol bit is cnc , the Data field uill contain the text of a Telnet option negotiation or control function. If the Text/Control bit is zero (default), the Data field contains text which is to be transmitted or has been received on the Telnet connection.

163

6/23/77

NVTS PSP TRANSMIT Response

III Ft TRANSMIT Response

The TRANSMIT Response is used as described specification .

in the HFP

164

b/23/77

NVTS PSP SIGNAL Command

III G. SIGNAL Command

The SIGNAL Command is not used in the process-to-service protocol. SIGNAL Commands may be generated by process or service to request that the channel protocol module (CPM) carry out the appropriate action on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel (HFP) level.

165

DRAFT 6/23/77 NVTS PSP

SIGNAL Response

III H. siqnal Response

The SIGNAL Response is not used by either process or service.

166

DnAFT

6/23/77

NVTS PSP EXECUTE Command

III J. EXECUTE Command

By the process

The process sends an EXECUTE Command to request that the service module

a) send a Telnet control function;

b) modify the suggested allocation;

c) negotiate a Telnet option; or

d) return the status of the connection.

EY the service

The service sends an EXECUTE Command to the process to notify it that certain Telnet control functions have been received.

Ill J 2. Action on receipt

When the service module or process receives an EXECUTE Command, it will decode it and perform the action indicated. (See below.)

Ill J 3, TEXT field syntax

Code: Parameters :

FIXED(2) VARIABLES )

III J 4 TEXT field semantics

III J 4 a. Code

This field contains an encoding of the type of request. The codes are:

Send control function Modify suggested allocation Negotiate Telnet option Status

III J 4 b. parameters

This field, if present, contains any parameters necessary to perform the request indicated in the code field. A discussion of the requests and their associated parameters follows.

Ill J 4 c. Send Control Function

III J 4 c (1). When sent

167

6/23/77

NVTS PSP EXECUTE Command

Ev the process

This request is sent to the service to request the service module to send one of the out-of-band Telnet control functions (IP, AO, AYT, or Break) to the foreign host.

By the service

This request is sent by the service to

notify the process that an out-of-band Telnet

control function has been received from the foreign host.

Ill J 4 c (2). Action on receipt

gy the process

When the process receives a control function request, it should take whatever action is required according to the semantics defined by the Telnet protocol. The only exception to this is the Abort Output control function. When the process receives an Abort Output, it should flush all data buffered for transmission to the front end. It should insert a Data Mark into the data stream and send a SYNCH control function to the front end.

Ey the service

Func

func

stre

acco

serv

func

buff

(exc

Mark

serv

INS

also

host

the

one

disc

Mark

Data

rece

fore

When tion tion ) am

r danc ice tion , ered ept T

is ice

me ss

send ( Data

in ard d is

Mark ived ign h

the

req , it at e wi

mod it

fro elne

det odul acre

a T The Mark the ata f oun

in

fro ost .

servi uest shoul the th the ule shou the t cont ected e shou to be elnet servi sent data coming d. If the d m the )

ce re (othe d ins earli

Teln

recei

Id f

fro

rol f

in Id ca sent

Data ce fro

stre

from

the ata

host

cei ve r th er t est e t pr ves lush nt

uncti the use a to th Mar odule the h am ,

the servi strea

must

in a it i possi otoco

a

all nd

ons ) data n ARP e for k to

may ost o while host ce mo m , t

not

Sen

SYN nto ble 1. SYNC

dat nd unti

st r

ANET

ei*n

th

eith

m

con unti dule he be s

d Con CH con the point When con it to the 1 a earn . Host- host , e for er pas ay in tinuin 1 the

inser Data ent to

trol

trol

data

in

the trol

has

net Data

The Host

and eign s on sert g to Data ts a Mark

the

168

DRAFT

8/23/77

NVTS PSP EXECUTE Command

III J 4 c m. Parameter field syntax

Control Function: FIXED(8)

III J 4 c (4). Parameter field semantics

This field contains a Telnet control function. The possible values and their meanings are:

242 243 244 245 246

SYNCH

Break

Interrupt Process

Abort Output

Are You There

Although there are other Telnet control functions, they are dependent on their position in the data stream and thus would not have any meaning in this context.

Ill J 4 d. Modify suggested allocation

This request is sent by the process to the service module to modify the allocation suggested in the BEGIN Command. The service module may use this information in any way it wishes to modify its flow control strategy with the network.

Ill J H 0 M). Parameter field syntax

Messages : Bits :

FIXED( 16) FIXED(32)

III J 4 d (2). Parameter field semantics

The semantics of the Mepsaces and bits fields are identical vith those described in sections III A 4 b (4) and III A 4 b (5) .

Ill J 4 e. Negotiate a Telnet option

This process-to-service protocol provides two ways for the process to negotiate a Telnet option. It may either do the negotiation itself by placing the option commands in the data stream or it may request the service module to perform the negotiation for it. The latter way uses this variant of the EXECUTE Command. It should be noted that this method can only be used when the effect of the option need not be synchronized with the data stream.

Ill J 4 e (1). Parameter field syntax

169

DRAFT

8/23/77

NVTS PSP EXECUTE Command

Negotiation: FIXED(b) Option Code: FIXED(8) Subnegotiation: VARIAELE(?)

HI J 4 e (2). Parameter field semantics

HI J 4 e (2) (a). Negotiation

This field allows the process to control option negotiation in general or to control the negotiation of a particular option. The legal values of the field are:

1 indicates service module should refuse all options

2 indicates service module should not refuse any options (i.e., it should pass those not done by the front end to the host process)

3 indicates service module should refuse any options not handled by the front end

251 WILL

252 WON'T

253 DO

254 DON'T

The meanings of WILL, WON'T, DO and DON'T are specified in the Telnet Protocol Specification [ARPANET NIC 18639]. The initial state (i.e., whether options are accepted or not) is an installation parameter.

Ill J 4 e (2) (b). Option code

This field contains the code for the Telnet option to be negotiated. The values of these codes may be found in the specifications of the respective options.

HI ^ 4 e (2) (c). Subnegotjatjon

This field, if present, will contain one or more subnegotia ti ons for the option specified by the option code field. These subnegotiations are to be performed for the process. Subnegotiation parameters will be bracketed within this field by the Telnet control functions IAC SB and IAC SE , where

IAC

=

255

SB

=

250

SE

r

240

170

DRAFT

6/23/77

NVTS PSP EXECUTE Command

III J H f. fteturn gtatvis

No additional parameters are needed for request .

171

DRAFT

6/23/77

NVTS PSP EXECUTE Response

III K. EXECUTE Response III K 1. When sent

The service module sends an EXECUTE Response when

a) it has completed the operation requested by an EXECUTE Command or

b) it has received an EXECUTE Command whose TEXT is in error.

Note: In the case of options negotiated by the use of the EXECUTE Command, the EXECUTE Response is sent after all subnegotiations have been completed or the option has been refused .

The process sends an EXECUTE Response to acknowledge the receipt of a control function.

Ill K 2. Action on receipt

When the process receives an EXECUTE Response, it should examine the TEXT to see whether the Response indicates an error. If no error is indicated, it may consider that the action requested by the EXECUTE Command was successful. If an error is indicated, appropriate error recovery action should be initiated. This action is idiosyncratic to the process.

IU K 1. TEXT field syntax

Result: Ref-code : Parameters :

FIXED(3) FIXEDC3) VARIABLE(?)

Ill k Mt text field semantic?

XII K 4 a. ResuU

This field contains an encoding of the result of the request (made in a previous EXECUTE Command) to which the EXECUTE Response is a reply. The codes are:

0 Success

1 Illegal code in request

2 TEXT too short

3 Illegal or unsupported parameter value

III K it b. Ref-code

This field contains the same value as the Code field of the TEXT of the EXECUTE Command to which the EXECUTE Response is a reply.

172

DRAFT

8/23/77

NVTS PSP EXECUTE Response

III I S c. Parameters

This field, if present, contains additional information about the outcome of the request. A discussion of these parameters follows. No parameters are needed for a Response that acknowledges receipt of a control function.

Ill K it dt New mipcmpn

These parameters are sent by the service module to the process in response to a Modify Suggested Allocation request .

Ul K H d (1). Parameter field syntax

Messages : Bits:

FIXED( 16) FIXED(32)

III K k d (2). Parameter field semantics

The semantics of the Messages and Bits fields are identical to those described in Section III B h b (4).

Ill k 4 et option negotiation

This reply is sent by the service module in response to the Negotiate Telnet Option request.

LLL-JL-JL-S LLL. Parameter field SYPtax

Negotiation: FIXED(6) Option Code: FIXED(8) Subnegotiation: VARIABLES)

III K 4 e (2)t Parameter field semantics

III K 4 e (2) (a), Negotiation

This field will contain a code indicating the final outcome of the negotiation. Legal values are :

250 indicates service module is currently accepting options

251 WILL

252 WON'T

253 DO

254 DON'T

255 indicates service module is currently refusing all options

173

DRAFT

b/23/77

NVTS PSP EXECUTE Response

III M ? (?) (t>) , Option code

This field contains the code of the Telnet option that was negotiated.

Ill K 4 e (2) (c)t SubneKQUatjon

This field will contain the final state of any subnegotiations that were performed. The format will be consistent with the request format for subnegotiation .

Ill K ** ft SUtvg

This reply is sent by the service module in response to a status request.

Ill K 4 f (1). Parameter field syntax

The parameter field for this EXECUTE Response is formatted identically to the connection-info field specified in the TEXT of the BEGIN Response.

Ill K 4 f (2). parameter Held semantics

This field has the same meaning as the connection-info field in the TEXT of the BEGIN Response with the following exception:

III K 4 f (2) (a). Connection-state

This field indicates the present state of the connection. The possible values of this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

174

DRAFT

b/23/77

NVTS PSP Offloading Telnet Options

IV. Offloading Telnet Options

An installation may take one of two two basic approaches to offloading the Telnet options. One approach is to offload nothing. In this case, the Telnet service in the front end need only reformat the data stream, handle the network connections and (perhaps) do character translation. The other approach is to offload as much as possible, given the characteristics of the host. In this case, the front end must also be able to negotiate and execute some of the Telnet options. Unfortunately, for some of the Telnet options it is not possible to say definitively whether they can be offloaded or not. Table 2 can be used as a guide to how readily the various options can be offloaded.

Two attributes of each option determine whether or not it can be offloaded. An option nay or nay not affect the host's terminal-handling parameters. The taking effect of an option Tiay or may not have to be synchronized with the data stream. If an option affects the host's terminal-handling parameters, then, although some of its processing may be offloaded, some processing will have to be done in the host. If an option requires synchronization with the data stream, it may be very difficult, if not impossible, to offload it. Table 2 lists the current ARPANET Telnet options and indicates whether they may be offloaded. Some of the options are discussed below in greater detail. Note that all options that are not supported by the host may be offloaded, i.e. the front end can refuse negotiations without involving the host.

175

DRAFT 6/23/77 NVTS PSP

Offloading Telnet Options

Option Nam?

Telnet

Synch

Can

Option

Host

w/Data

Off-

Num.

Pepf?

Stream

load?

H

no

no

yes

0

yes

yes

no

19

yes

yes

yes

20

yes

yes

maybe

1

no

yes

no

17

no

yes

yes

18

yes

no

no

10

no

no

yes

13

no

no

yes

11

yes

no

no

12

no

no

yes

16

no

no

yes

8

?

no

maybe

9

?

no

maybe

n

yes

no

no

15

no

no

yes

2

no

yes

yes

7

yes

yes

no

5

yes

yes

some

3

no

no

yes

6

yes

yes

no

Approximate Message Size

Binary Transmission

Byte Macro

Data Entry Terminal

Echo

Extended ASCII

Logout

Output Carriage Ret. Dispos.

Output Formfeed Dispos.

Output Horz. Tab Stops

Output Horz. Tab Stops Dispos.

Output Linefeed Dispos.

Output Line Width

Output Page Size

Output Vert. Tabstops

Output Vert. Tabstops Dispos.

Reconnection

RCTE

Status

Suppress Go Ahead

Timing Mark

Table 2. Classification of Telnet Options

Elnarv Transmission. In most cases, this option cannot be offloaded. However, the fact that it has been negotiated may be of interest to the service module in the front end. If the front end has been doing (or normally does) some translation tasks for the host, it will be necessary to coordinate the beginning of binary data with the cessation of such translation.

Bvte Macro. If this option is supported and any other options or functions are offloaded, then this option must be offloaded. This option provides a means for mapping arbitrary strings into one byte. Therefore, when this option is in effect,

176

DhAFT

6/23/77

NVTS PSP Offloading Telnet Options

the macro expansion must take place at the earliest point.

Data Entry Terminal (PET). It may be possible to offload all or part of this option depending on the nature of the host system. If the host supports only one form of data entry terminal, then the front end can map many DET option subcommands into the form required by the local terminals or programs.

Echo. In general, it is not possible to offload this option, since the process in the host which is connected to this terminal may wish to echo characters other than those typed. However, there are cases where it might be desirable if the front end did handle this option for certain kinds of hosts. For example, consider computers that support only half-duplex terminals, such as IBM 360*s, Burroughs 6700's, or Honeywell 6000's. Suppose that a user connects to such a host and asks it to DO ECHO. It would be quite reasonable to have the front end handle the echoing and present the host with an apparent line- at-a-time environment. This would avoid many of the difficulties of trying to fit a line -at-a-time system into a charact er-at-a- tip'e mode.

Output Line Width. Once again, the decision to offload this option rests heavily on how line-width regulation is enforced. If the regulation of line width is done by simple "line folding", then this function may be performed by the front end. However, if regulating line width requires more fundamental adjustments or more sophisticated action, it is quite likely that it will not be

177

DRAFT

b/23/77

NVTS PSP Offloading Telnet Options

possible to offload this option.

Output Page Size. The decisions that are relevant for offloading this option are similar to the ones described for output-line width. Some systems may interpret the regulation of page size as follows. The maximum number of lines in a page is sent. If there is still data to be sent, the sender pauses, waiting for an input from the user indicating that he is ready to proceed. If this is the sort of regulation desired when this option is negotiated, then it can be offloaded. However, if more fundamental adjustments or more sophisticated action is required, it may not be possible to offload it.

Remote Controlled Transmission and Echoing. The RCTE option is meant as a more general mechanism to replace the Echo option. If RCTE is used to replace the Echo option, then it may be offloaded under the same conditions as the Echo option. Otherwise, offloading is not possible and actually defeats the purpose of the RCTE option.

Status . Since not all options may be offloaded, it is necessary to offload part of the Status option and to leave part of it in the front end. It is suggested that the Status option be handled in the following way:

When the service module in the front end receive?. a Status option negotiation, it will respond favorably to the request by sending a WILL STATUS to the sender. It will then relay the option to the host in the normal manner and wait for a response

178

DRAFT

6/23/77

NVTS PSP Offloading Telnet Options

from the host. When the host receives the DO STATUS command from the front end, it will transmit back to the front end the subnegotiation specifying the state of the options it handles. When this subnegotiation is received by the front end, it will insert into this subnegotiation the status of the options it handles and then it will send the completed subnegotiation to the foreign host.

If no options are supported in the host or if no options are supported in the front end, then, of course, this procedure may be avoided and the whole operation done in the front end or in the host, respectively. Also it is possible for the front end to know what options are not supported and supply the default status in format! on.

Suppress Go Ahead In a sense the Suppress Go Ahead Option is always offloadable. If the host always penerates go-aheads then it is no problem for the front end to filter them out when the option is negotiated. However, it is impossible for the front end to insert go aheads when the option has its default value.

Telnet "Svnch" Sequences. In some cases, searching for "interesting" characters in the data stream may be offloaded. For example, if the only characters deemed interesting are the Telnet special characters, then this function may be offloaded. Or the front end may be provided with a list (on either a .static or dynamic basis) of strings to be searched for. However, even

179

DRAFT

8/23/77

NVTS PSP Offloading Telnet Options

if these functions are performed in the front end, they must also be done in the host before the "synch" sequence is received.) The only reason for offloadinp this function is to decrease the response time to the user's request.

180

6/23/77

NVTS PSP Scenario

V. Scenario

Let us consider how this protocol might be used by a process in the host to initiate a Telnet connection. We will assume that as many Telnet functions as possible have been offloaded.

The user initiates a Telnet connection by causing a EEG1N Command to be sent to the front end:

<BEGINXCXcontrol-bits = initXhost = 12>

Since the default settings for a BEGIN Command favor listening for a Telnet connection, the Command must in this case explicitly request that the connection be initiated. The NVT Service Module (NSM) in the front end will open the Telnet connection to host 12. Once the connection is established, the NSM will send a Begin Response to the host:

<BEGINXRXconnection stat e = 0Xhost = 12 Xf orei gn skt = M283> <msg=10Xbits = 10000Xlskt=5607>

The channel is now established and data can flow. Almost immediately the system herald message arrives from host 12 and is passed to the local host:

<TRANSMlTXCXtext , Go-ahea d>Cen t er for Adv. Computation<CRLF>Please log in:

(Since TRANSMIT Responses require no action by either the service or the process, they will not be shown in this example.) The process wishes to have the remote Telnet implementation cease

181

DRAFT

fa/23/77

NVTS PSP Scenario

echoing characters. So it requests the front end to negotiate with the remote Telnet process:

<EXECUTE><C><code=2><D0N'T><option code=1>

The NSM in the front end enters into an option negotiation with the remote Telnet process and is successful in stopping the remote character echoing. The NSM then informs the process:

<EXECUTEXRXresult = OX ref- coder 2>< WON' T> <option code=1>

The user now continues with his Telnet session, sending data to the remote host and receiving responses from it. Data and responses are transferred between the host and the front end by TRANSMIT Commands.

182

6/23/77

NVTS PSP References

VI. References

1. Postel, Jon, "Telnet Protocol Specification," NIC #15372, Aug. 1973-

2. Postel, Jon, "Telnet Option Specifications," NIC #15373, Aug. 1973.

3. Postel, Jon, "Telnet Binary Transmission Option," NIC #15389.

4. Postel, Jon, "Telnet Echo Option," NIC #15390.

5. Postel, Jon, "Telnet Reconnection Option," NIC #15391.

6. Postel, Jon, "Telnet Suppress Go Ahead Option," NIC #15392.

7. Postel, Jon, "Telnet Status Option," NIC #16237.

8. Postel, Jon, "Telnet Timing Mark Option," NIC #16238.

9. Postel, Jon, "Telnet Extended-Options-List Option," NIC #16239.

10. Walden, David C, "Telnet Output Line Width Option," NIC #20196, November 1973-

11. Walden, David C., "Telnet Output Page Size Option," NIC #20197, November 1973.

12. Crocker, D.H. and Postel, J.B., ''Remote Controlled Transmission and Echo Telnet Option," NIC #19059, November 1973-

13. Crocker, D.H., "Telnet Output Carriage-Return Disposition Option," NIC #31155 (RFC 652), October 1974.

14. Crocker, D.H., "Telnet Output Horizontal Tabstops Option," NIC #31156 (RFC 653), October 1974.

15. Crocker, D.H., "Telnet Output Horizontal Tab Disposition Option," NIC #31157 (RFC 654), October 1974.

16. Crocker, D.H., Telnet Output Formfeed Disposition Option," NIC #31158 (RFC 655), October 1974.

17. Crocker, D.H., Telnet Output Vertical Tabstops Option,' #31159 (RFC 656), October 1974.

NIC

18. Crocker, D.H., Telnet Output Vertical Tab Disposition Option," NIC #31160 (RFC 657), October 1974.

19. Crocker, D.H., "Telnet Output Linefeed Disposition", NIC #31161 (RFC 656), October 1974.

183

DRAFT

8/23/77

NVTS PSP References

20. Crocker, D.H., "Telnet Byte Macro Option", RFC 729, 1977.

21. Day, John, "Offloading ARPANET Protocols to a Front End", CAC Document No. 230, Center for Advanced Computation, University of Illinois at Urbana-Champai *?n , 1977.

22. Day, John, "Telnet Data Entry Terminal Option", RFC 731, 1977.

23. Grossman, G.R., "ARPANET Host-Host Process-t o-Service Protocol Specification", CAC Technical Memorandum No. 80, Center for Advanced Computation, University of Illinois at Urbana- Champaign, 1977.

24. Grossman, G.R., "Hos t-t o-Fron t-End Protocol Specification", RFC 7 10, 1977.

IRA

Appendix 5

User FTP Process- to-Service Protocol Specification

CAC Technical Memorandum 101

by John Day

User FTP

Process-to-Service Protocol

Speci f ication

I, s.e_r_ylce Cole JLumb e_r

7

II. Description of the Service

This document is a process-to-service protocol (PSP) specification as defined in the Host-to-Front-End Protocol (HFP) Specification [ARPANET RFC 710]. It specifies a process-to- service protocol for providing user file transfer protocol (FTP) services to a process through the HFP.

The file transfer protocol [5] is a protocol for transferring files between hosts on the ARPANET. FTP provides the mechanisms not only for file transfer, but also for various file management functions such as deleting and renaming files. A user FTP session requires two facilities: 1) an FTP interpreter to send FTP commands, receive FTP replies and control tl a transfer; and 2) a data transfer facility at each host to actually move the data and to perform any data translation required. This document specifies a process-to-service protocol that provides a process-oriented, rather than a human-oriented, interface to a user FTP module (FTP interpreter) in the front end. This process-to-service protocol would be used by resource sharing or distributed computing application programs. In essence, this PSP allows the user FTP interpreter to be offloaded

187

6/23/77

User FTP PSP Description of Service

while leaving the user interface in the host. This process-to- service protocol is analogous in many ways to the network virtual terminal process-to-service protocol [3]-

This PSP is used in conjunction with the File Access PSP to offload the user side of FTP. This PSP is used in two offloading schemes (see CAC Document No. 230) that differ only in whether data translation is done in the host or in the front end. In either case it may be necessary for information to be passed either between the user FTP service module and the file access service module in the front end or between the user FTP interface and the file access module in the host.

The user FTP process-to-service protocol uses H F P Messages to carry information between the process and the service module. A brief summary of the function of specific Message types follows .

BEGIN Command

from the host process

requests that an FTP connection be established.

BEGIN Response

from the service module

a) confirms the establishment of the connection or

b) reports the reason for failure.

END Command

from the process

requests the closing of the connection.

from the service module

reports the closing of the connection by the foreign host, or reports a system failure.

ENP Response

from the process

acknowledges the closing of the connection, from the service module

188

b/23/77

User FTP PSP Description of Service

acknowledges the closing of the connection.

189

DRAFT

b/23/77

User FTP PSP Description of Service

TRANSMIT Command,

from the process

carries FTP commands (perhaps encoded) to the

service module for transmission to the foreign

host over the ARPANET. fro;n the service module

carries FTP replies (perhaps encoded) received

over the ARPANET to the process.

TRANSMIT fiesp onse

is used to acknowledge receipt of FTP commands and replies .

EXECUTE Command

from the host process

requests that the service module

a) report the status of a connection;

b) send a special control function to the foreign host; or

c) modify the allocation on the connection.

EXECUTE Response

from the service module

a) acknowledges the success or failure of the action requested by the process via the EXECUTE Command and,

b) if requested, reports on the status of the connec tion .

This service requires implementations in the front end of the following additional protocols:

ARPANET Host-Host Protocol

ARPANET Initial Connection Protocol

ARPANET Telnet Protocol

ARPANET File Transfer Protocol (user side)

File Access Process -to-Servi ce Protocol

The implementation of the file access process-to-service protocol and an interface to this PSP are required in the host.

190

DRAFT

8/23/77 User FTP PSP

Description of Service

The detailed specification of the use of HfrP hessases follows .

191

DRAFT

b/23/77

User FTP PSP BEGIN Command

III. Message Use

III A. BEGIN Command

III A 1 . When sent

A BEGIN Command is sent by the process to request that the service module attempt to establish an ARPANET FTP connection .

Ill A 2 . Acti on on receipt

When the service module receives the BEGIN Command, it will attempt to establish the FTP connection according to the parameters in TEXT.

VARIABLE( ?) COMPLEX(b ) BIXED(4)

III A 3. TEXT field syntax

Security : Establishment : Control-bits :

Socket/Channel

ICP/Direct

Relative/Absolute

Unattachable/Attachable host: FIXED(32)

Foreign Socket: FIXED (32)

Messages: FIXED(16)

Bits: FIXED(32)

Local Socket: FIXED(32)

Timeout: FIXED(16)

III A 4. TEXT field semantics

III A

This, field can be used to validate the process' access privileges to network resources. It is particularly important to limit access to network security objects. The substructure and content of this field are installation dependent.

NOTE: At this writing, not enough is known about security in networks and front ends to make any statement about the utility of validation at this point in the system. This field is included in case some systems require validation at this point.

192

tt/23/77

User FTP PSP BEGIN Command

III A jj b. Establishment

the

esta

FTP

the

fore

an I

an

pro t

zero

the

end

fore

Thi

net blis

ser f'ron ictn CP t

FTP oco 1

a i iel

to ign

s set work

hmen t

vi ce .

t end

host

o the

con

Th

defau

d . T

esta

host .

of par

connec

pararae

This

specif

field w

FTP co

trol c

e defau

It valu

hus , mo

blish

ame t er ti on . t ers a mean ying o ould c n ta ct onnec t It val e may st bEG an FTP

s erove

The re oho s that nly d aus e t

ocket ion i u e s of be ind IN Com

s e s s i

rn s

def sen

a b ef au he f

( so

the icat

ma nd on w

the es aul t to fa EGIN C Its ront e eke t 3 ccorda field ed by s sent i 11 on

ta blish va lues vor th omman d xcep t nd to i ) and nee wi s are the a bs to the ly spec

ment of for the e user sent to in the n i t i a t e set up th the set at e n c e of f ron t ify the

III A H b ( 1 ) . Control-bits

The bits in this field covern the kind of

connection to be established, the method of its

establishment, and the interpretation of the parameters .

Ill A 4 b (1) (a). Socket/Channel

III A 4 b ( 1 ) ( b) . ICP/Direct

When this bit is zero (default), the

connection is to be established via the Initial

Connection Protocol. When this bit is one, the

connection is to be established directly to the specified foreign socket. The use of this bit in

specifying connection sockets is detailed in table 1 .

Ill A 4 b (1) (c). Relative/Absolute

This field affects the values of the local sockets for the connection. See III A k b (6) for details. The default case is Relative (value zero ) .

193

6/23/77

User FTP PSP EEGIN Command

III A 4 b (1) (d). Vnattachable/Attachable

When this bit is one, the service module is requested to make the logical channel available for attachment by other service modules within the front end (such as a data transformation service). If this bit is zero (default), the service module is not requested to make the logical channel available for attachment within the front end.

HI A 4 b (2). host

This field specifies the network host to which the connection is to be made. No default value of this field is specified in the PSP. If this field is to have a default value, the value and its meaning must be specified in the adaptation description.

The Host field is parsed as:

Network : Imp : host-at-Irrn:

FlXFD(b) F I X E D ( 1 6 ) F I X E D ( o ) .

Foreign So eke t

This field is used as follows to construct the effective foreign socket (e.f.s.) for ma kins? the connection .

Case 1. Foreign Socket field = zero. The e.f.s.

is three. Case 2. Foreign Socket field i zero. The e.f.s.

is the contents of the Foreign Socket

field.

The default value of this field is zero. The e.f.s., in conjunction with the ICP/Direct bit, is used to determine the foreign sockets for the connection. See table 1 for details.

Ill A 4 b (4) . Messages

This field and the Bits field allow the process to indicate to the service module the flow rate desirable on the FTP data connection. The service module may use this information in any way its implementors deem desirable.

This field contains the number of ARPANET Host- Host messages the process suggests be allocated on the connection. If the value of this field is zero (default), the service module chooses the number of

194

b/23/77

User FTP PSP BEGIN Command

messages on its own.

Ill A 4 b (5) . bits

This field contains the number of bits the process suggests be allocated for the FTP data connection. If the value of this field is zero (default), the service module chooses the number of bits on its own.

Ill A 4 b (6) . Local Socket

This field is used as foil effective local socket (e. connection .

Case 1. Relative/Absolute Socket field i z contents of the Gr will be concaten 20 bits of the Loc the e . 1 . s .

Case 2. Re la t i ve/ Absolu te Socket field = z service will choos order 12 bits field in the HEADE

Case 3. Relative/Absolute case the effectiv to the contents field.

ows to construct l.s.) for making

the the

bit = zero , Loca 1 ero. In this case, the oup field in the HLADth ated with the low-order al Socket field to form

bit = zero , Loca 1 ero. In this case, the e a number whose high are equal to the Group R.

bit = one . In this local socket is equal

of the Local Socket

The relationship between the e.l.s. and the local socket values depends upon the value of the ICP/Direct bit. See table 1 for details.

Ill A H b (7) . Timeout

This field contains the maximum length of time, in seconds, that the service module is to attempt to establish the connection (in the absence of an error or exceptional condition). If the service module has been unable to establish the connection within this time period, it is to abandon the attempt. If this field contains zero (default), the time period is to be infinite.

195

DRAFT

b/23/77

User FTP PSP BEGIN Command

IfiLJLl.fi 1

i Control Bits i Foreien Sockets ! Local Sockets i j ! for the connection | for the connection !

! iThe e.f.s. will be used! ! i ias the contact socket I ! i ICP i f or the connection. ie.l.s. + 2 and e.l.s. +3i i IThe control connection ! I ! isockets will be chosen ! i ! i by the foreign host . ! !

i Direct i e.f.s. and e.f.s. +1 i e.l.s. and e.l.s. + 1 !

196

6/23/77

User FTP PSF EEGIN Response

III B. BEGIN Response

III B 1. When sent

A BEGIN Response is sent by the service module to report the outcome of an attempt to establish an FTP connection requested by a BEGIN Command. The Status field in the HEADER will indicate whether the connection attempt was successful or unsuccessful.

Ill B 2. Action on receipt

When the process receives a BEGIN Response indicating a successful connection, it may proceed to send and receive data on the connection. When the process receives a BEGIN Response indicating an unsuccessful connection, it should perform the appropriate error recovery.

Ill B 3t TEXT field syptay

Connection-info :

Connection-state:

Host:

Foreign Socket:

Messages:

Bits:

Local Socket:

COMPLEX(b) FIXED(4) FIXED(32)

FIXED ( 32) FIXED ( 16) FIXED (32) F1XKD(52)

III B 4. TEXT field semantics

III B 4 a. Connection-state

If the connection attempt was successful (as indicated by the Status field in the HEADER), this field will contain the value 1 which will be compatible with the "open" state value defined for this field in the TEXT of the EXECUTE Response. (See section III K 4 c (1). )

If the connection attempt was unsuccessful, this field contains an encoded reason for the failure. Ihe codes are:

Illegal control bit combination

Invalid local socket

Invalid host

Connection attempt timeout

Network not available

Foreign host dead

Connection refused

Front end terminating service

Network connection incompletely specified

197

DRAFT

6/23/77

User FTP PSP BEGIN Response

in e ** Ot vq$%

If the connection attempt was successful, this field contains the ARPANET host address of the host to which the connection was established. (See III A 4 b (2). )

IU E ** Ct Foreign Socket

If the connection attempt was successful, this field contains the socket number at the foreign host to which the connection was established.

Ill B k d. Messages and Eits

If the connection attempt was successful, these fields contain the flow control parameters for the connection at the time the BEGIN Response was generated.

Ill B it e. Local Socket

If the connection attempt was successful, this field contains the local socket number for the connection .

198

DRAFT

6/23/77

User FTP PSP END Command

III C. END Command

III C 1 . When sent

III C 1 a. By the process

An END Command is sent by the process to request the service module to close the network connection.

Ill C 1 b. by the service module

An END Command is sent by the service module to notify the process that the connection has been closed by the foreign host or by a failure of the foreign host or the network.

Ill C 2, Action on receipt

III C Z a. By the process

When the process receives an END Command, it should consider the connection closed. The process should send an END Response and take appropriate recovery action.

Ill C 2 b> 3y the service module

When the service module receives an END Command, it should allow data queued for transmission to the network to drain, unless Flush awav (bit 1) is set in the Control field. It should then initiate the process of closing the connection. When the connection is closed, the service module should send an END Response.

HI C 1, TEXT field syntax

Cause: FIXED(3) III C M. TEXT field semantics

III C *4 a. Cause

This field contains an encoded reason

the END Command. The codes are:

0 Normal completion (default)

1 Network/process failure

2 Foreign host failure

3 User requested termination

4 Front end terminating service

for sending

199

DRAFT

b/23/77

User FTP PSP END Response

III D. END Response

III p 1 at By the process

The END Response is sent by the process to acknowledge the receipt of an END Command and complete the termination of the associated logical channel.

Ill D 1 b. Bv the service module

The END Response is sent by the service module to acknowledge receipt of an END Command, notify the process that the connection has been closed as requested, and terminate the logical channel.

Ill D 2, Actjon on receipt

III D 2 at py the process

When the process receives the END Response, it should consider the ARPANET connection to be closed and the HFP logical channel to be terminated.

Ill P 2 b. Pv the service module

When the service module receives the END hesponse, it should consider the logical channel to be terminated.

HI D 3. TEXT fjeld_sxDlax

The TEXT field in the END Response is not used in this protocol .

200

DRAFT

6/23/77

User FTP PSF TRANSMIT Command

III E. TRANSMIT Command

III E 1 . When sent

III E 1 a. Bv the process

The TRANSMIT Command is sent by the process to pass FTP commands to the service module for transmission over the network to the foreign host.

Ill E 1 b. Bv the service module

The TRANSMIT Command is sent by the service module to pass FTP replies that have arrived over the network from the foreign host to the process.

Ill £ 2. ActiQh on recej.pt

III E 2 a. Bv the process

When the process receives a TRANSMIT Command, it will treat the contents of the TEXT as FTP replies to be processed. (See section IV tor details.)

Ill E 2 b. By the service module

When the service module receives a TRANSMIT Command, it will treat the contents of the TEXT rs FTP commands to be transmitted over the network. (See section IV for details.)

Ill E 3. TEXT field syntax

Control: FIXED(1)

Go-Ahead/More-Data Data: VARIAhLh(?)

Ill E 4. TEXT field semantics

III E H a. Control

The single bit in this field indicates whether or not the sender of the TRANSMIT Command has completed sending data. It is used to facilitate handling half- duplex terminals connected to the process. The receiver of a TRANSMIT Command with this bit set to 0 (default) should assume that the sender has completed sending d^i? and that the receiver is now free to send any data that it has. If the bit is set to 1 the sender has more data to send and the receiver should not send data at this t ime .

201

DRAFT

6/23/77

User FTP PSP TRANSMIT Command

III E 4 b. Data

The Data field contains the FTP commands and replies to be transferred. For more details see CAC Document 230, and section IV.

202

DRAFT

8/23/77

User FTP PSP TRANSMIT Response

UJL

The TRANSMIT Response is used specif i cation .

descri bed in the

203

6/23/77 User FTP PSP

SIGNAL Command

III G. SIGNAL Command

The SIGNAL Command is not used in the process-to-service protocol. SIGNAL Commands may be generated by process or service to request that the CPM carry out the appropriate action on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel level.

204

DRAFT

6/23/77

User FTP PSP SIGNAL Response

III H. SIGNAL Response

The SIGNAL Response is not used by either process or service.

205

6/23/77

User FTP PSP EXECUTE Command

III J. EXECUTE Command

XII J 1. Whep Sent

The process sends an EXECUTE Command to request the service module to

a) report the status of a specified connection,

b) send a Telnet control function,

c) handle Telnet options and FTP replies, or

d) modify the allocation for the connection.

The service module does not send EXLCUTE Commands for this protocol .

Ill J 2. Action upon Receipt

When the service module receives an EXECUTE Command it will decode and act on the request.

FIXED(2) VARIABLE( ?)

Ill J V TEXT fjejd syntax

Code: Parameters :

III J M. TEXT fiejd semantics

III J 4 a. Code

This field contains an encoding of the type of request. The codes are:

0 Report status

1 Send control function

2 Handle Telnet options and FTP replies

3 Modify suggested allocation

III J 4 b. Parameters

This field contains the parameters for specifying the requests. The contents will vary according to the type of request.

Ill J 4 b (1). Report status

No parameters are required.

Ill J ^ b (2). Send control function

III J ** b (2) (a), Parameter_fjel4 syntax

Control Function: FIXED (b)

206

6/23/77

User FTP PSP EXECUTE Command

III J 4 b (2) (b). Parameter field semantics

This field contains a parameter specifying a Telnet control function that the User FTP module should send on the control connection. The parameter values and their meanings are:

242 SYNCH

243 Break

244 Interrupt process

245 Abort output

246 Are you there

III J 4 b (^). Handle options and FTP replies III J 4 b (1) (a). Parameter fie Id syntax

Option control: Reply text control:

F I X E D ( 2 ) FIXED( 1 )

III J 4 b (3) (b). Parameter field semantics

These fields contain parameters that indicate

1) how the front end should respond to Telnet option negotiations on the control connection or

2) whether or not the front end should forward the text of FTP replies to the host. How Telnet options and FTP replies are handled before the process sends the relevant EXECUTE Commands is installation-specific and must be specified in the adaptation description. The parameter values and their meanings are:

Option control values:

1 Refuse all options

2 Refuse no options

3 Refuse options not handled by the front end

Reply text control values:

0 Send FTP reply text

1 Don't send FTP reply text

L J 4 b ( 4 ) . Modi f v sug gested allocation

III J 4 b (4) (a). Parameter field syntax

Mess ages : Bits:

FIXED( 16) FIXED(32)

III J 4 b (4) (b). Parameter field seman tics

The semantics of this field are identical

207

DRAFT

b/23/77

User FTP PSP EXECUTE Command

those described for the allocation fields in the BEGIN Command. (See sections III A i* b ( H ) - III A J* b (5). )

208

DRAFT

6/23/11

User FTP PSP EXECUTE Response

III K. EXECUTE Response III K 1. When Sent

The service module sends an EXECUTE Response when

a) it has completed the operation requested by EXECUTE Command, or

b) it has received an EXECUTE Command whose TEXT in error.

EXECUTE Responses for this

The process does not send process-to-service protocol.

Ill K 2. Action on Receipt

When the process receives an EXECUTE Response, it should examine the TEXT to see whether the Response indicates an error. If no error is indicated, it may consider that the action requested by a previous EXECUTE Command was successful. If an error is indicated, appropriate error recovery action should be initiated. This action is idiosyncratic to the process.

Ui K 3. text field syntax

Result: FIXED(2)

Ref-Code: F1XED(2)

Connection-info: COMPLhX(?)

Control connection-state: FIXED(2)

Data connection-state: FIXED(2)

Host: FIXED(32)

Foreign Socket: FIXED(32)

Messages: FIXED(16)

Bits: FIXED(32)

Local Socket: FIXED(32)

III K 4. TEXT field semantics

III K M a. Result

This field contains an encoding of the result of the request (made in a previous EXECUTE Command) to which the EXECUTE Response is a reply. The codes are:

Success

Illegal code in request

TEXT too short.

Ill K 4 p. Ref-code

This field contains the same value as the Code field of the TEXT of the EXECUTE Command to which the

209

DRAFT

6/23/77

User FTP PSP EXECUTE Response

EXECUTE Response is a reply.

Ill K 4 c. Connection-Info

This field is present only if the Ref-code has a value of zero or three (status or modify allocation). The semantics of this field are identical with the Connection-info field of the BEGIN Response (section III B 4) with the following exception.

Ill K 4 c (1). Control connection-state

If the ref-code value is zero (status), this field indicates the present state of the FTP control connection. The possible values of this field and their meanings are:

0 1 2 3

III K 4 c (2).

Closed

Open

Waiting for open to complete

Waiting for close to complete

Data

pn-s tat e

If the ref-code value is zero (status), this

field indicates the present state of the FTF Data

connection. The possible values of this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

210

DRAFT

6/23/77

User FTP PSP Details of Offloading

IV. Details of Offloading User FTP

The ARPANET File Transfer Protocol consists of two TiRjor sections: a command-and-response section and a data transfer section. The file access process-to-service protocol deals with offloading the data transfer portion, while this protocol and the program access process-to-service protocol deal with different ways of offloading the command-and-response section.

The program access process-to-service protocol offloads the entire command-and-response section including the user interface. Thus programs which wish to use FTP are required to deal with the human-oriented interface of the front end. The user FTP process-to-service protocol defines an offloading scheme more appropriate for the use of FTP by programs. Alternatively, one can view this protocol as defining an offloading scheme that leaves the user interface in the host.

In this protocol, the TRANSMIT Command can be used to send FTP commands and replies between the service module and the process. Some installations may wish to send some intermediate form or encoding peculiar to their host's file system or user interface and let the service module in the front end translate into the proper FTP Commands. For most installations, the best method of encoding this information is to just send the FTP commands themselves. Since many of the parameters are character strings, little is saved by additional encoding. The only major exceptions would be the data transfer parameter commands such as

211

DRAFT

8/23/77

User FTP PSP Details of Offloading

TYPE, MODE, etc. Similar arguments hold for the replies. Because of the semantics attached to the individual decimal digits, some coding would be possible, but of limited utility. Some installations may wish to use the control function described in Section III J H b (3) to send only the reply code to the process and not the full text of the reply. Section V gives a suggested structure for encoded FTP commands and replies.

File transfers can be handled in two ways: either the host or the front end controls the transfer. In either case the transfer is mediated by the file access process-to-service protocol. If the transfers are controlled from the host (i.e., the using file access module in the host), then the process will supply the file access service module in the host with the local file name. Thus, the FTP file transfer commands (e.g. RETR, SEND, etc.) can be sent as they are defined in the protocol to the front end. However, if the transfers are controlled from the front end (i.e., by the using file access module in the front end), the process must inform the service module in the front end of the names of both the local file and the remote file to be used in the transfer. This will require that both pathnames (local and foreign) be passed to the front end. For further discussion of FTP offloading see [4].

21?

DRAFT

6/23/77

User FTP PSP Encoding of FT? Commands

V. Suggested Encoding of FTP Commands and heplies V A . Command Syntax

Code: Parameters

FIXEDC5) VARIABLE*?)

V A 1. Command Semantics

V A 1 a. Code

This field contains a code which represents particular FTP command. The values are:

0

USER

1

PASS

2

ACCT

3

REIN

4

BYE

5

BYTE

6

SOCK

7

PASV

6

TYPE

9

STRU

10

MODE

1 1

RETR

12

STOR

13

APPE

14

ALLO

15

REST

16

RNFR

17

RNTO

1b

ABOR

19

DELE

20

LIST

21

NLST

22

SITE

23

STAT

24

HELP

V A 1 b. Parameters

This field contains any parameters necessary the commands. They are encoded as follows:

for

V A 1 b (1). Parameters for USER, PASS, ACCT

Access Parameter: VARIABLE( )

V A 1 b ( 2 ) . Param eters for Data Transfer Commands

Byte Size: Socket :

FIXED(8) FIXED(32)

DRAFT

8/23/77

User «TP PSP Encoding of FTP Commands

Type:

Stru:

Mode:

Alio:

File Transfer:

Foreign path : Local path:

F1XED(4)

FIXED( 1 )

FIXED(2)

FIXED( )

C0MPLEX(2)

VARIAbLt(?) VARIAbLE(? )

V B, Reply syptax

Reply code: Reply text :

FIXED( 10) VARIABLES )

The three-digit reply codes are coded as

Bits 0-2: 1st digit

Eits 3-5: 2nd digit

Bits 6-9: 3rd di*it

214

DRAFT

6/23/77

User FTP PSP Scenario

VI. sgenario

Let us consider how this protocol might be used to offload a user FTP which has its user interface in the host and uses the file access process-to-service protocol to transfer files. The using file access module (UFAM) and the data translation functions are in the front end.

The user initiates the host's user FTP process (UFP) and asks for a connection to ILL-CAC. The UFP notes that this is a normal FTP request and sends a BEGIN Command to the front end specifying only the foreign host (the other parameters have their default values) :

<BEGINXCXsecurity = day,johnXcontrol-bits=0Xhost=12>

The user FTP service module (UFSto) in the front end will then attempt an ICP to socket 3 (the FTP contact socket) at ILL- CAC. Once the connection is established the UFSto will return a BEGIN Response to the UFP indicating the outcome:

<EEGINXRX?tater1Xhost=12X foreign skt = 4399Xmsg=H> <bits=2000X1skt = 23b3>

Later the herald message arrives from the FTP server at ILL-CAC and is passed to the UFP:

<IRANSMITXC>300 Center for Adv. Computation. Please locr in:

215

DRAFT

6/23/77

User FTP PSP Scena rio

(Since TRANSMIT Responses require no action by either the service or the process, they will not be shown in this example.) The user now sends the FTP USER command which is passed from the UFP to the UFSM and on to the net:

<TRANSMITXOUSER day

(The UFSM notes what command is being sent so that it can know what replies it should expect in return. For most commands this is mainly an integrity check on the operation of the server. However, for the data transfer commands the replies indicate the state of the transfer and may have an effect on the control of the data connection.) The response comes from the server FTP and is passed on to the UFP:

<TRANSMITXC>331 Please enter password

The user enters the FTP PASS command and it is passed to the

UFSM:

<TRANSMITXOPASS John

This command is then sent to the server FTP. khen the response arrives it is passed to the UFP:

<TRAKSMITXC>230 User logged in for file transfer

The user now wishes to move a file from the server to a local file on the host. Since such transfers are initiated and controlled by the UFAM in the front end, both the local and remote pathnames must be passed to the front end. The following

216

6/23/77

User FTP PSP Scenario

command is sent to the UFSM:

<TRANSMITXORETR junk. note to note, junk

where the first pathname is the remote one and the second the local one. The UFSM will send the portion:

RETR junk. note

to the server FTP, initiate a data connection on the default data socket, and pass the second pathname, the local port and security information to the UFAM. The UFAM will then establish a session with the host and begin transfer of data into the host. Once the transfer has begun the server FTP will send a 125 reply which will be passed on to the UFP:

<TRANSMITXC>125 File Transfer begun

After the transfer has completed the server FTP will send a 226 which will be passed on to the UFP:

<TRANSMITXC>226 File Transfer completed

Suppose that the user then wishes to delete the file he has just transferred. The UFP sends an FTP DELE command to the UFSM:

<TRANSMITXODELE junk. note

The UFSM passes the TEXT of this message on to the server FTP. Later a reply is returned and passed on the UFP:

<TRANSMITXC>250 File junk. note deleted

217

b/23/77

User FTP PSP Scenario

The user then wishes to terminate the FTP session. The UFP passes an FTP QUIT command to the UFSM:

<TRANSMITXOQUIT

The UFSM passes the QUIT on to the server FTP. The server FTP responds with a 221 reply. However, before this reply is received the UFP terminates the channel by sending an END Command :

<ENDXCXs tat us = 0> (indicating normal termination)

and the UFSM replies promptly with:

<ENDXR>

The UFSM is then left to close all network connections in accordance with the FTP protocol and to notify the UFAM to terminate its session also.

218

6/23/77

User FTP PSP References

VII. References

1. Day, J. "Server FTP Process -to-Servi ce Protocol," CAC Technical Memorandum No. 100, Center for Advanced Computation, University of Illinois at Urbana-Champai *n , 1977.

2. Day, J. "File Access Process-t o-Ser vi ce Protocol," CAC Technical Memorandum No. 102, Center for Advanced Computation, University of Illinois at Ur bana-Champ ai c;n , 1977.

3. Day, J. "Network Virtual Terminal Process-t o-Service Protocol," CAC Technical Memorandum No. 103. Center for Advanced Computation, University of Illinois at Urbana- ChampaiKn, 1977.

4. Day, J. "Offloadine ARPANET Protocols to a Front End," CAC Document No. 230, Center for Advanced Computation, University of Illinois at Urbana-Champai *n , 1977.

5. Neigus, N. 1973.

•The File Transfer Protocol,

ARPANhl

RFC 542,

6. Nei<?us, N; Poerran, K.; and Postel, J. Reply Codes," ARPANET RFC 6U0, 1974.

■A New Schema for FTP

7. Postel, J. "Telnet Protocol Specification," NIC #1b639, 1973.

21Q

Appendix 6

Server FTP Process -to-Service Protocol Specification

CAC Technical Memorandum 100

by John Day

221

Server FTP

Process-to-Service Protocol Specification

I. Service Code Number

II. Description of the Service

This document is a process-to-service protocol specification as defined in the Host-to-Front-End Protocol (HFP) Specification [ARPANET RFC 710]. It describes a protocol for offloading the server side of the ARPANET File Transfer Protocol [ *J ] .

The file transfer protocol (FTP) is a protocol for transferring files between hosts on the ARPANET. FTP provides the mechanisms not only for file transfer, but also for various file management functions such as deleting and renaming files. A Server FTP session requires an FTP protocol interpreter to control the transfer and to perform the file management operations and a data transfer process to actually move the data and to perform any translations between the network data representation and the local data representation. The file access process-to-service protocol deals with offloading the data transfer section. The server FTP process-to-service protocol deals with offloading the command-and-response section. Of the twenty-five FTP commands defined in the protocol, only seven must be done by the residual server FTP process in the host. The others are handled by either the file access service module or

DRAFT

b/23/77

Server FTP PSP Description of Service

the server FTP process in the front end. Those seven commands are :

RENAME

DELETE

SITE

STATUS (are)

ALLOCATE

LIST

NAME-LI ST

The FTP commands used for user authentication (US Eh, PASS, and ACCT) may or may not be offloaded depending on the security policy arrangement between the front end and the host.

The organization of some host systems may be such that the ALLOCATE, LIST and NAME-LIST commands are best performed through the file access process-to-service protocol. Depending on the particular offloading environment the other commands may be handled in either the host or the front end.

This process-to-service protocol requires implementations in the front end of the following additional protocols:

ARPANET Host-Host Protocol

ARPANET Initial Connection Protocol

ARPANET Server Telnet

ARPANET File Transfer Protocol (Server side)

File Access Process-t o-Ser vi ce Protocol

224

DRAFT

b/23/77

Server FTP PSP Description of Service

Implementations of the File Access PSP and a residual Server FTP which uses the Server FTP PSP will normally be required in the host. (Installations that only allow the transfer of data by network users will not require the use of this protocol.)

The server FTP process-to-service protocol uses HFP Messages to carry information between the residual part of Server FTP in the host (the "process") and the server FTP service module (the "service") in the front end. A brief summary of the specific Message types follows.

bEGIN Command

is used to initiate connections.

EEGIN Response

is used to confirm the establishment of a connection, or to report the reason for failure.

END Command

is used to terminate a connection.

ENP Response

is used to confirm the termination of a connection.

TRANSMIT Command

is used to transfer FTP commands and replies to and from the Telnet connection.

TRANSMIT Response

is used to acknowledge the transfer of FTP commands and replies.

EXECUTE Command and Response

a) report the status of connections,

b) perform control functions, and

c) modify suggested allocations.

The details of the use of HFP Messages are given in the following section.

225

DRAr i

6/23/77

Server FTP PSP Description of Service

III. Message Use

HI A. BEQXN Command

III A 1. When sent

III A 1 a. by the host process

A BEGIN Command is sent by the host process to indicate that it is able to accept an FTP user. The host process sends as many BEGIN Commands as the number of connections it will accept.

I?I A 1 b. By the service module

In some offloading schemes, a BEGIN Command is sent by the service module to request FTP service in behalf of a particular user.

Ill A 2. Action on receipt

III A 2 a. Bv the service module

When the service module receives a BEGIN Command, it attempts to set up a connection as specified by the parameters in the TEXT. The service module may refuse the BEGIN Command by sending an appropriate BEGIN Response.

Ill A 2 b. Bv the host process

When the host receives a BEGIN Command, it should attempt to provide FTP service for those FTP commands not handled in the front end. The host may refuse the request for service by sending an appropriate BEGIN Response. The only field the host process should expect in the TEXT of the BEGIN Command is the Security field.

Security: Es ta blishmen t : Control-bits :

Socket/Channel

ICP/Direct

Relative/Absolute

Unattachable/Attachable Host:

Foreign Socket: Messages : Bits:

Local Socket or Logical Channel: Timeou t :

VAR1AELEC?) COMPLEX(tt) FIXED(M)

FIXED(32) FIXED(32) FIXED( 16) FIXED(32) FIXED(32) FIXED( 16)

2?6

DRAFT

8/23/77

Server FTP PSP BEGIN Command

III A IL TEXT field semantics Xii a a a. security

This field may be used by the front-end or the host to validate the access privileges of the server or user, respectively. The default value of the field is empty. Note: At this time, very little work has been done on the organization of security for networks or these kinds of systems. It is not clear where access control should be placed. This field has been included in case some systems require validation at this point.

Ill A 4 b, Establishment

conne def au favor Comma would for a (sock time, a de field for a

This ction It for

the nd sen

caus n ICP et 3)

The fault Thu Serve

set to the Serv t to e th conne fro def au valu s, mo r FTP

of pa be as establ er FTP the fr e f ron ction

ny

It val

e may

st BEG

sessi

rameter sociate ishment servic ont end t-end S on the host ues of be indi IN Comm on will

par

spe erve stan for the cate ands

hav

escribes ith thi ameters This mea cif ying r FTP Se dard FTP an indef fields a d by the s ent to e an emp

the ki s channel are chos ns that a

only de rvice to

contact inite per re set at

absence

the fron ty TEXT f

nd of

The

en to

BEGIN faults listen socket iod of

zero ; of the t end ield.

Ill A ** b (1), Control-bits

The bits in this field govern the kind of connection to be established and the interpretation of the parameters.

Ill A 4 b (1) (»), Socket/Channel

If this bit is zero, the logical channel from the relay process is to be established to a new ARPANET connection. If this bit is one, the logical channel from the host process is to be attached to an already existing HFP channel (e.*. a channel already established to the FTP service module and therefore providing access to an existing network connection.) The default value is zero.

Ill A H b (1) (b). ICP/Direct

This bit is relevant only when a new network connection is requested. (Socket/Channel bit is zero.) When this bit is zero (default), the connection is to be established via the Initial Connection Protocol. When this bit is one, the

??7

DRAFT 8/23/77 Server FTP PSP

BEGIN Command

connection is to be established directly. The use of this bit in specifying connection sockets is detailed in table 1.

Ill A 4 b (1) (c). Relative/Absolute

This field affects the value of the socket for the local connection. See III A 4 b (6) for details .

Ill A 4 b (1) (d). Unattachable/Attachable

When this bit is one, the server FTP service module is requested to make the logical channel available for attachment by other service modules within the front end (such as a data transformation service). Otherwise this bit is zero (default). See CAC Technical Memorandum No. 60, p. 3i for a discussion of this feature.

HI A 1 b (2). Host

This field specifies the network host or hosts from which the FTP connection is to be expected. The default value is zero, indicating that a connection from any host will be accepted. The Host field is parsed as:

Network: FIXED(6)

IMP: FIXEDM6)

Host-at-IMP: FIXED(8)

III A if b (3). Forejgp Socket

This field is used as follows to construct the effective foreign socket (e.f.s.) for making the connection .

Case 1. Foreign Socket field = zero. The e.f.s.

is three. Case 2. Foreign Socket field i zero. The e.f.s.

is the contents of the Foreign Socket

field.

The default value of this field is zero. The relationship between the e.f.s. and the foreign sockets for the connection depends upon the value of the ICP/Direct bit. See table 1 for details.

Ill A k b (4). Mess ages

This field and the Bits field allow the process to indicate to the service module the flow rate

228

DRAFT

6/23/77

Server FTP P S P BEGIN Command

desirable on the FTP data connection. The service module may use this information in any way its implementors deem desirable.

This field contains the number of host-host messages the process suggests be allocated on the connection. If the value of this field is zero (default), the NCP chooses the number of messages on its own.

Ill A 4 b (5). Pits

This field contains the number of bits the process suggests be allocated for the FTP data connection. If the value of this field is zero (default), the NCP chooses the number of bits on its own.

Ill A 4 b (6). Local Socket or Logical Channel

If the Socket/Channel bit is one, this field contains the channel Group and Member values specifying the HFP channel to which connection is to be made. The format of this field is then:

<not used): FIXED(^) Group: FIXED(12) Member: FIXEDM6)

If the Socket/Channel bi used as follows to constr socket (e.l.s.) for making th

Case 1 .

Case 2.

Case 3-

Relative/Absolut Socket field i contents of th HEADER will be low-order 20 bit field to form th Relative/Absolut field = zero. I will choose a nu bits are equal t HEADER .

Relative/Absolut the effective the contents of

t

is zero ,

uct the e

e

connect i

e

bit r

zero. In

e

Group

concat en;

s

of the

e

e.l.s.

e

= zero,

n

this cas

mber whose

0

the Groui

e

= one .

local sock

the Local ;

this field is ffective local on.

zero , Loca 1 this case, the field in the a t ed with the

Local Socket

Local Socket e, the service

high order 12 p field in the

In. this case et is equal to Socket field.

The relationship between the e.l.s. and the local sockets for the connection depends upon the value of the ICP/Direct bit. See table 1 for details.

Ill A 4 b (7) . Timeout

229

DRAFT

b/23/77

Server FTP PSP BEGIN Command

This field contains the maximum length of time, in seconds, that the service module is to attempt to establish the connection (in the absence of an error or exceptional condition). If the service module has been unable to establish the connection within this time period, it is to abandon the attempt. If this field contains zero (default), the time period is to be infinite.

230

DRAFT

8/23/77

Server FTP PSP BEGIN Command

Table 1

Control Bits ! Foreign Sockets i Local Sockets

! for the connection j for the connection

!The e.f.s. will be used! las the contact socket i ICP .for the connection. ie.l.s. + 2 and e.l.s. + 3 'The control connection ,' {sockets will be chosen i i by the foreign host. i

Direct i e.f.s. and e.f.s. +1 | e.l.s. and e.l.s. + 1

231

DRAFT

6/23/77

Server FTP PSP EEGIN Response

III B. begin Response

III P 1. When sept

III p 1 a, gy the service module

The BEGIN Response is sent by the service module to indicate that a successful network connection has been established, or that the BEGIN Command has been refused.

Ill B 1 fri By the host propels

The BEGIN Response is sent by the host to indicate that it has established FTP service for the non- offloaded FTP commands, or that the host is unable to provide such service.

Ill B 2. Action on receipt

III B g a. By the host

When the BEGIN Response is received by the host, the process should determine whether a successful connection was made. If so, it may send or receive data. If not, it may be appropriate to invoke an error recovery procedure.

Ill p 2 b. By the service module

The only field that the service module should expect to see in the TEXT of a BEGIN Response is the Status field. The service module should take note of the Status field value; otherwise no action is called for.

Ill B 3, TEXT field syntax

Security : Connection -info:

Status:

Host:

Foreign Socket:

Messages:

Bits:

Local Socket:

III B 4, TEXT field semantics III B 1J a. Security

VARIABLES?) COKPLEX(?) FIXED(4) FIXED(32) FIXEDC32) FIXED( 16) FIXED(32) FIXED(32)

This field may be used to allow the host to validate the access privileges of the user and to pass the information along to the front end. This field could be particularly important for monitoring access by

23?

6/23/77 Server FTP PSP

BEGIN Response

users directly connected to the front end.

Ill E 4 b. Connection-info

This field describes the connection associated with this channel.

Ill B.Jj.b (1). Status

This field indicates the success or failure of the BEGIN Command. The value zero indicates success while any non-zero value indicates failure. The particular value of the non-zero field Rives the reason for failure. The possible values of this field and their meanings are:

0 Success

1 Illegal connection type

2 Invalid local socket

3 Unknown host

4 Improper access

5 Front end terminating1 srrvice

6 Connection attempt timeout

7 Network not available b Foreign host dead

9 Connection refused

10 Local host overloaded

Others may be defined later.

Ill B 1 b (2). host

If the connection attempt was successful, this field contains the ARPANET host address of the host to which the connection was established. (See III A 4 b (2). )

III B 4 b (1). Foreign Socket

If the connection attempt was successful, this field contains the socket number at the foreign host to which the connection was established.

Ill B 4 _ b (4) . Messages and Bits

If the connection attempt was successful, these fields contain the flow control parameters for the connection at the time the BEGIN Response was gene rated .

Ill B 4 b (5). Local Socket

233

DRAFT

i/23/77

Server FTP PSP BEGIN Response

If the connection attempt was successful, this field contains the local socket number for the connection.

23A

DRAFT

8/23/77

Server FTP PSP END Command

III Ct ENP Command

III C 1 . When sent

The END Command may be sent by either the process or the service to terminate an FTP connection. If sent by the process, it usually indicates that the host system has requested that the connection be closed. The service module may send an END Command because the foreign host has closed the connection in response to a user request, or because some failure condition has occurred that requires that the connection be aborted.

Ill C 2t Action on receipt

HI Q 2 af By the process

When the process receives an END Command, it should acknowledge it as promptly as possible by sending an END Response.

Ill C 2 b. By the service module

When the service module receives an END Command, it should close the FTP data connection (if open), send the proper FTP replies indicating termination (120, 221, 421 or 530), and close the control connection. Once the connections are closed, the service module should send the END Response to the process.

HI c T- text mid syntax

Status: FIXED (3)

III C 4tTEXT field semantics

III C 4 a. Status

This field indicates the cause of the termination of the TELNET connection. The values of the field and their associated meanings are:

0 Normal close by foreign host

1 Network failure

2 Foreign host failure

3 User requested close

4 Improper access

5 Front end terminating service

Other causes for termination may be defined at a later date. The default value of the field is zero.

235

DRAFT

6/23/77

Server FTP PSP END Response

III pt ENP Response

III D 1. When sent

The END Response is sent by either the process or the service module to acknowledge that an END Command has been received and proper action taken.

Ill P Zr Action on receipt

When either the process or the service receives an END Response, it should assume that all dialogue associated with this logical channel has completed, and it should ignore any other Commands on this channel except a BEGIN Command.

Ill D 3. TEXT field syntax

The TEXT field in the END Response is not used in this protocol .

236

DRAFT

8/23/77

Server FTP PSP END Response

III E. TRANSMIT Command

III E 1 . When sent

III E 1 a. Bv the process

The TRANSMIT Command is sent by the process to pass FTP replies to the service module for transmission over the network to the foreign host. (For details of offloading see CAC Document 230.)

Ill E 1 b. By the service module

The TRANSMIT Command is sent by the service module to pass FTP commands that have arrived over the network from the foreign host to the process. (For details of offloading see CAC Document 230.)

Ill E 2. Action Qh regejpt

III E 2 a. Bv the process

When the process receives a TRANSMIT Command, it will treat the contents of the TEXT as an FTP command to be processed. (For details see CAC Document 230.)

Ill E 2 b. Bv the service module

When the service module receives a TRANSMIT Command, it will treat the contents of the TEXT as an FTP reply to be transmitted over the network. (For details see CAC Document 230.)

HI E 3. TEXT field syptax

Control: FIXED(1)

Go-Ahead/More-Data Data: VARIAELE(?)

Ill E M. TEXT field semantics

III E 4 a. Control

The single bit in this field indicates whether or not the sender of the TRANSMIT Command has completed sending data. It is used to facilitate handling half-duplex terminals connected to the process. The receiver of a TRANSMIT Command with this bit set to 0 (default) should assume that the sender has completed sending data and that the receiver is now free to send any data that it has. If the bit is set to 1 the sender has more data to send and the receiver should not send data at this

237

DRAFT

6/23/77

Server FTP PSP END Response

time.

Ill E 4 b. Data

The Data field contains the FTP commands and replies to be transferred. For more details see CAC Document 230, and section IV.

238

DRAFT

8/23/77

Server FTP PSP TRANSMIT Response

III F. TRANSMIT Response

The TRANSMIT Response is used as described in the hFP specification .

23Q

DRAFT

6/23/77

Server FTP PSP SIGNAL Command

III G. SIGNAL Command

The SIGNAL Command is not used service protocol. SIGNAL Commands

in may

the process-to- be generated by-

process or service to request that the CPM carry out the appropriate action on the logical channel. (See HFP specification.) Thus, the effect of the SIGNAL Command is restricted to the logical channel (HFP) level.

240

DRAFT

8/23/77

Server FTP PSP SIGNAL Response

III H. SIGNAL Response

The SIGNAL Response is not used by either process or service.

241

8/23/77

Server FTP PSP EXECUTE Command

III J. P-ECUTE Command

III J 1. When Sent

The process sends an EXECUTE Command to request the service module to

a) report the status of a specified connection,

b) send a Telnet control function,

c) handle Telnet options and FTP replies, or

d) modify the allocation for the connection.

The service module does not send EXECUTE Commands for this protocol.

Ill J 2. Action upon Receipt

When the service module receives an EXECUTE Command it will decode and act on the request.

FIXED(2) VARIAbLE( ?)

Ill J 3. TEXT field syntax

Code: Parameters :

HI J 4. TEXT field semantics

III J 4 a. Code

This field contains an encoding of the type of request. The codes are:

0 Report status

1 Send control function

2 Handle Telnet options and FTP replies

3 Modify suggested allocation

III J 4 b. Parameters

This field contains the parameters for specifying the requests. The contents will vary according to the type of request.

Ill J 4 b (1). Report status

No parameters are required.

Ill J 4 b (2). Send control function

III J 4 b (2) (a). Parameter field syntax

Control Function: FIXED (b)

242

DRAFT

6/23/77

Server FTP PSP EXECUTE Command

HI v> ^ b (?) (b), Parameter field semantics

This field contains a parameter specifying a Telnet control function that the User FTP module should send on the control connection. The parameter values and their meanings are:

242 SYNCH

243 Break

244 Interrupt process

245 Abort output

246 Are you there

HI J ** P (3)t Hapdle options and FTP replies III J 4 b (3) (a). Parameter field syntax

Option control : Reply text control:

FIXED(2) FIXED( 1 )

III J 4 b (3) (b). Parameter field semantics

These indicating respond to Te control conn front end sho replies to th FTP replies a sends the installation- in the parameter val

fields con 1 ) how the lnet option n ection 2) wh uld forward e hos t . How re handled be relevant EXE specific and daptation d ues and their

tain pa front end egotiat i on ether or the text Telnet opt fore the CUTE Comm must be s escription eanings

rame

sh

s on

not

of ions

pro ands peci

are :

t er s

ould the the FTP and

cess is

tied The

Option control values:

1 Refuse all options

2 Refuse no options

3 Refuse options not handled by the front end

Reply text control values:

0 Send FTP reply text

1 Don't send FTP reply text

III J 4 b (4). Modify suggested allocation III vl 4 b (4) (q). Parameter field syntax

Messages : Bits:

FIXED( 16) FIXEDC32)

III J 4 b (4) (b). Parameter field semantics

243

DRAFT

fa/23/77

Server FTP PSF EXECUTE Command

The semantics of this field are identical to those described for the allocation fields in the BEGIN Command (see sections III A H b ( 4 ) - III A H b (5).)

244

DRAFT

b/23/77

Server FTP PSP EXECUTE Response

III k, EXECUTE, Response XIX K i. When Sent

The service module sends an EXECUTE Response when

a) it has completed the operation requested by an EXECUTE Command, or

b) it has received an EXECUTE Command whose TEXT is in error.

The process does not send EXECUTE Responses for this process-to-service protocol.

Ill k 2. Action on Receipt

When the process receives an EXECUTE Response, it should examine the TEXT to see whether the Response indicates an error. If no error is indicated, it may consider that the action reauested by a previous EXECUTE Command was successful. If an error is indicated, appropriate error recovery action should be initiated. This action is idiosyncratic to the process.

XXI K 3- TEXT field syntax

FIXED(2) PIXED(2) COMPLEX*? ) FIXED (2) FIXEDC2) FIXED(32) FIXEDC32) FIXED( 16) FIXED(32) FIXED(32)

Result:

Ref-Code:

Connection-info:

Control connection-state:

Data connection-state:

Host:

Foreign Socket:

Messages:

Bits:

Local Socket:

II K *J . TEXT field semantics III K H a. Result

This field contains an encoding of the result of the request (made in a previous EXECUTE Command) to which the EXECUTE Response is a reply. The codes are:

0 Success

1 Illegal code in request

2 TEXT too short.

Ill K 4 b. Ref-code

2^5

8/23/77

Server FTP PSP EXECUTE Response

This field contains the same value as the Code field of the TEXT of the EXECUTE Command to which the EXECUTE Response is a reply.

Ill K M c. Connection-info

This field is present only if the Ref-code has a value of zero or three (status or modify allocation). The semantics of this field are identical with those of the Connection-info field of the EEGIN Response (section III fc 4), with the exception of the Status field, which has been divided into two fields with the following meanings .

Ill K 4 c (1). Contro; connectjonj^state

If the ref-code value is zero (status), this field indicates the present state of the FTP control connection. The possible values of this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

III K 4 c (2). Data connection-state

If the ref-code value is zero (status), this field indicates the present state of the FTP Data connection. The possible values of this field and their meanings are:

0 Closed

1 Open

2 Waiting for open to complete

3 Waiting for close to complete

246

DRAFT

6/23/77 Server FTP PSP

Details of Offloading Server FTP

IV. Details of Offloading Server FTP

The ARPANET File Transfer Protocol (FTP) consists of two major sections: a command-and-response section and a data transfer section. The file access process-to-service protocol deals with offloading the data transfer section and the FTP commands for data transfer (RETRIEVE, STORE, and APPEND). The Server FTP process-to-service protocol deals with offloading the command-and-response section. We here describe some of the aspects of offloading the Server FTP. These aspects include session establishment and control, user authentication, restart, and interaction with the file access module.

Sess ion esta bl ishmen t and con t rol . There are several possible ways in which service could be initiated and controlled. The scheme described in this protocol appears to be the simplest and most flexible. In this scheme, BEGIN Commands only co from the host to the front end. When the front end service module receives a BEGIN Command, it sets up a connection as requested. In most cases, the service module will not be requested to actively initiate a connection but only to set up a lister on socket 3 and wait for a request for service from a remote host. After a connection has been established, the service module sends a BEGIN Response to the host. The host process must generate a distinct BEGIN Command for each connection it is willing to accept. Thus, the host is able to limit the number of

247

DRAFT

8/23/77 Server FTP PSP

Details of Offloading Server FTP

FTP users by withholding BEGIN Commands. The front end may also limit demand on its resources by refusing BEGIN Commands from the host.

If user authentication is done in the front end, then an alternative method may be used. Since most FTP sessions consist of logging in, moving one or more files, and then logging out, virtually no traffic is sent on the Server FTP channel. Everything is handled by the server FTP service module (SFSM) and the file access modules, unless the user does a DELETE or RENAME. Therefore, it makes sense to leave control of the service in the front end. The SFSM in the front end would listen on socket 3 as usual. When a user connected to the FTP contact socket, a connection would be established. The user would be logged in, and data transfer parameters set. When the user sent a data transfer command, the UFAM would be asked to set up a session. At this point the host could refuse access if it were too heavily loaded. Normally the transfer and the session would be done without requiring the use of a Server FTP PSP channel.

User authentication and security. The ARPANET FTP provides three commands for authenticating users: USER, PASS, and ACCT. Depending on the security arrangement between the host and the front end, it may be possible to offload these commands. This, however, implies that the host trusts the front end's security as much as it trusts

248

6/23/77 Server F1F PSP

Details of Offloading Server FTP

it own. Some systems may wish to restrict network access to data transfers. For example, a data base system might allow remote network users to query and even to update data bases and to transfer files in and out, but the system might wish to restrict delete and rename capabilities to local users only. In this case, the Server FTP PSP would not be used at all, and the Server FTP module in the front end would use the File Access PSP only.

Restart . An important aspect of FTP that can be offloaded is the facility to restart a transfer that has been aborted because of a host or network failure. There are two cases to consider: data poine out to the net and data coming in from the net. Let us first consider data moving out. If the front end can exert enough addressing control through the FA-PSP, it is possible to allow the FAS in the front end to insert the restart markers, thus offloading this function from the host. The only requirement is that the FAS in the front end be able to address the same point in the file when given the restart marker and commence the transfer at that point. If this is not possible then these functions must be in the host.

For data coming into the host, it is necessary for the Server FTP to be able to report to the User FTP when the data associated with a particular marker has been entered into the file, and to associate with the user-specified markers a locally generated marker that can be used to

DRAFT 8/23/77 Server FTP PSP

Details of Offloading Server FTP

restart the transfer at this point.

Interaction with the file access module . Offloading Server FTP will in most cases require the Using File Access Module (UFAM) to be in the front end. The Server FTP Service Module (SFSM) acts as an intelligent message switch. The SFSM does not actually perform any of the FTP commands, except possible those having to do with connection control (e.g., BYE or REINITIALIZE) or user authentication. When the SFSM receives a command that is not offloaded, it will pass the command on to the residual Server FTP in the host. (The command may be first translated into some other form. If the command is one that is offloaded (e.g., one of the data transfer parameter commands), the SFSM will use its knowledge of the facilities supported in the front end and send a suitable reply to the foreign host. This information is then communicated to the UFAM to specify the translation requirements for the transfer. The SFSM may hold parameter information until a data transfer command is received and then relay all information specifying the transfer (including the data connection sockets) or the parameters may be relayed as they are determined depending on the implementations and the IPC facilities in the front end.

If the translation is done in the front end, the UFAM in the front end requires that only the file parameters be specified in the BEGIN Command. If, however, data

250

DRAFT

b/23/77 Server FTP PSF

Details of Offloading Server FTP

translation is done in the host, the data transfer parameters roust also be present. (See [2].)

Content of TRANSMIT Commands. In this protocol, the TRANSMIT Command is used to send FTP commands and replies between the service module and the host. Some installations may wish to send some interactive form or encoding peculiar to their host's file system and let the service module in the front end translate it into the proper FTP commands. For most installations, the best method of encoding this information is to just send the FTP commands themselves. Since many of the parameters are character strings, little is saved by additional encodings. The only major exceptions would be the data transfer parameter commands such as TYPE, MODE, etc., which are not sent to the host in most Server FTP offloading schemes. Similar arguments hold for the replies. because of the semantics attached to the individual decimal digits, some encoding is possible, but it is of limited utility. Some installations may wish to use the control function described in section III J M b (3) to suppress the text associated with replies. Server FTP offloadings that also support file systems in the front end may find it useful to pass only reply codes from the host and generate a consistent set of reply text from the front end. For a suggested encoding for FTP commands and replies, see Section V of [ 1] .

251

DRAFT 6/23/77 Server FTP PSP

Scenarios

V. scenarios

User authentication in the host . Consider the following scenario for an offloaded Server FTP. We will assume that user authentication and the FTP commands USER, PASS, and ACCT are done in the host. We will also assume that the seven FTP commands listed in Section II are done in the host. All other FTP commands are to be handled by the front end. Further, the data transfer process is also in the front end and the file access module is used to transfer the file from the host. We will not describe the behavior of the file access module in detail. For a scenario describing its use see the specification of the File Access Process-t o-Servi ce Protocol [?.]. Also we will not be concerned with the detailed functioning; of the channel protocol.

First, the residual Server FTP module (SFh) in the host will send a BEGIN Command to the front end offering FTP Service:

<BEGINXC>

Since no parameters are present, the defaults are assumed. The Server FTP Service Module (SFSM) will listen for an ICP on socket 3 (the FTP contact socket) from any host for an indefinite period of time.

Some time later, a remote user connects to socket 3.

252

8/23/77

Server FTP PSP Scenarios

The ICP protocol is performed and the Telnet control

connection is opened. The SFSM will then send the FTP

herald message (a 300 reply) to the remote host and a EEGIN Response to the local host.

<EEGINXRXsuccessXKost=12XForeign Socket = 57b3^>

<Messages = 1><bitsr2000XLocal Socket=247fc>

In order to support another user, the host will now send another

<BEGINXC> .

When the FTP USER command is received from the remote user, the SFSM sends it to the SFM:

<TRANSMITXC>USER day

(Since TRANSMIT Responses do not require any action by the services or the process they are not shown here.)

The SFM replies with

<TRANSMITXC>331 Please send pass command.

The SFSK sends the TEXT of this command over the net to the user. The user responds by sending the FTP PASS command, which is then relayed to the SFM:

<TRANSMITXOPASS John

The SFM replies with

253

DRAFT

6/23/77

Server FTP PSP Scenarios

<TRANSMITXC>230 looped in. please proceed.

The user then sends an FTP RETR command requesting that a file "junk. note" be moved from the local host to the foreign (i.e., the user's) host. The SFSM will then

1) do a listen on the default data socket, and

2) pass the command, the user identification parameters, and information on the local socket or port to the Using File Access Module (UFAM) in the front end.

(Since no data transfer parameter commands were received, the defaults are assumed.

The UFAM will then establish a session with the Serving FAM (SFAM) in the host and attempt to access the file. When a successful EEGIN Response is returned, the UFAM will open the data connection and notify the SFSM that the transfer can begin. The SFSM will now send the FTP 150 reply to the remote host indicating that the transfer is ready to start. The UFAM will then transfer the data to the network.. When the transfer is complete, the UFAM will notify the SFSM which will send the FTP 250 reply to the remote host indicating the end of transfer.

Now the user decides to delete the file he has just

transferred, so he sends an FTP DELE command to the SFSM.

the SFSM recognizes that this is not a command it does and passes it on to the host:

<TRANSMITXODELE junk. note

254

DRAFT

6/23/77

Server FTP PSP Scenarios

The host deletes the file and returns:

<TRANSMITXC>250 File junk. note deleted.

Finally the user is finished, and sends the FTP b\E command. The SFSM will send an FTP 221 reply indicating that it is closing the Telnet connection, close the data connection, notify the UFAM to terminate its session, and terminate its own session with the host by sending an END Command :

<ENDXC><3> (indicating a user-requested close) The host will respond with

<ENDXR>

and the interaction is complete.

User authentication in the front end . Let us consider how this protocol would be used if user authentication is done in the front end. Let us assume that the only FTP commands handled by the host are the seven listed in Section II. We will also assume that the data transfer commands are handled by the Using File Access Module (UFAM) in the front end.

The Server FTP Service Module (SFSM) is offering FTP service by listening on socket 3 (the FTP contact socket). A user at some remote host does an ICP to the contact socket and a control connection is established. The user

255

DRAFT

8/23/77

Server FTP PSP Scena ri os

sends the FTP USER and PASS commands and is logged in by the SFSM for file transfer service. The user then sends a RETR command to transfer the file "junk. note" to his host. Ihe necessary information, including pathname, user identification, and network data sockets, are passed to the UFAM. The UFAM establishes a session and transfers the file. After the transfer is complete, the user wishes to delete the same file and sends the FTP command:

DELE junk. note

This requires establishing a Server FTP PSP channel to the host, since one has not been required as yet. Ihe SFSM sends a BEGIN Command to the front end:

<BEGINXCXsecurity = day,john> The Server FTP Module (SFM) in the host acknowledges with:

<BEGINXR> The SFSM then, sends over the command:

<TRANSMITXC>DELE junk. note

(Since TRANSMIT Responses do not require any action by either the process or the service, they are not shown in this example.) The file is deleted and the reply sent back to the SFSM:

<TRANSMITXC>250 File junk. note deleted.

256

DRAFT

6/23/77

Server FTP PSP Scenarios

The TEXT of this TRANSMIT Command is then sent over the control connection to the user. The user decides he is finished and sends an FTP BYE Command to the front end. The SFSM immediately sends the proper FTP reply to the user, notifies the UFAM to terminate its session and sends an END Command to the SFM in the host:

<ENDXC><0> (indicating normal completion)

The SFM replies immediately with:

<ENDXR>.

Note that if the user had not asked to delete the file this PSP would not have been used at all.

257

DRAFT

b/23/77

Server FTP PSP References

VI. References

1. Day, J. "User FTP Process-t o-Servi ce Protocol," CAC Technical Memorandum No. 101, Center for Advanced Computation, University of Illinois at Urbana -Champai en , 1977.

2. Day, J. "File Access Process-t o-Servi ce Protocol," CAC Technical Memorandum No. 102, Center for Advanced Computation, University of Illinois at Urbana -Champ ai em , 1977.

3. Day, J. "Offloading ARPANET Protocols to a Front End," CAC Document No. 230, Center for Advanced Computation, University of Illinois at Urbana -Champ ai gn , 1977.

Neigus , N . 5M2, 1973.

"The File Transfer Protocol,

ARPANET RFC

Neigus, N.; Posrran, K.; and Postel, J. "A New Schema for FTP Reply Codes," ARPANET RFC 640, 1974.

Postel, J. "Telnet Protocol Specification," NIC #16639, 1973-

258

UNCLASSIFIED

SECURITY CLASSIFICATION OF THIS PAGE (When Dmtm Entered)

REPORT DOCUMENTATION PAGE

1. REPORT NUMBER

CAC Document Number 230

CCTC-UkTl Tin piitiiptH- TJimiKov 7S11

2. GOVT ACCESSION NO.

3. RECIPIENT'S CATALOG NUMBER

.. TITLE (mnd Subtitle)

Network Research in Front Ending and Intelligent Terminals - Offloading ARPANET Protocols to a Front End

5. TYPE OF REPORT & PERIOD COVERED

Research

6. PERFORMING ORG. REPORT NUMBER

CAC #230

7. AUTHORS

John D. Day

S. CONTRACT OR GRANT NUMBERf.)

DCA100-76-C-0088

I. PERFORMING ORGANIZATION NAME AND ADDRESS

Center for Advanced Computation University of Illinois at Urbana-Champaign Urbana, Illinois 61801

lenter

WWMCCS ADP Directorate, 11440 Isaac Newton Sq. , N. Reston, Virginia 22090

12. REPORT DATE

September 30, 1977

NUMBER OF PAGES

262

14. MONITORING AGENCY NAME ft AODRESSfi/ different from Controlling Office)

15. SECURITY CLASS, (of thla report)

UNCLASSIFIED

16. DISTRIBUTION STATEMENT (of thla Repot

Copies may be requested from the address given in (11) above.

17. DISTRIBUTION STATEMENT (of the mbst

mtcred in Block 20, If different from Report)

No restriction on distribution.

18. SUPPLEMENTARY NOTES

9. KEY WORDS (Continue on r

Network front end Network protocols

elde If neceaamry mnd Identity by block number)

20. ABSTRACT (Cot

tmry mnd identify by block n

The CAC is engaged in an investigation of the benefits to be gained by employing a network front end. This document presents a discussion of alternative strategies for offloading ARPANET protocol implementations to a front end. A set of six appendices specify the host-to-front-end, process-to service protocols required to implement the various strategies.

dd ,;■

EDITION OF 1 NOV 65 IS OBSOLETE

UNCLASSIFIED

S E CURITY CLASSIFICATION OF THIS PAGE (When Dmtm Ent ered)

M