Datentransfer TFTP.COM PDF Drucken
Software - CP/M
Geschrieben von: Ralf Kästner   
Donnerstag, den 12. März 2009 um 00:00 Uhr
Mit diesem CP/M-Programm wird ein KC85 mit D004 vollwertiges Mitglied eines TCPIP-Heimnetzwerkes. Es kombiniert einen TFTP-Server und Client menügesteuert in einem Programm und dient der Datenübertragung im Netzwerk.

Eine Hauptanwendung von Netzwerken ist der sichere und schnelle Austausch von Daten zwischen Netzwerkteilnehmern und das war natürlich auch eines der Kernziele des TCPIP-Projektes.

Also sollte ein Programm zur Datenübertragung geschrieben werden und dafür war es erst einmal notwendig, sich auf ein geeignetes Netzwerkprotokoll festzulegen. Hier bot sich als Einstiegsprojekt das auf den ersten Blick unkomplizierte TFTP-Protokoll an. Mit 5 unterschiedlichen Pakettypen sah das relativ einfach aus und sollte in verhältnissmässig kurzer Zeit zu schaffen sein.

Die prinzipielle Funktion war auch nach wenigen Tagen vorhanden aber dann hat mich irgendwie "der Hafer gestochen". Mit den 4 vorhandenen TCPIP-Kanälen könnte man ja auch mal ein wenig mehr machen. Der Plan war dann der folgende:

Nach dem Start von TFTP.COM wird ein Socket immer für den Server reserviert, welcher ständig läuft und auf eingehende Anforderungen von Netzwerkteilnehmern wartet. Die anderen 3 Sockets werden dynamisch verwendet, um Dateien von Rechner zu Rechner zu übertragen, was dann auch asynchron, parallel, in zwei Richtungen und mit beliebigen Hosts ablaufen kann.
Der KC soll aber nicht nur Server spielen, sondern parallel dazu als Client bei anderen Servern Lese- bzw. Schreibanforderungen auslösen und dadurch ebenso aktiv Daten übertragen können. Die Hauptschleife des Programmes muss sich demzufolge gleichzeitig um die folgenden Hauptaufgaben kümmern:

  • Bedienung von TFTP-Server Requests anderer Netzwerkteilnehmer
  • Bedienung von TFTP-Client Requests des CP/M Benutzers
  • Handling paralleler Transfers (Start, Lesen und Senden bzw. Empfangen und Schreiben von Daten, Statusausgaben, Beendigung, Abbruch bei Timeout)
  • Handling der internen Programmfunktionen (DU: Wechsel, DIR, u.a.)

Das funktionierte bereits alles mehr oder weniger zum KC-Treffen 2008, war aber noch nicht optimiert und ziemlich träge. Die Überarbeitung stand natürlich fest im Plan und erfolgte nun in den letzten Wochen - das komplizierteste Programm hebt man sich ja immer bis zuletzt auf.

 

TFTP Server CP/M

 

TFTP CPM SERVER



So sieht das dann unter CP/M aus, wenn man TFTP.COM als Server startet. Anschliessend kann man von beliebigen anderen Netzwerkteilnehmern Daten per TFTP-Protokoll in das lokal einstellbare Verzeichnis schreiben oder von dort lesen. Der KC kann wiederum als Client mit den beiden Funktionen PUT bzw. GET und einem einstellbaren lokalen Clientverzeichnis Daten senden oder empfangen.

Die beiden Verzeichnisse des KC für Server bzw. Client sind vollkommen entkoppelt, man kann sich quer über alle Laufwerke und Userbereiche bewegen. Für beide ist auch eine getrennte Anzeige der lokalen Directory-Inhalte mit Auswahlmaske vorhanden.

Im Bild arbeitet der KC mit 3 parallelen Transfers gerade am Limit, mehr ist durch die Hardwarebeschränkungen der KCNET-Schnittstelle nicht möglich. Es ist aber auch nicht sinnvoll, selbst mit Festplatte oder auch beim Schreiben in die RAM-Floppy geht das CP/M schon merklich in die Knie aber es macht das alles klaglos mit!

Mit diesem Programm kann der D004-KC unter CP/M auch als Datenquelle für andere KC's dienen, wenn diese nicht auf Diskette oder Festplatte zurückgreifen können. Man benötigt dann natürlich auch mindestens 2 Netzwerkmodule. "Zur Not" kann man auch einen PC mit geeigneter Software dafür verwenden, siehe folgender Abschnitt.

 

TFTP Server Windows

Funktionelles Vorbild für das CP/M-Programm war "PumpKIN" von http://www.klever.net/, welches ich seit mehreren Monaten regelmässig für den Datenaustausch mit dem PC benutze. Im ersten Bild sieht man 3 laufende Transfers zum KC85 und im zweiten Bild wurde alles erfolgreich beendet:

 

TFTP Windows PumpKIN

 

TFTP Windows PumpKIN


