HOME

TheInfoList



OR:

ZMODEM is an inline
file transfer protocol The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
developed by
Chuck Forsberg Charles Alton "Chuck" Forsberg (May 6, 1944 – September 24, 2015) developed two data transmission protocols popular in the 1990s, for uploading and downloading files from dial-up bulletin board systems. He received a Dvorak Award for Excell ...
in 1986, in a
project A project is any undertaking, carried out individually or collaboratively and possibly involving research or design, that is carefully planned to achieve a particular goal. An alternative view sees a project managerially as a sequence of even ...
funded by
Telenet Telenet was an American commercial packet-switched network which went into service in 1975. It was the first FCC-licensed public data network in the United States. Various commercial and government interests paid monthly fees for dedicated lines ...
in order to improve file transfers on their
X.25 X.25 is an ITU-T standard protocol suite for packet-switched data communication in wide area networks (WAN). It was originally defined by the International Telegraph and Telephone Consultative Committee (CCITT, now ITU-T) in a series of drafts ...
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 ''8-bit clean'' is an attribute of computer systems, communication channels, and other devices and software, that handle 8-bit character encodings correctly. Such encoding include the ISO 8859 series and the UTF-8 encoding of Unicode. History ...
transfers, allowing it to be used on networks that would not pass control characters. In contrast to most transfer protocols developed for
bulletin board system A bulletin board system (BBS), also called computer bulletin board service (CBBS), is a computer server running software that allows users to connect to the system using a terminal program. Once logged in, the user can perform functions such as ...
s (BBSs), ZMODEM was not directly based on, nor compatible with, the seminal XMODEM. Many variants of XMODEM had been developed in order to address one or more of its shortcomings, and most remained
backward compatible Backward compatibility (sometimes known as backwards compatibility) is a property of an operating system, product, or technology that allows for interoperability with an older legacy system, or with input designed for such a system, especially i ...
and would successfully complete transfers with "classic" XMODEM implementations. This list includes Forsberg's own
YMODEM 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 ...
. ZMODEM eschewed backward compatibility in favor of producing a radically improved protocol. It performed as well or better than any of the high-performance varieties of XMODEM, did so over links that previously didn't work at all, like X.25, or had poor performance, like
Telebit Telebit Corporation was a US-based modem manufacturer, known for their TrailBlazer series of high-speed modems. One of the first modems to routinely exceed 9600 bit/s speeds, the TrailBlazer used a proprietary modulation scheme that proved highly ...
modems, and included useful features found in few or no other protocols. ZMODEM became extremely popular on
bulletin board system A bulletin board system (BBS), also called computer bulletin board service (CBBS), is a computer server running software that allows users to connect to the system using a terminal program. Once logged in, the user can perform functions such as ...
s (BBS) in the early 1990s, becoming a standard as widespread as XMODEM had been before it.


Improvements


Streaming

