RFC 2
Host software
RFC 2 π is from the Network Working Group, and it was written by Bill Duvall at SRI π
Heads up, bestie: page 1 is missing from the original, so the title didn't survive. It's [unknown title] π The original doesn't list a category, date, or anything it obsoletes or updates, so there's nothing to report there β¨
1 LINKS π
1a Control Links
- 1a1 Okay so logical link 0 is the control link π¦ It's a control link between any two HOSTs on the network.
- 1a1a Only one control link may exist between any two HOSTs. So if there are n HOSTs on the network, there are n-1 control links from each HOST π
- 1a2 The control link is mainly used for communication between HOSTs for:
- 1a2a Establishing user links
- 1a2b Breaking user links
- 1a2c Passing interrupts about the status of links and/or the programs using them
- 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 stays open until it's specifically closed.
- 1b1c The remote HOST treats a primary link like a teletype connected over a normal data-phone or direct line, i.e. the remote HOST considers a primary link to be a normal teletype user π₯οΈ
- 1b1d The primary link carries (user) control information to the remote HOST. For example, it's used for logging in to the remote host using the remote host's standard login procedure π
1c Auxiliary Links
- 1c1 A user program may establish any number of auxiliary links between itself and a user program in a connected HOST β¨
- 1c1a These links may be used for either binary or character transmission.
- 1c1b Auxiliary links are local to the sub-system that establishes them, so they're 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 is regarded as an error, and the request gets defaulted π
- 2b1c Standard Transmission Character Set
- 2b1c1 There will be a standard character set for transmitting data over the primary links and control links.
- 2b1c1a This will be full (8 bit) ASCII π€
- 2b1c1 There will be a standard character set for transmitting data over the primary links and control links.
- 2b1d (get link) This is the protocol for establishing a link to HOST B from HOST A π¦
- 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 elapse β³
- 2b1d4 If a communication regarding the link is received from B, it gets 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 (
A(Na)) is greater than that of B (Nb), then A ignores the request and keeps waiting for 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 π
- 2b1d4b1 If the network ID number of A (
- 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) π¨
- 2b1d4c1 This is an error condition, meaning that either:
- 2b1d4a A verification of the link from B.
- 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 Auxiliary Links
2c1 Auxiliary 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 auxiliary link must be made by a user program in each of the HOSTs (A and B).
- 2c1c If
Na > Nb, then HOST A goes ahead and establishes a link to HOST B the way we outlined above (getlink) π§ - 2c1d If
Na<Nb, then A waits:- 2c1d1 For HOST B to establish the link (after checking whether 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 specify the amount of time to wait for the timeout β°
4 MONITOR FUNCTIONS π
okay the monitor is literally the main character of this whole section π it handles the network I/O, keeps track of status, and basically makes everything else work π«Ά
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"acknowledgement over control link if acknowledge mode is in effect.
- 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?
- 4a1c3a Should the translation be done by table or algorithm?
- 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 acknowledge mode is in effect, wait for
- 4a2f1 RFNM from destination IMP.
- 4a2f2 Response from destination HOST over control line 0.
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 auxiliary 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 Auxiliary Links π¦
5b1 Establish auxiliary 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 Auxiliary routines as a parameter.
- 5b2 INPUT/OUTPUT over auxiliary link
- 5b3 Interrogate status auxiliary link.
- 5b3a Don't know what, exactly, this should do, but it seems as though it might be useful.
- 5b4 Kill auxiliary 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 It does not modify it in any way
- 5c1c1 This means that the header and other control information must be in the buffer.
- 5c1d The intended use of this is for network debugging. π
6 INITIAL CHECKOUT π§ͺ
6a Simulated data-phone checkout π
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 ]
π¦ where this page comes from
- ietf: rfc2 1969-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms