- XModem
-
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.
„XModem“ kürzt „Data eXchange by Modem“ ab, was auf die Möglichkeit hinweist, serielle Leitungen per Modem und analogem Telefonnetz beliebig zu „verlängern“.
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: Das ASCII-Zeichen Start Of Header (SOH, hex01) (1 Byte), Blocknummer (1 Byte), Einer-Komplement der Blocknummer (1 Byte), Daten (128 Byte), Prüfsumme (1 Byte).) 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, hex06) bestätigt. Bei einer Prüfsumme ungleich der berechneten Prüfsumme ist ein Fehler aufgetreten. Der Block wird mit Negative Acknowledgement (NAK, hex15) abgelehnt und dann bis zu zehnmal neu versendet. Das Ende einer Übertragung wird vom Sender mit End Of Transmission (EOT, hex04) 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 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 kb 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 kb Blocklänge (XMODEM/64k) wurde 2007 implementiert. Beide Erweiterungen sind rückwärtskompatibel.
Weblinks
- XModem/YModem protocol reference, Edited by Chuck Forsberg (englisch)
- The ADONTEC® XMODEM/32k and XMODEM/64k extensions (englisch)
Wikimedia Foundation.