YMODEM
Encyclopedia
YMODEM is a protocol for file transfer used between modem
s. YMODEM was developed by Chuck Forsberg
as the successor to XMODEM
and MODEM7, and was first implemented in his CP/M
YAM program. It was formally given the name "YMODEM" in 1985 by Ward Christensen
.
The original YMODEM was essentially the same as XMODEM except that it sent the file's name
, size, and timestamp
in a regular XMODEM block, "block 0", before actually transferring the file. Sending the file size solved XMODEM's problem of superfluous padding
at the end of the file.
Forsberg built the standard with a number of optional features, believing that programmers would want to implement as many as possible on any given platform. He was dismayed to find that the majority of implementations were actually providing nothing more than 1 kilobyte block size with CRC
, while continuing to use the "YMODEM" name. The result was a large number of mutually incompatible YMODEMs.
instead of the standard 128 byte
s. 1K blocks were an option in the original YMODEM standard, but this variant is missing the rest of the features, and is best described as a 1k variant of XMODEM.
YMODEM-g is a streaming variant used for error-free connections. It simply removes the CRC
and does not wait for an ACK
to be received before sending the next packet. The protocol was faster than YMODEM because no error-checking
is performed. However, despite this protocol potentially being faster than ZMODEM
it was still rarely used. This was partially due to the lack of other functionality, but also a more serious issue. Before the emergence of the 16550 UART
, there was a serious risk of buffer overrun
on the serial port
, and YMODEM-g would not notice this.
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...
s. YMODEM was 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....
as the successor to 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 MODEM7, and was first implemented in his CP/M
CP/M
CP/M was a mass-market operating system created for Intel 8080/85 based microcomputers by Gary Kildall of Digital Research, Inc...
YAM program. It was formally given the name "YMODEM" in 1985 by Ward Christensen
Ward Christensen
Ward Christensen, born in West Bend, Wisconsin, U.S., is the founder of the CBBS bulletin board, the first bulletin board system ever brought online...
.
The original YMODEM was essentially the same as XMODEM except that it sent the file's name
Filename
The filename is metadata about a file; a string used to uniquely identify a file stored on the file system. Different file systems impose different restrictions on length and allowed characters on filenames.A filename includes one or more of these components:...
, size, and timestamp
Timestamp
A timestamp is a sequence of characters, denoting the date or time at which a certain event occurred. A timestamp is the time at which an event is recorded by a computer, not the time of the event itself...
in a regular XMODEM block, "block 0", before actually transferring the file. Sending the file size solved XMODEM's problem of superfluous padding
Padding
Padding is thin cushioned material sometimes added to clothes. It is often done in an attempt to soften impacts on certain zones of the body or enhance appearance by 'improving' a physical feature, often a sexually significant one...
at the end of the file.
Forsberg built the standard with a number of optional features, believing that programmers would want to implement as many as possible on any given platform. He was dismayed to find that the majority of implementations were actually providing nothing more than 1 kilobyte block size with CRC
Cyclic redundancy check
A cyclic redundancy check is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data...
, while continuing to use the "YMODEM" name. The result was a large number of mutually incompatible YMODEMs.
Common variants
YMODEM-1K uses a block size of one kilobyteKilobyte
The kilobyte is a multiple of the unit byte for digital information. Although the prefix kilo- means 1000, the term kilobyte and symbol KB have historically been used to refer to either 1024 bytes or 1000 bytes, dependent upon context, in the fields of computer science and information...
instead of the standard 128 byte
Byte
The byte is a unit of digital information in computing and telecommunications that most commonly consists of eight bits. Historically, a byte was the number of bits used to encode a single character of text in a computer and for this reason it is the basic addressable element in many computer...
s. 1K blocks were an option in the original YMODEM standard, but this variant is missing the rest of the features, and is best described as a 1k variant of XMODEM.
YMODEM-g is a streaming variant used for error-free connections. It simply removes the CRC
Cyclic redundancy check
A cyclic redundancy check is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data...
and does not wait for an ACK
Acknowledge character
In telecommunications, an acknowledge character is a transmission control character transmitted by the receiving station as an acknowledgement, i.e...
to be received before sending the next packet. The protocol was faster than YMODEM because no error-checking
Error detection and correction
In information theory and coding theory with applications in computer science and telecommunication, error detection and correction or error control are techniques that enable reliable delivery of digital data over unreliable communication channels...
is performed. However, despite this protocol potentially being faster than ZMODEM
ZMODEM
ZMODEM is a 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...
it was still rarely used. This was partially due to the lack of other functionality, but also a more serious issue. Before the emergence of the 16550 UART
16550 UART
The 16550 UART is an integrated circuit designed for implementing the interface for serial communications...
, there was a serious risk of buffer overrun
Buffer overflow
In computer security and programming, a buffer overflow, or buffer overrun, is an anomaly where a program, while writing data to a buffer, overruns the buffer's boundary and overwrites adjacent memory. This is a special case of violation of memory safety....
on the serial port
Serial port
In computing, a serial port is a serial communication physical interface through which information transfers in or out one bit at a time...
, and YMODEM-g would not notice this.
External links
- XMODEM/YMODEM Protocol Reference, Chuck Forsberg