首页 - 商城 - 渠道 - 商机 - 信息化 - 资讯 - 技术 - 领军 - 搜索 - 下载
论坛 > 内幕传闻 > (续)计算机网络英文RFC 我自己的(31-60)页 精华区  版主:宝贝想想 柠檬218
楼主
2004-10-19 15:42:00
积分:0分





Network Working Group
Request for Comments: 31







               BINARY MESSAGE FORMS IN COMPUTER NETWORKS



                             Daniel Bobrow
                       Bolt, Beranek, and Newman
                        Cambridge, Massachusetts



                         William R. Sutherland
                         MIT Lincoln Laboratory
                        Lexington, Massachusetts





                             February 1968























                                                                [Page 1]

RFC 31                    Binary Message Forms             February 1968


                   MESSAGE FORMS IN COMPUTER NETWORKS

INTRODUCTION


     Network communication between computers is becoming increasingly
   important.  However, the variety of installations working in the area
   probably precludes standardization of the content and form of inter-
   computer messages.  There is some hope, however, that a standard way
   of defining and describing message forms can be developed and used to
   facilitate communication between computers.  Just as ALGOL serves as
   a standard vehicle for describing numerous algorithms, and BNF serves
   as a standard for describing language syntax, a message description
   language would be useful as a standard vehicle for defining message
   formats.
     Considerable progress has been made at the low level of message
   handling protocol and one can expect the ASCII protocols to be used.
   The discussion which follows assumes that the mechanics of exchanging
   messages, check sums, repeat requests, etc., have been worked out.
   The topic of concern is how to describe the content and intent of a
   binary message body when the network header and trailer details have
   been stripped off.
     Most attempts at describing the content of binary messages
   jump immediately into a consideration of the bit codings to be used.
   Long, thin rectangles are drawn to represent the binary bit stream;
   this stream is sliced up into boxes, and tables generally describe
   the bit options for each box.  A better approach would be to provide
   a symbolic method for describing messages.  The symbolism, by
   avoiding immediate references to specific bit details, should help
   one's understanding of the message content and the alternatives
   available in the message body.  When the basic form of the binary
   message body is clear, the coding details of the actual bit fields
   can be shown.


















                                                                [Page 2]

RFC 31                    Binary Message Forms             February 1968


     Describing a binary message body is not much different from
   describing a text body or language.  Text assumes fixed bit fields
   each containing one character.  Standard language description methods
   (BNF) then show how the characters can be concatenated and what
   interpretation should be placed on character groups.  Binary message
   descriptions require the additional capacity of defining various size
   fields in the message and the interpretation to be placed on the bits
   contained in the field.
     A message description is initially intended as a reference standard
   to be written down on paper and made available to new users of a
   computer network.  From this standard, the new user can discover the
   kind and form of the binary data being exchanged over the network.
   Once this is known, the programs necessary for using the network
   facilities can be created.  Later on, in an established network, one
   can envision the promulgation of standards for newly developed binary
   formats via the exchange of ASCII text messages over the network
   itself instead of on paper through the mail.  Still farther into the
   future, the text of a binary format standard could be used as input
   to compiler-like programs which automatically create data translation
   programs for converting one binary format to another.  Right now,
   though, some kind of binary data description method, however trivial,
   is desperately needed.





























                                                                [Page 3]

RFC 31                    Binary Message Forms             February 1968


               A SUGGESTED BINARY FORMAT DESCRIPTION METHOD

     The basic component of a binary message is a simple field
   consisting of a consecutive number of bits in the message.  Binary
   messages consist of concatenated fields.  A format description for a
   binary message will consist of a title and four declarative sections.

     1) Symbolic names are declared for all the different kinds of
        fields found in the binary format being defined.
     2) Symbolic names are declared for commonly used values of
        particular fields.
     3) The legal ways of concatenating fields are indicated.
    
回复
1楼
2004-10-15 19:06:00
积分:0分






Network Working Group                            Bill English   SRI/ARC
Request for Comments No. 34                      26 February 1970


SOME BRIEF PRELIMINARY NOTES ON THE ARC CLOCK

The ARC clock system provides a time reference that is written into the
core memory of the XDS 940 Computer. There are two types of time
information available--absolute and relative.

The absolute time is written into two adjacent words of core with the
following format:

   First word --

      Bits 0 thru 7 contain the month code in straight binary with a
      range of 1 to 12

      Bits 8 thru 15 contain the day code in straight binary with a
      range of 1 to 31

      Bits 16 thru 23 contain the year code in straight binary with
      range of 0 to 99

   Second word --

      Bits 00 thru 7 contain the hour code written in straight binary
      with a range of 0 to 23

      Bits 8 thru 15 contain the minute code written in straight binary
      with a range of 0 to 60

      Bits 16 thru 23 contain the second code written in straight binary
      with range ofr 0 to 60

These 2 words are written once each second.  It is anticipated that the
accuracy of the initial setting will be on the order of 1 second, as
referred to WWV, and that the oscillator drift rate will not account for
an accumlated error of more than 1 second every 250 days.  The
oscillator and clock are provided with standby power in order to
maintain the accuracy of the system.  Because of variable delays in time
required to obtain access to the 940 core memory, it is anticipated that
the short-term accuracy will be on the order of 10 to 20 microseconds.

The relative time, which is written into one word of core memory, is
simply the contents of a 24 bit binary accumulator.  The rate at which
the accumulator is updated can be chosen to be either once very 100
micro seconds or once every millisecond.  In either case the core



                                                                [Page 1]

RFC 34              Prelimary Notes on the ARC Clock       February 1970


location is written each time the accumulator is updated.  As above the
short-term accuracy will be about 10 to 20 microseconds and the long-
term accuracy will be the equivalent of one second every 250 days.

       [ This RFC was put into machine readable form for entry ]
       [ into the online RFC archives by Katsunori Tanaka 1/98 ]













































                                                                [Page 2]

