ZMODEM
Kommunikationsprotokoll | |
Zweck | Dateitransferprotokoll |
---|---|
Entwickler (en) | Chuck Forsberg |
Einführung | 1986 |
Häfen) | Keiner |
Hardware | Modems |
Zmodem ist ein Dateitransferprotokoll entwickelt von Chuck Forsberg 1986 in a Projekt gefördert durch Telenet Um die Dateiübertragungen für ihre zu verbessern X.25 Netzwerk. Zusätzlich zur dramatisch verbesserten Leistung im Vergleich zu älteren Protokollen bot Zmodem neu startbare Transfers, automatisch vom Absender, einen erweiterten 32-Bit CRC, und Kontrollcharakter zitieren Unterstützung 8-Bit sauber Übertragungen, sodass es in Netzwerken verwendet werden kann, die keine Kontrollzeichen übergeben würden.
Im Gegensatz zu den meisten Transferprotokollen für entwickelt für Bulletin -Board -Systeme (BBSS), Zmodem basiert weder direkt auf dem Samen Xmodem. Viele Varianten von Xmodem wurden entwickelt, um einen oder mehrere seiner Mängel zu beheben, und die meisten blieben blieben rückwärtskompatibel und würde erfolgreich Überweisungen mit "klassischen" XModem -Implementierungen abschließen. Diese Liste enthält Forsbergs eigene Ymodem.
Zmodem meidete rückwärtskompatibilität, um ein radikal verbessertes Protokoll zu erzeugen. Es wurde so gut oder besser als jede der Hochleistungssorten von Xmodem, dies über Links, die zuvor überhaupt nicht funktionierten, wie X.25, oder eine schlechte Leistung wie Telebit Modems und enthalten nützliche Funktionen in wenigen oder anderen Protokollen. Zmodem wurde sehr beliebt auf Bulletin -Board -Systeme (BBS) Anfang der neunziger Jahre wurde es zu einem Standard, der so weit verbreitet war wie Xmodem.
Verbesserungen
Streaming
Im Allgemeinen zerlegen Dateiübertragungsprotokolle eine Datei in eine Reihe von Pakets, und senden Sie sie dann eins-a-Zeit an den Empfänger. Der Hauptteil des Pakets, der Nutzlast, ist eine bestimmte Anzahl von Bytes aus der gesendeten Datei. Nach der Nutzlast kommt a Überprüfung oder zyklische Redundanzprüfung (CRC), mit dem festgestellt werden kann, ob die Nutzlast korrekt empfangen wurde. Wenn das Paket korrekt empfangen wird, sendet der Empfänger eine Ack Nachricht und der Absender beginnt dann das nächste Paket zu senden.
Das Telefonsystem führt eine kleine Verzögerung ein, die als bekannt ist Latenz Das stört diesen Prozess. Auch wenn der Empfänger die sendet Ack Die Verzögerung in den Telefonleitungen bedeutet sofort, dass es immer einige Zeit vor dem Empfang des Absenders erfolgt und das nächste Paket sendet. Wie Modem Die Geschwindigkeit steigt, diese Verzögerung stellt eine immer größere Anzahl von Paketen dar, die während der Verzögerung hätte gesendet werden können, was die Verringerung der Kanaleffizienz.
XMODEM verwendete 128 Byte-Nutzlasten mit einem Drei-Byte-Header und einer Ein-Byte-Prüfsumme für insgesamt 132 Bytes pro Paket. In der Zeit von 300 BPS -Modem 1⁄10 In einer Sekunde war der Leistungsaufwand nicht signifikant. Mit zunehmender Geschwindigkeit wird das Problem problematischer; Bei 2400 BPS dauert ein Paket ungefähr 1⁄2 zu senden, also über 1⁄5 von der verfügbaren Bandbreite wird verschwendet, auf die Sie warten Acks. Bei 9600 BPS benötigt ein Paket nur 0,13 Sekunden zum Senden, also ungefähr 1⁄2 der Bandbreite wird verschwendet.
Eine Lösung für dieses Problem ist die Verwendung von a Schiebefenster. Diese Protokolle Adresslatenz, indem er dem Absender erlaubt, weiterhin eine Reihe von Paketen zu senden, ohne auf eine zu warten Ack. Die Anzahl der Pakete, die sie fortsetzen können, ist das "Fenster", das in den meisten Implementierungen in der Regel zwischen zwei und sechzehn Paketen lag. In den frühen 1980er Jahren erschien eine Reihe neuer Versionen von Xmodem mit Schiebernfenster.
Schiebefenster sind nützlich für Latenzen in der Reihenfolge mehrerer Paketlängen, was für Xmodem auf herkömmlichen Telefonleitungen der Fall ist. Es reicht jedoch nicht aus, längere Latenzen in Übersee -Telefonanrufen oder X.25 -Dienste wie z. PC -Verfolgung, wo sich die Latenzen in der Größenordnung einer Sekunde oder länger befinden. In anderen Fällen, in denen der Rückwärtskanal viel langsamer war als der Sending, wie dies der Fall war Telebit oder US -Robotik Modems, sogar die kleine Anzahl von AckS könnte den Rückgabemanal überwältigen und die Übertragung innehalten.
Zmodem befasste sich mit diesen Problemen, indem er die Notwendigkeit beseitigte AckS überhaupt, damit der Absender Daten kontinuierlich senden kann, solange der Empfänger keine Fehler erkannte. Nur NakS musste gesendet werden, wenn und nur wenn es ein Problem gab. Da Zmodem häufig bei Links mit integrierter Fehlerkorrektur wie X.25 verwendet wurde, sendete der Empfänger häufig keine einzige Nachricht an den Absender zurück. Infolgedessen würde das System die gesamte Datei in einem kontinuierlichen Strom senden, und Zmodem bezeichnete sich als "Streaming -Protokoll".
Die Leistung von Zmodem wurde gegenüber früheren gemeinsamen Protokollen so verbessert, dass es im Allgemeinen auch spezielle Protokolle ersetzte wie Ymodem-G, die überhaupt keine Fehlerkorrektur enthielt und stattdessen auf fehlerfreie Links stützte, die von den Modems verwaltet wurden. Obwohl Ymodem-G schneller war, machte das Fehlen anderer Merkmale wie neustartbare Transfers weniger attraktiv.
Neu starten
XMODEM und die meisten darauf basierenden Protokolle verwalteten Paketreihenfolge durch Präfix der Daten mit einer Paketnummer von 1 bis 255. Die Fensterversionen verwendeten diese Paketnummer, um anzuzeigen, welche Pakete ordnungsgemäß empfangen wurden, oder eine Angabe, die dies nicht hatte. Da die Pakete 128 Bytes lang waren, bedeutete dies die maximale Datenmenge, die übertragen werden konnten, bevor die überrollten Paketnummern 32 kb betrug.
Zmodem ersetzte die Paketnummer durch den tatsächlichen Speicherort in der Datei, angegeben durch eine 32-Bit-Nummer. Dies erlaubte es zu senden Nak Nachrichten, die die Übertragung auf den Ausfallspoint wieder verlangen, unabhängig davon, wie lange die Datei dauern kann. Das gleiche Merkmal wurde auch verwendet, um Transfers neu zu starten, wenn sie fehlgeschlagen sind oder absichtlich unterbrochen wurden. In diesem Fall würde der Empfänger nachsehen, wie viele Daten zuvor empfangen wurden, und dann eine Senden eines Nak Mit diesem Ort löst der Absender automatisch von diesem Punkt an.
Auto-Start
Automatisch vereinfachtes Management durch automatische Start durch den Start der Übertragung des Sendungsgeräts. Zuvor musste der Benutzer zuerst die Datei vom Absender anfordern, sie in einen "wartenden" Status platzierten, dann zu ihrem lokalen Programm zurückkehren und einen Befehl aufrufen, um die Übertragung zu starten. Mit Auto-Transfer forderten sie einfach die Datei an, der Absender würde dann die Übertragung im Programm des Benutzers automatisch auslösen.
Variationen
Eine Reihe von modifizierten Versionen von Zmodem erschien. Zedzap war eine Variante von Zmodem mit 8 KByte-Blöcken, um eine bessere Leistung für Hochgeschwindigkeitsmodems zu erzielen. Leechzmodem war eine schelmische Zmodem -Variante (unter ähnlichen Xmodem- und Ymodem -Derivaten), die betrogen BBS Quoten herunterladen. Eine rückwärts kompatible Erweiterung von Zmodem mit 32 KByTE- und 64 KBYTE-Blocklängen wurde von AdonTEC in den Jahren 2002 und 2007 erstellt, um die Leistung bei fehlerfreien Verbindungen mit hohen Geschwindigkeiten wie ISDN- oder TCP/IP-Netzwerken zu erhöhen.
Die bemerkenswertesten Zmodem -Implementierungen stammten von Chuck Forsberg's Omen Technology, Inc., darunter DSZ (DOS Send Zmodem), GSZ (grafische Send -Zmodem) und die allgegenwärtige (l) RZSZ für UNIX -Varianten.
In aktueller Zeit die Entwickler von Synchronet haben eine moderne X/Y/Zmodem -Implementierung mit dem Namen sexyz erstellt, die lose auf dem ZMTX/ZMRX -Paket basiert, das nativ auf Windows- und UNIX -Varianten ausgeführt wird, längere Dateinamen und schnellere, zuverlässigere Datenübertragungen unterstützt. Die Zmodem -Implementierung von Sexyz wurde ebenfalls in das Syncterm -Projekt aufgenommen. Synchronet, sexyz und syncterm sind alle Open-Source-Projekte, plattformübergreifende Projekte.
Forsberg selbst sammelte eine Reihe von Verbesserungen in Zmodem-90. Das erste davon ist Mobyturbo, der die Kontrolle zitierte, um die Leistung weiter zu verbessern, etwa 15%. Selbst in Netzwerken, die Steuerzeichen "essen", kann ZMODEM-90 darauf zugeschnitten werden, nur die Charaktere zu zitieren, die das Netzwerk tatsächlich isst, im Gegensatz zu jedem möglichen. Eine ähnliche Verbesserung ermöglicht es Zmodem-90, in 7-Bit-Netzwerken zu arbeiten, während frühere Protokolle (mit der bemerkenswerten Ausnahme von Kermit) hatte alle 8 Bits zu einem oder anderen Grad gefordert. Schließlich enthält Zmodem-90 eine Basis Kodierung der Lauflänge Kompressionssystem zur weiteren Verbesserung der Leistung bei unkomprimierten Dateien.
Einschränkungen
- Einige der Zmodem-Pakete (z. B. Zack, ZRPOS) setzen einen Byte-Offset in die übertragene Datei als 32-Bit-Unsigned Ganze ein. Dieses Entwurf begrenzt die Machbarkeit von Zmodem, um nur zuverlässige Dateien, die unter 4 GB groß sind, zuverlässig zu übertragen.
- Obwohl das Protokoll dies zulassen könnte, kann die Referenz (L) RZSZ-Implementierung keine beliebigen Nicht-Kontroll-Zeichen (z. B. '~') codieren, die häufig von TCP/IP-Verbindungsprogrammen wie Telnet und SSH als Client-Seite "Terminal Escape" verwendet werden. Figuren. Benutzer müssen die Terminal -Escape -Funktion deaktivieren, um zuverlässige Übertragungen über diese Art von Links zu erzielen, z. ssh -e keine user@hostname.
Verweise
- Das Zmodem Inter Application Dateiübertragungsprotokoll
- Synchronet External X/Y/Zmodem (Sexyz) Dateitransferprotokolltreiber