On Thu, Jun 17, 2004 at 10:03:11AM +0300, Vasil Kolev wrote: > На чт, 2004-06-17 в 09:25, Nickolay Kolev записа: > > Здравейте, > > > > Имам проблем с нцфтп. Не мога ни да качвам ни да свалям файлове от един > > определен сървър... и листинг даже не иска да ми дава, казва само > > > > ncftp / > passive > > passive on > > ncftp / > dir > > Passive mode refused. > > List failed. > > > > Пробвах passive mode on и passive mode off и той си ги превключва, но > > резултатът е същият. > > > > Странното е, че ако ползвам нормалната фтп команда с passive mode on, > > сървърът си работи като пич, свалям и качвам, колкото ми душа иска, > > листинги също има. > > > > За съжаление, нямам информация за това, какъв е сървърът, някаква > > хостинг компания. Та затова питам само информативно, къде би могла да > > се крие голямата разлика в двата клиента? > > Аз бих пуснал един ethereal, бих погледнал точно какво си говорят > сървъра и клиента, и сигурно щях да си изясня нещата... В общи линии май > ти трябва само CONTROL connection-а (който върви на порт 21).
Ммм.. май не е точно така :) Разликата между active и passive mode FTP е, че при активния режим, когато клиентът реши да отвори data connection (а при NLST или другите форми на dir/ls ти трябва и data connection), той изпраща на сървъра команда PORT, в която указва своя адрес и някакъв порт, към който сървърът да се върже. При пасивния режим клиентът изпраща първо команта PASV или EPSV (extended passive mode), след което изпраща команда PORT с нулеви стойности за адрес и порт, и сървърът в отговора си дава адрес и порт, на които след това *клиентът* се връзва към него. Идеята е, че ако клиентът е зад NAT, сървърът просто няма как да отвори TCP връзка, която да стигне до него, затова трябва клиентът да се върже към сървъра. Това с нямането как е по принцип.. на практика повечето NAT софтуер има възможности да прихваща PORT команди, да отваря собствен listening socket, да пренаписва PORT командата със своя адрес и порт, и после да прави relaying, когато сървърът реши да се върже. Така че.. data connection ти трябва винаги, и за прехвърляне на файлове, и за list; разликата между активния и пасивния режим е, че при активния режим сървърът се връзва за клиента, а при пасивния - клиентът към сървъра. Активният режим се използва по подразбиране от създаването на FTP протокола и първите клиенти и сървъри до съвсем скоро, когато станаха много случаите на NAT и някои FTP клиенти започнаха да ползват пасивен режим, ако не е указано друго. Това обаче все пак не хвърля никаква светлина върху това защо с един FTP клиент пасивният режим работи, а с друг не... за тази част съм съгласен с идеята на Васил за ползване на някакъв вид network traffic analyzer като Ethereal, за да се види точно какви команди подава единият клиент и какви - другият. Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 This sentence no verb.
pgpkZeiKTGGfG.pgp
Description: PGP signature