回复
2楼
2004-10-15 19:06:00
积分:0分






Network Working Group                                   Jerry Cole, UCLA
Request for Comments: 32                                February 5, 1970

SOME THOUGHTS ON SRI'S PROPOSED REAL TIME CLOCK

Re: NWG/RFC's #28 and 29.

The addition of a clock in one or more of the network HOST's seems to be
very desireable since it (or they) would allow user-oriented message
delay measurements.  Our present network measurement facilities do not
include any internal HOST delays, and these delays may be an appreciable
portion of the total delay encountered by a HOST-to-HOST message
transmission.  We may find that an extension of our "Trace" capabilities
to include internal HOST delays would be an appropriate mechanism for
utilizing such a clock.  Such usage would require a clock at both the
source and the destination of the message, although such clocks would
not have to be particularly accurate nor synchronized.  Other tests,
such as the absolute overall message delay from HOST A to HOST B would
require synchronization of the two clocks.

A reasonable specification for the SRI real-time clock would seem to
include a resolution of about 1 msec., an accuracy of about 1 part in
10E7 (so that two such clocks could maintain reasonable relative
accuracies over periods of many hours), and a range of about 24 hours.
A crystal controlled clock should easily meet these requirements at a
moderate cost.

The choice of the mechanism by which the HOST can read the clock appears
to be of concern also.  The 1 msec. resolution may require that the
clock be entirely hardware (as opposed to a core location which would be
incremented at each clock pulse), and therefore the clock may require
some rather compli- cated interface circuitry.

At UCLA, we presently have two clocks on the Sigma 7, and one of these
has a resolution of about 2 msec. which might be usable for some
internal HOST measurements.  However, it does not have the long term
accuracy for the absolute measurements mentioned above.

       [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Richard Ames 1/98 ]











                                                                [Page 1]

回复
3楼
2004-10-15 19:06:00
积分:0分
4) The number of bits in each field and any special considerations
        of bit codings are declared.

   The following is a complete example of a binary message description
   for a trivial kind of pictorial data.

     Title: Illustrative graphic data format for a hierarchally
        structured picture of lines and points.
     Simple Fields:
        OPT   - Option Control Field
        COORD - Numerical Coordinate Value
        ID    - Identnumber for group of picture parts
        COUNT - Number of units in message


     Field Equivalents:
        PHDR   <- '2' OPT
        LHDR   <- '4' OPT
        GRPHDR <- '1' OPT
        GRPEND <- '3' OPT



















                                                                [Page 4]

RFC 31                    Binary Message Forms             February 1968


     Characterizations:
        CPAIR   <- COORD = 2
        POINT   <- PHDR + CPAIR
        LINE    <- LHDR + CPAIR = 2
        PARTS   <- POINT/LINE/PARTS + PARTS
        PIXUNIT <- GRPHDR + ID + PARTS + GRPEND
        PIXMSG  <- '5' OPT + N: COUNT + PIXUNIT = N + '0' OPT
     Simple Field Sizes:
        OPT   3
        COORD 14
        ID    9
        COUNT 6



Declaration of Simple Fields

     The declaration of a simple field includes a symbolic
   name, and for lack of a better way, an English description of what
   the contents of the field represent.  For example:
     Simple Fields:
        F1    - Geometric Options
        EXP   - STD Number - Exponent
        COORD - STD Number - Geometric Coordinates

Representing Field Values
     A field with a specific value can be represented by a number in
   single quotes followed by the field name.  A number consists of
   standard digits construed as binary if zeros and ones.  Other numbers
   must be followed by a base indicator unless no confusion is possible;
   Q is octal, D is decimal.

     Example:
     '1001' F1
     '300D' COORD
     '27Q'   EXP
   Field values are integer numbers assigned such that the least
   significant bit is sent first.  Only that part of the number which
   fits the field is used.  Appropriate sign extension is needed for
   negative numbers and for numbers whose bit representation is smaller
   than the field.










                                                                [Page 5]

RFC 31                    Binary Message Forms             February 1968


Simple Field Equivalents
     The declaration of a Simple Field Equivalent provides a symbolic
   name which represents a particular field with a specific value.
   Example:
     Field Equivalents:
        C1 <- '1001' F1
        C2 <- '1010' F1

Characterization Statement
     A characterization statement defines a complex field (message or
   message part) by indicating how other fields can be combined and is
   similar to a definition statement in BNF.  The left side is a complex
   field name separated (by <-) from the concatenation indications on
   the right.  Field names or equivalent names are concatenated by plus
   (+), alternatives indicated by slash (/).  Slash has precedence over
   plus so that A + B/C means A followed by either B or C.  Alternatives
   must be distinguishable in their own right.
     Characterization statement parts can be grouped in the normal
   manner by parentheses.  (A + B)/C means either A followed by B or C.

Repetition Indicators
     Repeated occurrences of a field may be indicated by following the
   field name with an equal sign (=) and a number.  For example:
   CPAIR  <- (COORD = 2) i.e. exactly two COORD fields
   PPAIRS <- (C1 + CPAIR = 10D) / (C2 + CPAIR = 40D)

Assignments Within a Characterization Statement
     Simple fields interpretable as integers can be assigned to a
   variable within the right side of a characterization statement.  This
   variable can then be used as a repetition indicator.  Example:

     MS <- N1: EXP + CPAIR = N1
   indicates that MS consists of field EXP interpreted as an integer and
   then exactly that number of CPAIRS.  All variables are global in
   scope.

Conditional Fields
     Within a characterization statement a field may or may not
   occur depending on the contents of some other previous field.  This
   situation is indicated by assigning a label to the determining field.
   The conditional occurrence is then indicated by enclosing a condition
   expression and the optional field description in brackets ([ and ]).
   For example:








                                                                [Page 6]

