# Networking FreeDOS - mTCP

## mTCP:

      In 2009 Michael B. Brutman (see: http://www.brutman.com/), a programmer
      and DOS enthusiast, wrote a new TCP/IP Kernel for DOS called "mTCP"
      (see: http://www.brutman.com/mTCP/).
      He tested this kernel on a PCjr (see: http://en.wikipedia.org/wiki/
      IBM_PCjr) from 1983. According to his website, he wants to create a
      modern TCP/IP kernel that has a small size and high performance. The
      program is already working great, it is updated frequently.

#### [Main menu] [top] [License] [Applications] [Configuration] [Performance] [Conclusion]

## License:

      mTCP is Free Software. On May 27, 2011 Michael Brutmann released it
      under the terms of the GPL v3. The source code is available at
      http://code.google.com/p/mtcp/.

#### [Main menu] [top] (License) [Applications] [Configuration] [Performance] [Conclusion]

## Applications:

      Like WatTCP, mTCP is a library that is linked with the application code,
      i.e. it is built into the applications. In summer 2010 the following
      applications were available from his website:
        * dhcp.exe    -- a DHCP client
        * ftpsrv.exe  -- a FTP server
        * dnstest.exe -- a DNS resolver
        * ftp.exe     -- an FTP client
        * ircjr.exe   -- an IRC client
        * nc.exe      -- a netcat utility
        * telnet.exe  -- Telnet
        * sntp.exe    -- a NTP (Network Time Protocol) client
        * ping.exe    -- Ping utility

#### [Main menu] [top] [License] (Applications) [Configuration] [Performance] [Conclusion]

## Configuration:

      mTCP uses packet drivers. It needs a configuration file on a location
      specified by an environment variable, e.g.:
        set MTCPCFG=c:\mtcp\tcp.cfg
      The configuration file looks like this:
        --- TCP.CFG ---
        PACKETINT 0x60
        IPADDR 192.168.1.50
        NETMASK 255.255.255.0
        GATEWAY 192.168.1.1
        NAMESERVER 192.168.1.1
        MTU 1500
      If you have a DHCP server running on your network, you don't need to
      write down static addresses. Instead you only have to define the vector
      of the packet driver and the name of the machine in TCP.CFG:
        --- TCP.CFG ---
        PACKETINT 0x60
        HOSTNAME  PCjr
      Afterwards run DHCP.EXE. The program will update the configuration file
      with all the info it gets from the server.

#### [Main menu] [top] [License] [Applications] (Configuration) [Performance] [Conclusion]

## Performance:

      In a first test the FTP application of mTCP was faster than all other
      programs tested. In fact it downloaded a binary file seven times faster
      than Arachne and ten times faster than NCSA Telnet!
      The computer used for testing was a Compaq Contura Aero 486SL with 33
      Mhz and 20 MB RAM. The OS was FreeDOS 1.0. The file downloaded was a
      mp3 with a file size of 4 megabyte.
      Results:
        mTCP FTP                      15 sec.
        curl                          23 sec.
        WatTCP FTP                    51 sec.
        Watt-32 FTP32                 51 sec.
        Datalight Sockets FTP client  69 sec.
        Arachne 1.93                 104 sec.
        NCSA Telnet FTP              149 sec.
        CUTCP FTP v. 2.2             155 sec.
        EZ-NOS2                      231 sec.
      Of course the results depend on the hardware used for testing. For
      comparison: On a more modern laptop (IBM X60T, 3 GB RAM, OS: Ubuntu 8.04)
      the same file was downloaded by Filezilla in five seconds.

#### [Main menu] [top] [License] [Applications] [Configuration] (Performance) [Conclusion]

## Conclusion:

      mTCP seems to work fine. Its performance looks very promising. It's
      release as Free Software in 2011 is a great step forward for FreeDOS.
      The development of mTCP should be monitored closely by everyone
      interested in DOS and FreeDOS networking.

#### [Main menu] [top] [License] [Applications] [Configuration] [Performance] (Conclusion)

      Copyright © 2007 Ulrich Hansen, Mainz (Germany), modified 2010
      by W.Spiegl.
      For more information see here.

      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.
      A copy of the license is included in the section entitled
      "GNU Free Documentation License"