Janus (protocol)

Last updated
Janus
Communication protocol
Purposefile transfer protocol
Developer(s)Rick Huebner
IntroductionDecember  1987;35 years ago (1987 -12)
Based on ZMODEM
Hardware modems

Janus is a file transfer protocol for use on bulletin board systems (BBSs). It has the relatively rare feature that it is fully bidirectional, allowing the protocol to upload and download files at the same time. It was written by Rick Huebner in 1987; Huebner had previously written a ZMODEM module for the Opus-CBBS system. [1]

Contents

Using Janus, Opus BBS systems could save time exchanging files like FidoNet message packets in both directions at the same time, which Huebner described as sending the shorter file for free. In most cases, a given system in the Fido network would download more messages than it sent back, so in practice, the result was that the reply stream was costless.

Janus was useful in settings where the upstream and downstream links were both of similar performance, which was true in the mid-1980s when most high-speed modems operated at 2,400 bit/s bidirectionally. However, the protocol was introduced almost at the same time as the rapid popularization of the USRobotics HST standard with a 9,600 bit/s download and only 300 bit/s upload, where Janus offered little or no advantage. When higher-speed bidirectional modems appeared, like v.32bis, Janus had already largely disappeared.

Details

Janus is a packet-oriented protocol like XMODEM and similar systems. In these protocols, the file is transferred in "packets" or "blocks", small portions of the file as a whole. As each packet is received it is examined for errors, and if an error is found, an error message is sent back to the sender. The sender then sends the packet again until it either succeeds or the transfer is cancelled after a certain number of errors. [2]

Janus is typical of late 1980s protocols that attempt to make better use of increasing modem speeds. XMODEM transferred only 128 bytes of data per packet, and then waited for a response from the receiver before sending the next packet. Due to the latency of the phone network, the minimum possible time to receive this acknowledgement represented a significant percentage of the time it needed to send the next packet, leading to relatively low channel usage on faster modems. [2]

The solution to this problem used in Janus was to allow the packet size to vary, from 0 to 2052 bytes per packet. With larger packets, the latency of the network represents a much smaller fraction of the time needed to send a packet. Additionally, Janus did not stop and wait for the receiver to acknowledge the reception of the packet, it simply assumed it was received correctly and immediately began sending the next packet. If there was an error, the receiver would signal this back to the sender, and the bad packet would then be re-sent as soon as the current packet was complete. [2]

The basic Janus packet structure consisted of the following pattern:

   PKTSTRT, data, PKTYPE, PKTEND, CRC

The PKTSTRT and PKTEND were unique character sequences that allowed the protocol to identify the start and end of the data section. The data section contained 0 to 2052 bytes of data, depending on the PKTYPE. The CRC was a 16-bit cyclic redundancy check, the same applied to XMODEM-CRC (and its variations). There were several different PKTYPEs that represented data packets, acks, naks and other transfer details, as well as the FNAMEPKT which sent file metadata (name, size, etc.) that other protocols handled in "packet zero". In contrast to most other protocols, Janus used a 32-bit offset within the file to identify packets, as opposed to XMODEM-derived protocols which used an internal packet number which was typically a monotonically increasing integer. [2]

An error in Janus would cause the receiver to send a BADPKT packet with the file offset to be sent back, allowing the system to send any packet out-of-order at any time. A large number of errors could be addressed by sending the RPOSPKT packet, which "rewound" the transfer to a given 32-bit address. Unlike other protocols, Janus did not have pre-defined limits on the number of failures that would cause a transfer to fail, transfers only ended when one side or the other explicitly sent a HALTPKT. [2]

The packet size in Janus was selected dynamically based on the number of transmission errors and the time to send a packet. This was the same algorithm Huebner had developed for his version of ZMODEM used in the Opus BBS system. This algorithm was later back-ported into the ZMODEM standard by Chuck Foresberg. [2]

Related Research Articles

The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network. Major internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP, which is part of the Transport Layer of the TCP/IP suite. SSL/TLS often runs on top of TCP.

UUCP is a suite of computer programs and protocols allowing remote execution of commands and transfer of files, email and netnews between computers.

ZMODEM is an inline 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. In addition to dramatically improved performance compared to older protocols, ZMODEM offered restartable transfers, auto-start by the sender, an expanded 32-bit CRC, and control character quoting supporting 8-bit clean transfers, allowing it to be used on networks that would not pass control characters.

XMODEM is a simple file transfer protocol developed as a quick hack by Ward Christensen for use in his 1977 MODEM.ASM terminal program. It allowed users to transmit files between their computers when both sides used MODEM. Keith Petersen made a minor update to always turn on "quiet mode", and called the result XMODEM.

YMODEM is a file transfer protocol used between microcomputers connected together using modems. It was primarily used to transfer files to and from bulletin board systems. YMODEM was developed by Chuck Forsberg as an expansion of XMODEM and was first implemented in his CP/M YAM program. Initially also known as YAM, it was formally given the name "YMODEM" in 1985 by Ward Christensen, author of the original XMODEM.

<span class="mw-page-title-main">Chuck Forsberg</span> American computer programmer