RFC 31                    Binary Message Forms             February 1968


     SS <- V:F1 + CPAIR + [V = C1 > PPAIRS]
   which defines a format of 2 and perhaps 3 fields.
     a) Field F1 labeled V followed by
     b) Field CPAIR followed by
     c) Field PPAIRS if the first field (V) was C1; otherwise, this
   third field is not present in the message.

Conditional Alternatives
     Alternatives selected by the contents of some previous field rather
   than by the contents of the alternative field itself are indicated by
   an extension of the conditional field notation.  For example:
     SM := W : F1 + CPAIR + [W = C1 > CPAIR / C2 > PPAIRS /
   The determining field occurs at the beginning of the conditional
   alternative and each alternative then includes its value for the
   determining field and the alternative field then present.

Size of Simple Fields
     A separate field size declaration is provided.
     Simple Field Sizes:
           F1    4
           EXP   7
           COORD 12
   This size declaration should appear at the end of the
   message description; thus, forcing the reader to postpone an early
   consideration of bit details. xmodmap -e "add lock = Caps_Lock"


         [ This RFC was put into machine readable form for entry ]
   [ into the online RFC archives by Dave Bachmann 1/98 ]






















                                                                [Page 7]

回复
4楼
2004-10-15 19:07:00
积分:0分











Crocker                                                         [Page 4]

RFC 36                       Protocol Notes                   March 1970


III   Control Commands
      ----------------

                          Command Summary



   0         <NOP>
   1         <RFC> <me> <you>   or   <RFC> <me> <you> <link>
   2         <CLS> <me> <you>
   3         <RSM> <link>
   4         <SPD> <link>
   5         <FND> <me> <you> <asker>
   6         <END> <link> <end>
   7         <RDY> <link>
   8         <ASG> <me> <you> <link>


                               Commands
No Operation

   Form:    NOP
            NOP  is X'00'

   Purpose:  This command is included for completeness and
             convenience.

Request for connection

   Form:    <RFC> <my socket>  <your socket>
     or     <RFC> <my socket>  <your socket>  <link>
            <RFC> is X'01'
            <my socket> is a 32 bit socket number local to the
            sender
            <your socket> is a 32 bit socket number local to the
            receiver
            <link> is an eight bit link number.
            <my socket> and your socket must be a send/receive pair.
            <link> is included if and only if <my socket> is a
            receive socket

   Purpose:  This command is used to initiate a connection.  When
             two hosts have exchanged  RFC  commands with the same
             arguments (reversed), the connection is established.
             Links are assigned by the receiver.






Crocker                                                         [Page 5]

RFC 36                       Protocol Notes                   March 1970


Close

   Form:    <CLS> <my socket> <your socket>
            <CLS> is X'02'
            <my socket> and <your socket> are the same as for <RFC>

   Purpose:  This command is used to block a connection.  It may
             also be used to abort the establishment of a connection
             or to refuse a request.  It may happen that no
             connection between the named sockets was established,
             or was in the process of being established.  In this
             event, the <CLS> should be discarded.

Resume

   Form:    <RSM> <link>
            <RSM> is X'03'

   Purpose:  This command is sent by a receiving host to cause the
             sending host to resume transmission on the named link.
             A sending host suspends sending if it receives a
             special RFNM for some message.  (Special RFNM's are
             generated by the receiving IMP upon request by its
             host.)

Suspended

   Form:    <SPD> <link>
            <SPD> is X'04'

   Purpose:  This command is sent by a sending host to acknowledge
             that it has stopped sending over the named link.
             Transmission will resume if a <RSM> command is
             received.

Final End

   Form:    <FND> <my socket> <your socket> <asker>
            <FND> is X'05'
            <my socket> is a 32 bit socket number of a socket local
            to the sender
            <your socket> is a 32 bit socket number of a socket
            local to the receiver
            <my socket> and <your socket> form a send/receive pair.
            A connection should be established between them.
            <asker> is a 40 bit socket number of the same type as
            <my socket>




Crocker                                                         [Page 6]

RFC 36                       Protocol Notes                   March 1970


   Purpose:  If a process decides to short-circuit itself by connecting
             one of its receive sockets to one of its send sockets, the
             NCP sends out two <FND> commands -- one in each direction.
             Each one has <asker> initialized to <my socket>.

             Upon receiving an <FND> command, the NCP checks its <your
             socket>.  If <your socket> is already engaged in a
             reconnection, the command is passed on with a new <my
             socket> and <your socket>.  However, before it is passed
             on, the <asker> is compared with the new <my socket>.  If
             they are equal, a loop has been detected and both sockets
             are closed.

             If <your socket> is not engaged in a reconnection, it is
             marked as the end of a chain of reconnections and an <END>
             is sent back.

             If the connection named is not in progress, a <CLS> is sent
             back and the <FND> is discarded.

End Found

   Form:    <END> <link> <end socket>

            <END> is X'06'
            <link> is an 8 bit link

            <end socket> is a 40 bit socket

   Purpose:  This command indicates which socket is at the end of a
             chain of reconnections.  It is generated at <end
             socket> and passed back to the other terminal socket
             via all the intermediate sockets.  If <end socket> is a
             send socket, <link> refers to a connection with the
             send socket in the sending host and the receive socket
             in the receiving host.  If <end socket> is a receive
             socket, <link> refers to a connection with the send
             socket in the receiving host and the receive socket in
             the sending hose.  ("sending" end "receiving" refer to
             the transmission of this control command.)











Crocker                                                         [Page 7]

RFC 36                       Protocol Notes                   March 1970


Ready

   Form:    <RDY> <link>

            <RDY> is X'07'
            <link> is an 8 bit link number

   Purpose:  This command is sent from a send socket to a receive
             socket to indicate that all messages have been
             forwarded and that reconnection may occur.

Assign New Link

   Form:    <ASG> <my socket> <your socket> <link>

            <ASG> is X'08'

   Purpose:  This command completes a reconnection.  It is sent from
             a receive socket to a send socket after the receive
             socket has received a <RDY>.  A new link is assigned
             and transmission commences.

          [ This RFC was put into machine readable form for entry ]
           [ into the online RFC archives by Marc Blanchett 3/00 ]



























Crocker                                                         [Page 8]

回复
5楼
2004-10-15 19:07:00
积分:0分






Network Working Group                                          S. Crocker
Request for Comments: 36                                    16 March 1970


                             Protocol Notes

I Overview
  --------

   The network protocol provides three facilities:

         1.  Connection establishment

         2.  Flow control

         3.  Reconnection

   Reconnection is considered separately from connection establishment
   partly because of the complexity of reconnection and partly because I
   don't have enough experience with the protocol to present these
   concepts in an integrated fashion.

   Connection Establishment
   ------------------------

   Connection establishment works essentially the same as in NWG/RFC
   #33.  The major change is that a more general form of switching is
   provided independently of establishment, so establishment is
   simplified by not including switching procedures.

   A rough scenario for connection establishment follows:

   1.  Process PA in host A grabs socket SA and requests connection with
       socket SB.  Process PA accomplishes this through a system call.

   2.  Concurrently with the above, process PB in host B grabs socket SB
       and requests connection with socket SA.

   3.  In response to process PA's request, the network control program
       in host A (referred to as NCPA) sends a Request-for-Connection
       (RFC) command to host B.  NCPB in host B sends a similar command
       to host A.  No ordering is implied: NCPB may send the command to
       NCPA before or after receiving the command from NCPA.

   4.  NCPA and NCPB are both aware the connection is established when
       each has received a RFC command and each has received the RFNM
       for the one it has sent.  They then notify processes PA and PB,
       respectively, that the connection is established.



Crocker                                                         [Page 1]

RFC 36                       Protocol Notes                   March 1970


   One of the rules adhered to is that either SA is a send socket and SB
   is a receive socket or vice versa.  This condition is sometimes
   stated as "SA and SB must be  a send/receive pair."

   5.  The sending process may now send.

   Flow Control
   ------------

   In order to prevent a sending process from flooding a receiving
   processes it is necessary for the receiving process to be able to
   stop the flow(*).  Flow control is integrated into the network RFNM
   handling.  When a receiving host wishes to inhibit flow on a
   particular link, the host sends a special message to its IMP which
   causes the next RFNM on that link to be modified.  The sending host
   interprets this message as a RFNM and as a request to stop sending.
   A confirming control command is returned.

   When the receiving host is ready to receive again, it sends a command
   (RSM) telling the sending host to resume sending.

   Reconnection
   ------------

   For a great many reasons it is desirable to be able to switch one (or
   both) ends of a connection from one socket to another.  Depending
   upon the restrictions placed upon the switching process, it may be
   easy or hard to implement.  To achieve maximum generality, I present
   here a scheme for dynamic reconnection, which means that reconnection
   can take place even after flow has started.  It may turn out that for
   the majority of cases, this scheme is much more expensive than it
   needs to be; however, the following virtues are claimed:

      1. All various forms of switching connections are provided.

      2. Reconnection introduces no overhead in the processing of
         messages sent over a connection i.e., the whole cost is borne
         in processing the protocol.

   ---------------------------------------------------
   *BB&N argues that unlimited buffering should be provided.  It is
   possible that this would be a proper strategy: but it is foreign to
   my way of thinking, and I have based the protocol design on the
   assumption that only a small buffer is provided on the receive end of
   each connection.






Crocker                                                         [Page 2]

RFC 36                       Protocol Notes                   March 1970


II  Data Structures
    ---------------

    1.  Connection Table
    2.  Process Table
    3.  Input Link Table
    4.  Output Link Table
    5.  Link Assignment Table

   Connection Table
   ----------------

   This holds all information pertaining to local sockets, particularly
   whether a socket is engaged in a connection, and if so, what state
   the connection is in.  Entries are keyed by local socket, but other
   tables have pointers into this table also.  (See the Process Table,
   Input Link Table, and Output Link Table.)

   Each entry contains the following information:

         a)  local socket (key)
         b)  foreign socket
         c)  link
         d)  connection state
         e)  flow state and buffer control
         f)  pointer to user's process
         g)  reconnection control state
         h)  queue of waiting callers

   The local socket is a 32 bit number.  If no entry exists for a
   particular socket, it may be created with null values.

   The foreign socket is a 40 bit number.  This field will be unassigned
   if no connection is established.

   The link is an 8 bit number and is the link over which data is sent
   from the sender to the receiver.  A socket is a receive socket iff
   its low-order bit is zero.

   Connection state refers to whether a connection is open or not, etc.
   The following possibilities may occur.

         a)  local process has requested a connection
         b)  foreign process(es) has/have requested a connection
         c)  connection established
         d)  reconnection in progress
         e)  close waiting
         f)  reconnection waiting



