Passives FTP

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Passives FTP

Beitrag von Tom »

Huhu.

Ich habe einen FTP-Server entwickelt, mit Hilfe von Boris Borzics Xb2.Net. FTP ist ein ziemlich simples Protokoll, das einen Server konnektiert und auf einem bestimmten Port Kommandos sendet - Dinge wie USER, LIST, STOR, RETR usw. Bei aktivem FTP gibt es ein PORT-Kommando, mit Hilfe dessen der Client für Dateioperationen (STOR, RETR, LIST) einen weiteren Port übermittelt, der vorübergehend parallel für die eigentliche Datenübertragung geöffnet wird. In meinem Server initialisiere ich dafür einen zweiten Socket auf dem entsprechenden Port und sende/empfange einfach die Binärdaten. Soweit, so gut, funzt ganz wunderbar (wir brauchen einen eigenen FTP-Server, weil direkt auf die Benutzerdaten der App zugegriffen wird und nur bestimmte Daten und Verzeichnisse im Zugriff sein sollen, abhängig von den Benutzerdaten, außerdem erfolgt gleich eine Bearbeitung der empfangenen Daten). Das Problem dabei ist, daß für aktives FTP sehr hohe Portnummern genutzt werden, die manch eine Firewall sperrt. Zu diesem Zweck gibt es passives FTP. Hierbei übermittelt umgekehrt der Server eine Portnummer - meistens direkt neben dem Standardport 21 (also 22 oder 23), häufig die 1024. Dann stellt der Client für die Datenübermittlung eine neue Verbindung über diesen Port her. Die Frage ist nur: Wie? Muß ich einen zweiten Server aufsetzen, der auf diesem Port lauscht? Ein neuer Socket löst das Problem jedenfalls nicht; die Übertragung der Kommandos arbeitet weiterhin, aber ich komme ums Verrecken nicht an die Dateien. Any ideas?
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich habe mal hier nachgesehen http://de.wikipedia.org/wiki/File_Transfer_Protocol
steht natürlich alles aus Anwendersicht.
Ich denke du must einen Server auf dem übermittelten Port starten, den du übergeben hast. Dort werden dann wohl die Daten ankommen, eventuell noch vorher ein handshake um sicher zu gehen, dass es der richtige Rechner ist. Du solltest auf dem Port zuerst eine Art von ECHO Protokollserver starten, der dir anzeigt was kommt.
Das Problem wären übrigens nicht nur die hohen Nummern, eine gute Firewall blockt alle eingehenden Verbindungen die nicht expliziet erlaubt sind. PS was sagt Boris dazu, der hat das doch bestimmt schon öffters gehabt ?
Gruß
Hubert
Antworten