SMODEM

Last updated
File being transferred in both directions at the same time while chatting with SModem v1.0. SModem.png
File being transferred in both directions at the same time while chatting with SModem v1.0.

Smodem refers to a bidirectional protocol for file transfer used between modems and the DOS program in which the protocol is implemented, both of which were developed by a Finnish company named Arisoft. It was mainly used in bulletin board systems because it could transfer files in both directions at the same time and allowed users to chat with each other with AriSoft's GroupChat software. Other popular bidirectional protocols such as BiModem, HS/Link and HydraCom also offered a chat option with the operator, but not with the system's other users.

Contents

Smodem protocol overview

Unlike ZMODEM and other older protocols, SMODEM has a separate low-level multiplexed transfer layer (MSLP) and a high-level file transfer layer. This simplifies the protocol design and provides a very high efficiency of 99.5%. The multiplexing makes it possible to send one or more files in a continuous stream without any breaks between the files, boosting the throughput dramatically when transferring multiple files.

The multiplexing also made possible[ clarification needed ] to add a full-screen ANSI terminal emulator with a local full-featured line editor and colored scroll-back buffer of 'unlimited' size. The locally buffered terminal emulation allowed users to chat during full-speed bidirectional file transfers.

The protocol is symmetrical and can connect with itself in loop-back mode. Files can be simultaneously transmitted and received without noticeable performance loss.

SMODEM detects DESQview and DPMI (Windows, OS/2) and releases all unused processor capacity to the host system. It is written in the C language and compiled with Microsoft Visual C++ v1.0 compiler, optimized for an 80286 CPU. It needs at least 200 kB free memory to function properly and more to allow shelling from the program. Files can not be transferred while the shell is being used.

MSLP has the capability to simultaneously manage 32 independent channels. Every single channel uses a traditional two-phase ACK/NAK type sub protocol. Maximum efficiency is achieved by simultaneously using multiple parallel channels to keep the transmitter busy.

The maximum packet size floats between 16 and 1024 bytes. Transfer errors reduce the packet size depending on error frequency. The transmitter window size (the total size of transmitted packets pending acknowledgment) can be limited to get a faster response.

The packet frame contains one byte for the channel number and two bytes for a 16-bit CCITT(ITU)-CRC, using the same algorithm as in error correcting modems. The acknowledgements and inquiries are included in the packet frame when needed.

The packet separators contain two bytes, which if found in transferred data, one additional byte is inserted for encapsulation of control data. The probability of the packet separator sequence appearing in random data is so small, that it does not affect protocol efficiency like old style one byte separators do.

The maximum efficiency in one-direction error-free transfers will be:

If the packet size is limited to 256 bytes, the efficiency is 98.1%, which is still better than original Zmodem.

If the data link can not transfer some special characters, then the traditional character encapsulation mode can be activated. In this mode the selected character codes are encapsulated, which reduces the performance by about 0.4% + additional 0.4% for every selected character code.

In case the data link is limited to seven data bits, a special bit collection mode can be activated. The highest bits for every seven bytes are collected to one byte (which is eight bits under normal conditions). This collection reduces the performance about 12.4% and doubles the character encapsulation capacity.

The maximum transfer line correction mode of MSLP uses five characters to transmit four characters that use only printable 7-bit ASCII codes (Ascii85). This mode should work on almost every non-transparent transmission line. The maximum correction mode reduces the performance by 20%. It should only be used for test purposes if the default settings do not work or if the limitations of transfer line are unknown or too complex to handle with separate adjustments.

Related Research Articles

In telecommunications, asynchronous communication is transmission of data, generally without the use of an external clock signal, where data can be transmitted intermittently rather than in a steady stream. Any timing required to recover data from the communication symbols is encoded within the symbols.

In computer networking, the maximum transmission unit (MTU) is the size of the largest protocol data unit (PDU) that can be communicated in a single network layer transaction. The MTU relates to, but is not identical to the maximum frame size that can be transported on the data link layer, e.g., Ethernet frame.

<span class="mw-page-title-main">Point-to-Point Protocol</span> Data link layer communication protocol

In computer networking, Point-to-Point Protocol (PPP) is a data link layer communication protocol between two routers directly without any host or any other networking in between. It can provide loop detection, authentication, transmission encryption, and data compression.