Crocker                                                         [Page 3]

RFC 36                       Protocol Notes                   March 1970


   Flow state and buffer control refer to checking for RFNM's sending
   and accepting cease, suspend and resume commands, and keeping track
   of incoming or outgoing data.

   A pointer to the user's process is necessary if the process has
   requested a connection.

   If reconnection is in progress, it is necessary to keep track of the
   sequence of events.  A socket engaged in reconnection is either an
   end or a middle.  If it's a middle, it is necessary to store the
   eight bit name of the other middle attached to the same process, and
   to record receipt of END and RDY commands.

   Finally, if RFC's are received either when the socket is busy or when
   no process has engaged it, the RFC's are stacked first-in-first-out
   on a queue for the named local socket.

   Process Table
   -------------

   This table associates a process with a socket.  It is used to process
   system calls.

   Input Link Table
   ----------------

   This table associates receive links with local sockets.  It is used
   to decide for whom incoming messages are destined.

   Output Link Table
   -----------------

   This table associates send links with local sockets.  It is used to
   interpret RFNM's and RSM commands.

   Link Assignment Table
   ---------------------

   Links are assigned by receivers.  This table shows which links are
   free.
回复
6楼
2004-10-15 19:07:00
积分:0分





Network Working Group                                         S. Crocker
Request for Comments: 35                                            UCLA
Category: Informational                                     3 March 1970


                            Network Meeting


     I expect to have the details of the new network protocol as
outlined in NWG/RFC #33 ready in two weeks.  Some interest has been
expressed in a live presentation, so we will host a network meeting on
Tuesday, March 17, at UCLA at 9:00 a.m.  To facilitate interaction,
please limit attendance to one programmer from each site.  It is also
wise to leave the 18th open in case discussion continues.

     The subject of the meeting will be a detailed presentation of the
network protocol, suitable for implementing unless major flaws are
discovered.  Documentation will be available at the meeting and if not
obsoleted by the meeting, will be sent out as NWG/RFC on March 20.

     Please call Mrs. Charlotte LaRoche at (213) 825-2543 if you need
help in making arrangements.



       [ This RFC was put into machine readable form for entry ]
       [ into the online RFC archives by Jochen Friedrich 4/97 ]
























                                                                [Page 1]

回复
7楼
2004-10-15 19:08:00
积分:0分






Network Working Group                                         E. Harslem
Request for Comments: 40                                      J. Heafner
                                                                    RAND
                                                              March 1970

               More Comments on the Forthcoming Protocol

We have recently discussed NWG/RFC Nos. 36 and 39 with Steve Crocker,
UCLA.  Steve has asked that we elaborate on the errors, queries, and
HOST status that were mentioned in NWG/RFC #39.

Please voice your opinions soon in order to affect the forthcoming
protocol specifications.

ERROR MESSAGES

     <ERR> <Code> <Command length> <Command in error>

<Code> is an eight-bit field that specifies the error type.  The
assigned codes are shown below.  <Command length> is a 16-bit integer
that indicates the length of the <Command in error> in bits.  The
<Command in error> is the spurious command.

The ranges of <Code> are shown below in hexidecimal.

     00     Unspecified error types
     10-0F  Resource errors
     10-1F  Status errors
     20-2F  Content errors
     30-3F  Unused

Specific values of <Code> are shown below with their meaning.

     <Code> value   Semantics

         00         Unspecified errors.
         01         Request for an invalid resource.
         02         Request for an exhausted resource, try later.
        03-0F       Unused.
         10         Invalid <RSM>, i.e., link connected but unblocked.
         11         Invalid <SPD>.
         12         Invalid <ASG>, i.e., connected but no <RDY>
                      received.








                                                                [Page 1]

     <Code> value   Semantics

         13         Message received on blocked link.
        14-1F       Unused.
         20         Unknown command code.
         21         Message received on unconnected link.
         22         Invalid <RFC>.
         23         Invalid <CLS>.
         24         Invalid <RSM>, i.e., link not connected.
         25         Invalid <FND>.
         26         Invalid <END>.
         27         Invalid <RDY>.
         28         Invalid <ASG>, i.e., not connected.
        29-2F       Unused.
        30-FF       Unused.

QUERIES

     <QRY> <My Socket>
or   <RPY> <Your Socket> <Text>

The <QRY> is the query indicated in NWG/RFC #39 and <RPY> is the reply.
The format of <Text> is shown below; also refer to NWG/RFC #36, p. 3.

<Text>::= <16 bit count of relevant connection table entries>
          <relevant connection table entries>

<relevant connection table entries>::=
                                     <relevant connection table entries>
                                     <a relevant connection table entry>
                                     <a relevant connection table entry>

<a relevant connection table entry>::= <local socket> <foreign socket>
                                       <link> <connection state>
                                       <flow state and buffer control>
                                       <reconnection control state>















                                                                [Page 2]

HOST STATUS

     <NOP>

An NCP may be up, down, pending, etc.  When an NCP changes its
state to UP it should send a <NOP> to each remote NCP which
indicates the NCP is available.  The sending NCP can then
construct a vector of HOST status from the RFNMs it receives.  An
NCP receiving a <NOP> can update the availability of the sending
NCP in its HOST status vector.



       [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Richard Ames 6/97 ]




































                                                                [Page 3]

回复
8楼
2004-10-15 19:08:00
积分:0分






Network Working Group                                         E. Harslem
Request for Comments: 39                                      J. Heafner
                                                                    RAND
                                                           25 March 1970


                  COMMENTS ON PROTOCOL RE: NWG/RFC #36

   We offer the following suggestions to be considered as additions to
   the April 28th 1970 protocol grammar specifications.

   ERROR MESSAGES

        <ERR> <Code> <Command in error>

   It is desirable to include debugging aids in the initial protocol for
   checking out Network Control Programs, etc.

   There are three classes of errors--content errors, status errors, and
   resource allocation or exhaustion. <Code> specifies the class and the
   offending member of the class.  The command is returned to the
   sending NCP for identification and analysis.

   Examples of status errors are: messages sent over blocked links and
   attempts to unblock an unblocked link.  Examples of content errors
   are: an invalid RFC complete; a message sent on a link not connected;
   closing of an unconnected link; and an attempt to unblock an
   unconnected link.  Examples of resource errors are:  a request for a
   non-existent program and connection table over- flow, etc.  Resource
   errors should be followed by a <CLS> in response to the <RFC>.

   QUERIES

        <QRY> <My   Socket>  < >

   or   <QRY> <Your Socket>  <Text>

   Queries provide an extension to the <ERR> facility as well as limited
   error recovery, thus avoiding re-initialization of an NCP.

   The first command requests the remote NCP to supply the status of all
   connections to the user specified by the user number in <My socket>.
   The second is the reply; <Text> contains the connection status
   information.  If an NCP wants the status of all connections to a
   remote HOST, the <My Socket> is zero.






