XMODEM

Datenübertragung eines Telebit T2000-Modems, XMODEM-Protokoll, kein Protocol-Spoofing. Datendurchsatz ca. 145 Zeichen/Sekunde. Hörbar ist die ständige Umschaltung der Übertragungsrichtung; die Quittung eines Datenblockes von 128 Byte Länge besteht aus nur einem Byte.

Das XMODEM (gelegentlich auch X-MODEM) ist ein einfaches Sende-und-warte-ARQ-Protokoll mit einer festen Paketlänge, welches eine gesicherte Datenübertragung regelt. Es wurde 1977 von dem IBM-Vertriebstechniker Ward Christensen entwickelt und ist Public domain.

XMODEM war das erste weitverbreitete Datenübertragungsprotokoll und trug wesentlich zur Ausbreitung der Mailboxen bei. Christensen selbst richtete 1978 mit dem CBBS (Computerized Bulletin Board System) die erste Mailbox zum Austausch von Nachrichten ein. Es wird üblicherweise auf dem seriellen Protokoll implementiert.

Ursprung

Ward Christensen und Randy Suess hatten sich 1975 als Mitglieder von CACHE, einem lokalen Computerclub in Chicago, kennengelernt. Wie damals üblich nutzten sie Kompaktkassetten zur Datenspeicherung. Eine Variante, die Daten darauf zu transferieren, war es, einen 300 Baud Akustikkoppler für die Audioübertragung zum Kassettenspieler zu nutzen. Hierzu schrieb Ward Christensen im Januar 1977 ein einfaches Programm, um die Daten von der Floppy zur Kassette zu piepsen. Das Programm bildete Blöcke von 128 Byte, der Blockgröße von CP/M-Disketten, und einer einfachen Prüfsumme. Er veröffentlichte es unter dem Namen MODEM.ASM.[1]

Später schrieb Dave Jaffe ein Programm namens BYE um entfernte Nutzer auf ein CP/M-System zugreifen zu lassen und es von dort bedienen zu können. Um dabei auch Dateien zwischen den Systemen übertragen zu können, wurde MODEM so angepasst, dass es keine Statusausgaben auf der Konsole ausgab. Somit wurde für den Zeitraum des Down- oder Uploads die Telefonverbindung rein für die Dateiübertragung genutzt und nicht gleichzeitig mit den Konsolenausgaben von MODEM gestört. Diese kleine Änderung führte zum neuen Namen XMODEM und war der Startschuss für eines der damals wohl am weitesten portierten Dateiübertragungsprotokolle, da es auf fast jede Hardware-Umgebung angepasst wurde und die systemübergreifende Übertragung von binären Computerdateien ermöglichte. Letzteres löste ein großes Problem, da die Systeme sonst keinen gemeinsamen Datenaustausch ermöglichten.[2]

Funktionsweise

XMODEM arbeitet blockorientiert, die zu übertragenden Daten werden in gleich große Einheiten (Blöcke) aufgeteilt. Die Blöcke haben immer eine Größe von 132 Byte und werden gegebenenfalls mit beliebigen Zeichen aufgefüllt. Quittungen bestehen aus einem einzigen Zeichen.

Blockaufbau
OffsetLängeInhalt
[Byte]
000001ASCII-Zeichen Start Of Header (SOH, 01h)
001001Blocknummer
002001Einer-Komplement der Blocknummer
003128Daten
131001Prüfsumme. Die Prüfsumme ist hier die arithmetische Summe der Datenbytes modulo 256 und deshalb fehleranfällig; Doppelfehler an der gleichen Bitposition heben sich auf.

Die Übertragung wird durch den Empfänger angestoßen, indem er ein NAK sendet. Eine fehlerfrei empfangene Checksumme wird mit Acknowledgement (ACK, 06h) bestätigt. Bei einer Prüfsumme ungleich der berechneten Prüfsumme ist ein Fehler aufgetreten. Der Block wird mit Negative Acknowledgement (NAK, 15h) abgelehnt und dann bis zu zehnmal neu versendet. Das Ende einer Übertragung wird vom Sender mit End Of Transmission (EOT, 04h) angezeigt. Auch dieses muss mit einem ACK bestätigt werden.

Anfang der 1980er Jahre wurde die Blockgröße erweitert (XMODEM 1K) und die Zyklische Redundanzprüfung zur Fehlerprüfung eingesetzt (XMODEM CRC). Die später entwickelten YMODEM- und ZMODEM-Protokolle behoben viele Schwächen der ersten XModem-Version.

Bedeutungswandel des XMODEM

Nach seiner Spezifikation erlangte XMODEM schnell Bedeutung als einfache Möglichkeit, Dateien über serielle Verbindungen auszutauschen. Durch zwischengeschaltete Modems und analoge Telefonnetze konnten Dateien weltweit abgerufen werden. Mit der Verbreitung des Internets in den kommerziellen und privaten Sektor hinein, verlor diese Vorgehensweise in den späten 1990er Jahren ihre Bedeutung und verschwand aus der Wahrnehmung der entsprechenden Anwender. Informationen und Anwendungen, die früher in Mailboxen zu finden waren, werden heute in der Regel per HTTP abgerufen und entweder gleich am Browser gelesen bzw. als Download vom Web-Server geholt.

