📄 rfc929.txt
字号:
offloaded protocol in play.)
Lilienkamp & Mandell & Padlipsky [Page 5]
RFC 929 December 1984
Proposed Host-Front End Protocol
Some protocols provide a block-oriented data transfer service rather
than a stream-oriented one. With such a service, the data associated
with a transfer request is viewed as an integral unit. For actual
network transmission, the protocol may permit these units to be
grouped or fragmented. However, the receiving end must deliver the
data in the original, integral units. Protocols that conform to this
model include some datagram protocols such as IP and UDP, and also
some connection protocols such as NBS TP.
To cater to these types of protocols, it is a convention that
commands, their parameters, and any associated data be transferred
between the Host and the OPE in a single chunk. Any data associated
with an H-FP command is viewed as an integral unit which is used in
the corresponding service request given to the outboard protocol
interpreter or delivered as a complete unit to the process in the
Host. Operation of stream-oriented protocols such as TCP will not be
adversely affected by this convention.
To accommodate Channel protocols that do not provide for arbitrarily
large chunks, a mechanism at the Command level is required to permit
the linking of multiple chunks into a single command, in order to
transfer the burden of buffering as much as possible from the Host to
the OPE. The facility proposed here would consist of an indication
at the beginning of each chunk which would distinguish integral
commands, fragments of a command for which more fragments are yet to
arrive, and the final fragment of a command. The details of this
mechanism are discussed in the section on the syntax of commands and
responses.
It is a convention for this H-FP that any data associated with a
command must start on a word boundary (as defined by the local
system). Consequently, there is a need to provide padding within the
commands. Such padding is used only to fill to the next appropriate
boundary, and has no semantic significance to the command interpreter
(i.e., two commands that are identical except for the amount of
padding should behave identically). The details of this padding are
discussed in the section on the syntax of commands and responses.
Lilienkamp & Mandell & Padlipsky [Page 6]
RFC 929 December 1984
Proposed Host-Front End Protocol
Syntax Rules
At the Command Level, communication between the Host and the OPE
takes the form of commands and responses. A command is a request for
some particular action, and the response indicates the success or
failure of performing the requested action.
All commands and responses are coded in ASCII characters. (Nothing
precludes OPEs from accepting EBCDIC from Hosts that use it in native
mode, but that is not required.) These characters are sent in some
way convenient for the Host, and the OPE is sufficiently flexible to
interpret them. (i.e., OPEs are expected to accommodate Host
idiosyncracies in regard to such things as use of 7-bit ASCII in a
9-bit field.) This approach offers several advantages:
Adaptabilities in most Hosts: Most Hosts have the ability to
generate and interpret ASCII character streams. Hence, integrating
H-FP into a Host will not require difficult software.
Script generation: Generation of test and operational command
scripts will be simplified, since they will not need to contain
special characters.
Terminal Operation: Using simple command streams simplifies the
conversion of an OPE to a generic virtual terminal support machine.
This is particularly useful during development and testing.
Testing: Testing will not require special hardware to interpret
commands and responses. A terminal or data line analyzer would be
adequate.
The specific format for the commands and responses will be discussed
in the sections that follow. In those sections, the quote character
is used to indicate strings. The symbols "<" and ">" (referred to as
angle brackets) are used as meta-characters.
Syntax of Commands
As alluded to in the section discussing the interaction discipline
between the Host and the OPE, a function is provided by which a chunk
can be used to carry either a complete command or a fragment of a
command. The mechanism chosen to provide this function entails use
of the first character position in the chunk as a chunk usage
identifier. The character "C" in the first position indicates a
chunk containing a single, complete command. "F" in the first
position indicates a chunk which is the first part of a multichunk
command. "M" in the first position indicates the chunk is a middle
Lilienkamp & Mandell & Padlipsky [Page 7]
RFC 929 December 1984
Proposed Host-Front End Protocol
part (neither the first nor the last chunk) of a command. Finally,
"L" indicates the chunk is the last chunk of a multi-chunk command.
Hence, the following sequences of chunks (the letter corresponds to
the chunk usage identifier in each chunk, and the angle brackets
enclose a chunk) are legal:
<C>
<F><L>
<F><M><M><L>
while the following are not legal:
<L>
<M><L>
<F><C>
Tactics for handling multiple chunks with regard to OPE buffering
limits are left to the ingenuity of OPE builders. The spirit is to
take as much as you can, in order to relieve the Host of the
necessity of buffering itself.
A command always begins immediately following the indicator
character, with possible intervening spaces. This implies a chunk
can contain at most one complete command. The end of the command
(not including the data) is signified by a newline (denoted as <nl>
in this document) that does not appear inside a quoted string (see
below). The end of the data is designated by the end of the last
chunk.
Commands take the form of an ASCII string. The command identifier is
the first word of the chunk. It consists of at least the first two
letters of the command, in either upper or lower case (e.g., the
sequences "BE", "Be", "bE", and "be" all identify the Begin command).
Additional letters of the command name can be included if desired to
aid readability of the command stream.
Following the command identifier is a list of parameters. These
parameters are also represented as ASCII strings, although the
specific format will depend on the particular parameter. The data to
be transmitted is not considered a control parameter, however, and
need not be ASCII data.
Parameters are separated by one or more spaces. Tabs, newlines, and
other white space are not legal parameter separators.
Parameter strings may be quoted, using the character <">. Any
Lilienkamp & Mandell & Padlipsky [Page 8]
RFC 929 December 1984
Proposed Host-Front End Protocol
characters between the <"> characters are a part of the parameter,
including spaces and newlines. The character <"> that is part of the
parameter is represented inside a quoted string as <"">.
The order in which the parameters appear within the command is
significant to their interpretation by the Host and by the OPE.
Optional parameters may be skipped by using the characters ",," to
indicate a NULL parameter. Such a NULL parameter takes its default
value. Alternatively, each parameter has a MULTICS/UNIX style
Control Argument/Flag associated with it that can be used to identify
the parameter, without placing NULL parameters for each parameter
skipped. This flag consists of one or two ASCII characters, and
either upper or lower case may be used. For example, if the fourth
parameter of a command had a flag of "-p" and the user wished the
first three parameters to be null, he could use:
command -p value
or
command -P value
instead of
command ,, ,, ,, value
if it were more convenient for the Host to do so. Flagged parameters
must still appear in the correct sequence within the command,
however.
There may be data associated with some of the commands. Any such
data is placed into the chunk following all the parameters and the
unquoted newline. Padding can be provided by placing spaces between
the end of the final parameter string and the newline, so that data
begins on a word boundary. The OPE will always pad to a host word
boundary. Padding by hosts is optional.
Syntax of Responses
Responses are actually just a special form of a command. It is
anticipated that all responses would fit into a single channel chunk,
although the mechanisms described for multichunk commands can
certainly be used in responses. The ASCII string used to uniquely
identify the response command is "RE" ("Re", "rE", and "re" are also
permitted).
After the response command identifier is the original command
Lilienkamp & Mandell & Padlipsky [Page 9]
RFC 929 December 1984
Proposed Host-Front End Protocol
identifier, so the response can be associated with the proper
command. Following this identifier is a three ASCII digit response
code, a set of protocol idiosyncratic parameters, and a textual
message. The protocol idiosyncratic parameters are used to transfer
interface information between the Host and the OPE, and may not be
needed when off-loading some protocol interpreters. The textual
message is intended for human interpretation of the response codes,
and is not required by the protocol. The three digits uniquely
identify the semantics of the response, at least within the context
of a particular command and particular outboarded protocol
interpreter.
Responses are numerically grouped by the type of information they
convey. The first digit identifies this group, and the last two
digits further qualify the reply. The following list illustrates
this grouping.
0XX Successful: The command was executed successfully. The
response code may contain further information.
1XX Conditional Success: The command was executed successfully,
but not exactly according to the service and flow control
suggestions. If those suggestions were particularly important
to the requester, he may wish to issue an End command. The
response code contains information on what suggestion or
suggestions could not be followed.
2XX Command Level Error: An error at the command level has
occurred. This could include requesting services of a
protocol not supported, or a problem in the way those services
were requested. This level does not include problems with the
syntax of the command or its parameters.
3XX Syntax and Parameter Errors: An error in the syntax of the
command or a problem with one of its parameters has occurred.
A problem with a parameter may be other than syntactical, such
as illegal address.
4XX Off-loaded Protocol Interpreter Problems: Some problem with
the particular off-loaded protocol has occurred.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -