Kann jemand einfach die Unterschiede zwischen dem passiven FTP-Modus (PASV) und dem erweiterten passiven FTP-Modus (EPSV) erklären?
Kann jemand einfach die Unterschiede zwischen dem passiven FTP-Modus (PASV) und dem erweiterten passiven FTP-Modus (EPSV) erklären?
Antworten:
Der einzige Unterschied besteht darin, dass PORT/PASV
nur IPv4 unterstützt wird , während EPRT/EPSV
mit jedem Netzwerkprotokoll gearbeitet wird (obwohl in der Praxis nur IPv6 verwendet wird).
Die Standardbefehle PORT
(aktiv) und PASV
(passiv) im FTP-Steuerprotokoll tauschen Adress- und Portinformationen als sechs 1-Byte-Dezimalstellen aus , aus denen das andere Ende eine 4-Byte-IP-Adresse und eine 2-Byte-TCP-Portnummer rekonstruieren muss.
PORT <address[4]>,<port[2]>
PORT 132,235,1,2,24,131
Aber dann tauchten andere Protokolle auf. IPv4 sollte durch "IPng" ersetzt werden, das einige konkurrierende Ersatzvorschläge hatte (OSI CLNP, TUBA, SIP, SIPP, CATNIP - zu verschiedenen Zeiten in der Geschichte), einige mit kürzeren, längeren, sogar variablen Hostadressen. bis schließlich IPv6 mit 16-Byte-Adressen definiert wurde.
Nur mehr Bytes zu senden hätte nicht funktioniert - von Servern und Clients konnte nicht erwartet werden, dass sie das richtige Protokoll nur anhand der Adresslänge kennen. (Was ist zum Beispiel, wenn Sie ein Protokoll mit 16-Byte-Adresse + 4-Byte-Port und ein anderes mit 12-Byte-Adresse + 12-Byte-Port haben?)
Außerdem - obwohl dies vor 20 Jahren weniger wichtig war - gibt es heutzutage Millionen von NAT-Geräten im Internet, die FTP-Steuerverbindungen prüfen und vertauschen, sodass der "externe" Host nur globale IPv4-Adressen sieht, selbst wenn die "internen" Der Host hat einen lokalen RFC1918 gesendet. Auch ohne NAT überwachen Stateful Firewalls häufig die Steuerbefehle, um eine Datenverbindung ohne manuelle Regeln automatisch zuzulassen.
Dies bedeutet im Grunde, dass einfach mehr Nummern mit gesendet werden PORT
oder PASV
für viele Menschen garantiert kaputt gehen. Vielleicht würden einige Firewalls einige Adressbytes stillschweigend als Port interpretieren und den Rest stillschweigend verwerfen. andere können die Verbindung trennen oder einfach abstürzen.
Um verschiedene Probleme wie die oben genannten zu vermeiden, mussten neue Befehle für die Unterstützung mehrerer Protokolle in FTP eingeführt werden.
Im Jahr 1993 führte RFC 1639 (ursprünglich RFC 1545 ) die "lange Adresse" LPRT
undLPSV
Befehle ein, die wie PORT
& waren, PASV
aber eine variable Adresslänge hatten . Sie enthielten auch die Protokolltypkennung. (Die Syntax wurde jedoch nicht geändert - IPv6-Adresse: Port würde einfach als 21 statt als sechs Nummern gesendet.)
LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>
LPRT 4,4,132,235,1,2,2,24,131
LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162
Dies hat jedoch einige Probleme nicht behoben, z. B. die Aufforderung an einen Server, ein anderes Protokoll als für die Steuerverbindung zu verwenden. Der RFC wurde auch schnell veraltet; Als IPv6 nur ein Jahr später herauskam, konnte es nicht mit LPRT verwendet werden, da ihm keine LPRT-Protokoll-ID zugewiesen wurde (nur für die verschiedenen frühen Vorschläge).
Um dies zu beheben, RFC 2428 im Jahr 1998 aufgenommen EPRT
und EPSV
, auch bekannt als „extended - Port“ und „extended passive“ , die auch ein Verfahren hatten ein Protokoll für die Aushandlung , dass beide Ende unterstützen. Die "erweiterten" Befehle senden auch Adressen in lesbarer Form - für IPv6 bedeutet dies, dass Hexadezimal- und Doppelpunktnotation anstelle einer Reihe separater Dezimalzahlen verwendet wird.
EPRT x<protocol>x<address>x<port>x
EPRT |1|132.235.1.2|6275|
EPRT |2|1080::8:800:200C:417A|5282|
Zusammenfassend ist die IPv6-Unterstützung der einzige Unterschied.
EPSV
Antwort nicht die IP-Adresse enthält (was für eine PASV
Antwort). Dies dient zur Vermeidung häufiger Probleme, wenn der hinter einem NAT befindliche FTP-Server die externe IP-Adresse nicht kennt und den FTP-Client durch das Senden seiner internen Adresse verwirrt.
Der Unterschied zwischen aktiv und passiv ist bereits beantwortet. Extented Passive (EPSV) ist bei IPv4 und IPv6 nur passiv, da die Syntax der Antwort auf PASV spezifisch für IPv4 war und daher ein neuer Befehl für IPv6 erforderlich war. Gleiches gilt für EPTR vs. PORT im aktiven Modus. Ein etwas anderes Verhalten bei EPRT und EPSV besteht darin, dass sie nur den Port enthalten können, nicht IP und Port wie PORT und PASV. Die Datenübertragung kann also nur zwischen den Systemen erfolgen, die über die Steuerverbindung verfügen. Mit PORT und PASV ist es möglich, eine Datenverbindung zwischen anderen Systemen herzustellen (obwohl dies heute als schlechtes Design und Sicherheitsrisiko angesehen wird).