ZMODEM
Encyclopedia
ZMODEM is a file transfer protocol developed by Chuck Forsberg
Chuck Forsberg
Chuck Forsberg developed two data transmission protocols popular for uploading and downloading files from dial-up bulletin board systems in the 1990s. He received a Dvorak Award for Excellence in Telecommunications in 1992 for developing ZMODEM....

 in 1986, in a project
Project
A project in business and science is typically defined as a collaborative enterprise, frequently involving research or design, that is carefully planned to achieve a particular aim. Projects can be further defined as temporary rather than permanent social systems that are constituted by teams...

 funded by Telenet
Telenet
Telenet was a commercial packet switched network which went into service in 1974. It was the first packet-switched network service that was available to the general public. Various commercial and government interests paid monthly fees for dedicated lines connecting their computers and local...

 in order to improve file transfers on their X.25
X.25
X.25 is an ITU-T standard protocol suite for packet switched wide area network communication. An X.25 WAN consists of packet-switching exchange nodes as the networking hardware, and leased lines, Plain old telephone service connections or ISDN connections as physical links...

 network. In addition to dramatically improved performance compared to older protocols, ZMODEM also offered restartable transfers, auto-start by the sender, an expanded 32-bit CRC
CRC
- Organizations :* California Rehabilitation Center, a state prison in the USA* Cambridge Regional College, a further education college* Cambridge Regional College F.C., a semi-professional football club in England* Canada Research Chair* Capital Research Center...

, and control character quoting, allowing it to be used on networks that might "eat" control characters. ZMODEM became extremely popular on bulletin board system
Bulletin board system
A Bulletin Board System, or BBS, is a computer system running software that allows users to connect and log in to the system using a terminal program. Once logged in, a user can perform functions such as uploading and downloading software and data, reading news and bulletins, and exchanging...

s (BBS) in the early 1990s, displacing earlier protocols such as XMODEM
XMODEM
XMODEM is a simple file transfer protocol developed as a quick hack by Ward Christensen for use in his 1977 MODEM.ASM terminal program. XMODEM became extremely popular in the early bulletin board system market, largely because it was so simple to implement...

 and YMODEM
YMODEM
YMODEM is a protocol for file transfer used between modems. YMODEM was developed by Chuck Forsberg as the successor to XMODEM and MODEM7, and was first implemented in his CP/M YAM program...

.

The key improvement in ZMODEM was the introduction of sliding window support for improved performance. Generally file transfer protocols break down a file into a series of packets, and then send them one-at-a-time to the receiver. If the packet is received correctly an ACK message is sent and the sender then starts sending the next packet.

However, the telephone system introduces a small delay known as latency that interferes with this process. Even if the receiver sends the ACK immediately, the delay in the phone lines means there will always be some time before the sender receives it and sends the next packet. As modem
Modem
A modem is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information. The goal is to produce a signal that can be transmitted easily and decoded to reproduce the original digital data...

 speeds increase, this delay represents a larger and larger number of packets that could be sent during the delay, decreasing the overall performance.

Sliding window protocols avoid this problem by allowing the sending machine to move on to the next packet without waiting for an ACK. Instead, the receiver sends both an ACK (or NAK if there was an error) along with the packet number it is confirming. The sender can process these at its leisure, re-sending packets as required when need be. This effectively reduces the latency to zero at the cost of the very small overhead data. This is similar to TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...

's approach to sending ACKs.

ZMODEM's performance was so improved over previous common protocols that it generally replaced even special protocols such as YMODEM-g
YMODEM
YMODEM is a protocol for file transfer used between modems. YMODEM was developed by Chuck Forsberg as the successor to XMODEM and MODEM7, and was first implemented in his CP/M YAM program...

, which included no error correction at all and instead relied on error-free links maintained by the modems. Although YMODEM-g was noticeably faster, the lack of other features such as restartable transfers made it less interesting.

Auto-starting simplified management by allowing the sending machine to start the transfer. Previously the user had to first request the file from the sender, placing it into a "waiting" state, then return to their local programs and invoke a command to start the transfer. With auto-transfer, they simply requested the file, the sender would then automatically trigger the transfer in the user's program.

Restarts were another addition, allowing transfers to be restarted after the line was dropped or the user ran out of time and was kicked off.

A number of modified versions of ZMODEM appeared. ZedZap was a variant of ZMODEM with 8 kbyte blocks for better performance on high-speed modems. LeechZmodem was a mischievous ZMODEM variant (among similar XMODEM and YMODEM derivatives) that cheated BBS
Bulletin board system
A Bulletin Board System, or BBS, is a computer system running software that allows users to connect and log in to the system using a terminal program. Once logged in, a user can perform functions such as uploading and downloading software and data, reading news and bulletins, and exchanging...

 download quotas. A backwards compatible extension of ZMODEM with 32 kbyte and 64 kbyte block lengths was created by ADONTEC in 2002 and 2007 to increase performance on high-speed error free connections like ISDN or TCP/IP networks (intranet, internet). Both extensions are backward compatible.

The most notable ZMODEM implementations were from Chuck Forsberg's Omen Technology, Inc. These included DSZ (DOS Send ZMODEM), GSZ (Graphical Send ZMODEM), and the ubiquitous (l)rzsz for Unix variants.

In more current times, the developers of Synchronet
Synchronet
Synchronet is a multiplatform BBS software package, with current ports for Microsoft Windows, Linux, and BSD variants. Past versions also ran on MS-DOS and OS/2, but support for those platforms has been dropped in recent versions.-History:...

 have created a modern X/Y/ZMODEM implementation named SEXYZ, loosely based on the zmtx/zmrx package, which runs natively on Windows and Unix variants, supports long filenames and faster, more reliable data transfers. The ZMODEM implementation from SEXYZ has also been incorporated into the SyncTERM project. Synchronet, SEXYZ, and SyncTERM are all open-source, cross-platform, BBS-centric projects.

Forsberg himself collected a number of improvements into ZMODEM-90. The first of these is MobyTurbo, which removed control quoting to further improve performance, about 15%. Even on networks that "eat" control characters, ZMODEM-90 can be tailored to quote only those characters the network actually eats, as opposed to every possible one. A similar improvement allows ZMODEM-90 to work on 7-bit networks, whereas earlier protocols (with the notable exception of Kermit
Kermit (protocol)
Kermit is a computer file transfer/management protocol and a set of communications software tools primarily used in the early years of personal computing in the 1980s; it provides a consistent approach to file transfer, terminal emulation, script programming, and character set conversion across...

) had all demanded 8-bits to one degree or another. Finally, ZMODEM-90 includes a basic Run-length encoding
Run-length encoding
Run-length encoding is a very simple form of data compression in which runs of data are stored as a single data value and count, rather than as the original run...

compression system to further improve performance on uncompressed files.

Limitations

  • Some of the ZMODEM packets (e.g. ZACK, ZRPOS) embed a byte-offset within the transferred file as a 32-bit unsigned integer. This design limits the feasibility of ZMODEM to only reliably transfer files that are under 4GB in size.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK