Re: lug-bg: NcFTP и ftp разлики
- Subject: Re: lug-bg: NcFTP и ftp разлики
- From: Peter Pentchev <roam@xxxxxxxxxxx>
- Date: Fri, 18 Jun 2004 09:10:30 +0300
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 roam@xxxxxxxxxxx roam@xxxxxxxx roam@xxxxxxxxxxx
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.
Attachment:
pgpR7uZKDupjK.pgp
Description: PGP signature
|