' HELPPROT.TXT initially started 11-16-91.
'
PROTOCOL

A protocol is a set of rules and conventions that apply to a specific area
of communications that allow participants to properly communicate
regardless of the hardware brand or software package being used.  The
protocol file transfer is a set of rules for transferring files which
specify a set of ASCII handshaking characters and the sequence of
handshaking required to perform certain file transfer functions.  Protocol
handshaking signals allow communication software to transfer text, data and
machine code files, and to perform sophisticated error-checking.

Some protocols are faster then others and some are more foolproof in the
way they detect errors.


'
ASCII

ASCII stands for American Standard for Computer Information Interchange.
Is consists of 128, 7 bit codes (0 - 127).  Many computers implement a
"bit-8" set (128-255) but these will differ from system to system.  The
bottom 128 are always the same.

ASCII transfer is not really error checked at all.  The only "handshaking"
that takes place is the use of Xon/Xoff (ASCII codes 17 and 19, decimal, or
^S/^Q).  When the sending system receives a ^S from the receiver it stops
sending until the receiver transmits a ^Q.

Only plain text files should be transmitted with this protocol since they
generally will not contain bit-8 characters.  You may use 7 word bits, Even
parity, 1 stop bit communications parameters with ASCII.  All the remaining
protocols require 8-N-1.

Auntie only allows ASCII downloads, never uploads.


'
XMODEM

Checksum Xmodem

In August of 1977, Ward Christensen developed one of the first public
domain "8-bit" error checking protocols.  He originally developed it for
CP/M systems and called it MODEM-7.  The late Andrew Fluegelman popularized
it as Xmodem when he implemented it in his PC-TALK III program.

Xmodem sends information in "packets" of 128 bytes.  The error checking
comes about by adding up the ASCII value of these bytes, dividing by 256,
and throwing away the remainder.  This is called a modulo 256 checksum.
The sender calculates this checksum and transmits it along with the 128
byte packet.  Once received, the receiver calculates it again on the
received packet.  If the two checksums DON'T agree, the receiver sends a
NAK (Negative AcKnowledgement) which causes the sender to retransmit the
packet.  If the checksums DO agree the receiver sends an ACK character.
The transfer continues in this manner until completed.

Modulo 256 checksum checking is not 100% foolproof.  Certain kinds of line
noise can cause corrupted packets to be received which contain the correct
checksum but incorrect data.

Because Checksum Xmodem is so unreliable, it is recommended that you NOT
select it.


CRC Xmodem

Xmodem CRC

Xmodem CRC uses a complex polynomial equation to calculate a 16 bit (2
bytes) Cyclical Redundancy Check (CRC) on the Xmodem 128 byte packet.  The
CRC value is a much more robust method of detecting transmission errors.
The remainder of the handshaking takes place in the same manner as checksum
Xmodem.

CRC Xmodem is transparent to the user.  That is, if you select CRC as your
protocol and your system fails to send the proper codes, CRC Xmodem will
"fall back" to checksum Xmodem.  So, if you don't know if your
communications program supports CRC, select it anyway.

Although CRC is fairly robust and reliable, it is quite slow due to the
small packet size and frequent handshaking.


'
YMODEM

Ymodem was developed by Chuck Forsberg of Omen Technology in Portland, OR,
as the next protocol after Xmodem.

Ymodem is essentially CRC Xmodem with 1024 byte (or 1 kilobyte, or 1K)
packets.

However, UNLIKE Xmodem, which always starts off with its first packet being
labeled #1, true Ymodem starts off with its first packet labeled as #0.
This packet contains the time and date stamp of the file being transferred
along with its filesize and filespec.  In addition, true Ymodem may operate
in "batch mode" which, if implemented, allows the receiver to specify more
than one file to be transferred in a session.  Ymodem also will send the
file in a true file size, not having to "stuff" null bytes in the final
block to make a full 1024 byte block.

If your comm program doesn't seem to respond properly to Ymodem, try Batch
Ymodem or, better yet, HS/Link or Zmodem.


'
BATCH

Batch Ymodem

There's very little difference between Batch Ymodem and simple Ymodem.  Of
these two, you should select Batch.  If your comm program doesn't seem to
respond properly to Batch Ymodem, try regular Ymodem or, better yet,
HS/Link or Zmodem.


'
1K Xmodem

1K Xmodem

