DOS Networking HOWTO

1. Why Network
1.1. History
2. Hardware
2.1. Modems
2.2. Network Cards
3. Drivers
3.1. Crynwr Packet Drivers
3.2. Novell ODI Drivers
3.3. Microsoft NDIS Drivers
4. Protocols
4.1. Novell's IPX/SPX
4.2. TCP/IP
4.3. NetBIOS, SMB / CIFS
5. Applications
5.1. Commercial
5.2. Shareware and Freeware
Appendix: Reference Websites
Version History
GNU Free Documentation License

1. Why Network

Why network a DOS PC? For the same reason that any other computer is networked. To allow it to share resources. With the advent of the Internet, and home networking, doing so has become even more necessary.

Despite Microsoft's decision to discontinue support for MS-DOS, both PC-DOS and DR-Dos are available and of course FreeDos is continuing to be developed.

DOS applications, for use in a network environment, and in particular the Internet, are still being developed, though not as extensively as their Windows, Linux or Macintosh counterparts. Thus with the right software even the oldest PC can still be useful (even if it can't run Windows or even Linux). However, as with most software, a faster processor and more memory will improve performance.

1.1. History

Note, the early history of PC networking is not well documented and mistakes may have crept in to this document. Any corrections and clarification should be sent to dos-net_at_dendarii.co.uk

When DOS was first developed for the PC the idea of networking, on a Personal Computer, was not thought of and so the Operating System (unlike multiuser unix) did not have built in networking support. In 1983, Novell introduced NetWare, the first LAN software, based on file-server technology. Novell developed a PC networking system that designated one machine to manage the network and control access to shared devices, such as disk drives and printers.

The NetBIOS interface was developed for IBM in 1983 by Sytec Inc. It was originally developed for small LAN installations of up to 72-80 devices. NetBEUI was introduced in 1985 and this supported up to 260 devices.

The first IP package developed for the IBM PC was PC/IP, developed at MIT, starting in 1983. The PC/IP source code formed the basis for several later commercial products. It is no longer being developed.

The KA9Q NOS TCP/IP package appeared on the scene next. Unlike PC/IP, KA9Q NOS could simultaneously act as an Internet client, a server and an IP packet router, and it could handle multiple client and server sessions at once. Various flavours are still available and are being developed (though not by Phil Karn, the original author of KA9Q).

In 1986 ftp.com developed the Packet Driver specification and the software suite 'ftp pc/tcp' (based on MIT's PC-IP) and on 12 Dec 88 the specification was released as an open standard, for anyone to implement. This gave one standard, for network drivers, to work to.

Various other companies followed, to develop TCP/IP protocol stacks and applications, but most of these were incompatible.

In the early nineties personal access to the Internet took off and initially DOS versions of unix tools were used to navigate this new resource. But with the development of the web and the release of first Windows 3.11 (and then Windows 95), development of most commercial dos tools ceased.

2. Hardware

To connect to a network you need some physical device to allow a connection between your PC and the network. Historically this has been via modem, using the phone line or via network card, using direct wiring. Recently the possibility of Wi-Fi, and Bluetooth have become available on other operating systems, and I believe there are now some DOS equivalent.

2.1. Modems

There are basically three different types of modem available for use with desktop PCs. External ones that plug into the serial port of your PC. And internal ones that are installed in either the PCI or ISA slots. These latter can be subdivided into WinModems and full modems. Only the later will run under DOS (see the similar problem with Linux!) It is necessary to use either a SLIP or more usually a PPP driver, which acts as an Ethernet packet driver, if you wish to connect to a remote network via the phone line. The TCP/IP stack is then loaded afterwards. Both the Novell and the Microsoft TCP/IP stacks included a dialler program and SLIP / PPP drivers with the main software.

With the introduction of Broadband, Cable and ADSL modems have also appeared, these either fake it as Ethernet devices (see below) or will not work under DOS.

2.2. Network Cards

Network Interface Cards (NICs), can be found for varying different networks. The most common is Ethernet, (in various flavours), Token Ring and Arcnet. They are available for PCI and older ISA cards may still be available.
Most recent PCs have network interfaces built in. An ethernet connection is the easiest method of using ADSL via a modem/router. Though it may be possible to use a USB driver it would be more difficult.

3. Drivers

A driver is a piece of software that talks directly to the hardware, either a modem or a network card. It allows the software vendor to write the application to the driver API instead of having to provide different versions for different hardware.

3.1. Crynwr Packet Drivers

These are based on the original ftp.com specification, a skeleton is freely available and most network card vendors will provide a packet driver. As this is an open standard it is the one most used by GNU and shareware programmers. Many manufacturer still provide drivers based on this specification. (See also wattcp). There are "shims" which allow both ODI and NDIS NIC drivers to be used, but which the applications think are packet drivers.

3.2. Novell ODI Drivers

Originally Novell combined the driver and protocols together in one monolithic program, but in 1991 developed the ODI driver specification, which, with modification, is still in use today. This allows a single hardware specific driver to be written and used with multiple different protocols. Most manufacturers will write ODI drivers and Novell have many available for download. Configuration is fairly straightforward using a text file called NET.CFG

3.3. Microsoft NDIS Drivers

The NDIS (Network Driver Interface Specification) is from Microsoft and 3COM. Like ODI, NDIS gives a uniform interface to the application, independent of the networking method, but a different one from ODI, or the Packet drivers.
The NDIS drivers use the most memory of all the drivers in use, so should only be used where no other driver is available OR the software you want to uses only works with NDIS.

4. Protocols

There are a number of protocols in use, IPX/SPX from Novell, AppleTalk from Apple, NetBIOS / NetBEUI, SMB / CIFs from IBM/Microsoft, and the open standard of TCP/IP. The use of AppleTalk under DOS, is somewhat limited.

4.1. Novell's IPX/SPX

This is a very memory efficient protocol and was originally combined with the NIC driver. With the advent of cheaper memory and the explosion of Internet use, Novell have moved away from using IPX/SPX and now use TCP/IP as the default protocol for NetWare instead.

4.2. TCP/IP

Devised as an open standard via the RFC system, used to connect the Internet, it is now the most widely used protocol on the planet. Of the main protocols in use, TCP/IP is the only one that was ORIGINALLY designed to be used over Wide Area Networks and not just on LANs.

There have been a number of implementations of the TCP/IP stack for DOS (as it wasn't standardised by the OS). The most successful, as it is still in use, is WATTCP (Waterloo TCP/IP kernel) available from Erick Engelke. It is free to use but the programmer's manual should be purchased. A 32 bit version of WATTCP is also available.

The KA9Q TCP/IP stack was used in other applications, but is most found in the various versions of the NOS NET.EXE program, which includes applications; ftp, smtp etc; as part of the program (see below).

Most of the remaining TCP/IP stacks did not have any third party support, so when the original programmers stopped development, all applications development stopped too. These include the MIT/CMU pcip, Trumpet tcp/ip, TinyTCP and FreePASCAL tcp/ip stacks. To a lesser extent this also includes the Microsoft and Novell tcp/ip stacks, and the various other commercial solutions.

4.3. NetBIOS, SMB / CIFS

NetBIOS was originally an extension to the API of the PC Bios. It has been extended for more usage and multiple operating systems by Microsoft and others. When this document was first written it appeared that Microsoft had removed all copies of the DOS client on their servers. The MS Client for DOS has reappeared and disappeared since then and so may or may not be found here. Jacco de Leeuw provides details on Networking software for DOS, where to find it and how to install it.

Unfortunately, so far, a Samba open source client for DOS, has not been developed and while the MS client works, it is not very compatible with other CIFS systems. A draft RFC has been written, but it has not as yet been confirmed as a standard. See references below for more details.

5. Applications

These are the bits of software that you actually use, to do something. Many are conversions from the equivalent unix program, such as telnet, ftp, ssh, ping, finger and rlogin. Other are larger applications; web browsers (Lynx), mail and news clients (Pine), and communications suites (Kermit).

5.1. Commercial

Microsoft and Novell are the main players in this area. They have both released TCP/IP stacks, and suites of software to work with them. Unfortunately they are both no longer supported and can be difficult if not impossible to find. Microsoft provided the "Microsoft Network Client version 3.0 for MS-DOS" which included the TCP/IP protocol stack and numerous programs.
Novell provided "LAN WorkPlace for DOS" which also included a TCP/IP protocol stack and numerous programs.
Neither of these are supported or available any more. Despite this there are three boot disks (see below) which use these stacks to give DOS access to both Microsoft and NetWare networks and the Internet via TCP/IP.

5.2. Shareware and Freeware

Many KA9Q variants are available, for different uses and different hardware, the Demon (DIS) variant was optimised for dialup access. The best collection of links to software can be found in the document " DOS Applications for Internet Use" which is updated regularly.
This is aimed at Internet use and / or using TCP/IP on a Local Area Network. Almost every significant DOS application should be found somewhere on this page (and if not let me know).

Appendix: Reference Websites

PC/TCP Packet Driver Specification [14 Sep 89]

Joe R. Doupnik: Packet Drivers, made simple. To be found, e.g., in the Crynwr packet driver distribution as file PACKET.DOC [9 Jan 90]

Novell, "Open Data-Link Interface Developer's Guide for NetWare DOS Workstation Drivers", Revision A [30 Jan 91]
Novell, ODI Specification: NetWare 16-Bit DOS Protocol Stacks and MLIDs, Version 1.03 [2 Feb 96]

How PC-IP Came to Be, John Romkey (co-founder of FTP), as told to Bernard Aboba [18 Dec 93]

Desktop TCP/IP At Middle Age by Steven Baker [Feb 98]

The KA9Q NOS TCP/IP package by Phil Karn [15 Mar 02]

Implementing CIFS - The Common Internet FileSystem by Christopher R Hertel [11 Aug 03]

SMB File Sharing Scheme by Christopher R Hertel & Samba Team [8 Jan 07]

Networking software for DOS by Jacco de Leeuw [14 Feb 03]

Just what is SMB? by Richard Sharpe [8 Oct 02]

NetBIOS, NetBEUI, NBF, SMB, CIFS document page by Timothy Evans [15 Jul 03]

Bart's Network Boot Disk ver 2.7 by Bart Lagerweij [30 Mar 04]

NwDsk: NetWare Boot Disk (now also non-NetWare...) ver 3.40 by Erwin Veermans [03 Sep 06]

Universal TCP/IP Network Bootdisk for M$ Networks ver 6.5 by Brad Driver [23 May 10]

DOS Applications for Internet Use by Michael Bernardi [10 Oct 10]

DOS-Meta FAQ: Useful information for DOS users by Michael Bernardi [04 Apr 04]

Version History

Started initially working on a new document [15 Nov 03]
First draft uploaded to www.dendarii.co.uk/FAQs/net-dos.html [30 Jan 04]
First draft (ver 2.0) finalised, renamed as dos-net.html and freedos.org mailing list notified [29 Feb 04]
Uploaded (2.0.1) to fd-doc.sourceforge.net [04 Apr 04]
Minor revision (2.0.2) [01 Jul 04]
Minor revision (2.0.3) [05 Nov 04]
Minor revision, uploaded to fd-doc.sourceforge.net (2.0.5) [05 May 05]
Minor revision (2.0.6) [17 Jun 05]
Minor revisions (2.0.7) [4 May 06]
Minor revisions (2.0.8) [07 Jul 07]
Minor revisions (2.0.9) [10 Oct 10]

GNU Free Documentation License

Original Document Copyright © 1999-2001 Alessio Palma <http://fd-doc.sourceforge.net/howto/en/network.htm>

Current Document Copyright © 2003-2010 Michael Bernardi <http://www.dendarii.co.uk/Bio/>

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.