home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 00s / rfc49.txt < prev    next >
Text File  |  1997-07-01  |  12KB  |  284 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. NWG/RFC 49      Conversations with Steve Crocker (UCLA)
  8.  
  9.                           Edwin W. Meyer, Jr.
  10.                             MIT Project MAC
  11.                              April 25, 1970
  12.  
  13.  
  14.    (Both my personal opinions and those that I believe represent a
  15.    consensus of the Network Working Group at Project MAC are presented
  16.    here.  The pronouns "I" and "we" are used to distinguish between
  17.    these.)
  18.  
  19.  
  20. On April 21 and 23 Thomas P. Skinner and I had telephone conversations
  21. with Steve Crocker at UCLA relating to the network protocol,
  22. specifically regarding our proposal in NWG/RFC 46.  The following items
  23. were discussed.  (I hope that Steve will pardon me if I happen to
  24. misparaphrase him.)
  25.  
  26. 1) Steve stated that he felt that a need for dynamic reconnection would
  27. later be recognized by the network participants.  However, because of a
  28. lack of consensus, it will not be included in the initial
  29. implementation.  (We at Project MAC favor this approach of not including
  30. it initially.)
  31.  
  32.  
  33. 2) Steve supported the implementation of the INT network command
  34. described in NWG/RFC 46.
  35.  
  36. This command allows a process that has agreed to accept interrupts over
  37. a socket connection to be reliably interrupted by the process at the
  38. other end.  The interrupt causes a process to abey its current execution
  39. and execute a procedure that it has specified as the INT handler.  (The
  40. NCP does not specify the INT handler.  That is the function of higher
  41. level protocols.)
  42.  
  43. The INT command is designed specifically for use by a third level User
  44. Control and Communication (UCC) protocol to implement a "quit" signal.
  45. Under such a protocol, both the requestor and the created process agree
  46. that an INT related to a specific socket connection and transmitted over
  47. the NCP control link to the created process is the standard "quit"
  48. signal.  The created process provides an INT handler that implements
  49. this "quit" function.  (This does not preclude a different
  50. interpretation of INT by other third level protocols.)
  51.  
  52. Although many systems implement the "quit" as a control character in the
  53. Teletype input stream, systems such as CTSS, Multics, and others
  54. implement it as a 200 ms spacing on the line.  We at MAC think that the
  55.  
  56.  
  57.  
  58.                                                                 [Page 1]
  59.  
  60. NWG/RFC 49      Conversations with Steve Crocker (UCLA)
  61.  
  62.  
  63. first method is an undesirable implementation within the network (while
  64. the second is impossible).  I put forth several reasons why (and I think
  65. Steve agreed).
  66.  
  67. (a) The link over which the quit character is to be transmitted may be
  68. blocked.
  69.  
  70. (b) While the interrupt is most effectively implemented within the NCP,
  71. it is undesirable for the NCP to place any particular structure on the
  72. data being transmitted.  (See discussion below.)  This would be required
  73. if the NCP were to scan a data stream for a control character.
  74.  
  75. (c) Scanning the input stream greatly reduces NCP efficiency in a
  76. subsystem where speed is critical to effective operation.
  77.  
  78. Steve pointed out that the implementation of INT as a "quit" should not
  79. necessarily preclude a HOST's interpretation of a control character in
  80. the input stream from also acting as a "quit".
  81.  
  82.  
  83. 3) Steve is opposed both to including the instance tag in the socket
  84. identifier and reserving a null field in the identifier for future
  85. definition.  He cited several reasons:
  86.  
  87. (a) Multiple processes of a single user should be indistinguishable to a
  88. foreign process.  (I agree with this in certain cases when processes are
  89. co-ordinated in joint action.  But what about the case where two
  90. processes of the same user both want to independently use the network?)
  91.  
  92. (b) A process wishing to connect to one of a foreign user's processes
  93. does not know the instance tag of the particular process that he wants,
  94. and he can't easily find out.
  95.  
  96. (c) If an instance tag should later prove desirable it could be added
  97. with some difficulty.  (I claim that something as fundamental as the
  98. length of a socket identifier will prove very resistant to change.)
  99.  
  100. Tom stated that perhaps the low order three bits of the user code could
  101. be reserved for later interpretation as an instance tag.  He doesn't
  102. think that a separate field is of great importance.
  103.  
  104. Steve's arguments seem to have merit.  Perhaps Tom's suggestion is the
  105. way to go.  I am currently undecided on this matter.
  106.  
  107.  
  108. 4) We all (Steve and MAC) seem to agree that at the NCP level there
  109. should be no special structure imposed on the data transmitted.  To an
  110. NCP all data to be transmitted are bit strings of arbitrary length.  One
  111.  
  112.  
  113.  
  114.                                                                 [Page 2]
  115.  
  116. NWG/RFC 49      Conversations with Steve Crocker (UCLA)
  117.  
  118.  
  119. happy result is that the difficult question of character sets does not
  120. have to be resolved at this protocol level.  To include a character set
  121. specification at the NCP level would delay agreement on the protocol and
  122. make this character set more resistant to change.  (If there is to be a
  123. standard character set, we prefer ASCII.  After all, it is the prefered
  124. standard of our sponsoring organization.)
  125.  
  126. We also agree with Steve that there should be no optional echoing of
  127. messages at the NCP protocol level.  (This is also the position of the
  128. SDC people in RFC 44.)
  129.  
  130.  
  131. 5) Shoshani, Long, and Landsberg also state (RFC 33) that they prefer to
  132. align messages to end on a word boundary as opposed to double padding.
  133. Steve agrees with us in not liking double padding.
  134.  
  135.  
  136. 6) In our proposal (RFC 46) we suggest that RFCs be queued only for open
  137. sockets, that RFCs to inactive or connected sockets are to be
  138. automatically rejected via the CLS command.  Steve proposes that RFCs to
  139. these sockets be briefly queued.  If the socket remains in an
  140. unacceptable state for a specific interval after the RFC comes in, it is
  141. rejected.  This scheme allows certain types of network command
  142. interaction involving critical races to be implementable.  Such a scheme
  143. of limited queueing does not seem unreasonable to me.
  144.  
  145.  
  146. 7) Steve, Tom, and I discussed strategies for a User Control and
  147. Communication (UCC) Protocol.  Steve said that he disliked our UCC
  148. strategy (RFC 46) because it requires maintaining two full-duplex
  149. connections to the requestor process and switching between them.
  150.  
  151. Steve put forth an alternate proposal: a process wishing to create a
  152. user process at a foreign HOST issues RFCs to sockets 0 and 1 belonging
  153. to the user whose process he wishes to create.  If these sockets are
  154. inactive, the NCP automatically directs these requests to the foreign
  155. HOST's logger process.  The logger accepts connection and performs the
  156. login ritual.  If successful, the logger creates a user process and lets
  157. go of the usurped sockets so that the created process may use them to
  158. communicate with the requestor process.  (I note that this does not use
  159. reconnection at a network level, since the logger uses sockets belonging
  160. to the ultimate user.  However, it does involve internal reconnection.)
  161.  
  162. Tom and I objected to this because it introduces UCC protocol into the
  163. NCP level.  (The NCP must direct all RFCs to inactive sockets 0 and 1 to
  164. a logger process.)  I made a quick suggestion that perhaps our two
  165. proposals could be combined such that the requestor issues a
  166. "signalling" RFC to a "signal" socket of the UCC process.  The UCC
  167.  
  168.  
  169.  
  170.                                                                 [Page 3]
  171.  
  172. NWG/RFC 49      Conversations with Steve Crocker (UCLA)
  173.  
  174.  
  175. rejects the RFC but remembers who is calling.  It then tries to connect
  176. two sockets of the process to be created to the requestor's sockets, and
  177. conducts the login ritual through these.  Steve liked this and suggested
  178. that I write it up.
  179.  
  180. Following the conversation, I thought of several disadvantages to this
  181. UCC strategy:
  182.  
  183. (a) If the control sockets at a created process are limited to 0 and 1,
  184. there is the possibility that a rightful user may not be able to
  185. communicate with a foreign UCC because the UCC already is using those
  186. sockets to communicate with an imposter.  The logger will discover this
  187. and turn off the imposter, but this is an aggravating security breach.
  188. A malicious process could issue simultaneous multiple requests to tie up
  189. the sockets and prevent access to a rightful user.  A better solution is
  190. to allow any socket pair of the potential user process to act as the
  191. control path.  This permits the UCC to conduct simultaneous
  192. interrogations of competing requestors.
  193.  
  194. (b) A disadvantage of both Crocker's and the combined UCC is that the
  195. user to be logged in is specified by supplying a socket belonging to a
  196. particular user.  The logger must now make the additional check that the
  197. user it is logging in actually belongs to the socket pair it is talking
  198. over.  This seems the reverse of the prefered process: to identify a
  199. user and then determine the user code for his socket identifiers.
  200.  
  201. (c) The user may not know the socket user code of the user he wishes to
  202. log in at the foreign HOST.  (After all, there is no basic reason why
  203. the requestor and created processes should have the same user code so
  204. long as the requestor satisfies the foreign logger.)
  205.  
  206. (d) In the combined strategy, there is no way for the requestor to
  207. specify which socket user code it wants.  The only assumption that the
  208. UCC can make is that the requestor process wishes to log in a process
  209. having the same socket user code as itself.  (This may not seem very
  210. important, but I envision a scheme in which a local process exists to
  211. allow consoles attached to the local HOST to login at a foreign HOST
  212. without being logged in locally.)
  213.  
  214. (e) The idea of allowing a process to masquerade within the network as
  215. another process (even with the best of intentions) by using its socket
  216. user code introduces a potentially dangerous security breach.  I think
  217. that it should be a basic protocol law that NO PROCESS WHATSOEVER may
  218. request or accept connections or transmit or receive data over a socket
  219. having a user code not its own.  This does not apply to an NCP process
  220. which has responsibility for such transmission, nor does it prevent a
  221. priviliged process from closing or rejecting connections between a
  222. foreign process and another local process.
  223.  
  224.  
  225.  
  226.                                                                 [Page 4]
  227.  
  228. NWG/RFC 49      Conversations with Steve Crocker (UCLA)
  229.  
  230.  
  231. I still think that the UCC proposal we advanced in RFC 46 is a good
  232. workable scheme.  It does not require socket reconnection (either
  233. expressly throughout the network or implicitly within an NCP), nor do
  234. any of the objections raised above apply.  The only particular
  235. disadvantage I see is that it requires the requestor process to maintain
  236. and switch between two full-duplex connections.  I don't see this as a
  237. serious hindrance.  I would like the comments of the network
  238. participants on this point in particular.
  239.  
  240. Fortunately the UCC is a third level protocol.  The second level NCP can
  241. be specified before we reach final agreement on a UCC, provided that the
  242. NCP allows implementation of a workable UCC.
  243.  
  244. Steve expressed the thought that there need not be an initial standard
  245. UCC, that there might be several UCCs.  We at MAC disagree.  If we are
  246. all to talk to each other, and not between limited subsets of HOSTs
  247. within the network, there must be an initial standard UCC which
  248. EVERYBODY implements.  (Steve is of course correct that there can be
  249. other experimental UCCs also implemented.)
  250.  
  251. It is theoretically possible for each HOST to provide multiple sets of
  252. software to allow a requestor process to communicate with the loggers at
  253. HOSTs implementing different UCCs.  I don't think that it will work this
  254. way in practice.  Each HOST will implement the UCC protocol that is most
  255. agreeable to it, and will provide one set of software so that a
  256. requestor process can communicate only with those HOSTs which implement
  257. similar UCCs.
  258.  
  259. I don't think that there is much enthusiasm at Project MAC for
  260. implementing a non-standard UCC just so we can talk to ourselves.  We
  261. want to implement a single UCC supported at all installations, so that
  262. we can log in to all HOSTs using this protocol, and that users at all
  263. foreign HOSTs can log in to us.
  264.  
  265.        [ This RFC was put into machine readable form for entry ]
  266.        [ into the online RFC archives by Altair Petrofsky 7/97 ]
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.                                                                 [Page 5]
  283.  
  284.