Weiterhin benutzt werden XMODEM sowie seine Varianten (XMODEM 1K, XMODEM CRC) und Nachfolger (YMODEM, ZMODEM) aber, um zum Beispiel Peripheriegeräte mit Systemaktualisierungen (so genannten Flash-Aktualisierungen) zu versorgen. Man schätzt hier die Einfachheit des Protokolls, das keine komplexen Betriebssysteminteraktionen erfordert, im Gegensatz beispielsweise zu FTP.

Variationen dieses Protokolls werden von einigen Unternehmen sogar dann verwendet, wenn statt der asynchronen, seriellen Schnittstelle (RS232, V.24) eine andere Technik wie USB oder der SSP-Anschluss eines Mikrocontrollers verwendet werden. Die mit Abstand häufigste Verwendung dürfte jedoch die Systemaktualisierung von Geräten sein, die ohnehin über eine serielle Schnittstelle verfügen. Dies sind zum Beispiel Modems, ISDN-Terminaladapter, einige Mobiltelefontypen oder Router.

XMODEM und Ähnliche können über die serielle Emulation des Bluetooth-Protokolls oder der IrDA-Infrarotschnittstelle verwendet werden, wo vorhanden. Dies bietet sich für die Dateiübertragung von und nach Handheld-Geräten aller Art an.

Eine Erweiterung zum XMODEM mit 32 KiB Blocklänge (XMODEM/32k) wurde 2002 von Fa. Adontec implementiert, um die Datenübertragungsrate bei fehlerfreien Hochgeschwindigkeits-Verbindungen wie ISDN oder TCP/IP-Netzen (Intranet, Internet) zu erhöhen. Eine Erweiterung mit 64 KiB Blocklänge (XMODEM/64k) wurde 2007 implementiert. Beide Erweiterungen sind rückwärtskompatibel.

Einzelnachweise

  1. MODEM.ASM. In: vintagecomputer.net. 10. Oktober 1977, abgerufen am 19. Februar 2018 (englisch).
  2. Ward Christensen, Randy Suess: The Birth of the BBS. In: Chinet. 1989, abgerufen am 18. Februar 2007.

Weblinks

Auf dieser Seite verwendete Medien

Telebit T2000 X-Modem ohne Spoofing.ogg
Autor/Urheber: Nightflyer, Lizenz: CC-BY-SA-3.0

Datenuebertragung mit dem TrailBlazer T2000 (Modem der Firma Telebit)

Die Aufnahmeserie besteht aus 5 Dateien:

Image:Telebit T2000 Anwahl, Training und Ruhelage.ogg

Das Partnermodem wird angewaehlt, eine Datenuebertragung wird nicht gestartet. Hoerbar ist die Anwahl, die Phase der Messung der Leitungsqualitaet und danach das staendige Umschalten der Uebertragungsrichtung, da keine Daten zur Uebertragung anstehen.

Image:Telebit T2000 Duplex-Betrieb.ogg

Im Duplex-Betrieb wird von beiden Richtungen ein kontinierlicher Datenstrom gesendet, der TrailBlazer speichert die Daten und sendet sie als Datenblock aus. Ein Echtzeitbetrieb ist nicht moeglich, die Verzoegerung zwischen Senden und Empfangen betraegt mehr als eine Sekunde. Der Datendurchsatz betraegt ca. 800 Zeichen/Sekunde.

Image:Telebit T2000 Simplex-Betrieb.ogg

Im Simplex-Betrieb wird nur von einer Richtung ein kontinierlicher Datenstrom gesendet, der TrailBlazer speichert die Daten und sendet sie als Datenblock aus. Ein Echtzeitbetrieb ist auch hier nicht moeglich, die Verzoegerung zwischen Senden und Empfangen betraegt mehr als eine Sekunde. Der Datendurchsatz betraegt ueber 1500 Zeichen/Sekunde.

Image:Telebit T2000 X-Modem ohne Spoofing.ogg

Datenuebertragung, X-Modem-Protokoll, kein Protocol-Spoofing. Datendurchsatz ca. 145 Zeichen/Sekunde. Hoerbar ist die staendige Umschaltung der Uebertragungsrichtung; die Quittung eines Datenblockes von 128 Byte Laenge besteht aus nur einem Byte.

Image:Telebit T2000 X-Modem mit Spoofing.ogg

Datenuebertragung, X-Modem-Protokoll, Protocol-Spoofing aktiviert. Datendurchsatz ca. 1400 Zeichen/Sekunde. Die Qittungen der empfangenen Seite werden nicht uebertragen, das Modem arbeitet fast im Simplex-Betrieb.