1K Xmodem is CRC Xmodem using 1024 byte (1K) packets.  The first packet
sent is labeled #1.  Select this protocol if you have had problems with
Ymodem.  Better yet, use HS/Link or Zmodem.


'
KERMIT

Kermit was developed at Columbia University in New York.  It is a rather
slow, but reliable, streaming protocol used primarily for mainframe
computer communications.  Don't select this protocol unless it is your only
choice.

Note: support for the Kermit protocol is at the discretion of the local
SysOp and may not be available.


'
ZMODEM

Zmodem (the next one after Ymodem) is a public domain protocol developed by
Chuck Forsberg.

Zmodem uses a 32 bit CRC to detect transmission errors.  It also allows for
batch transfer of more than one file along with time/date stamping.  Unlike
X/Ymodem, Zmodem doesn't wait for the receiver to acknowledge receipt of an
error free packet.  Rather, it continues sending until the receiver sends a
"packet NAK" which causes the sender to resend that one bad packet.  This
lack of "turnaround" time delay is what greatly speeds up Zmodem transfers.
Zmodem also has the ability to pick up where it left off on an aborted
transfer if you have the -r command in the command line.  A real time saver
on large files that abort half way through!  Another nice feature of Zmodem
is the ability to adjust the block size on the fly by the line noise
conditions.  Thus, on a clean line the blocks work up to 1024 bytes which
reduces the overhead of the CRC data which is sent with each block.  This
may seem like the best to go with all the time until you think about
re-transmitting of bad blocks.  Zmodem can drop down to 32 byte blocks
under noisy conditions which means a re-send is a smaller block thus
speeding up the overall transmission.

If your comm program doesn't internally support Zmodem, then use
Forsberg's "engine" program, DSZ, avaliable here as DSZmmdd.ZIP.


'
JMODEM

Jmodem is a second generation protocol developed by Richard B. Johnson of
Boulder, CO, in late 1988.

Jmodem maintains the exact filesize, date and timestamp.  It supports up to
com4.  Pre-existing files are renamed to .OLD rather than being
overwritten.

Jmodem starts off with 512 byte blocks and increases their size by 512
bytes until the maximum size of 8192 bytes is reached.  Each block carries
with it a 6 byte overhead.  The block size is reduced by 512 bytes every
time an error is detected.  It will go all the way back down to 512 bytes
if necessary.

Jmodem uses a 16 bit CRC check for error detection.  While not quite as
robust as Zmodem's 32 bit CRC, this 16 bit CRC still assures the
probability of only one undetected error in 5.44E39 (2^132).

Jmodem also performs on-the-fly data compression.  This can make apparent
transfer speeds seem faster than your baud rate.  The degree of compression
is much greater for files not already compressed.  The speed increase for
ARC or ZIP files, while still there, is not as great as for plain text
files.  Some unsophisticated speed benchmark tests show Jmodem to average
1-3% faster than Zmodem on compressed files (ZIPs, in this case) and 16-34%
on plain text files.

Note: Support for the Jmodem protocol is at the discretion of the local
SysOp and may not be available.


'
MPT

Formerly known as the PUMA protocol, Matt Thomas' MPT is a robust streaming
block 32 bit CRC protocol.  Block sizes range from 64 bytes up to 1K (1024
bytes) depending on the quality of the line.  MPT is batch capable, that
is, you may send or receive more than one file at a time.  RLE compression
may be selected but this system will generally turn RLE compression off if
the file being sent is already compressed.

Note: Support for the MPT protocol is at the discretion of the local SysOp
and may not be available.


'
Ymodem-G

Ymodem-G

Ymodem-G is nothing more than Batch Ymodem with NO handshaking.  It
should be used only when connected with an "error checking" modem.

The lack of handshaking makes Ymodem-G probably the fastest of the
protocols, but if any error creeps in, it has no way of recovering.  Don't
select Ymodem-G unless you're really adventurous.


'
HSLink

HS?Link

HS/Link is a high speed, full streaming, full-duplex, bi-directional, batch
file transfer protocol with advanced full-streaming-error-correction.
Each side of the link is allowed to provide a list of files to be sent.
Files will be sent in BOTH directions until both sides of the link are
satisfied.

HS/Link is not just another bidirectional protocol, it is also a very fast
protocol for normal downloading and uploading, incorporating some new ideas
(such as Full-Streaming-Error-Correction and Dynamic-Code-Substitution) to
make things happen a bit faster and with greater reliability.


'