Network throughput refers to the rate of message delivery over a communication channel, such as Ethernet or packet radio, in a communication network. The data that these messages contain may be delivered over physical or logical links, or through network nodes. Throughput is usually measured in bits per second, and sometimes in data packets per second or data packets per time slot.

A frame is a digital data transmission unit in computer networking and telecommunications. In packet switched systems, a frame is a simple container for a single network packet. In other telecommunications systems, a frame is a repeating structure supporting time-division multiplexing.

<span class="mw-page-title-main">Transport layer</span> Layer in the OSI and TCP/IP models providing host-to-host communication services for applications

In computer networking, the transport layer is a conceptual division of methods in the layered architecture of protocols in the network stack in the Internet protocol suite and the OSI model. The protocols of this layer provide end-to-end communication services for applications. It provides services such as connection-oriented communication, reliability, flow control, and multiplexing.

AX.25 is a data link layer protocol originally derived from layer 2 of the X.25 protocol suite and designed for use by amateur radio operators. It is used extensively on amateur packet radio networks.

Throughput of a network can be measured using various tools available on different platforms. This page explains the theory behind what these tools set out to measure and the issues regarding these measurements.

ZMODEM is an inline file transfer protocol developed by Chuck Forsberg in 1986, in a project funded by Telenet in order to improve file transfers on their X.25 network. In addition to dramatically improved performance compared to older protocols, ZMODEM offered restartable transfers, auto-start by the sender, an expanded 32-bit CRC, and control character quoting supporting 8-bit clean transfers, allowing it to be used on networks that would not pass control characters.

XMODEM is a simple file transfer protocol developed as a quick hack by Ward Christensen for use in his 1977 MODEM.ASM terminal program. It allowed users to transmit files between their computers when both sides used MODEM. Keith Petersen made a minor update to always turn on "quiet mode", and called the result XMODEM.

YMODEM is a file transfer protocol used between microcomputers connected together using modems. It was primarily used to transfer files to and from bulletin board systems. YMODEM was developed by Chuck Forsberg as an expansion of XMODEM and was first implemented in his CP/M YAM program. Initially also known as YAM, it was formally given the name "YMODEM" in 1985 by Ward Christensen, author of the original XMODEM.

CRC-based framing is a kind of frame synchronization used in Asynchronous Transfer Mode (ATM) and other similar protocols.

Protocol spoofing is used in data communications to improve performance in situations where an existing protocol is inadequate, for example due to long delays or high error rates.

SEAlink is a file transfer protocol that is backward compatible with XMODEM but features a sliding window system for improved throughput. SEAlink was written in 1986 as a part of the SEAdog FidoNet mailer written by System Enhancement Associates, creators of the famous ARC program. It was licensed with a simple "give credit" requirement, but nevertheless was not very widely used except in FidoNet mailers. SEAlink, and most other XMODEM enhancements, were quickly displaced following the introduction of ZMODEM.

Lynx is a file transfer protocol for use with modems, and the name of the program that implements the protocol. Lynx is based on a sliding window protocol with two to sixteen packets per window, and 64 bytes of data per packet. It also applies run length encoding (RLE) to the data on a per-block basis to compress suitable data.

ZMax is a file transfer protocol developed in 1990-1991 by Mike Bryeans who also developed TMODEM.

The Microcom Networking Protocols, almost always shortened to MNP, is a family of error-correcting protocols commonly used on early high-speed modems. Originally developed for use on Microcom's own family of modems, the protocol was later openly licensed and used by most of the modem industry, notably the "big three", Telebit, USRobotics and Hayes. MNP was later supplanted by V.42bis, which was used almost universally starting with the first V.32bis modems in the early 1990s.

Generic Stream Encapsulation, or GSE for short, is a Data link layer protocol defined by DVB. GSE provides means to carry packet oriented protocols such as IP on top of uni-directional physical layers such as DVB-S2, DVB-T2 and DVB-C2.

Janus is a file transfer protocol for use on bulletin board systems (BBSs). It has the relatively rare feature that it is fully bidirectional, allowing the protocol to upload and download files at the same time. It was written by Rick Huebner in 1987; Huebner had previously written a ZMODEM module for the Opus-CBBS system.

MEGAlink is a file transfer protocol for modem-equipped microcomputers written by Paul Meiners in 1987. Like many protocols of the era, MEGAlink is an expanded version of the seminal XMODEM. While it was a relatively simple and high-performance system, it remains relatively obscure because it was overshadowed by ZMODEM, which had been released a year earlier and saw rapid uptake.

References