rfc928.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,198 行 · 第 1/5 页
TXT
1,198 行
sketched in the discussions of the process level protocols, but the
significant notion for now is that typically SOME sort of prior
arrangement would be done by any networked Host to associate the
right kind of process with a WKS.
Padlipsky [Page 17]
RFC 928 December 1984
Introduction to H-FP
Now, we don't expect that the foregoing will enable even the world's
greatest system jock to go out and design the integration of an H-FP
PI for a system that had never been networked (in the ARPANET style
of networking) before. But we propose to stop there and turn to some
comments on process level protocols, for two reasons: In the first
place, it would take us much too far afield to go into significantly
greater detail; and in the second place, because of the functional
equivalence of H-FP and NCP combined with the number of operating
systems which have integrated NCP and, for that matter, TCP/IP, which
are also functionally equivalent to H-FP (used for offloading L II
and L I), models are available in the ARPANET community and concerned
H-FP PI implementors can follow them.
Turning to Telnet integration, and returning to Multics as an
example, we note that "User Telnet" is straightforward. "All you
need" (for small values of "all") from an INBOARD User Telnet is a
command that gives the user some sort of interface, converts between
the native Multics character set and terminal discipline and the
Network Virtual Terminal equivalents (and as Multics is very generic
when it comes to I/O, that's not hard), and writes and reads "the
net" (more accurately, calls upon the Host-Host protocol PI--or upon
the H-FP PI to get at the H-HP--appropriately). (One point that's
not obvious: make the Well-Known Socket "on the other side" a
parameter, defaulting to the Telnet WKS, because you'll want to use
the same command to get at other process-level protocols.) If
there's an OPE in play which offloads User Telnet, however, things
can be even simpler: the inboard command just reads and writes the
terminal and lets the OUTBOARD User Telnet PI handle the conversion
to and from the Virtual Terminal form (presumably, from and to the
desired local form).
When it comes to the incoming ("Server") aspects of Telnet, life can
get complicated on some systems for an inboard implementation.
However, fortunately for our purposes,
Multics' native mechanisms lend themselves readily to integration; an
awareness of the inboard issues will be useful even if in response to
a connection attempt on the Telnet WKS, the (Server) Host is
obligated to associate the connection (the actual logic is somewhat
more complex under the ARPANET Host-Host Protocol, which employs
paired simplex connections) with a process that is prepared to
translate between Telnet and native mode representations and
otherwise "look like" a local user process--that is, in particular
the connection becomes an I/O source/sink to the native command
processor on time-sharing systems. As indicated, process creation is
taken care of in Multics by having the Answering Service process
listen on the WKS. Because the Answering Service is in some sense
Padlipsky [Page 18]
RFC 928 December 1984
Introduction to H-FP
just another Multics process, it too does user I/O through the normal
system mechanisms. So while for local terminals the user I/O streams
are attached through a module called "ttydim" (where "dim" stands for
"device interface module"), NVTs are attached through a functionally
equivalent and identically invoked module called "nttydim" (the
Answering Service knows which DIM to use based on the symbolic
designator of the "line" on which it received the interrupt, as it
happens).
[The notion of "attaching" the streams bears a bit more explanation:
Attach is a primitive of the Multics generic I/O mechanism which
associates a stream name and a particular DIM (or I/O system
interface module in later terminology); the other I/O primitives
(read, write, etc.) are invoked with the stream name as a parameter
and an I/O "switch" causes the entry point corresponding to the
primitive to be invoked in whichever DIM the stream is currently
attached to. So a Server Telnet process starts life attached
through nttydim to a particular network connection, while a local
process starts life attached through ttydim to a particular physical
line, and both processes proceed indistinguishably (viewed from
outside the I/O switch, anyway).]
The pre-existing orderliness that makes things easy on Multics does
not, unfortunately, appear in all operating systems. Indeed,
delicate choices occasionally have to be made as to WHICH native
terminal to map to on systems that don't do generic I/O in native
mode, and it is likely that for some systems the particular mapping
to bring into play in Server Telnet might be determined by the
particular application program invoked. This issue can become very
touchy when the application "expects" a "data entry terminal", say.
The Server Telnet for such a system would naturally attempt to
negotiate the "DET" option with the corresponding User Telnet. But
the user might be at a physical terminal that isn't a member of the
DET class, so that User Telnet must either refuse to negotiate the
option or--and we would recommend this alternative strongly, as it
seems to be within the "spirit" of the protocol--offer some sort of
simulation, however crude, of the behavior of a DET. Also,
something sensible has to be done on systems where there is no clear
analog of the command processor expected to be managing the Server
process. (Say, when a "menu" of applications is always displayed on
an available terminal in native mode.)
A final Telnet integration issue (although other points could be
noted, we're not pretending to be exhaustive and this should be
enough to "give the flavor"): The Telnet Interrupt Process generic
function calls for particularly careful integration. Here, the
intent of the function is to virtualize what is called the "quit
Padlipsky [Page 19]
RFC 928 December 1984
Introduction to H-FP
button" on some systems. That is, the user wants the system to
interrupt his process (which may, for example, be in a loop) and get
back to the command processor (or "the system" itself). On native
character-at-a-time systems, the native mechanism is usually the
entering of a particular "control character"; on native
line-at-a-time systems, the native mechanism is usually the striking
of the "ATTN" or Interrupt button or the "Break" key (sometimes more
than once, to distinguish it from a communication to the executing
program). But the native mechanisms typically involve interrupt time
code, and Server Telnet typically wouldn't be executing at that
level, so the solution (omitting the intricacies of the interaction
with the NCP or the H-FP PI, which also get into the act) would be to
make use of--in the Multics case--a pre-existing INTRAprocess signal,
or to add such a mechanism (unless the architecture chosen has a
Server Telnet Daemon of some sort, in which case an INTERprocess
signal would be needed).
The extension of the foregoing to an outboard Server Telnet may not
be obvious, but we won't expend a great deal of time on it here.
Even if "the protocol" is being handled in an OPE, the Host-side
software must be able to associate an H-FP connection with the
command language interpreter of a user process and to respond
appropriately to an H-FP Signal command if it arrives, and the OPE
must know not only the desired character set but also the local
equivalents of Erase and Kill, at the minimum.
We'll skip FTP integration, on the grounds that this note is already
too lengthy, except to mention that in the OUTBOARD case it's still
going to be necessary to convey the name of the appropriate file and
directory to/from some appropriate Host-side code. (Similar problems
must be dealt with for outboard handling of "mail" if it's not part
of FTP.)
One other "integration" issue, which has been hinted at earlier and
about which not much can be said beyond some general guidelines: The
"top edge" of a Host-side H-FP protocol interpreter (i.e., the Host
user program interface, for
Hosts that are "doing real networking" rather than just using the OPE
to get at User Telnet and/or FTP and to offer Server Telnet and/or
FTP [and maybe "mail"], presumably in the "scenario-driven" fashion
sketched earlier) MUST BE APPROPRIATE TO THE HOST. In other words,
on Multics, where "everything" is closed subroutines, there would
presumably be a closed subroutine interface with event channels for
reads, pointers to buffers, and all that sort of thing, but on some
other style of operating system, the interface to the H-FP PI might
turn out to be "all" interprocess communication, or to "look like" a
Padlipsky [Page 20]
RFC 928 December 1984
Introduction to H-FP
device of some special class, or "all" system
calls/JSYSs/EOTs/Whatevers. We can't be much more specific, but we'd
be remiss to convey any impression that H-FP is a "free lunch". As
noted, an H-FP PI requires the same kind of integration as a generic
NCP--it's just smaller, and serves as insulation against changes (in
the offloaded protocols in general, or in the proximate comm subnet
in particular).
References
(References [1]-[3] will be available in M. A. Padlipsky's "The
Elements of Networking Style", Prentice Hall, 1985.)
[1] Padlipsky, M. A., "The Host-Front End Protocol Approach", MTR
3996, Vol. III, MITRE Corp., 1980.
[2] Padlipsky, M. A., "The Elements of Networking Style", M81-41,
MITRE Corp., 1981.
[3] Padlipsky, M. A., "A Perspective on the ARPANET Reference Model",
M82-47, MITRE Corp., 1982.
[4] Bailey, G., "Network Access Protocol", S-216,718, National
Security Agency Central Security Service, 1982.
[5] Day, J. D., G. R. Grossman, and R. H. Howe, "WWMCCS Host to Front
End Protocol", 78012.C-INFE.14, Digital Technology Incorporated,
1979.
Padlipsky [Page 21]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?