mTCP - a TCP stack running on a 35 years old IBM PC Junior

The TCP/IP protocol suite has been implemented on a wide range of devices, ranging from embedded systems to supercomputers. Besides the classical TCP/IP stacks, there are specialized stacks that are used on specific devices. mTCP is an example of such stacks. This software runs on older PCs that are still running MS-DOS or FreeDOS. The stack runs on a 35 years old IBM PC Junior that is reachable from http://50.125.82.27:8088/mtcp/

mtcp

It is interesting to take a look at the characteristics of this TCP/IP stack by connecting to this test server and analyzing the exchanged packets. A sample trace is available from mtcp.pcap

The first packet that we receive from this server is a SYN+ACK. It does not support any TCP extension and only contains a MSS option that advertises a maximum segment size of 1024 bytes. Furthermore, the SYN+ACK advertises a window of 1024 bytes, a rather small window.

mtcp-syn

A closer look at the other packets sent by mTCP shows that the advertised window does not change during the connection. mTCP seems to be a very basic stack that supports one packet at a time, but it still inter-operates with modern TCP stacks that include many more features.

*This blog post was written to inform the readers of Computer Networking: Principles, Protocols and Practice about the evolution of the field. You can subscribe to the Atom feed for this blog.

Written on January 5, 2020