Go forward to File Transfer Control.
Go backward to Accepting a Call.
Go up to sys File.
Protocol Selection
------------------
`protocol STRING'
Specifies which protocols to use for the other system, and in which
order to use them. This would not normally be used. For example,
`protocol tfg'.
The default depends on the characteristics of the port and the
dialer, as specified by the `seven-bit' and `reliable' commands.
If neither the port nor the dialer use either of these commands,
the default is to assume an eight-bit reliable connection. The
commands `seven-bit true' or `reliable false' might be used in
either the port or the dialer to change this. Each protocol has
particular requirements that must be met before it will be
considered during negotiation with the remote side.
The `t' and `e' protocols are intended for use over TCP or some
other communication path with end to end reliability, as they do no
checking of the data at all. They will only be considered on a
TCP port which is both reliable and eight bit. For technical
details, see See t Protocol, and See e Protocol.
The `i' protocol is a bidirectional protocol. It requires an
eight-bit connection. It will run over a half-duplex link, such as
Telebit modems in PEP mode, but for efficient use of such a
connection you must use the `half-duplex' command (*note port
File::.). See i Protocol.
The `g' protocol is robust, but requires an eight-bit connection.
See g Protocol.
The `G' protocol is the System V Release 4 version of the `g'
protocol. See Big G Protocol.
The `a' protocol is a Zmodem like protocol, contributed by Doug
Evans. It requires an eight-bit connection, but unlike the `g' or
`i' protocol it will work if certain control characters may not be
transmitted.
The `j' protocol is a variant of the `i' protocol which can avoid
certain control characters. The set of characters it avoids can
be set by a parameter. While it technically does not require an
eight bit connection (it could be configured to avoid all
characters with the high bit set) it would be very inefficient to
use it over one. It is useful over a eight-bit connection that
will not transmit certain control characters. See j Protocol.
The `f' protocol is intended for use with X.25 connections; it
checksums each file as a whole, so any error causes the entire
file to be retransmitted. It requires a reliable connection, but
only uses seven-bit transmissions. It is a streaming protocol,
so, while it can be used on a serial port, the port must be
completely reliable and flow controlled; many aren't. *Note f
Protocol::.
The `v' protocol is the `g' protocol as used by the DOS program
UUPC/Extended. It is provided only so that UUPC/Extended users
can use it; there is no particular reason to select it. *Note v
Protocol::.
The `y' protocol is an efficient streaming protocol. It does error
checking, but when it detects an error it immediately aborts the
connection. This requires a reliable, flow controlled, eight-bit
connection. In practice, it is only useful on a connection that is
nearly always error-free. Unlike the `t' and `e' protocols, the
connection need not be entirely error-free, so the `y' protocol
can be used on a serial port. See y Protocol.
The protocols will be considered in the order shown above. This
means that if neither the `seven-bit' nor the `reliable' command
are used, the `t' protocol will be used over a TCP connection and
the `i' protocol will be used over any other type of connection
(subject, of course, to what is supported by the remote system; it
may be assumed that all systems support the `g' protocol).
Note that currently specifying both `seven-bit true' and `reliable
false' will not match any protocol. If this occurs through a
combination of port and dialer specifications, you will have to
use the `protocol' command for the system or no protocol will be
selected at all (the only reasonable choice would be `protocol f').
A protocol list may also be specified for a port (*note port
File::.), but, if there is a list for the system, the list for the
port is ignored.
`protocol-parameter CHARACTER STRING ...'
CHARACTER is a single character specifying a protocol. The
remaining strings are a command specific to that protocol which
will be executed if that protocol is used. A typical command is
something like `window 7'. The particular commands are protocol
specific.
The `i' protocol supports the following commands, all of which take
numeric arguments:
`window'
The window size to request the remote system to use. This
must be between 1 and 16 inclusive. The default is 16.
`packet-size'
The packet size to request the remote system to use. This
must be between 1 and 4095 inclusive. The default is 1024.
`remote-packet-size'
If this is between 1 and 4095 inclusive, the packet size
requested by the remote system is ignored, and this is used
instead. The default is 0, which means that the remote
system's request is honored.
`sync-timeout'
The length of time, in seconds, to wait for a SYNC packet
from the remote system. SYNC packets are exchanged when the
protocol is started. The default is 10.
`sync-retries'
The number of times to retry sending a SYNC packet before
giving up. The default is 6.
`timeout'
The length of time, in seconds, to wait for an incoming
packet before sending a negative acknowledgement. The
default is 10.
`retries'
The number of times to retry sending a packet or a negative
acknowledgement before giving up and closing the connection.
The default is 6.
`errors'
The maximum number of errors to permit before closing the
connection. The default is 100.
`error-decay'
The rate at which to ignore errors. Each time this many
packets are received, the error count is decreased by one, so
that a long connection with an occasional error will not
exceed the limit set by `errors'. The default is 10.
`ack-frequency'
The number of packets to receive before sending an
acknowledgement. The default is half the requested window
size, which should provide good performance in most cases.
The `g', `G' and `v' protocols support the following commands, all
of which take numeric arguments, except `short-packets' which
takes a boolean argument:
`window'
The window size to request the remote system to use. This
must be between 1 and 7 inclusive. The default is 7.
`packet-size'
The packet size to request the remote system to use. This
must be a power of 2 between 32 and 4096 inclusive. The
default is 64 for the `g' and `G' protocols and 1024 for the
`v' protocol. Many older UUCP packages do not support packet
sizes larger than 64, and many others do not support packet
sizes larger than 128. Some UUCP packages will even dump
core if a larger packet size is requested. The packet size
is not a negotiation, and it may be different in each
direction. If you request a packet size larger than the
remote system supports, you will not be able to send any
files.
`startup-retries'
The number of times to retry the initialization sequence.
The default is 8.
`init-retries'
The number of times to retry one phase of the initialization
sequence (there are three phases). The default is 4.
`init-timeout'
The timeout in seconds for one phase of the initialization
sequence. The default is 10.
`retries'
The number of times to retry sending either a data packet or
a request for the next packet. The default is 6.
`timeout'
The timeout in seconds when waiting for either a data packet
or an acknowledgement. The default is 10.
`garbage'
The number of unrecognized bytes to permit before dropping the
connection. This must be larger than the packet size. The
default is 10000.
`errors'
The number of errors (malformed packets, out of order
packets, bad checksums, or packets rejected by the remote
system) to permit before dropping the connection. The
default is 100.
`error-decay'
The rate at which to ignore errors. Each time this many
packets are received, the error count is decreased by one, so
that a long connection with an occasional error will not
exceed the limit set by `errors'. The default is 10.
`remote-window'
If this is between 1 and 7 inclusive, the window size
requested by the remote system is ignored and this is used
instead. This can be useful when dealing with some poor UUCP
packages. The default is 0, which means that the remote
system's request is honored.
`remote-packet-size'
If this is between 32 and 4096 inclusive the packet size
requested by the remote system is ignored and this is used
instead. There is probably no good reason to use this. The
default is 0, which means that the remote system's request is
honored.
`short-packets'
If this is true, then the code will optimize by sending
shorter packets when there is less data to send. This
confuses some UUCP packages, such as System V Release 4 (when
using the `G' protocol) and Waffle; when connecting to such a
package, this parameter must be set to false. The default is
true for the `g' and `v' protocols and false for the `G'
protocol.
The `a' protocol is a Zmodem like protocol contributed by Doug
Evans. It supports the following commands, all of which take
numeric arguments except for `escape-control', which takes a
boolean argument:
`timeout'
Number of seconds to wait for a packet to arrive. The
default is 10.
`retries'
The number of times to retry sending a packet. The default
is 10.
`startup-retries'
The number of times to retry sending the initialization
packet. The default is 4.
`garbage'
The number of garbage characters to accept before closing the
connection. The default is 2400.
`send-window'
The number of characters that may be sent before waiting for
an acknowledgement. The default is 1024.
`escape-control'
Whether to escape control characters. If this is true, the
protocol may be used over a connection which does not
transmit certain control characters, such as `XON' or `XOFF'.
The connection must still transmit eight bit characters
other than control characters. The default is false.
The `j' protocol can be used over an eight bit connection that will
not transmit certain control characters. It accepts the same
protocol parameters that the `i' protocol accepts, as well as one
more:
`avoid'
A list of characters to avoid. This is a string which is
interpreted as an escape sequence (see Chat Scripts.).
The protocol does not have a way to avoid printable ASCII
characters (byte values from 32 to 126, inclusive); only
ASCII control characters and eight-bit characters may be
avoided. The default value is `\021\023'; these are the
characters `XON' and `XOFF', which many connections use for
flow control. If the package is configured to use
`HAVE_BSD_TTY', then on some versions of Unix you may have to
avoid `\377' as well, due to the way some implementations of
the BSD terminal driver handle signals.
The `f' protocol is intended for use with error-correcting modems
only; it checksums each file as a whole, so any error causes the
entire file to be retransmitted. It supports the following
commands, both of which take numeric arguments:
`timeout'
The timeout in seconds before giving up. The default is 120.
`retries'
How many times to retry sending a file. The default is 2.
The `t' and `e' protocols are intended for use over TCP or some
other communication path with end to end reliability, as they do no
checking of the data at all. They both support a single command,
which takes a numeric argument:
`timeout'
The timeout in seconds before giving up. The default is 120.
The `y' protocol is a streaming protocol contributed by Jorge Cwik.
It supports the following commands, both of which take numeric
arguments:
`timeout'
The timeout in seconds when waiting for a packet. The
default is 60.
`packet-size'
The packet size to use. The default is 1024.
The protocol parameters are reset to their default values after
each call.