by Darius Kazemi, Feb 8 2019
Error and status
RFC-39 is yet another response to RFC-36. This is authored by John Heafner and Eric Harlsem at RAND, and it proposes some changes to the new HOST-HOST protocol. It's dated March 25th, 1970.
The technical content
Our authors propose some key additions to the protocol, including:
- error messages
- a way to query the status of a socket
- notifications to all users connected to a HOST (“system going down for maintenance!”)
They also believe that Crocker's dynamic reconnection algorithm is too resource-intensive but are also kind of apologetic that they don't have a better solution yet.
There are 3 types of error messages they specify: content errors, status errors, and resource errors. A content error is something like “you asked me to close a link but it's not actually open in the first place” or “your message to me was malformed”. A status error could be a message like “you tried to send a message over link 5 but that link is currently reserved”. A resource error is “we ran out of memory” or “the program you are trying to run doesn't exist.”
Error messages and status codes are a really great idea! One of the most common pieces of feedback I send (and get sent) in code review is “uhh maybe add some error messages and a way to query the system status” so. Yeah. This is an early example of a very common piece of programming feedback.
Before working on ARPANET, Heafner was involved in the GRAIL Project (GRAphical Input Language) at RAND. It was an early formal investigation into using CRT monitors for human-computer interfaces. The paper even begins stating that when they started the project, they realized there was a mismatch between the 2D display of a monitor and the linear input of a keyboard so figured they needed to invent a tablet/pen for 2D input! There is a fascinating post mortem of the project that was published in 1969 and you can read the whole thing on RAND's website. Here's a blurry scan of the tablet and monitor interface from the paper: