by Darius Kazemi, June 16 2019
RFC-167 is titled “Socket Conventions Reconsidered” and authored by Abhay Bhushan of MIT Project MAC, Bob Metcalfe of Harvard, and Joel Winett of MIT Lincoln Laboratory. It's dated May 24th, 1971.
The technical content
The problem as laid out in this RFC is that there are two competing considerations for socket numbering as it currently exists:
- sockets should be limited to 16 bits for smaller hosts (like TIPs)
- sockets should be 32 bits and should include lots of metadata for “accounting and access control” (namely figuring out who is using what service so that sites can charge money to their users)
The authors suggest doing neither of these and instead waiting for an overhaul of the Network Control Program (NCP) protocol.
According to the authors, “
The socket number, as it is used in the current NCP Protocol is a small number with a big function.” They say that there is probably going to need to be “
a substantially more powerful identification mechanism” in order to provide the kind of features that the Network demands, that can meet both criteria above: able to account for who is using what services, but also able to be processed by less powerful systems.
One of the main issues is that they want socket allocation to be both unique and repeatable: that is, if you connect one of your processes to a process on a remote server via a socket, they would like that socket to at least remain the same for “
reconnection on a regular basis”, though they don't say how regular exactly. The authors say that this means socket allocation should be tied to access controls somehow, aka, sockets should be reservable by individual users.
bad way” is the naive solution: keep a list of sockets, their assigned users, and how long they have the socket reserved for. An alternative strategy they recommend is partitioning sockets at a host among its network users. So for example, maybe the first time a user connects to a host at UCLA, they are given a range of sockets that are “theirs” to use as they see fit.
“A small number with a big function” is a problem that persists in one form or another on the internet to this day. This blog post is a history of the routing protocol BGP but it covers the history of IP address and routing table growth in detail. These days, an IP address plus a socket number acts as what a socket number (which included the site identifier, analogous to a modern IP address) did back in the ARPANET days.
How to follow this blog
I'm Darius Kazemi. I'm an independent technologist and artist. I do a lot of work on the decentralized web with ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.