Harlsem & Heafner                                               [Page 1]

RFC 39            COMMENTS ON PROTOCOL RE: NWG/RFC #36        March 1970


   PROGRAM TERMINATION NOTIFICATION

        <TER> <My Socket>

   This command supplements rather than replaces <CLS>.  It severs all
   communication between a program and those programs in a given HOST to
   which it is connected.  This command performs what would otherwise be
   handled by multiple <CLS> commands. <My Socket> contains the sender's
   user number.

   HOST STATUS

        <HCU>
        <HGD>

   These messages (HOST coming up and HOST voluntarily going down) are
   compatible with asynchronous, interrupt-driven programs, as opposed
   to the more conventional post/poll method.

   TRANSMIT AND BROADCAST

        <TRN> <Body>
        <BDC> <Body>

   Unlike the previous commands, these are not sent over the control
   link, but rather over links assigned to user programs.  The prefix of
   <TRN> or <BDC> indicates, to the receiving NCP, the disposition of
   the message body. <TRN> indicates a message to be passed to a single
   process. <BDC> specifies to the destination NCP that the message is
   to be distributed over all receiving connections linked to the
   sender.  In response to a system call by the user to an NCP
   requesting <BDC>, the NCP generates one <BDC> to each HOST to which
   the sender is connected.

   RFC AND DYNAMIC RECONNECTION

   This protocol is complex; it proliferates control messages; it causes
   queues (to become associated with re-entrant procedures) that are
   artificially imposed via the protocol (remote AEN assignment); and
   discounts the situation where only controlling process "A" has
   knowledge that slave process "B" should be "rung out" in a dynamic
   reconnection.

   The <ERR>, etc., are suggestions for inclusion as additions in the
   April 28th protocol specifications.  The above criticism is, of
   course, not intended to affect modification of the RFC structure by
   April 28th, nor to reflect on those who planned it.  We have not
   studied the problem.  It is meant, however, to voice our concern



Harlsem & Heafner                                               [Page 2]

RFC 39            COMMENTS ON PROTOCOL RE: NWG/RFC #36        March 1970


   about complexity and resulting response times.  This is a difficult
   problem and it deserves more study after we have exercised the
   current RFC specifications.  We hope to offer constructive
   suggestions with respect to the RFC in the future.



   JFH:hs


         [ This RFC was put into machine readable form for entry ]
          [ into the online RFC archives by Mario Vitale 08/99 ]







































Harlsem & Heafner                                               [Page 3]

回复
9楼
2004-10-15 19:08:00
积分:0分






Network Working Group                                   Stephen M. Wolfe
Request for Comments: 38                                        UCLA CCN
                                                           20 March 1970

                      Comments on Network Protocol
                            from NWG/RFC #36

   The proposed protocol does not allow for the possible multiplexing of
   connections over links.

   Generally, this presents no problem, but it might cause loading
   restrictions in the future. Two cases where routing multiple
   connections over the same link are apparent:

         a) Where a user has several high speed connections, such as
            between processes that transmit files over the network.
            Assigning these connections to the same link limits the
            percentage of network resources that may be used by that
            user. This becomes particularly important when several
            store-and-forward IMP's are used by the network to effect
            the communication.
         b) When two hosts each have their own independent network and
            desire to allow access to the other hosts's network over
            the ARPA net, a shortage of links may develop. Again, the
            assignment of several connections to the same link could
            help solve the problem.

   The following changes in the protocol would make possible the future
   use of multiplexed links. It is not necessary to add the
   multiplexing, itself, to the protocol at this time.

         a) The END and RDY must specify relevant sockets in addition to
            the link number. Only the local socket name need be
            supplied.
         b) Problems arise with the RSM and SPD commands. Should they
            refer to an entire link, or just to a given connection?
            Since there is a proposal to modify the RFNM to accommodate
            these commands, it might be better to add another set of
            commands to block and unblock a connection, but I am not
            convinced that that is the best solution.
         c) The destintation socket must be added to the header of each
            message on the data link. Presumably this would consist of
            32 bits immediately after the header and before the marking.

       [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Karl Reinsch 1/97 ]





                                                                [Page 1]

回复
10楼
2004-10-15 19:08:00
积分:0分
Idea 1. To Reconnect.
  --------------------

  "A NCP wanting to Reconnect tells each of his neighbors "I want to
  reconnect".  They wait until there are no messages in transit and
  respond "OK".  He then says "Reconnect as follows" and they do it.
  In the Rare condition, the NCP gets back an "I want to reconnect
  instead of an "OK", then one must go and one must stop.  So treat a
  "reconnect" from a higher Host user etc. as an ok and from a lower
  as a "No-wait until I reconnect you" and do the connection.

  Idea 2
  ------

  "Decouple connections and links.  Still establish connections, but
  use any handy link for the messages.  Don't send another message on
  a connection until a FRNM comes back.  Include source and
  destination socket numbers in the packet.

  "To reconnect, say to each of neighbors "please reconnect me as
  follows...".  Hold onto the connect for a short time (seconds) and
  send both packets and connection messages along toward their
  destinations.  I haven't worked out how to keep the in-transit
  messages in order, but probably everything works if you don't send
  out a reconnect when RFNM's are pending."




                                                                [Page 3]

