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

📄 rfc46.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
   disclosed to the owning process.   Some events are intended to be transparent to the process owning the   socket, and they do not generate entries in the event queue.   Although an event queue is conceptually unlimited, it seems necessary   to place some practical limit on its length.  When an event queue for   a socket is full, any incoming event that would add to the queue   should be discarded and the sending NCP notified (via ERR command   described below).                                                                [Page 6]RFC 46                ARPA Network Protocol Notes             April 1970NCP Control Communications   The NCP network coordinates its activities through control commands   passed between its individual components.  These commands generally   concern the creation and manipulation of socket connections   controlled by the NCP receiving the command.  A control command is   directed to a particular NCP by being sent to its HOST as a message   over link number 1 (designated as the control link), which is   reserved for that purpose.  The IMP network does not distinguish   between these messages and regular data messages implementing   communication through a socket connection.      The following NCP control commands are defined:      a. Request for Connection         RFC <local socket> <foreign socket> [<link no.>]      An NCP directs this command to a foreign NCP to attempt to      initiate a connection between a local socket and a foreign socket.      If the foreign socket is open, the foreign NCP places a "request"      event into the socket's event queue for disclosure to the process      that owns it.  If the foreign process accepts, the foreign NCP      returns a positive acknowledgement in the form of another RFC.  It      rejects connection by issuing the CLS command (see below).  An RFC      is automatically rejected without consulting the owning process if      the foreign socket is not open (inactive or connected).  Multiple      RFCs to the same socket are placed into its event queue in order      of receipt.  Any queued RFCs are automatically rejected by the NCP      once the owning process decides to accept a connection.  The NCP      which has control of the "receive" socket of the potentially      connected pair designates a link number over which messages are to      flow.      b. Close a Connection         CLS <local socket> <foreign socket>      An NCP issues this network command to disconnect an existing      connection or to negatively acknowledge an RFC.  There is a      potential race problem if an NCP closes a local send socket in      that the CLS command may reach the foreign NCP prior to the last      message over that socket connection.  This race is prevented by      adhering to two standards: (i) A CLS command for a local send      socket is not transmitted until the RFNM for the last message to      the foreign socket comes back, and (ii) the foreign NCP processes      all incoming messages in the order received.                                                                [Page 7]RFC 46                ARPA Network Protocol Notes             April 1970      c. Block Output over a Connection         BLK <foreign send socket>      A process may read data through a receive socket slower than      messages are coming in and thus the NCP's buffers may tend to clog      up.  The NCP issues this command to a foreign NCP to block further      transmission over the socket pair until the receiving process      catches up.      d. Resume Output over a Blocked Connection         RSM <foreign send socket>      An NCP issues this command to unblock a previously blocked      connection.      e. Interrupt the Process Attached to a Connection         INT <foreign socket>      Receipt of this message causes the foreign NCP to immediately      interrupt the foreign process attached to <foreign socket> if it      is connected to a local socket.  Data already in transit within      the NCP network over the interrupted connection will be      transmitted to the destination socket.  The meaning of "interrupt"      is that the process will immediately break off its current      execution and execute some standard procedure.  That procedure is      not defined at this protocol level.      f. Report an Erroneous Command to a Foreign NCP         ERR <code> <command length> <command in error>      This command is used to report spurious network commands or      messages, or overload conditions that prevent processing of the      command.  <code> specifies the error type.  If <code> specifies an      erroneous network command, <command in error> is that command (not      including IMP header) and <command length> is an integer      specifying its length in bits.  If <code> specifies an erroneous      message, <command in error> contains only the link number over      which the erroneous message was transmitted.  (This is slightly      modified from the specification in NWG/RFC 40.)                                                                [Page 8]RFC 46                ARPA Network Protocol Notes             April 1970      g. Network Test Command         ECO <48 bit code> <echo switch>      An NCP may test the quality of communications between it and a      foreign NCP by directing to it an ECO command with an arbitrary      <48 bit code> (of the same length as a socket identifier) and      <echo switch> 'on'.  An NCP receiving such a ECO command should      immediately send an acknowledging ECO with the same <48 bit code>      and <echo switch> 'off' to the originating NCP.  An NCP does not      acknowledge an ECO with <echo switch> 'off'.  We feel that this      command will be of considerable aid in the initial shakedown of      the entire network.      h. No Operation Command         NOP      An NCP discards this command upon receipt.User Interface to the NCP   The NCP at each HOST has an interface through which a local process   can exercise the network, subject to the control of the NCP.  The   exact specification of this interface is not a network protocol   issue, since each installation will have its own interface keyed to   its particular requirements.  The protocol requirements for the user   interface to an NCP are that it provide all intended network   functions and no illegal privileges.  Examples of such illegal   privileges include the ability to masquerade as another process,   eavesdrop on communications not intended for it, or to induce the NCP   to send out spurious network commands or messages.   We outline here an interface based on the Carr, Crocker, and Cerf   proposal that is sufficient to fully utilize the network.  While this   particular set of calls is intended mainly for illustrative purposes,   it indicates the types of functions necessary.      The following calls to the NCP are available:      a. LISTEN <my 8 bit socket code>      A user opens this socket, creating an empty event queue for it.      This LISTEN call may block waiting for the first "request" event,      or it may return immediately.                                                                [Page 9]RFC 46                ARPA Network Protocol Notes             April 1970      b. INIT <my socket code> <foreign socket>      A user attempts to connect <my socket> to <foreign socket>.  The      local NCP sends an RFC to the foreign NCP requesting that the      connection be created.  The returned acknowledgemnet is either an      RFC (request accepted) or CLS (request rejected).  At the caller's      option, the INIT call blocks on the expected "accept" or "reject"      event, or it can return immediately without waiting.  In this case      the user must call STATUS (see below) at a later time to determine      the action by the foreign NCP.  When a blocked INIT call returns,      the "accept" or "reject" event is removed from the event queue.      c. STATUS <my socket code>      This call reports out the earliest previously unreported event in      the queue of <my socket>.  The STATUS call deletes the event from      the queue if that type of event is deleteable by disclosure.      d. ACCEPT <my socket code>      The user accepts connection with the foreign socket whose      "request" event is earliest in the event queue for <my socket>.      An acknowledging RFC is sent to the accepted foreign socket, and      the "request" event is deleted from the event queue.  Should any      other "request" event exist in the queue, the NCP automatically      denies connection by sending out a CLS command and deleting the      event.      e. REJECT <my socket code>      The user rejects connection with the foreign socket whose      "request" event is earliest in the event queue for <my socket>.      The NCP sends out a CLS command and deletes the "request" event      from the queue.      f. CLOSE <my socket code>      The user directs the NCP to disconnect any active connection to      this socket and to deactivate the socket.  The NCP sends out a CLS      command to the foreign socket if a connection has existed.  The      status of the foreign socket also becomes closed once the "close"      event is disclosed to the foreign process.      g. INTERRUPT <my socket code>      The user directs the NCP to send out an INT command to the foreign      socket connected to <my socket>.                                                               [Page 10]RFC 46                ARPA Network Protocol Notes             April 1970      h. TRANSMIT <my socket code> <pointer> <nbits>      The user wishes to read (<my socket> is receive) or write (<my      socket> is send) <nbits> of data into or out of an area pointed to      by <pointer>.  A call to write returns immediately after the NCP      has queued the data to send a message over the connection.  The      call to write blocks only if the connection is blocked or if the      local NCP is too loaded to process the request immediately.  Data      to be transmitted over a connection is formatted into one or more      IMP messages of maximum length 8095 bits and transmitted to the      foreign HOST over the link number specified in the RFC sent by the      NCP controlling the receiving connection.  A "close" event in the      event queue for <my socket> is disclosed through the action of      TRANSMIT.  A call to write discloses the "close" event      immediately.  A read call discloses it when all data has been      read.The History of a Connection From a User ViewAn Illustrative Example   Assume that process 'a' on HOST A wishes to establish connection with   process 'b' on HOST B.  Before communication can take place, two   conditions must be fulfilled:      a. process 'a' must be able to specify to its NCP a socket in 'b's      socket space to which it wants to connect.      b. process 'b' must already be LISTENing to this socket.   1. Establishing the Connection      a. process 'b' LISTENs to socket 'Bb9'.      b. process 'a' INITs 'Bb9' to its 'Aa12'.  The NCP at A generates      an RFC specifying link number = 47, which it chooses from its      available set of links.  This is the link over which it will      receive messages if the connection is ACCEPTed by process 'b'.      c. process 'b' is informed of A's INIT request.  He may REJECT      connection (NCP B sends back a CLS) or ACCEPT (NCP B sends back an      RFC).      d. If process 'b' ACCEPTs, the confirming RFC establishes the      connection, and messages can now flow.                                                               [Page 11]RFC 46                ARPA Network Protocol Notes             April 1970          HOST  A               |          HOST B          INITIATOR             |          ACCEPTOR          PROCESS 'a'           |          PROCESS 'b'                                |                                |                                |  a. LISTEN 'socket code 9'                                |                                | b. INIT 'socket code 12' 'Bb9' |      RFC 'AA12' 'Bb9' 'link 47' ==========>                                |                                | c. ACCEPT 'socket code 9'                                |        RFC 'Bb9' 'Aa12'                                |                                | d. TRANSMIT 'send buffer' 'len'                                |                        'socket 9'

⌨️ 快捷键说明

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