Generally, file transfer protocols break down a file into a series of ''packet''s, and then send them one-at-a-time to the receiver. The main portion of the packet, the ''payload'', is a certain number of bytes from the file being sent. After the payload comes a ''
checksum A checksum is a small-sized block of data derived from another block of digital data for the purpose of detecting errors that may have been introduced during its transmission or storage. By themselves, checksums are often used to verify data ...
'' or ''
cyclic redundancy check A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data. Blocks of data entering these systems get a short ''check value'' attached, based on t ...
'' (CRC) that can be used to determine if the payload was received correctly. If the packet is received correctly, the receiver sends an message and the sender then starts sending the next packet. The telephone system introduces a small delay known as '' latency'' that interferes with this process. Even if the receiver sends the 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 A modulator-demodulator or modem is a computer hardware device that converts data from a digital format into a format suitable for an analog transmission medium such as telephone or radio. A modem transmits data by Modulation#Digital modulati ...
speeds increase, this delay represents a larger and larger number of packets that could have been sent during the delay, decreasing the ''
channel efficiency Network throughput (or just throughput, when in context) 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 ove ...
''. XMODEM used 128-bytes payloads with a three-byte header and one-byte checksum for a total of 132 bytes per packet. In the era of 300 bps modems, a packet took about four seconds to send, and typical latencies were on the order of of a second, so the performance overhead was not significant. As speeds increase the problem becomes more problematic; at 2400 bps a packet takes about to send, so about of the available bandwidth is wasted waiting for s. At 9600 bps a packet requires only 0.13 seconds to send, so about of the bandwidth is wasted. One solution to this problem is the use of a
sliding window A sliding window protocol is a feature of packet-based data transmission protocols. Sliding window protocols are used where reliable in-order delivery of packets is required, such as in the data link layer ( OSI layer 2) as well as in the Tran ...
. These protocols address latency by allowing the sender to continue sending a number of packets without waiting for an . The number of packets that it allows to continue is the "window", which was typically between two and sixteen packets in most implementations. A number of new versions of XMODEM with sliding window support appeared in the early 1980s. Sliding windows are useful for latencies on the order of several packet lengths, which is the case for XMODEM on conventional phone lines. However, it is not enough to address longer latencies found on overseas phone calls or X.25 services such as
PC Pursuit Telenet was an American commercial packet-switched network which went into service in 1975. It was the first FCC-licensed public data network in the United States. Various commercial and government interests paid monthly fees for dedicated lines ...
, where the latencies are on the order of a second or longer. In other cases, where the reverse channel was much slower than the sending one, as was the case for
Telebit Telebit Corporation was a US-based modem manufacturer, known for their TrailBlazer series of high-speed modems. One of the first modems to routinely exceed 9600 bit/s speeds, the TrailBlazer used a proprietary modulation scheme that proved highly ...
or
US Robotics U.S. Robotics Corporation, often called USR, is a company that produces USRobotics computer modems and related products. Its initial marketing was aimed at bulletin board systems, where its high-speed HST protocol made FidoNet transfers much fas ...
modems, even the small number of s might overwhelm the return channel and cause the transfer to pause. ZMODEM addressed these problems by removing the need for s at all, allowing the sender to send data continually as long as the receiver detected no errors. Only s had to be sent, if and only if there was a problem. Since ZMODEM was often used on links with built-in error correction, like X.25, the receiver would often not send a single message back to the sender. As a result, the system would send the entire file in a continual stream, and ZMODEM referred to itself as a "streaming protocol". ZMODEM's performance was so improved over previous common protocols that it generally replaced even special protocols such as YMODEM-g, which included no error correction at all and instead relied on error-free links maintained by the modems. Although YMODEM-g was faster, the lack of other features such as restartable transfers made it less appealing.


Restart

XMODEM, and most protocols based on it, managed packet order by prefixing the data with a packet number from 1 to 255. Windowed versions used this packet number to indicate which packets had been received properly, or specify one that had not. Since the packets were 128 bytes long, this meant the maximum amount of data that could be transferred before the packet numbers rolled over was 32 kB. ZMODEM replaced the packet number with the actual location in the file, indicated by a 32-bit number. This allowed it to send messages that re-wound the transfer to the point of failure, regardless of how long the file might be. This same feature was also used to re-start transfers if they failed or were deliberately interrupted. In this case, the receiver would look to see how much data had been previously received and then send a with that location, automatically triggering the sender to start from that point.


Auto-start

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 program 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.


Variations

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 LeechModem was a BBS file transfer protocol client. LeechModem was compatible with protocols like XMODEM (and YMODEM), but it would mischievously NAK the last packet and then abort the file transfer. The user had successfully downloaded the file, ...
was a mischievous ZMODEM variant (among similar XMODEM and YMODEM derivatives) that cheated
BBS BBS may refer to: Ammunition * BBs, BB gun metal bullets * BBs, airsoft gun plastic pellets Computing and gaming * Bulletin board system, a computer server users dial into via dial-up or telnet; precursor to the Internet * BIOS Boot Specificat ...
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. 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 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 were dropped in version 3.0 (circa 2000). History S ...
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) had all demanded 8-bits to one degree or another. Finally, ZMODEM-90 includes a basic
run-length encoding Run-length encoding (RLE) is a form of lossless data compression in which ''runs'' of data (sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original ...
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. * Even though the protocol could permit it, the reference (l)rzsz implementation cannot encode arbitrary non-control characters (e.g. '~') which are often used by TCP/IP connection programs like telnet and ssh as client-side "terminal escape" characters. Users must disable the terminal escape feature to achieve reliable transfers over these kinds of links, e.g. ssh -e none user@hostname.


References


The ZMODEM Inter Application File Transfer ProtocolSynchronet External X/Y/Zmodem (SEXYZ) File Transfer Protocol Driver


External links



{{Modem file transfer protocols BBS file transfer protocols Modems Computer-related introductions in 1986