Legacy networking protocols
Issues with computer networking was one of those things I remember clearly from when I was younger. Connecting up two computers could be a massive pain, I remember at one point wasting over a day because the AppleTalk protocol wasn't installed on a computer at all. Windows 95 initially didn't ship with networking support, Windows 95 didn't ship with the infamous internet explorer, the inclusion of which would eventually lead to a famous antitrust case vs Microsoft starting in 1998 (remember when big tech was the subject of antitrust cases?). Mac OS 6 I think also didn't ship with networking support, I seem to remember having to track down TCP/IP support from somewhere. But this wasn't something I spent anywhere near as much time thinking about because computers just weren't as connected back then. This is quite the contrast to now where you have ludicrous things like your fridge being internet connected. The late 1990s was the era where LAN parties were a thing, an event where people would bring their computers around to a place to network them up and play games. Back then all I really cared about was getting on this new thing called "the internet" and that was via a dial up modem running PPP. What happened after it hit my ISP I cared much less about, they had an Integrated Services Digital Network line and did some ISP stuff to get everything hooked up. That ISDN line was one of the fast T1 varieties with a whopping 1544 kbit/s available to them!
I'd use my 28.8k modem to dial in and then browse some pages with Netscape Navigator. At the time I'm fairly sure that my computer didn't support ethernet with TCP/IP out of the box, I didn't really think much of that lack of network protocol support at the time.
Fast forward two and a half decades and I was teaching network automation with Python to a variety of people working at telecommunications companies. One thing that struck me at the time was the graveyard of old networking protocols that you see when you look at what protocol support there is in modern packages like Python's netifaces. Behold:
$ python3
Python 3.6.9 (default, Apr 18 2020, 01:56:04)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import netifaces
>>> dir(netifaces)
['AF_APPLETALK', 'AF_ASH', 'AF_ATMPVC', 'AF_ATMSVC', 'AF_AX25', 'AF_BLUETOOTH', 'AF_BRIDGE', 'AF_DECnet', 'AF_ECONET', 'AF_FILE', 'AF_INET', 'AF_INET6', 'AF_IPX', 'AF_IRDA', 'AF_ISDN', 'AF_KEY', 'AF_LINK', 'AF_NETBEUI', 'AF_NETLINK', 'AF_NETROM', 'AF_PACKET', 'AF_PPPOX', 'AF_ROSE', 'AF_ROUTE', 'AF_SECURITY', 'AF_SNA', 'AF_UNIX', 'AF_UNSPEC', 'AF_WANPIPE', 'AF_X25', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'address_families', 'gateways', 'ifaddresses', 'interfaces', 'version']
I like moments like this because they give you a chance to step back and think about implementation details that you can easily take for granted. And there's a lot of these details, as you can see in my "page requests to the metal" series where I follow all the steps that a web request makes through the stack.
You can see support here in modern Python for some protocols that simply aren't in widespread use anymore like AppleTalk and Novell's IPX. The interesting thing here is that these protocols are a just a subset of all the protocols out there. There are probably some legacy protocols being run in only a few places and some that aren't being used anywhere. Because of the proprietary nature of some of the old protocols they many older protocols are simply lost to history now. I think it's very interesting to note just how much TCP/IP has taken over in the network protocols space. Even if something else comes to supplant it in the future the open nature of TCP/IP will mean that people can go back and look at the documentation to understand what was going on, provided of course that the file formats those documents were written in can still be interpreted correctly in the future.