Last summer, I had one of those milestone birthdays that happen every decade. These events (ones that many of us old-timers would just as soon forget) are supposed to celebrate the present, help us reflect on the past, and offer a window into the future. They often trigger a midlife crisis, with surprising results. Networking and TCP/IP on desktop machines are going through a form of middle age.
Once used only in the domain of research and academia, TCP/IP has now attained regal status with almost universal deployment. Networking on the desktop emerged in the mid-1980s as commercial interests promoted their own proprietary protocols for interconnection. These competing products vied for the hearts, minds, and purchase orders of desktop users to increase their market share and bottom line. Sometimes, a few major players came together briefly (Microsoft, IBM, Hewlett-Packard, and AT&T with LAN Manager/LAN Server, for example) in order to confront a formidable competitor (Novell's NetWare). But these proprietary schemes couldn't compete with the near-universal connectivity offered by TCP/IP and the Internet. So if you can't beat 'em, join 'em. While TCP/IP was once associated with UNIX networking, it has now achieved commodity status, even on the desktop.
My last few columns have focused on network naming, domain-name registration, and management issues regarding the Internet Protocol (IP). Much of this discussion focused on problems resulting from the unprecedented growth of the Internet and TCP/IP use, particularly by desktop users and corporations. Similarly, the further development and evolution of TCP/IP is under pressure from all quarters as vendors push for adoption of standards that may offer them some market advantage. So this time around, the focus returns to TCP/IP on the desktop.
I've been observing the evolution of desktop computers for more years than I care to mention. I started using the CP/M operating system on 8-bit 8080 and Z80 machines. During those times early in the evolution of microcomputers, networking was the exclusive realm of big iron--UNIX, VAX/VMS, IBM mainframes, and other minicomputer systems. When a desktop machine did communicate with these larger systems, it acted as if it were a half-wit and emulated a dumb terminal connected over a serial line. File transfers that occurred between desktop and other computers were most commonly based on simple serial-line framing protocols like the XMODEM protocol developed by Ward Christensen or the KERMIT protocol developed later at Columbia University. Operating in a 64K memory space had its limits.
The original IBM PC introduced in 1981 came with a 5 1/4-inch low-density floppy-disk drive and 64K RAM but could be upgraded to a whopping 640K if you could afford the exorbitant prices for memory. Soon the IBM PC-XT was introduced with support for a huge 5MB hard disk (compared with 360K of space on a floppy disk). By 1983, several companies began to offer network hardware and software products to interconnect desktop PCs with each other and with larger systems.
By the late 1980s, Novell had become the desktop's networking success story with its NetWare products. Other companies (IBM, Microsoft, and Banyan, for example) with competing network-software offerings were relegated to minor roles. The various proprietary options for desktop network hardware had narrowed to ARCNET, Ethernet, and IBM's token-ring cards. During this same period, Apple's network software was introduced and bundled with MacOS on the Apple Macintosh. The AppleTalk software supported Ethernet (EtherTalk), token ring (TokenTalk), and Apple's own high-speed serial interface (AppleTalk), used initially for connecting to laser printers. All these desktop-software offerings were based on proprietary networking protocols, even though they might use Ethernet hardware.
TCP/IP on the desktop was introduced through university research efforts and by a handful of start-up companies as a way to communicate with UNIX systems (see Figure 1). Reflecting its academic heritage, MIT, in the early 1980s, developed one of the first TCP/IP stacks for MS-DOS. Students of Professor David Clark, a long-time member of the TCP/IP community, developed PC/IP for research purposes. Professor David Clark himself wrote the TCP layer, implementing only enough to accomplish the telnet function. Source code to the PC/IP stack and a few simple network applications developed at MIT were distributed widely at the time. This code inspired many other desktop TCP/IP efforts. Several independent developments of desktop TCP/IP software started at this time when Ethernet cards for the PC became readily available from 3Com (Santa Clara, CA) and other companies.
The limitation of MIT's PC/IP stack was that it supported only a single connection (one socket). This was suitable for implementing some TCP/IP network applications (Telnet, for example). However, the File Transfer Protocol (FTP), which was widely used on UNIX systems to transfer files, required two connections--one for a control channel and one for sending data. This problem persisted until the spring of 1984, when Donald Gillies - for his undergraduate thesis work - developed all the components for an IBM PC email proxy, implementing and demonstrating a multi-connection TCP that could launch up to 7 Finger or SMTP clients simultaneously. Wollongong (now owned by Attachmate of Bellevue, WA), a West Coast firm that offered TCP/IP stacks on larger systems (including VAX/VMS and UNIX) was rumored to be enhancing the PC/IP stack in 1985 with the intention of selling it to large companies such as TRW (Cleveland, OH). The knowledge that Wollongong might profit from its efforts inspired several MIT students, led by John Romkey (one of the PC/IP developers), to form FTP Software (Andover, MA) and begin selling PCTCP for DOS. One of the early tasks was to port all the higher layers to use the multi-channel TCP from Donald Gillies. Because this enhanced stack supported multiple connections, FTP Software became the first company able to offer FTP on the PC desktop, hence the name.
FTP Software initially developed its stack integrated with code to communicate directly with the underlying Ethernet hardware. However, these developers soon realized what the advantages were if a standard protocol-independent network device driver were adopted for MS-DOS, allowing hardware vendors to write their own device drivers. As a result, FTP developed a specification for a packet driver, a DOS Terminate and Stay Resident (TSR) program that could be loaded on startup by AUTOEXEC.BAT and provide a protocol-independent network-card driver. Russ Nelson, a student at the time at Clarkson College, set up an anonymous FTP archive of packet drivers for various PC network cards. Support for these packet drivers was soon adopted by other desktop TCP/IP vendors.
The PC/IP project was abandoned at MIT in January 1986 when its developers (Romkey and Dave Bridgam) left and FTP Software was incorporated. PC/IP was later picked up and enhanced by students at Harvard University and Carnegie Mellon University. One of Harvard's PC/IP developers, Dan Lancioni, would later develop a commercial TCP/IP stack sold by Essex Systems for OS/2 and Ipswitch Software on DOS and OS/2.
Phil Karn, an employee at Bell Labs and an amateur radio enthusiast, became interested in using TCP/IP over the airwaves. Because of the shortcomings in PC/IP, Karn decided to write his own version of TCP/IP from scratch. Starting in 1985, Karn wrote the KA9Q TCP/IP stack initially for use with CP/M over serial lines. It soon was ported to MS-DOS and reworked for use over packet radio. The source code to KA9Q, which was named after Karn's amateur-radio call sign, was made freely available for noncommercial use. While KA9Q was never commercialized for desktop users, it was the precursor to the TCP/IP stack licensed by Phil Karn to numerous OEMs, particularly remote-access-hardware vendors, for use in embedded systems. KA9Q was used in several popular products such as the Telebit NetBlazer and the Rockwell NetHopper. Karn, an employee with Qualcomm (San Diego, CA) since 1991, also used the KA9Q code for routing within some of the Qualcomm wireless products.
In the mid-1980s, Sun Microsystems was promoting its own vision of networked computers based on TCP/IP and NFS. The first version of NFS on SunOS was released in 1985. It was only natural that Sun would begin offering an NFS client and TCP/IP stack for the desktop that would allow easy communication with its Sun workstations. Released in June 1986, the initial version of Sun's PC-NFS software for the desktop was written in assembly language directly from the TCP/IP and NFS specifications. Geoff Arnold, one of the principal architects, was hired in June 1985 and was able to demonstrate the software at the second NFS Connect-A-Thon sponsored by Sun in January 1986. The TCP/IP stack and the PC-NFS file-system driver were tightly coupled. It was a challenge at the time to develop an NFS implementation that would fit within the 64K memory limits of an MS-DOS device driver. Sun also bundled a few popular network applications (a Telnet and FTP client, for example) initially derived from PC/IP code, although Sun's primary focus has always been the PC-NFS client software.
Wollongong developed a TCP/IP stack based originally on PC/IP, first for the desktop PC and later for the Macintosh. Wollongong also offered a TCP/IP stack for VAX/VMS and several flavors of UNIX (SCO, for example) that lacked TCP/IP. For the VAX and UNIX markets, Wollongong licensed source code from Stanford. Wollongong later experienced major competition in the VAX/VMS market when TGV (later purchased by Cisco of San Jose, CA) began offering a competing high-performance TCP/IP stack for VAX/VMS. Wollongong also lost a costly lawsuit brought against TGV regarding the use of source code licensed to both companies from Stanford. Later in the 1990s, Wollongong sold or licensed its TCP/IP stack to several other desktop vendors as the Internet expanded.
Paralleling efforts at MIT in the mid-1980s, students at the University of Waterloo in Canada developed their WATTCP stack for MS-DOS as an academic project. Along with a TCP/IP stack, the WATTCP project created several popular network applications that could be used over the stack. For a time, there was intense rivalry over which group would be the father of TCP/IP on the desktop.
Independently, in 1984 Carl Beame and Fred Whiteside, two Canadian students at MacMaster University, were busy writing a VT100 emulator for the Texas Instruments PC (TI-PC) that was to be connected to special serial cards on VAX/VMS. Ultimately, they wrote a TCP/IP stack in assembly language from the Request for Comments (RFC) that was integrated with VT100 terminal-emulation software for the TI-PC. A year later, they separated the TCP/IP stack from terminal emulation, founded Beame and Whiteside (B&W) Software, and began selling a DOS stack and some applications. The developers later added PCNFS client software to their package. Initially, the B&W software ran only over 3Com 3C501 Ethernet cards. When packet drivers became available from Clarkson, B&W modified its software to run over these device drivers. Later versions could be used in conjunction with Novell NetWare. In 1991, Novell licensed PCNFS client software from Beame and Whiteside for inclusion with its LAN Workplace TCP/IP offerings. In 1995, the company was purchased by Hummingbird Communications (North York, ON, Canada).
All early desktop TCP/IP vendors initially struggled with writing device drivers for the myriad Ethernet cards that were emerging in the marketplace. 3Com was the first major vendor, but Novell (sometimes sold under the Eagle banner) also marketed a series of Ethernet cards made overseas. These NE1000 (and later NE2000) cards were also quite common. Western Digital entered the market later with memory-mapped Ethernet cards that quickly became popular based on cost and performance. Western Digital eventually sold its PC-network-card business to Standard Microsystems Corp. (SMC; Hauppauge, NY). The packet driver became the de facto standard for supporting network cards by the desktop TCP/IP vendors. Later, these vendors would add support for the Open Datalink Interface (ODI) developed by Novell and the Network Device Interface Specification (NDIS) developed jointly by 3Com, Microsoft, and Intel.
Excelan, another early desktop TCP/IP vendor, started out building network hardware for the PDP-11. In the late 1980s, Excelan began offering a TCP/IP stack for the desktop embedded in large ROMs on its Ethernet cards. While this minimized the memory footprint required by TCP/IP software on desktop PCs with limited memory, it also made upgrading the TCP/IP software an expensive and somewhat painful process (replacing all the ROMs on these network cards). Excelan was ultimately purchased by Novell for its management as well as its TCP/IP expertise, and its network software formed the basis of Novell's TCP/IP software efforts for NetWare (LAN Workplace).
On the Macintosh, Apple began offering a TCP/IP stack and a companion developer's toolkit in the late 1980s. The MacTCP run time was inexpensive (less than $20 per copy). This standardization effort paid off, resulting in a number of high-quality TCP/IP applications being developed at universities and made freely available. Eventually MacTCP was bundled with later versions of MacOS. Consequently, only a few TCP/IP vendors offered commercial products for the Macintosh desktop.
By the late 1980s, these small companies had blossomed as the market for desktop TCP/IP increased. Anonymous FTP servers, typically running on UNIX or VAX/VMS, were established at various universities, public agencies, and private companies. These FTP servers offered large archives of publicly available software, shareware, and other information free for downloading. Usenet news proliferated beyond the boundaries of the computer-research community it once served.
Below the surface, tension always existed between interoperability and creating a commercial advantage. In the late 1980s, the Department of Defense attempted the first effort at collaboration on supporting NetBIOS in a TCP/IP environment. Several desktop TCP/IP vendors collaborated on standardizing NetBIOS over TCP/IP (documented in RFCs 1000 and 1001).
When Microsoft introduced Windows 3.0, traditional desktop-TCP/IP vendors were all late to the table with Windows versions of their software applications and dial-up TCP/IP designed for ease of use. This left a void in the market that was soon filled by new companies such as Distinct Corp. (Saratoga, CA), Frontier Technologies (Mequon, WI), NetManage (Cupertino, CA), and Spry (later purchased by CompuServe) that focused on the Windows market, leaving MS-DOS and OS/2 to other vendors.
The desktop TCP/IP market exploded in the early 1990s with the introduction of gopher clients and servers. This was soon followed by the Mosaic Web browsers for Windows and Macintosh and freely available Web servers running on UNIX. Both the gopher and Web protocols offered network resources to novice users through links that no longer required knowledge about where this network information was stored. Also, it was no longer necessary to memorize arcane commands for using MS-DOS versions of these popular TCP/IP applications (FTP clients, for example). E-mail also played a major role in stimulating the market for inexpensive TCP/IP on the desktop, particularly for users of dial-up connections. The Internet became the infrastructure for supporting universal e-mail access.
One desktop TCP/IP success that accounted for this growth was the development of the Windows Socket (WinSock) standard. Initiated during a conversation between Geoff Arnold (Sun) and Martin Hall (JSB; Scotts Valley, CA) at Interop in 1991, WinSock standardized the APIs, header files, and dynamic link libraries (DLLs) used for writing TCP/IP network applications on Windows. Prior to WinSock, network applications were tied to a particular vendor's TCP/IP stack since each company provided its own toolkit and APIs for writing applications. The principal authors of WinSock were from Sun, JSB, FTP Software, and Microsoft, but many others participated through e-mail forums and mailing lists. WinSock 1.1 was officially released in January 1993.
Soon, another group of companies selling other network applications entered the lucrative desktop-TCP/IP marketplace. These were the vendors that traditionally had offered terminal-emulation software for connecting with UNIX and VAX/VMS or provided desktop connectivity software for use with IBM mainframes and minicomputers. These companies included Attachmate, Century Software (Salt Lake City, UT), Esker (San Francisco, CA), Network Computing Devices (NCD; Mountain View, CA), Persoft (Madison, WI), Quarterdeck (Marina del Rey, CA), Softronics (Colorado Springs, CO), Wall Data (Kirkland, WA), and WRQ (Seattle, WA). The peak profits for desktop TCP/IP vendors occurred in the 1990s prior to the introduction of Windows 95. During these years, desktop TCP/IP sales kept skyrocketing, leaving room for new companies to enter the market.
In late 1994, Microsoft finally offered a TCP/IP stack for Windows for Workgroups users. This software was freely available from Microsoft download sites but was not supplied with the Windows for Workgroups product. At the time, the Microsoft TCP/IP stack had a limited impact on desktop TCP/IP vendors because it lacked dial-up support and had other shortcomings. In a similar move, IBM provided downloads of TCP/IP for OS/2, and later bundled it with OS/2 Warp.
In late summer 1995, the desktop TCP/IP market was changed forever with Microsoft's introduction of Windows 95. Windows NT had included a TCP/IP stack and a few lame TCP/IP applications from its initial introduction in 1993. But the sales and deployment of Windows NT was miniscule during these early years compared with MS-DOS/Windows 3.x. The introduction of Windows 95 changed all that when TCP/IP was bundled with this mainstream desktop operating system. Windows 95 also supported the Point-to-Point Protocol (PPP) and could function well as a dial-up TCP/IP client.
Well into 1996, the MS-DOS/Windows 3.11 combination was still accounting for about half of all Windows operating-system sales, but the handwriting was on the wall. The market for TCP/IP stacks on the desktop would disappear since Microsoft was supplying this component integrated with its 32-bit Windows operating systems. Microsoft also supplied TCP/IP as an add-on component for Windows for Workgroups via download, and on Windows NT Server and Microsoft Developer Network CD-ROMs. The software giant quietly distributed to Internet Service Providers (ISPs) at no cost a special dial-up version of TCP/IP for Windows 3.x bundled with its Internet Explorer Web browser.
The desktop TCP/IP vendors were left floundering trying to find niches for their products. Without the TCP/IP stack and dialer as justification, they had to change the focus to applications. A problem with this strategy was that versions of the classic TCP/IP applications (Telnet and FTP, for example) were bundled with Windows 95 and Windows NT, and these programs were also readily available as freeware and shareware. The Web browsers from Netscape, and later Microsoft, included FTP and e-mail components. A few vendors tried to compete in the Web-browser and integrated-application markets (NetManage's WebCruiser, Spry's Mosaic, Wollongong's Emissary, and NCD's Marathon (later purchased by FTP Software), for example). But these investments proved hopeless when the browser war between Netscape and Microsoft heated up.
Some vendors were better off in this regard because of their network heritage and because they had other products to offer. Certain TCP/IP products, including PCNFS client software, PC X Window servers, and terminal emulation, were still in demand, particularly for mainframes. The market for PCNFS client software was increasing as the need to share resources between desktop PCs and UNIX machines grew in importance. Almost all the desktop TCP/IP vendors invested in NFS client software for Windows 95, either developing it internally or licensing it from another vendor. Fewer of these companies could afford this level of commitment to the smaller Windows NT market.
The problem with this strategy (depending on PCNFS software for sales) turned out to be the freeware Samba server developed in Australia. Samba and similar commercial products available from Syntax (Federal Way, WA), Sun, SCO, and other vendors allowed a UNIX machine to emulate a Microsoft LAN Manager or IBM LAN Server system and share files with Windows desktop clients. These applications use the same Server Message Block (SMB) protocol and NetBIOS over TCP/IP protocol that Windows 95 and Windows NT use for sharing resources. This allows Windows desktop machines to access files on UNIX systems without having to purchase and install NFS client software on the desktop. Although NFS might be preferred for performance and administrative reasons (the same file-system semantics allow users to modify access rights on UNIX, for example), the cost savings of using a freeware product and only needing to make changes on fewer UNIX servers is a compelling argument. Companies that could well afford NFS client software now rely on Samba. For example, Bank of America uses more than 1,500 Samba servers, and Goldman Sachs supports 20,000 desktops with Samba. The deployment of Samba has reduced the volume of desktop NFS sales that otherwise would have occurred.
TCP/IP has now become ubiquitous on the desktop, bundled into the operating system. While this is beneficial for the user, it has created problems for the vendors and the thriving desktop industry that once provided this technology. The TCP/IP vendors that competed on the Macintosh are all but gone. Several PC TCP/IP vendors have been purchased, while others have been forced to downsize. The few success stories are those companies with TCP/IP applications that still are in demand--NFS, X Window, terminal emulation to mainframes, and database connectivity.
Over the last decade, the strength of TCP/IP is that the core protocols have remained stable. A few features have been enhanced, including algorithms for slow start, restart, and retransmission. While the core TCP/IP protocols are mostly unchanged, the implementations of TCP/IP available on the desktop have been vastly improved. Through the work of researchers such as Van Jacobsen (University of California at Berkeley) and David Clark (MIT), network developers have a much better understanding of the dynamics of network protocols. In Geoff Arnold's words, this understanding results in a system where "each of the individual features are less than the sum of the whole." This understanding has also provided insight about when not to change things. As a result, TCP/IP has avoided a lot of unnecessary changes. New application protocols like HTTP have become popular but haven't affected the underlying core--TCP/IP protocols.
According to Arnold, as an experiment, Sun engineers dug up an old IBM XT that had a 3Com Ethernet card and vintage copies of MS-DOS 3 and Sun's PC-NFS Version 1 released in 1986. They networked this PC to a new Sun Ultra running the latest Solaris 2.6 software. The desktop PC-NFS software worked fine and allowed the PC to access files on the Sun box. The NFS protocol has had only two versions adopted since its inception in 1985. In contrast, when the Sun engineers installed an old version of MS-NET (Microsoft's PC-client network software) from the same era, the PC was unable to communicate with Windows NT. The Microsoft culture has traditionally been to change protocols with each new operating-system upgrade. So the SMB protocols used by Microsoft exist in a dozen different dialects--a detriment to interoperability. The Microsoft mentality of constantly changing the specs does not work for the Internet.
Arnold also observed that when a decent standard already exists, the next protocol often will be over-engineered. An example of this behavior was the development of PPP for dial-up users. Introduced in 1984, the Serial Line Internet Protocol (SLIP) used for dial-up connections was so simple it could be implemented in less than a page of source code. In contrast, PPP was a poorly managed standards effort that took far too long (RFCs were finally released in 1993). The WinSock 2.0 specification mushroomed in a similar way. We are still watching the increasing development of IP Version 6 (IPv6).
I want to thank Phil Karn (Qualcomm), Fred Whiteside (Hummingbird Communications), Geoff Arnold (Sun), and Steve Knowles (Precision Guesswork, formerly with FTP Software) for sharing information about the early years of TCP/IP on the desktop. With this perspective, my next column will look again at NFS on Windows NT, Microsoft's high-end network desktop. Until then, network globally and interoperate locally with your friendly desktop TCP/IP neighbors.
Steven Baker works for the Oregon Department of Energy, coaxing energy conservation from state buildings. He was the editor of Programmer's Journal and one of the authors of Extending DOS, published by Addison-Wesley. He can be reached at firstname.lastname@example.org.
|Product or Company||Comments|
|PC/IP||Freely available TCP/IP stack and a few applications developed at MIT starting in 1983. The PC/IP source code formed the basis for several commercial products.|
|WATTCP||Freely available TCP/IP stack and applications developed at the University of Waterloo.|
|KA9Q||TCP/IP stack developed by Phil Karn initially for packet radio and freely available for noncommercial use. KA9Q was later licensed and used in embedded systems.|
|FTP Software||A company formed in 1986 of former MIT students (including developers of PC/IP) to market commercial TCP/IP software on the desktop.|
|Sun Microsystems||Sun released its first version of PC-NFS in 1986, the first implementation of NFS on the desktop.|
|Wollongong||Silicon Valley company supplying TCP/IP on VAX/VMS and UNIX, using PC/IP as the basis for its desktop TCP/IP software.|
|Beame and Whiteside||Company formed in 1986 of Canadian students to commercialize a desktop TCP/IP stack|
|Excelan||Network hardware that vendor bundled TCP/IP stack in ROMs on its PC Ethernet cards. Excelan was later purchased by Novell and its TCP/IP technology became the core of LAN Workplace products.|