Charles Alton "Chuck" Forsberg developed two data transmission protocols popular in the 1990s, for uploading and downloading files from dial-up bulletin board systems. He received a Dvorak Award for Excellence in Telecommunications in 1992 for developing ZMODEM. He was also the project engineer on the Tektronix 4010-series graphics terminals.

Protocol spoofing is used in data communications to improve performance in situations where an existing protocol is inadequate, for example due to long delays or high error rates.

LeechModem was a BBS file transfer protocol client. LeechModem was compatible with protocols like XMODEM, but it would mischievously NAK the last packet and then abort the file transfer. The user had successfully downloaded the file, but the BBS would mistakenly not count the aborted file transfer against the user's download quota. The user would need to know and input the filesize before the transfer so the client would know when to abort.

SEAlink is a file transfer protocol that is backward compatible with XMODEM but features a sliding window system for improved throughput. SEAlink was written in 1986 as a part of the SEAdog FidoNet mailer written by System Enhancement Associates, creators of the famous ARC program. It was licensed with a simple "give credit" requirement, but nevertheless was not very widely used except in FidoNet mailers. SEAlink, and most other XMODEM enhancements, were quickly displaced following the introduction of ZMODEM.

Lynx is a file transfer protocol for use with modems, and the name of the program that implements the protocol. Lynx is based on a sliding window protocol with two to sixteen packets per window, and 64 bytes of data per packet. It also applies run length encoding (RLE) to the data on a per-block basis to compress suitable data.

ZMax is a file transfer protocol developed in 1990-1991 by Mike Bryeans who also developed TMODEM.

The Microcom Networking Protocols, almost always shortened to MNP, is a family of error-correcting protocols commonly used on early high-speed modems. Originally developed for use on Microcom's own family of modems, the protocol was later openly licensed and used by most of the modem industry, notably the "big three", Telebit, USRobotics and Hayes. MNP was later supplanted by V.42bis, which was used almost universally starting with the first V.32bis modems in the early 1990s.

The B protocol, or CIS B, is a file transfer protocol developed for the CompuServe Information Service, and implemented in 1981. The protocol was later expanded in the QuickB version and later the enhanced B Plus version. It was a fairly advanced protocol for its era, supporting efficient transfers of files, commands and other data as well, and could be used in both directions at the same time in certain modes. These advanced features were not widely used, but could be found in a small number of client-side packages.

<span class="mw-page-title-main">SMODEM</span> File transfer protocol

Smodem refers to a bidirectional protocol for file transfer used between modems and the DOS program in which the protocol is implemented, both of which were developed by a Finnish company named Arisoft. It was mainly used in bulletin board systems because it could transfer files in both directions at the same time and allowed users to chat with each other with AriSoft's GroupChat software. Other popular bidirectional protocols such as BiModem, HS/Link and HydraCom also offered a chat option with the operator, but not with the system's other users.

A sliding window protocol is a feature of packet-based data transmission protocols. Sliding window protocols are used where reliable in-order delivery of packets is required, such as in the data link layer as well as in the Transmission Control Protocol (TCP). They are also used to improve efficiency when the channel may include high latency.

Qmodem was an MS-DOS shareware telecommunications program and terminal emulator. Qmodem was widely used to access bulletin boards in the 1980s and was well respected in the Bulletin Board System (BBS) community. Qmodem was also known as Qmodem SST and Qmodem Pro.

<span class="mw-page-title-main">ZTerm</span> Shareware terminal emulator

ZTerm is a shareware terminal emulator for Macintosh operating system. It was introduced in 1992 for System 7 and has been updated to run on macOS. Its name comes from its use of the ZModem file transfer protocol, which ZTerm implemented in a particularly high-performance package. In contrast to the built-in macOS Terminal app, which only communicates with other programs, ZTerm only communicates with hardware serial ports.

In data networking, telecommunications, and computer buses, an acknowledgment (ACK) is a signal that is passed between communicating processes, computers, or devices to signify acknowledgment, or receipt of message, as part of a communications protocol. The negative-acknowledgement is a signal that is sent to reject a previously received message or to indicate some kind of error. Acknowledgments and negative acknowledgments inform a sender of the receiver's state so that it can adjust its own state accordingly.

FrontDoor was one of the most popular mailers in the FidoNet-compatible networks in the 1990s, acting as the physical representation of the written network node connection and mail handling standards. It was an MS-DOS-based product written by Joaquim Homrighausen. The FrontDoor system contained a Mailer, an Editor, a Terminal, a serial port device driver and configuration utilities. FrontDoor was first released in 1986.

MEGAlink is a file transfer protocol for modem-equipped microcomputers written by Paul Meiners in 1987. Like many protocols of the era, MEGAlink is an expanded version of the seminal XMODEM. While it was a relatively simple and high-performance system, it remains relatively obscure because it was overshadowed by ZMODEM, which had been released a year earlier and saw rapid uptake.

References

Citations

  1. "ZMODEM.ZIP".
  2. 1 2 3 4 5 6 Huebner 1987.

Bibliography