⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc55.txt

📁 中、英文RFC文档大全打包下载完全版 .
💻 TXT
📖 第 1 页 / 共 4 页
字号:
         to-Imp transmission out of a resident buffer and wakes up the         output scheduler when transmission is complete.      3. The Input Interpreter         This program decides whether the input is a regular message         intended for a user, a network control message, an Imp-to Host         message, or an error.  For each class of message this program         invokes a subroutine to take the appropriate action.Newkirk, et al.                                                 [Page 6]RFC 55             Prototypical Implementation of NCP          June 1970      4. The Output Scheduler         Three classes of messages are sent to the Imp            (a) Host-to-Imp messages            (b) Control messages            (c) Regular messages         We believe that a priority should be imposed among these         classes.  The priority we suggest is the ordering above.  The         output scheduler selects the highest priority message and         passes it to the output handler.         Host-to-Imp messages are processed first come first served.         Control messages are processed individually by host, each host         being taken in turn.  A control message queue for each foreign         host is provided.  When any particular host is scheduled for         output, as many control commands for that host as will fit are         concatenated into a single message.  Regular messages are         processed in groups by host and link, each unique combination         being taken in turn.      5. The System Call Interpreter         This program interprets requests from the user.  Each system         call has a corresponding routine which takes the appropriate         action.      The two interesting components are the input interpreter and the      system call interpreter.  These are similar in that the input      interpreter services foreign requests and the system call      interpreter services local requests.      The diagram in Figure 4.1  is our conception of the Network      Control Program.  Squishy amoeba-like objects represent component      programs, cylinders represent queues, and the arrows represent      data paths.  In this simplified diagram tables are not shown.      ["Amoeba-like" objects in original hand drawing are now firm      rectangular boxes: Ed.]      The abbreviated labels in the figure have the following meanings:            HIQ       -     Host-to-Imp Queue            OCCQ      -     Output Control Command Queue            DQ        -     Data Queue            IHBUF     -     Input Handler Buffer            OHBUF     -     Output Handler BufferNewkirk, et al.                                                 [Page 7]RFC 55             Prototypical Implementation of NCP          June 1970             ____________            |    USER    |    STRUCTURE OF THE NETWORK CONTROL PROGRAM            |____________|               ^      |                      Fig. 4.1          _____|______V____         |                 |         |     System      |         |      Call       |         |   Interpreter   |         |_________________|              _____________            ^  |      |                  |             |            |  |      |  +---------------|    Input    |            |  |      |  |         +-----| Interpreter |            |  |      |  |         |     |             |            |  V      V  V         V      -------------          |======| |=========| |=======|     |      ^          | D Q  | | O C C Q | | H I Q |     |      |          |======| |=========| |=======|     |      |            |  ^        |          |         |      |            |  |        |          |         |      |            |  +--------)----------)---------+      |            |           |          |                |            +-------+   |   +------+                |                  __V___V___V__                     |                 |             |                    |                 |   Output    |                    |                 |  Scheduler  |                    |                 |_____________|                    |                        |                           |                        V                           |                  (===========)               (===========)                  ( O H B U F )               ( I H B U F )                  (===========)               (===========)                        |                           ^                  ______V______               ______|______                 |             |             |             |                 |   Output    |             |    Input    |                 |   Handler   |             |   Handler   |                 |             |             |             |                  -------------               -------------                        |                           ^                        |                           |                        +----------+    +-----------+                                   |    |                               ____V____|____                              |              |                              |     I M P    |                              |______________|Newkirk, et al.                                                 [Page 8]RFC 55             Prototypical Implementation of NCP          June 1970V. Tables in the NCP   We envision that the bulk of the NCP's data base is in associative   tables.  By "associative" we mean that there is some lookup routine   which is presented with a key and either returns successfully with a   pointer to the corresponding entry, or fails if no entry corresponds   to the key.  The major tables are as follows:      1. The Rendezvous Table         This table holds the attributes of a connection.  The table is         accessed by the local socket, but other tables may have         pointers to existing entries.         The components of an entry are:            (a) Local Socket            (b) Foreign Socket            (c) Link            (d) Connection State            (e) Flow State            (f) Data Queue            (g) Call Queue            (h) Port Pointer            (i) Their Buffer Size (only needed on the send side)            (j) Error State         An entry is created when either a CONNECT or a LISTEN system         call is executed or when a request for connection is received.         Various fields remain unused until after the connection is         established.      2. The Input Link Table         The input interpreter uses the concatenation of the foreign         host and link as a key into the input table.  The table is used         in processing a user-destined message on an incoming link by         providing a pointer into the rendezvous table.      3. The Output Link Table         The input interpreter uses the output link table to access the         flow state as RFNM's return from transmitted messages.  The         output link table is keyed by host and link and provides a         pointer into the rendezvous table.Newkirk, et al.                                                 [Page 9]RFC 55             Prototypical Implementation of NCP          June 1970      4. The Port Table         The system call interpreter uses the concatenation of the         process identification and the port identification as a key to         obtain a pointer into the rendezvous table.      5. The Output Control Command Table         The system call interpreter and the input interpreter use this         table to make entries in the appropriate output control command         queues.  Commands are queued in separate table entries         corresponding to foreign hosts.  Before output the contents of         the queue are concatenated into a large control message.  The         components of an entry are:            (a)  Host            (b)  Output Control Command Queue      6. The Output Request Queue         This queue contains an entry for each connection which has data         requiring transmission to the net.  There is only one entry per         connection, which is deleted when the last packet of data is         transmitted and is entered whenever a user makes a system         request for data transmission.         The entry is re-inserted if transmission is not completed         (message too long) or is prevented by the flow control         mechanism.  The only component of an entry is a local socket.      7. The Host Live Table         This is a simple table listing the hosts which are alive.  This         table is checked before establishing a connection and before         sending any data to ensure that the destination host actually         exists.  At present the protocol does not define the procedure         to be followed for the Host up/Host down conditions.  See         NWG/RFC#57.      8. The Link Assignment Table         Link numbers are assigned by the receiver.  This table records         which links are free and can, therefore, be assigned.Newkirk, et al.                                                [Page 10]RFC 55             Prototypical Implementation of NCP          June 1970VI.  Informal Description of Network Operations   We present here narratives describing the operation conducted during   the three major phases of network usage: opening, flow control, and   closing.   A. Opening      In order to establish a connection for data transmission, a pair      of RFC's must be exchanged.  An RTS must go from the receive-side      to the send-side, and an STR must be issued by the send-side to      the receive-side.  In addition, the receive-side, in its RTS, must      specify a link number.  These RFC's (RFC is a generic term      encompassing RTS and STR) may be issued in any time sequence.  A      provision must also be made for queuing pending calls (i.e., RFC's      which have not been dealt with by the user program).  Thus, when a      user is finished with a connection, he may choose to examine the      next pending call from another process and decide to either accept      or refuse the request for connection.  A problem develops because      the user may not choose to examine his pending calls; thus they      will merely serve to occupy queue space in the NCP.  Several      alternative solutions to this problem will be mentioned later.      Utilizing the framework of the prototype system calls described      above, we envision at least four temporal sequences for obtaining      a successfully opened connection:         1. The user may issue a LISTEN, indicating he is willing to            consider connecting to anyone who sends him an RFC.  When an            RFC comes in the user is notified.  The user then decides            whether he wishes to connect to this socket and issues an            ACCEPT or a CLOSE on the basis of that decision.  A CLOSE '            refuses' the connection, as discussed under "Closing."  An            ACCEPT indicates he is willing to connect; an RFC is issued,            and the connection becomes fully opened.         2. Upon processing a user request for a LISTEN, the NCP            discovers that a pending call exists for that local socket.            The user is immediately notified, and he may ACCEPT or            CLOSE, as above.         3. The user issues a CONNECT, specifying a particular foreign            socket that he would like to connect to.  An RFC is issued.            If the foreign process accepts the request, it answers by            returning an RFC.  When this acknowledging RFC is received,            the connection is opened.Newkirk, et al.                                                [Page 11]RFC 55             Prototypical Implementation of NCP          June 1970         4. When presented with a CONNECT, the NCP may discover that a            pending call exists from the specified foreign socket to the            local socket in question.  An acknowledging RFC is issued            and the connection is opened.      In all of the above cases the user is notified when the connection      is opened, but data flow cannot begin until buffer space is      allocated and an ALL command is transmitted.      Any of these connection scenarios will be interrupted if a CLS      comes in, as discussed under "Closing."         1. Pending Call Queues            It is essential that some form of queuing for pending RFC's            be implemented.  A simple way to see this is to examine a            typical LISTEN-CONNECT sequence.  One side issues a LISTEN,            the other a CONNECT.  If the LISTEN is issued before the RFC            coming from the remote CONNECT arrives, all is fine.            However, due to the asynchronous nature of the net, we can            never guarantee that this sequence of events will occur.  If            calls are not queued, and the RFC comes in before the LISTEN            is issued, it will be refused; if it arrives later, it will            be accepted.  Thus we have an extremely ambiguous situation.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -