
It's 1988. Windows 2.0 is a DOS shell that runs on a dual-floppy 8086 PC. VGA is the aspirational video standard. A three-man startup in East London has decided to create low-cost LANs. There's not much of that and not much by way of standards, which is why a young programmer is rather excited by an emerging contender called TCP/IP. He's particularly keen because he's just finished implementing IBM's PC networking API, NetBIOS, which hurt almost as much as integrating any sort of networking with DOS. Research means library books, magazine articles, and asking questions on Usenet over kilobit dial-up. Getting the wrong idea is easy. Trying to build the TCP/IP stack on the ISO/OSI seven-layer model produces more pain, but sanity prevails, and after a bit, there's a working network. Nearly 40 years later, the once-young programmer is now a curmudgeonly Reg columnist. Floppies have become terabyte thumb drives. Kilobit modems are gigabit fiber and Wi-Fi. Graphics have come on a bit too. And he hasn't touched Windows or an Intel CPU in years. It is a transformed world. Except for one thing - everything talks to everything over TCP/IP. It's time to celebrate the digital oxygen of the global data ecosystem. TCP/IP is still newsworthy. Any apparent attempt to replace part of it is worth reporting, in this case a congestion-easing protocol called Homa superseding TCP. Only it's not a replacement, just an alternative designed to run alongside. That this is possible is due to one of the genius decisions made as TCP/IP evolved - splitting what was one protocol into two: TCP and IP. IP, the Internet Protocol, just sends packets between two addresses, best effort, no guarantees when, in what order, or even if they'll get through. The Transmission Control Protocol uses IP but delivers a reliable, ordered stream of bytes, arranging retransmission of missing data. Thus, if you don't like how TCP does things, you can add your own IP-speaking protocol to run alongside. This approach also saw TCP/IP vanquish rival protocols from very large industry incumbents, such as IBM's Systems Network Architecture (SNA) and ATM - Asynchronous Transfer Mode - from the telecoms side. Packet-switched IP can't possibly succeed, they said, with its non-deterministic transmissions of unknown latency. Nothing reliable could be built on that. TCP/IP, being open, flexible, and built by consensus by individual, inspired engineers, just got on with being useful. That had been proved on January 1, 1983, when ARPANET - the proto internet - dropped the proto when it switched over wholesale from its own NCP to TCP/IP. Known as flag days, such events weren't uncommon as previously isolated early networks had to adapt or die to the new interconnected world. TCP/IP was explicitly designed to inter-network, from the seminal paper [PDF] in 1974 by Vint Cerf and Bob Kahn. From that 13-page paper to adoption across ARPANET took nine years. Five years later, a greenhorn coder could build the stack for completely novel hardware in three months. It took longer to work out how to build an installable driver for IBM's PS/2 Micro Channel Architecture. The future wasn't hard to see. Once it had beaten the opposition, the extremely practical, extremely open soul of TCP/IP repeatedly saved it from its biggest enemy. Itself. It turned out that once we had a technology that could freely connect any number of devices to each other, end to end, we wanted to do that very much. The internet, freed of central control and gatekeepers, grew exponentially, especially after another protocol, HTTP, shyly perched on top of TCP. Naysayers predicted letting ordinary people use this would clog the internet, to the point that the introduction of image tags was seen as portending the End Times. Congestion collapse could close it all down. Fortunately, shortly before Tim Berners-Lee began work on the Web, a 1988 paper by Van Jacobson and Mike Karels, Congestion Avoidance and Control [PDF], came up with a set of strategies and tweaks to TCP that has kept the problem at bay ever since. A global network with no central control that can fix show-stopping, scale-related problems on the fly is a true wonder. Similarly, IPv4's 32-bit address field with 4.3 billion addresses seemed an over-provision, until suddenly it was nowhere near enough. A new version of IP, IPv6, was introduced in 1995 with addresses as plentiful as grains of sand in the Sahara. The trouble was that if you've got billions of devices, you can't do a flag day. IPv6 proved great for infrastructure, but not the edge. Fortunately, a router kludge called Network Address Translation (NAT) appeared, again at roughly the same time. It broke the end-to-end principle only a little bit, but let the old version of IP, IPv4, run untouched. Let's be frank. It's fugly. But it let many devices share a single public IP address, which is why everything that comes out of the box for normies still rocks IPv4 like it's 1981. Just don't ask what happened to IPv5. There are thousands of ways TCP/IP has evolved, many tiny and a few deeply silly, like RFC 1149 (IP over Avian Carriers), material relating to which is, at the time of writing, up for auction at Christie's. At heart, it is one of mankind's most brilliant technical achievements, the underpinning of everything the connected world can do, built from intelligence, vision, openness, iteration, freedom of thought, freedom of action, a rough consensus and running code. It deserves its own universal day of celebration. Let's make it January 1. Let's call it Flag Day. (R)