RFC 37             Network Meeting Epilogue, etc.         20 March 1970

  Bill's first idea does not seem to me to be either decisively better
  or (after some thought) very different, and I am considering it.  I
  have no strong feelings about it yet, but I am trying to develop
  some.

  Bill's second idea seems contrary to my conception of the role of
  links.  An argument in favor of decoupling connections and links
  that the number of connections between two hosts might want to
  exceed 255, and that even if not, it is sounder practice to isolate
  dependancies in design.  On the other hand, the newly provided Cease
  on Link facility* (page 22 of the soon to be released BBN report
  #1822 revised Febuary 1970) becomes useless.  (Bill, who just put
  the feature in, doesn't care.)  Another objection is that it seems
  intuitively bad to waste the possibility of using the link field to
  carry information.  (Note the conflict of gut level feelings).

  In a conversation with John Haefner and Eric Harslem of RAND, the
  pointed out that the current protocol makes no provision for error
  detection and reporting, status testing and reporting, and expansion
  and experimentation.  Error detection and status testing will
  require some extended discussion to see what is useful, and I expect
  that such discussion will take place while implementation proceeds.
  Leaving room for protocol expansion and experimentation, however, is
  best done now.

  I suggest that two areas for expansion be reserved.  One is that
  only a fraction of the 256 links be used, say the first 32.  The
  other area is to use command codes from 255 downward, with permanent
  codes assigned from the number of links in use to 32, I feel that it
  is quite unlikely that we would need more than 32 for quite some
  time, and moreover, the network probably wouldn't handle traffic
  implied by heavy link assignment.  (These two things aren't
  necessarily strongly coupled:  one can have many links assigned but
  only a few carrying traffic at any given time.)

  Some of Heafner's and Harslen's other ideas may appear in NWG/RFC
  form.












                                                                [Page 4]

RFC 37             Network Meeting Epilogue, etc.         20 March 1970

  Immediate Interaction
  ---------------------

  During the next several days, I will still be interested in those
  editicisms of current protocol which might lead to rejection or
  serious modification of it.  Thereafter, the focus will be a
  refinement, implementation, extension, and utilization.  I may be
  reached at UCLA through my secretary Mrs. Benita Kristel at (213)
  825-2368.  Also, everyone is invited to contribuet to the NWG/RFC
  series.  Unique numbers are assigned by Benita.

  * The Cease on Link facility is a way a receiving host modifies
    RFNM's so as to carry a flow-quenching meaning.  An alternative
    proceedure is to use a host-to-host control command.

       [ This RFC was put into machine readable form for entry ]
        [ into the online RFC archives by Ron Fitzherbert 1/97 ]
































                                                                [Page 5]

回复
11楼
2004-10-15 19:08:00
积分:0分






Network Working Group                                        S. Crocker
Request for Comments: 37                                           UCLA
                                                          20 March 1970

                     Network Meeting Epilogue, etc.

The Meeting
-----------

  On Tuesday, March 17, 1970, I hosted a Network meeting at UCLA.
  About 25 people attended, including representatives from MIT, LL,
  BBN, Harvard, SRI, Utah, UCSB, SDC, RAND and UCLA.  I presented a
  modification of the protocol in NWG/RFC #33; the modifications are
  sketchily documented in NWG/RFC #36.  The main modification is the
  facility for dynamic reconnection.

  The protocol based on sockets and undistinguished simplex
  connections is quite different from the previous protocol as
  documented in NWG/RFC #11.  The impetus for making such changes came
  out of the network meeting on December 8, 1969, at Utah, at which
  time the limitations of a log-in requirement and the inability to
  connect arbitrary processes was seriously challenged.  Accordingly,
  the primary reason for the recent meeting was to sample opinion on
  the new protocol.

  Recollections may vary, but it is my opinion that the protocol was
  widely accepted and that the criticism and discussion fell into two
  categories:

  1.  Questioning the complexity and usefulness of the full protocol,
      especially the need for dynamic reconnection.

  2.  Other topics, particularly character set translation, higher
      level languages, incompatible equipment, etc.

  Notably lacking was any criticism of the basic concepts of sockets
  and connections.  (Some have since surfaced.)  The following
  agreements were made:

  1.  By April 30, I would be responsible for publishing an
      implementable specification along lines presented.

  2.  Any interested party would communicate with me (at least)
      immediately if he wished to modify the protocol.







                                                                [Page 1]

RFC 37             Network Meeting Epilogue, etc.         20 March 1970

  3.  If major modifications come under consideration, interested
      parties would meet again.  This would happen in two to three
      weeks.

  4.  Jim Forgie of Lincoln Labs tentatively agreed to host a meeting
      on higher level network languages, probably near Spring Joint
      time.

Mailing List Changes
--------------------

  Paul Rovner of LL is replaced by

                   James Forgie
                   Mass. Institute of Technology
                   Lincoln Laboratory C158
                   P.O. Box 73
                   Lexington, Mass. 02173

                   telephone at (617) 862-5500 ext. 7173

  Professor George MEaly is added

                   George Mealy
                   Rm. 220
                   Aitken Computation Lab.
                   Harvard University
                   Cambridge, Massachusetts 02138

                   telephone at (617) 868-1020 ext. 4355

Process
-------

  In all of our writing we have used the term process, to mean a
  program which has an assigned location counter and an address space.
  A program is merely a pattern of bits stored in some file.  A new
  process is created only by an already existing process.  The
  previous process must execute an atomic operation (forc, attach,
  etc.) to cause such a creation.  Processes may either cause their
  own demise or be terminated by another (usually superior) process.

  The above definition corresponds to the definition given by
  Vyssotsky, et al on pp.  206, 207 of "Structure of the Multics
  Supervisor" in the FJCC proceedings, 1965.




                                                                [Page 2]

RFC 37             Network Meeting Epilogue, etc.         20 March 1970

  Because a process may create another process, and because in general
  the two processes are indistinguishable when viewed externally, I
  know of no reasonable way for two processes to request connection
  directly with each other.  The function of sockets is to provide a
  standard interface between processes.

The Days After
--------------

  In the time since the meeting I have had conversations with Steve
  Wolfe (UCLA-CCN), Bill Crowther (BBN), and John Heafner and Erick
  Harslem (RAND).  Wolf's comments will appear as NWG/RFC #38 and fall
  into a class I will comment on below.

  Crowther submitted the following:

  "A brief description of two ideas for simplifying the host protocol
  described at the March meeting.  These ideas have not been carefully
  worked out.

回复
12楼
2004-10-15 19:09:00
积分:0分






Network Working Group                                   J. Postel
Request for Comments #45                                S. Crocker
                                                        UCLA
                                                        14 April 70

                         New Protocol is Coming

We are currently preparing a clean version of the Network protocol,
hopefully suitable for immediate implementation.  As advertised, we
will send these specs out on April 28.

Since the SJCC is one week later, we will host a discussion meeting in
Atlantic City, Thursday, May 7, win the afternoon.  The purpose of the
discussion meeting will be for us to explicate unclear details of our
April 29 document, and for everyone to exchange gripes, suggestions
and schedules.

(Note that the network session, chaired by Larry Roberts with papers
from BBN, et al is Thursday morning.)

       [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Josh Elliott 1/98 ]





























                                                                [Page 1]

回复
13楼
2004-10-15 19:09:00
积分:0分






Network Working Group                         A. G. Nemeth
Request for Comments: 43                      M.I.T. Lincoln Laboratory
                                              8 April 1970


                         Proposed Meeting


      On Friday, 8 May 1970, at 9:30 AM a meeting at M.I.T. Lincoln
Laboratory is proposed. A description of LIL (Local Interaction
Language) for the TSP (Terminal Support Processor) system will be
presented.

      The purpose of the TSP system is to provide a flexible I/O
capability for network users. In order to achieve maximum flexibility,
the system is user-programmable in an interpretable language called
LIL.

      LIL has the appropriate primitives for manipulating tree
structures (for interactive graphics) as well as message-oriented
I/O. The general purpose portion of the language is used to specify
the I/O handlers and the display structures.

      A discussion of the problems of handling interactive programs
over the ARPA network will follow.

      This conference is intended as a working group and each host
should send as few or as many individuals as are actively
interested. A working document on LIL will be mailed about a week in
advance to interested individuals.

      Anyone interested in attending and/or receiving the documents
should contact A. G. Nemeth (x7354) or J. Forgie (x7173) at
M.I.T. Lincoln Labs, Lexington, Mass. 02173, (617) 862-5500.


[This RFC was put into machine readable form for entry into the RFC
archives by Glenn Forbes Fleming Larratt]



















                     December 27, 1996


回复
14楼
2004-10-15 19:09:00
积分:0分






Network Working Group                                        E.I. Ancona
Request for Comments: 42                       M.I.T. Lincoln Laboratory
                                                           31 March 1970


                            Message Data Types


   Proposal:

   We propose that the first eight bits of a normal message be reserved
   for a message data type.  Adoption of this convention does not in any
   way signify agreement as to the actual data types to be used.  It
   merely establishes the convention that the first eight bits of every
   normal message are not available for user data.

   Discussion:

                     Socket    Port
                     |    |      |    ____________
                     |    V      V   /            
                     V              /              
                         |=|    /==|                |
             -------(+)->|Y|--><   |                |
                         |=|    \==|                |
                                   |    PROCESS     |
                                   |                |
                         |=|    /==|                |
             -------(-)->|X|<--<   |                |
                         |=|    \==|                |
                                    \              /
                                     \____________/

   It is important that conventions regarding the contents of messages
   be set up early so that there will not be a large proliferation of
   such conventions between every pair of programs running on the
   network.

   As network usage grows, network languages may develop for specifying
   both the syntax and semantics of messages.  However, even before such
   conventions are developed, a simple way of describing such a
   specification is by means of a message type which both sender and
   receiver know how to interpret.

   It is important that currently running programs still run with this
   convention; thus, we propose that two system programs be written
   which initially put in and test and remove the type information from
   the message.  Let us call these two programs X and Y, for lack of



Ancona                                                          [Page 1]

RFC 42                     Message Data Types                 March 1970


   better names.  In general, X and Y will perform transformations on
   the data, e.g., change character sets or number formats.  As network
   usage grows, X and Y might become table driven with the table
   specified by the user.

   Standard Types and Local Types:

   We propose to distinguish between two kinds of message data types:
   standard and local.

   Since our two transformation programs cannot be expected to perform a
   transformation between every possible data representation and the
   data representation of the machine they are running on, and also
   since the addition of a data representation should not necessarily
   involve a change to X or Y, we propose that only a fixed number of
   message types have meaning throughout the network.  These are
   standard types.

   There are two classes of local types: MYLOCAL and YOURLOCAL. A
   message type MYLOCAL n implies: this is type n of the set of types of
   the sending host.  YOURLOCAL n implies: this is type n of the set of
   types of the receiving host.

   Conventions:

   A possible implementation of standard and local types is to define
   standard type 0 to be YOURLOCAL and standard type 1 to be MYLOCAL. In
   these cases, the second byte would be the local type number.

   Local type 0 would mean user-specified, i.e., the message contents
   are unchanged and unchecked.  Installations would define their own
   local type numbers and these would normally be available from the
   Network Information Center.

   Thus initially, all messages sent to currently running programs will
   be type 0, n and all messages received from currently running
   programs will be type 1, n where n is the local type number of the
   character set of the installation.

   Examples of Possible Standard Ty