diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2.txt')
-rw-r--r-- | doc/rfc/rfc2.txt | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/doc/rfc/rfc2.txt b/doc/rfc/rfc2.txt new file mode 100644 index 0000000..82a5794 --- /dev/null +++ b/doc/rfc/rfc2.txt @@ -0,0 +1,563 @@ + + + + + + +Network Working Group Bill Duvall +Request for Comments: 2 SRI + + + [unknown title] + + +[page 1 missing] + +1 LINKS + + 1a Control Links + + 1a1 Logical link 0 will be a control link between any two HOSTs on + the network + + 1a1a Only one control link may exist between any two HOSTs on + the network. Thus, if there are n HOSTs on the network, there + are n-1 control links from each HOST. + + 1a2 It will be primarily used for communication between HOSTs for + the purposes of: + + 1a2a Establishing user links + + 1a2b Breaking user links + + 1a2c Passing interrupts regarding the status of links and/or + programs using the links + + 1a2d Monitor communication + + 1a3 Imps in the network may automatically trace all messages sent + on link 0. + + 1b Primary Links + + 1b1 A user at a given HOST may have exactly 1 primary link to each + of the other HOSTs on the network. + + 1b1a The primary link must be the first link established + between a HOST user and another HOST. + + 1b1b Primary links are global to a user, i.e. a user program + may open a primary link, and that link remains open until it is + specifically closed. + + + + + +Duvall [Page 1] + +RFC 2 + + + 1b1c The primary link is treated like a teletype connected over + a normal data-phone or direct line by the remote HOST, i.e. the + remote HOST considers a primary link to be a normal teletype + user. + + 1b1d The primary link is used for passing (user) control + information to the remote HOST, e.g. it will be used for + logging in to the remote host (using the remote hosts standard + login procedure). + + 1c Auxilliary Links + + 1c1 A user program may establish any number of auxilliary links + between itself and a user program in a connected HOST. + + 1c1a These links may be used for either binary or character + transmission. + + 1c1b Auxilliary links are local to the sub-system which + establishes them, and therefore are closed when that subsystem + is left. + +2 MANIPULATION OF LINKS + + 2a Control links + + 2a1 The control link is established at system load time. + + 2a2 The status of a control link may be active or inactive + + 2a2a The status of the control link should reflect the + relationship between the HOSTs. + + 2b Primary Links + + 2b1 Primary links are established by a user or executive call to + the monitor + + 2b1a The network identification number of the HOST to be linked + to must be included in the call + + 2b1b An attempt to establish more than one primary link to a + particular HOST will be regarded as an error, and the request + will be defaulted + + 2b1c Standard Transmission Character Set + + + + + +Duvall [Page 2] + +RFC 2 + + + 2b1c1 There will be a standard character set for + transmission of data over the primary links and control + links. + + 2b1c1a This will be full (8 bit) ASCII. + + 2b1d (get link) The protocol for establishing a link to HOST B + from HOST A is as follows + + 2b1d1 A selects a currently unused link to HOST B from its + allocation tables + + 2b1d2 A transmits a link-connect message to B over link 0. + + 2b1d3 A then waits for: + + 2b1d3a A communication regarding that link from B + + 2b1d3b A certain amount of time to elaspse + + 2b1d4 If a communication regarding the link is received from + B, it is examined to see if it is: + + 2b1d4a A verification of the link from B. + + 2b1d4a1 This results in a successful return from the + monitor to the requestor. The link number is returned + to the requestor, and the link is established. + + 2b1d4b A request from B to establish the link. This + means: that B is trying to establish the same link as A + independently of A. + + 2b1d4b1 If the network ID number of A(Na) is greater + than that of B(Nb), then A ignores the request, and + continues to await confirmation of the link from B. + + 2b1d4b2 If, on the other hand, Na<Nb, A: + + 2b1d4b2a Honors the request from B to establish the + link, + + 2b1d4b2b Sends verification as required, + + 2b1d4b2c Aborts its own request, and repeats the + allocation process. + + + + + +Duvall [Page 3] + +RFC 2 + + + 2b1d4c Some other communication from B regarding the + link. + + 2b1d4c1 This is an error condition, meaning that + either: + + 2b1d4c1a A has faulted by selecting a previously + allocated link for allocation, + + 2b1d4c1b B is transmitting information over an un- + allocated link, + + 2b1d4c1c Or a message regarding allocation from B + to A has been garbled in transmission. + + 2b1d4c2 In this case, A's action is to: + + 2b1d4c2a Send a link disconnect message to B + concerning the attempted connection + + 2b1d4c2b Consider the state of HOST B to be in + error and initiate entry to a panic routine(error). + + 2b1d5 If no communication regarding the link is received + from B in the prescribed amount of time, HOST B is + considered to be in an error state. + + 2b1d5a A link disconnect message is sent to B from A. + + 2b1d5b A panic routine is called(error). + + 2c Auxilliary Links + + 2c1 Auxilliary links are established by a call to the monitor from + a user program. + + 2c1a The request must specify pertinent data about the desired + link to the monitor + + 2c1a1 The number of the primary link to B. + + 2c1b The request for an auxilliary link must be made by a user + program in each of the HOSTs (A and B). + + 2c1c If Na > Nb, then HOST A proceeds to establish a link to + HOST B in the manner outlined above (getlink). + + + + + +Duvall [Page 4] + +RFC 2 + + + 2c1d If Na<Nb, then A waits: + + 2c1d1 For HOST B to establish the link (after looking to see + if B has already established the corresponding link). + + 2c1d2 For a specified amount of time to elapse. + + 2c1d2a This means that HOST B did not respond to the + request of HOST A. + + 2c1d2b The program in HOST A and B should be able to + specifiy the amount of time to wait for the timeout. + +3 ERROR CHECKING + + 3a All messages sent over the network will be error checked initally + so as to help isolate software and hardware bugs. + + 3b A checksum will be associated with each message, which is order + dependent. + + 3b1 The following algorithm is one which might be used: + + 3b1a A checksum of length 1 may be formed by adding successive + fields in the string to be checked serially, and adding the + carry bit into the lowest bit position of the sum. + + +--------------+ + | | + +---FIELD 1----+ + + ADD +--------------+ + | | + +----FIELD 2---+ + + +-+--------------+ + | | | + +-+--------------+ + \ + \ +--+ + ADD CARRY---> | | + +--+ + + +--------------+ + | | + +----RESULT----+ + + 3b1a1 This process is known as folding. + + + +Duvall [Page 5] + +RFC 2 + + + 3b1a2 Several fields may be added and folded in parallel, if + they are folded appropiately after the addition. + + +---------+---------+---------+---------+ + | FIELD 4 | FIELD 3 | FIELD 2 | FIELD 1 | + +---------+---------+---------+---------+ + + +---------+---------+---------+---------+ + | FIELD 8 | FIELD 7 | FIELD 6 | FIELD 5 | + +---------+---------+---------+---------+ + ADD + +-+---------+---------+---------+---------+ + | | | | | | + +-+---------+---------+---------+---------+ + | | | | | + | | | | v + | | | | +---------+ + | | | | | | + | | | | +---------+ + | | | | + | | | \ +---------+ + | | | `-> | | + | | | +---------+ + | | | + | | \ +---------+ + | | `-----------> | | + | | +---------+ + | | + | \ +---------+ + | `--------------------->| | + | +---------+ + | + \ +---+ + `-----CARRY------------------------>| | + +---+ + ADD + +---------+---------+ + | | | + +--CARRY--+---------+ + | + \ +-----+ + ADD `-----> | | + +-----+ + + +---------+ + | | + +-RESULT--+ + + + + +Duvall [Page 6] + +RFC 2 + + + 3b1a2a Using this scheme, it is assumed that, if there + are n fields, the carries from the first n-1 fields + are automatically added into the low order position of + the next higher field, so that in folding, one need + only add the [n] result fields to the carry from the + nth field, and then add in an appropiately sized carry + from that addition (and repeat the desired number of + times to achieve the result. + + 3b1a3 A checksum computed in this manner has the advantage + that the word lengths of different machines may each be used + optimally: + + 3b1a3a If a string of suitable length is chosen for + computing the checksum, and a suitable checksum field + length is selected, the checksum technique for each of + the machines will be relatively optimal. + + 3b1a3a1 Field length: 288 bits (lowest common + denomenator of (24,32,36) + + 3b1a3a2 Checksum length: 8 bits (convenient field size + for all machines) + + 3b1b If a message is divided into groups of fields, and each + group is checksummed in this manner, an order dependent + checksum may be got by shifting the checksum for each group, + and adding it in (successively) to the checksum of the next + group + + 3c A facility will be provided where two HOSTs may enter a mode which + requires positive verification of all messages. This verification is + sent over the control link. + +4 MONITOR FUNCTIONS + + 4a Network I/O drivers + + 4a1 Input + + 4a1a Input message from IMP. + + 4a1b Do error checking on message. + + 4a1b1 Verify checksum, + + 4a1b2 Send "message recieved" aknowledgement over control + link if aknowledge mode is in effect. + + + +Duvall [Page 7] + +RFC 2 + + + 4a1c (trans)character translation + + 4a1c1 There is a strong possibility that the character + translation may be done in the IMP. + + 4a1c2 This needs to be explored further with BBN. + + 4a1c3 There are two main considerations + + 4a1c3a Should the translation be done by table or + algorithm? + + 4a1c3a1 Initially it seems as though the best way to + go is table. + + 4a1c3b How should we decide which messages should be + translated, i.e. is it desirable to not translate + everything (YES!!) and by what means can we use to + differentiate? + + 4a1d Decode header, and pass message to correct recipient as + identified by source, and link. + + 4a2 Output + + 4a2a Build header + + 4a2b Character translation + + 4a2b1 See remarks under the section on output translation + (trans). + + 4a2c Create checksum + + 4a2d Check status of link + + 4a2d1 If there has not been a RFNM since the last message + transmitted out the link, wait for it. + + 4a2e Transmit message to IMP + + 4a2f If aknowledge mode is in effect,wait for + + 4a2f1 RFNM from destination IMP. + + 4a2f2 Response from destination HOST over control line 0. + + + + + +Duvall [Page 8] + +RFC 2 + + + 4b Network status + + 4b1 Maintain status of other HOSTs on network + + 4b1a If an IMP is down, then his HOST is considered to be down. + + 4b2 Maintain status of control lines. + + 4b3 Answer status queries from other HOSTs. + + 4b4 Inform other HOSTs as to status of primary and auxilliary + links on an interrupt basis. + + 4b5 Inform other HOSTs as to status of programs using primary and + secondary links + +5 EXECUTIVE PRIMITIVES + + 5a Primary Links + + 5a1 These require the HOST number as a parameter. + + 5a1a Establish primary link + + 5a1b Connect controlling teletype to primary link + + 5a1c INPUT/OUTPUT over primary link + + 5a1d Interrogate status of primary link + + 5a1d1 Don't know what, exactly, this should do, but it seems + as though it might be useful. + + 5a1e Disconnect controlling teletype from primary link + + 5a1f Kill primary link + + 5b Auxilliary Links. + + 5b1 Establish auxilliary link. + + 5b1a requires the HOST number as a parameter + + 5b1b It returns a logical link number which is similar to a + file index. It is this number which is passed to all of the + other Auxilliary routines as a parameter. + + 5b2 INPUT/OUTPUT over auxilliary link + + + +Duvall [Page 9] + +RFC 2 + + + 5b3 Interrogate status auxilliary link. + + 5b3a Don't know what, exactly, this should do, but it seems as + though it might be useful. + + 5b4 Kill auxilliary link. + + 5c Special executive functions + + 5c1 Transparent. INPUT/OUTPUT over link + + 5c1a This may be used to do block I/O transfers over a link + + 5c1b The function of the monitor in this instance is to + transfer a buffer directly to its IMP + + 5c1c At does not modify it in any way + + 5c1c1 This means that the header and other control + information must be in the buffer. + + 5c1d The indended use of this is for network debugging. + +6 INITIAL CHECKOUT + + 6a The network will be initially checked out using the links in a + simulated data-phone mode. + + 6a1 All messages will be one character in length. + + 6a2 Links will be transparent to the monitor, and controlled by + user program via a special executive primitive. + + 6a2a The initial test will be run from two user programs in + different HOSTs, e.g. DDT to DDT. + + 6a2b It will be paralleled by a telephone link or similar. + + + [ This RFC was put into machine readable form for entry ] + [ into the online RFC archives by Robbie Bennet 10/1998 ] + [ This RFC was nroffed by Kelly Tardif, Viagenie 10/1999 ] + + + + + + + + + +Duvall [Page 10] + |