Xmodem/Ymodem 完整版协议说明，STM32 官方 IAP Demo 所使用协议 XMODEM/YMODEM PROTOCOL REFERENCE A compendium of documents describing the XMODEM and YMODEM File Transfer Protocols
- 1 -
XMODEM/YMODEM PROTOCOL REFERENCE
A compendium of documents describing the
XMODEM and YMODEM
File Transfer Protocols
This document was formatted 10-14-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
- 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
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." 
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
To the majority of you who read, understood, and respected Ward's
definition of YMODEM, I apologize for the inconvenience.
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
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
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
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
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.
X/YMODEM Protocol Reference June 18 1988 4
2. YMODEM MINIMUM REQUIREMENTS
All programs claiming to support YMODEM must meet the following minimum
+ The sending program shall send the pathname (file name) in block 0.
+ The pathname shall be a null terminated ASCII string as described
For those who are too lazy to read the entire document:
+ Unless specifically requested, only the file name portion is
+ 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
+ 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
+ The end of a transfer session shall be signified by a null (empty)
pathname, this pathname block shall be acknowledged the same as other
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
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
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI