📄 xymodem.htm
字号:
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>XMODEM/YMODEM Protocol Reference</title>
<meta name="description" content="XMODEM/YMODEM Protocol Reference">
<meta name="keywords" content="modem, xmodem, ymodem">
<!-- BEGIN LINKSHARE CODE -->
</head><body bgcolor="#ffffff"><a href="http://www.amazon.com/exec/obidos/redirect?tag=techfestcom&path=subst/home/home.html"><img src="xymodem_files/gnused2468x60.gif" border="0" width="468" height="60"></a>
<!-- END LINKSHARE CODE -->
<br>
<pre>
- 1 -
XMODEM/YMODEM PROTOCOL REFERENCE
A compendium of documents describing the
XMODEM and YMODEM
File Transfer Protocols
This document was formatted 10-2-88.
Edited by Chuck Forsberg
This file may be redistributed without restriction
provided the text is not altered.
Please distribute as widely as possible.
Questions to Chuck Forsberg
Omen Technology Inc
The High Reliability Software
17505-V Sauvie Island Road
Portland Oregon 97231
VOICE: 503-621-3406 :VOICE
TeleGodzilla BBS: 503-621-3746 Speed 19200(Telebit PEP),2400,1200,300
CompuServe: 70007,2304
GEnie: CAF
UUCP: ...!tektronix!reed!omen!caf
- 2 -
1. TOWER OF BABEL
A "YMODEM Tower of Babel" has descended on the microcomputing community
bringing with it confusion, frustration, bloated phone bills, and wasted
man hours. Sadly, I (Chuck Forsberg) am partly to blame for this mess.
As author of the early 1980s batch and 1k XMODEM extensions, I assumed
readers of earlier versions of this document would implement as much of
the YMODEM protocol as their programming skills and computing environments
would permit. This proved a rather naive assumption as programmers
motivated by competitive pressure implemented as little of YMODEM as
possible. Some have taken whatever parts of YMODEM that appealed to them,
applied them to MODEM7 Batch, Telink, XMODEM or whatever, and called the
result YMODEM.
Jeff Garbers (Crosstalk package development director) said it all: "With
protocols in the public domain, anyone who wants to dink around with them
can go ahead." [1]
Documents containing altered examples derived from YMODEM.DOC have added
to the confusion. In one instance, some self styled rewriter of history
altered the heading in YMODEM.DOC's Figure 1 from "1024 byte Packets" to
"YMODEM/CRC File Transfer Protocol". None of the XMODEM and YMODEM
examples shown in that document were correct.
To put an end to this confusion, we must make "perfectly clear" what
YMODEM stands for, as Ward Christensen defined it in his 1985 coining of
the term.
To the majority of you who read, understood, and respected Ward's
definition of YMODEM, I apologize for the inconvenience.
1.1 Definitions
ARC ARC is a program that compresses one or more files into an archive
and extracts files from such archives.
XMODEM refers to the file transfer etiquette introduced by Ward
Christensen's 1977 MODEM.ASM program. The name XMODEM comes from
Keith Petersen's XMODEM.ASM program, an adaptation of MODEM.ASM
for Remote CP/M (RCPM) systems. It's also called the MODEM or
MODEM2 protocol. Some who are unaware of MODEM7's unusual batch
file mode call it MODEM7. Other aliases include "CP/M Users'
Group" and "TERM II FTP 3". The name XMODEM caught on partly
because it is distinctive and partly because of media interest in
__________
1. Page C/12, PC-WEEK July 12, 1987
Chapter 1
X/YMODEM Protocol Reference June 18 1988 3
bulletin board and RCPM systems where it was accessed with an
"XMODEM" command. This protocol is supported by every serious
communications program because of its universality, simplicity,
and reasonable performance.
XMODEM/CRC replaces XMODEM's 1 byte checksum with a two byte Cyclical
Redundancy Check (CRC-16), giving modern error detection
protection.
XMODEM-1k Refers to the XMODEM/CRC protocol with 1024 byte data blocks.
YMODEM Refers to the XMODEM/CRC (optional 1k blocks) protocol with batch
transmission as described below. In a nutshell, YMODEM means
BATCH.
YMODEM-g Refers to the streaming YMODEM variation described below.
True YMODEM(TM) In an attempt to sort out the YMODEM Tower of Babel, Omen
Technology has trademarked the term True YMODEM(TM) to represent
the complete YMODEM protocol described in this document, including
pathname, length, and modification date transmitted in block 0.
Please contact Omen Technology about certifying programs for True
YMODEM(TM) compliance.
ZMODEM uses familiar XMODEM/CRC and YMODEM technology in a new protocol
that provides reliability, throughput, file management, and user
amenities appropriate to contemporary data communications.
ZOO Like ARC, ZOO is a program that compresses one or more files into
a "zoo archive". ZOO supports many different operating systems
including Unix and VMS.
Chapter 1
X/YMODEM Protocol Reference June 18 1988 4
2. YMODEM MINIMUM REQUIREMENTS
All programs claiming to support YMODEM must meet the following minimum
requirements:
+ The sending program shall send the pathname (file name) in block 0.
+ The pathname shall be a null terminated ASCII string as described
below.
For those who are too lazy to read the entire document:
+ Unless specifically requested, only the file name portion is
sent.
+ No drive letter is sent.
+ Systems that do not distinguish between upper and lower case
letters in filenames shall send the pathname in lower case only.
+ The receiving program shall use this pathname for the received file
name, unless explicitly overridden.
+ When the receiving program receives this block and successfully
opened the output file, it shall acknowledge this block with an ACK
character and then proceed with a normal XMODEM file transfer
beginning with a "C" or NAK tranmsitted by the receiver.
+ The sending program shall use CRC-16 in response to a "C" pathname
nak, otherwise use 8 bit checksum.
+ The receiving program must accept any mixture of 128 and 1024 byte
blocks within each file it receives. Sending programs may
arbitrarily switch between 1024 and 128 byte blocks.
+ The sending program must not change the length of an unacknowledged
block.
+ At the end of each file, the sending program shall send EOT up to ten
times until it receives an ACK character. (This is part of the
XMODEM spec.)
+ The end of a transfer session shall be signified by a null (empty)
pathname, this pathname block shall be acknowledged the same as other
pathname blocks.
Programs not meeting all of these requirements are not YMODEM compatible,
and shall not be described as supporting YMODEM.
Meeting these MINIMUM requirements does not guarantee reliable file
Chapter 2
X/YMODEM Protocol Reference June 18 1988 5
transfers under stress. Particular attention is called to XMODEM's single
character supervisory messages that are easily corrupted by transmission
errors.
Chapter 2
X/YMODEM Protocol Reference June 18 1988 6
3. WHY YMODEM?
Since its development half a decade ago, the Ward Christensen modem
protocol has enabled a wide variety of computer systems to interchange
data. There is hardly a communications program that doesn't at least
claim to support this protocol.
Advances in computing, modems and networking have revealed a number of
weaknesses in the original protocol:
+ The short block length caused throughput to suffer when used with
timesharing systems, packet switched networks, satellite circuits,
and buffered (error correcting) modems.
+ The 8 bit arithmetic checksum and other aspects allowed line
impairments to interfere with dependable, accurate transfers.
+ Only one file could be sent per command. The file name had to be
given twice, first to the sending program and then again to the
receiving program.
+ The transmitted file could accumulate as many as 127 extraneous
bytes.
+ The modification date of the file was lost.
A number of other protocols have been developed over the years, but none
have displaced XMODEM to date:
+ Lack of public domain documentation and example programs have kept
proprietary protocols such as Blast, Relay, and others tightly bound
to the fortunes of their suppliers.
+ Complexity discourages the widespread application of BISYNC, SDLC,
HDLC, X.25, and X.PC protocols.
+ Performance compromises and complexity have limited the popularity of
the Kermit protocol, which was developed to allow file transfers in
environments hostile to XMODEM.
The XMODEM protocol extensions and YMODEM Batch address some of these
weaknesses while maintaining most of XMODEM's simplicity.
YMODEM is supported by the public domain programs YAM (CP/M),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -