How SSH Port Became 22
ssh.com
ssh.com
I can sympathize. When I worked at Sendmail I was tasked with running DNS for the company, which included Sendmail.org. The first thing I had to do was find a secondary DNS. Our founder said to “email his friend Paul”.
It turned out his friend was Paul Vixie, the inventor of BIND, who responded in just a couple minutes that he had set up a-root to secondary the domains I was running.
Here I was, 22 years old at my first job, emailing with the inventor of critical internet infrastructure who was relying on a database I ran as a source of truth.
On a whim, after reading the article and because I was at the time involved in setting up ISP services all over SoCal, I decided to just call him and say thanks.
Imagine my surprise when he answered, confirmed it was really him, and we chatted for 20 minutes or so about the Internet, how it needed to be secured, and so on. I'll never forget his huge "meh." in response to my statement "it must be weird having your personal phone # published in a national publication" .. ;)
> Here I was, 22 years old at my first job, emailing with the inventor of critical internet infrastructure who was relying on a database I ran as a source of truth.
But you were working for a company who employed or was started by the creator of Sendmail, Eric Allman? Surely you were already rubbing shoulders with the Internet giants of old?
According to Wikipedia, "in 1996, approximately 80% of the publicly reachable mail-servers on the Internet ran Sendmail".
I was, but I just didn't see Eric that way, I guess because I saw him all the time? I mean looking back, there were quire a few Internet giants that either worked there or hung out at the office, but that email with Paul was the one that really got me. Maybe because the response was that data I was creating was getting mirrored to a-root.
LISA is in Portland next week, by the way: https://www.usenix.org/conference/lisa19
BIND was created in Berkeley by grad students (probably that's why originally was so buggy) and the name stands for Berkeley Internet Name Domain. Paul of course made major contributions to DNS and of course BIND.
* https://en.wikipedia.org/wiki/Paul_Vixie
See also Vixie cron.
So the first thing to know is the FTP is 'old', in that it predates TCP and originally ran on NCP:
> The original specification for the File Transfer Protocol was written by Abhay Bhushan and published as RFC 114 on 16 April 1971. Until 1980, FTP ran on NCP, the predecessor of TCP/IP.[2] The protocol was later replaced by a TCP/IP version, RFC 765 (June 1980) and RFC 959 (October 1985), the current specification.
* https://en.wikipedia.org/wiki/File_Transfer_Protocol
The second thing to know is that, unlike TCP or UDP, NCP was not duplex:
> NCP preceded the Transmission Control Protocol (TCP) as a transport layer protocol used during the early ARPANET. NCP was a simplex protocol that utilized two port addresses, establishing two connections, for two-way communications. An odd and an even port were reserved for each application layer application or protocol. The standardization of TCP and UDP reduced the need for the use of two simplex ports for each application down to one duplex port.[1]
* https://en.wikipedia.org/wiki/Network_Control_Program
So the original transport layer that FTP relied on necessitated two ports, and when the move to a newer transport layer occurred the use of two ports was carried over for simplicity's sake. And several decades later that design still exists.
Wouldn't FTP need three simplex connections - commands to server, responses from server, data transfer?
AFAICT, per RFC 114, responses from the server are considered a data type: when a user sends a command to the server, sometimes the response is a status update ('MKDIR successful'†) and sometimes the response is the requested file.
The data structure of the response has fields to say what's coming back on the data channel for the requested transaction.
† MKDIR was not a command, just using it as an modern example.
Not on TCP it doesn't. And some of the Arpanet FTP RFCs refer to separate connections as well, e.g. for the MAIL and MLFL commands which send email over the command and data connections, respectively. (SMTP didn't exist yet so mail was sent over FTP.)
> 16-bit color encoding
I think the xterm-256 escape codes came from somewhere other than MUDs, but it is forever frustrating to me that whoever designed them used the parameter separator `;` instead of the subparameter separator `:`. For SGR (`\e[m`-type escapes), each parameter is an individual change to the graphic state, so you can combine multiple settings into a single SGR. (For instance, `\e[1;32m` means "bold" followed by "green foreground".) But the 256-color extensions use a pattern "\e[38;5;<n>m", which makes itself into a fresh edge case you have to handle specially instead of treating "38", "5", and the chosen <n> as individual commands. `:` is perfectly well defined as binding more tightly than `;`, so "38:5:<n>" would have worked perfectly well as a definition for the otherwise-undefined "38" code, but no...
> text compression
The MCCP (Mud Client Compression Protocol) is very cool, but its first version called to signal the start of compression with the byte sequence `IAC SB MCCP SE`. The intent was to send an empty MCCP subnegotiation frame and immediately return to the main Telnet channel, but they left off an `IAC` to preceed the `SE`, meaning that this just starts a subnegotion frame, sends `SE` as the first byte, and then forgets to close the frame. Ever. So if you want to support MCCPv1, you have to add a little hack to detect this situation and pretend the frame was actually closed as intended. (Please don't support MCCPv1.)
> hidden sideband metadata communication usable by clients
Yes! One of my favorite topics. Iron Realms-published MUDs introduced "ATCP", another subnegotiation-based protocol that would provide additional information about your character, which directions you can move, your inventory, etc., so that your client could provide graphical representations of this information in the UI. They replaced it with "GMCP" later on -- the "standardization" process behind that was memorable -- which used JSON as the payload format.
Fun fact about ATCP: It was originally designed with a lightweight handshake mechanism so that only Iron Realms clients ("Nexus") could utilize this information. Before my time, someone seems to have reverse engineered this algorithm, so it pretty quickly spread to custom plugins for third-party clients. They never seemed openly upset about this development, and GMCP dropped this mechanism.
And none of this is even getting into MXP, which embedded XML-inspired tags directly into the main data channel instead of using a subnegotiation. The presence of tags is controlled by using a non-standard ANSI-style escape sequence. I never ended up implementing MXP, because ATCP and GMCP were so much simpler to work with, but it's still a very cool piece of tech.
> every single feature has to be totally backwards-compatible with a plain text terminal.
Telnet is actually a shockingly cool little protocol. Sure, there are some anachronisms, like the "Network Virtual Terminal" (NVT) defining a variety of special text editing commands to provide a common representation for the many terminals sold by many vendors and their incompatible command representations. But Telnet at its core is a data multiplexer with 1 primary data channel and 256 negotiable framed channels ("options"). The mechanism for negotiating the use of a channel is symmetric, meaning that the client and server are on equal footing -- both have to agree, and either one can advertise its willingness to use a channel. It's a really cool protocol to study -- and small enough that you really can understand the whole thing!
Source for all this: I was a MUD enthusiast for several years as a teenager, and wrote my own Telnet stack, ANSI escape parser (referencing the ECMA spec!), and started on my own web-based MUD client. I did a heck of a lot of digging back then on these topics. It's still one of my favorite esoteric technology stacks to play around with.
Or for simplexity's sake!
From the previous discussion of SSH port 22:
https://news.ycombinator.com/item?id=14178993
Back in the "bad old days" of the simplex NCP protocol, before the full duplex TCP/IP protocol legalized same-sex network connections, connect and listen sockets had gender defined by their parity, and all connections were required to use sockets with different parity gender (one even and the other odd -- I can't remember which was which, or if it even mattered -- they just had to be different). The act of trying to connect an even socket to another even socket, or an odd socket to another odd socket, was considered a "peculiar error" called "homosocketuality", which was strictly forbidden by internet protocols, and mandatory "heterosocketuality" was called the "Anita Bryant feature".
https://en.wikipedia.org/wiki/Network_Control_Program
http://www.saildart.org/IMPSER.DOC[SS,SYS]
When the error code is zero, the next 8 bit byte
is the Stanford peculiar error code, followed by
72 bits of the ailing command returned. Here are
the Stanford error codes. [...]
IGN 3 Illegal Gender (Anita Bryant feature--sockets
must be heterosocketual, ie. odd to even and even
to odd) [...]
Illegal gender in RFC, host hhh/iii, link 0
The host is trying to engage us in homosocketuality.
Since this is against the laws of God and ARPA, we
naturally refuse to consent to it.
http://www.saildart.org/FTP.NCP[S,NET] ; Try to initiate connection
loginj:
init log,17
sixbit /IMP/
0
jrst noinit
setzm conecb
setom conecb+lsloc
move ac3,hostno
movem ac3,conecb+hloc
setom conecb+wfloc
movei ac3,40
movem ac3,conecb+bsloc
move ac3,consck
trnn ac3,1
jrst gayskt ; only heterosocketuals can win!
movem ac3,conecb+fsloc
mtape log,[
=15
byte (6) 2,24,0,7,7
] ; Time out CLS, RFNM, RFC, and INPut
[...]
gayskt: outstr [asciz/Homosocketuality is prohibited (the Anita Bryant feature)
/]
ife rsexec,<jrst rstart;>exit 1,
(The PDP-10 code above adds the connect and listen socket numbers together, which results in bit 0 being 0 if they are the same gender, then TRNN is "test bits right, no change, skip if non zero", which skips the next instruction (jrst gayskt) if they different sex.)Also UUCP was for unix machines only (at least back then) which were a small proportion of machines on the net. Most of them were 36-bit machines plus a few IBM machines. You can still see the old 36-bit influence in some contemporary protocols (e.g. a high level protocol like FTP has a commend to set byte size), big-endian traffic etc.
Having born much later in the history of Internet, I think I have missed out on many of the early magical years of the Internet.
But if I can get involved in some other technology that is in early stage and booming and where I have a chance to contribute something that may become a de-facto standard 10 years from now, that's something I will be very interested to invest my time on.
If we're talking about basic tech such as networking, the time for foundational work has probably passed, or it has at least become exponentially more unlikely that you'll contribute another bedrock protocol or mechanism. It's also worth noting that you never hear from the many thousands of technologies that either failed to reach critical mass or became obsolete a long time ago. Just like founding a startup, this will be the most likely outcome.
If you're looking to be the first to do something, my advice is: try to do it in space. Seriously. Finally things are happening again there, and you can probably make your mark inventing basic necessities and/or being one of the first people to colonize a new place.
If you're looking for something in software, opinions on what's needed differ a lot. As an old person, my perspective is that we're going to need a way to deal with complexity and brittleness. Our software stacks have become bloated, unreliable, and a nightmare to debug. Things are getting slower and more buggy year by year, because we have not yet hit the right balance between using low-level primitives and high-level abstractions. We're now using huge frameworks regularly for very simple things, both because it's what we're used to and because these frameworks help paper over design defects lower down the stack. This needs to be solved, we can't keep stacking things on top forever. There is a real, concrete danger to our society here.
https://cdixon.org/2010/01/03/the-next-big-thing-will-start-...
The Internet pioneers probably thought the same about the computer pioneers. And so on further back in time.
and from 2017: https://news.ycombinator.com/item?id=14178091
[1]https://en.m.wikipedia.org/wiki/SSH_Communications_Security
> I need 20000US$.
That's all it reads (with value converted to today's dollar-value for easier interpretation) - and of course it was granted.
I've still got that Class C registered, but it hasn't been used in years, and I'm not entirely sure what to do with it.
Nowadays you should need 2 teams of academics backed up by 4 companies and 2 governments to change anything.
I'm not kidding. The internet of today should be like democracy: really hard and slow to change because sudden change is very disruptive.
In Finnish culture is this considered a generic term of address? From the write up it seems like the author knew that Joyce K. Reynolds was on the IANA but still addressed the email to “Dear Sir”.
If writing this in Finnish you'd normally use something very close to "Dear Mr Reynolds".
At school I was taught to use "Dear Sir or Madam" or "To whom it may concern" but neither of those sound natural, they're just learned. If writing for a Finn, I just start with "Hei" ("Hey") (in fact that has lead me to start emails in English with just "Hey" as well). I may have used some other formality once or twice in my life when it was required for school or such matters but not as an adult.
So it may be that they were out of their element when writing that email and just put the first thing that came to their mind.
English "hey" is said when someone is annoyed. "Hey you! Stop that!"
TL;DR I use "hey" as a greeting.
[en-gb native]
I certainly wouldn't say 'Hey IANA, please reserve me port 22' any more than I would sign off 'kthxbye'.
[also en-gb native]
I blame the US TV series "Friends" for that.
Curiously the OED doesn't (yet) have this greeting sense.
Interesting, neither does my (more liberally accepting than Oxford) 2016 Collins. I've certainly been using it as an informal greeting since '00s.
I don't know if I got it from Friends, it wouldn't have occurred to me, but I did start watching it around that time so it's certainly plausible.
She used to be a woman. She still is, but she used to, too.
* https://www.youtube.com/watch?v=VqHA5CIL0fg
More seriously, she passed away in 2015:
FWIW pretty much anyone who can afford the relatively low fees can still get a /24 today, but sure, the process is slightly slower.