/ / Wie funktionieren FTP-Antworten? - FTP

wie funktionieren ftp-antworten - ftp

Ich habe die FTP-Spezifikationen gelesen und Wireshark verwendet, um die Pakete zu erfassen, die mein FTP-Client sendet / empfängt, und habe einige Fragen dazu.

Hier sind zuerst die "Verbindungsbegrüßungen" (wie der FTP-RFC sie aufruft) von meinem FTP-Server:

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 15:22. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.

Pro RFC959 # Seite-35 Wenn nach der dreistelligen Zahl ein "a" steht, bedeutet dies, dass es sich um eine mehrzeilige Antwort handelt. Als solches scheint es, dass die nachfolgenden 220-Zoll unnötig sind und dass das oben Genannte wie folgt umgeschrieben werden könnte:

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
You are user number 2 of 50 allowed.
Local time is now 15:22. Server port: 21.
This is a private system - No anonymous login
IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.

Ist das korrekt?

Gibt es auch eine Begrenzung für die Länge der Leitungen? Der RFC erwähnt "Zeilenlänge" nur einmal. Hier:

  A reply is defined to contain the 3-digit code, followed by Space
<SP>, followed by one line of text (where some maximum line length
has been specified)

Der RFC spricht jedoch nicht darüber, wie oder wanneine solche "maximale Zeilenlänge" würde angegeben. Der spezifische Anwendungsfall für diese mehrzeiligen Antworten sind STAT-Antworten, aber es scheint mir, dass dieses Beispiel ein wenig erfunden ist, da STAT-Antworten ohnehin keine neuen Zeilen enthalten, wie ich denke.

Schließlich, wie soll man wissen, wann man die Antwort erhalten hat? So funktioniert phpBB:

https://github.com/phpbb/phpbb3/blob/develop/phpBB/includes/functions_transfer.php#L885

do
{
$result = @fgets($this->connection, 512);
$response .= $result;
}
while (substr($result, 3, 1) !== " ");

Ihre Wahl von 512 erscheint willkürlich *, ignoriert jedoch vorerst ihre substr($result, 3, 1) !== " " würde auch mit den "verbindungsgrüßen" brechen, die ich früher in diesem post geschrieben habe.

  • Ich sage, es ist willkürlich, weil die Nummer 512 nur dann im RFC erscheint, wenn es um Seitenstrukturen für die diskontinuierliche Dateiübertragung geht.

Jeder Einblick wäre dankbar - danke !!

Antworten:

1 für die Antwort № 1

Sie haben Recht auf Mehrleitungsantwort. Viele Server verwenden jedoch das Format mit Codes, die zu Beginn jeder Zeile wiederholt werden. Man muss also leider beides bewältigen können.

Was die Leitungslänge betrifft, weiß ich nicht. Der phpBB-Code scheint tatsächlich nicht RFC zu folgen.


0 für die Antwort № 2

es ist dir recht.Wenn Sie jedoch nur Server und Client implementieren, die zu diesem Zeitpunkt auf Ihrem Linux-System verfügbar sind, funktioniert Ihr Code ohne 3-stellige Nr. Nicht. denn alle folgen dem rfc. also musst du dem rfc folgen.