Es gibt zwar auch noch weitere Programme aber mir hat es bis jetzt am besten gefallen. Man kann beispielsweise auch Dateien per Drag'n'Drop aus einem Explorer-Fenster in das PumpKIN-Fenster ziehen und startet damit die Sendefunktion zum letzten verwendeten Host. Darüber hinaus gestattet es viele individuelle Einstellungen und sollte sich auch mit allen Windows-Versionen vertragen, XP und Vista sind kein Problem.

Die Standardeinstellungen des Programmes (Options) passen auch ganz gut zum KC-Programm. Unter "Server -> TFTP filesystem root (download path)" kann man das PC-Verzeichnis für alle Transfers festlegen. Wenn man das Häkchen bei "Allow access to subdirectories" setzt, hat der KC-Client auch Zugriff auf existierende! Unterverzeichnisse des PC-TFTP-Root. Die einzige Veränderung, welche ich empfehle, ist die Erhöhung des Wertes "Network -> Default connection timeout" auf 60s.

Da in beiden Programmen Client und Server kombiniert sind, kann man nun sowohl mit KC oder PC auf dem jeweils anderen Rechner lesen und schreiben. Da es im Protokoll keinen DIR-Befehl für das Remote System gibt, sollten diese allerdings nicht so weit auseinanderstehen :-).

Die Übertragung erfolgt grundsätzlich in binärer Form, dem sog. Octet-Mode, mit dem UDP-Transportprotokoll. Sie ist durch die Prüfsummenkontrollen der tieferliegenden Netzwerkschichten sehr sicher, ich hatte bisher noch nie einen Fehler bei erfolgreich übertragenen Daten.

 

TFTP Client CP/M

 

TFTP CPM CLIENT


Zum schnellen Kopieren von Dateien von/auf andere Rechner per Befehl in der Kommandozeile oder für eine eventuelle Automatisierung per Batch ist ein Menüprogramm nicht geeignet. Deshalb enthält TFTP.COM für die beiden Clientfunktionen PUT und GET noch eine zweite Nutzungsmöglichkeit genau für solche Zwecke, wobei man beim Senden von lokalen Dateien per PUT auch mit Wildcards arbeiten kann - siehe Abbildung.

Da man beim Transfer einzelner Dateien sowohl einen lokalen als auch remote Dateinamen angeben kann, ist über diesen Weg auch der Zugriff auf die langen Dateinamen (ohne Leerzeichen!) anderer Betriebssysteme möglich. Der Befehl verwendet diese Namen wie eingegeben, so dass mit dem Transfer auch gleichzeitig das Umbenennnen erfolgt.

In der Kommandozeilenvariante lassen sich aktive Transfers auch jederzeit mit ESC oder CTRL+C abbrechen. Der KC räumt dann auch immer auf und speichert im Dateisystem nur erfolgreich abgeschlossene Transfers. Er überschreibt allerdings auch nie bereits vorhandene Dateien, dass muss man vorher mit einem entsprechenden CP/M Programm erledigen.

 

TFTP Client Windows / Linux / Unix

 

TFTP Windows Client TFTP.EXE


Mit Windows XP bzw. Vista (TFTP-Client muss per Windows-Setup erst nachinstalliert werden) und Linux bzw. Unix kann man auch die Konsolenprogramme der Clients verwenden, welche bereits Bestandteil des Betriebssystems sind.

Einfach mal TFTP im DOS-Fenster bzw. in der Konsole eingeben. Noch mal zur Beachtung - Dateien sind grundsätzlich im binären "Octet-Mode" zum/vom CP/M-Rechner zu übertragen! Wenn man diese Programme benutzen möchte, muss man natürlich vorher auf dem KC den TFTP-Server starten.

Die Unixe sind beim Zugriff per TFTP auf das eigene Dateisystem sehr restriktiv. Der Befehl PUT geht in der Regel sofort (wenn Public lesen darf), GET (bzw. PUT vom KC aus) aber nie. In der Manpage gibt es dazu die folgenden Angaben:

"Due to the lack of authentication information, tftpd will allow only publicly readable files to be accessed. Files may be written only, if they already exist and are publicly writable."
Man kann also mit der Standardeinstellung überhaupt nur auf Public Dateien lesend zugreifen und (über)schreiben darf man nur bereits vorhandene Dateien, wenn für Public das Schreiben der Datei erlaubt ist.
 
Man kann zwar den TFTP-Prozess durch die Angabe entsprechender Parameter aushebeln, trägt aber dann auch die dadurch entstehenden Risiken.

TFTP.COM mit einer kurzen Beschreibung und die CP/M-Quelltexte sind Bestandteile des KCNET-Paketes und befinden sich wie immer im Downloadbereich.
 
Zuletzt aktualisiert am Sonntag, den 03. Mai 2009 um 23:40 Uhr
 
Valid XHTML & CSS | Template Design ah-68 | Copyright © 2009 by >susowa<