by Darius Kazemi, Mar 1 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

A simpler NCP

RFC-60 is titled “A Simplified NCP Protocol”, authored July 13th, 1970 by Richard Kalin of MIT.

The technical content

This document proposes a simpler Network Control Program than the one laid out in RFC-55. The simplification mostly comes from a central premise: that we can assume that all ( or nearly all) communications will be bidirectional. The author points out that simple communication theory dictates that a useful communication will be a conversation between two entities, a feedback loop of sorts.

By assuming bidirectional communication, you essentially cut the complexity of the NCP in half. Much of the paper is proving this intuitive idea out, and provides a set of commands that can be implemented.

Interestingly, the assumption in this RFC is that larger foreign hosts will lie about the amount of storage they have in their buffers. What a host can (and I believe in the eyes of this author, pretty much should do) is say “I can get away with claiming X amount of storage because statistically speaking, nobody is every going to need all of that storage at once.”

An extreme analogy would be having a one-room hotel in a remote location and saying “my hotel can handle up to 365 guests” when really you mean 365 guests per year at a rate of one each day. If your hotel is remote enough that two guests will basically never need a room at the same time, you can make that claim and it'll never be a problem! (As I said, this is an extreme analogy.)

Unlike RFC-59, this document touches on the trade-offs between “coding simplicity” and technical performance.


I like this author's approach to persuasion. They end the RFC with the following paragraph:

It is the hope of the author that the above protocol presents an attractive alternative to that proposed by RFC 54 and its additions. Although it appears at a late date, it should not be more than a minor jolt to implementation efforts. It is simple enough to be implemented quickly. If adopted, a majority of the present sites could be talking intelligently with one another by the end of the summer.

Basically: I'm sorry I'm late, I think this will be easy to program, and implementing it will result in us being where we all want very soon.

Further reading

A bit of an aside, but two incredibly important publications happened in 1948: Norbert Weiner's book Cybernetics, and Claude Shannon's paper “A Mathematical Theory of Communication”. The ideas in these books completely changed scientific thought. I mention them here because the casual claim in this RFC that “[a]ll communication requires a cyclical flow of information” is only possible in a post-Weiner and post-Shannon world.

Here's a brief biography of Weiner.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.