Вот читаю мануал - http://zeiss.net.ru/docs/technol/tcpip/tcp27.htm Встречаются строчки типа "сервер осуществляет активное открытие соединения данных" и т.п... не могу понять - сервер действительно коннектится к клиенту ??? А что делать если я сижу в инете через NAT ? как он до меня достучится ? Вообще не мог бы кто-нибудь в кратце пояснить как скачивается файл на уровне протокола ? или ссылку дать на какой-нибудь понятный мануал ???
Да, но только в режиме Port mode. Тогда используется Passive mode, когда сервер открывает еще один порт для соединения данных и клиент коннектиться к нему. Клиент устанавливает соединение с сервером и передает сначала команду PORT (если используется port mode) или PASV (если passive mode), а затем команду RETR, по которой сервер открывает соединение данных (зависящее от текущего режима) и передает файл через него, после чего соединение данных закрывается. http://www.rfc-editor.org/rfc/rfc959.txt
Ms Rem >Тогда используется Passive mode, когда сервер открывает еще один порт для соединения данных и клиент коннектиться к нему. Сижу на Megafon через GPRS. Внутренние айпишники типа 10.хх.хх.хх. Выпускают нас через NAT ? ... наверное! ... снаружи приконнектиться не получается просто так... Стравлю во Flash Get использовать Active Mode - используется PORT - соединение устанавливается, файл качается.... в чем фишка ? > а затем команду RETR, по которой сервер открывает соединение данных (зависящее от текущего режима) и передает файл через него Сервер у себя на PASV открывает сокет ? Как понимаю на порту 20 да ? А на PORT он коннектится на то что я ему пошлю в параметрах PORT ??? Я правильно понял ??? >http://www.rfc-editor.org/rfc/rfc959.txt Ну такие мануалы у меня тоже есть *) это полный но не очень ясный мануал *) Мне бы чего-нибудь на русском, чтобы ускорить понимание
Наверно флешгет сам переходит в passive mode при недоступности port mode. Открывает на ближайшем свободном порту в диапазоне 1025 - 16384 Да. Фиг знает, на русском кроме приведенной тобой ссылки ничего не видел. Фтп сервер писал както по рфс.
Ms Rem > Наверно флешгет сам переходит в passive mode при недоступности port mode. Нет, там список того что он серверу шлет - там отчетливо читается что то типа: Sun Oct 23 19:07:42 2005 PORT 10,24,238,23,5,121 Sun Oct 23 19:07:43 2005 200 PORT command successful. Sun Oct 23 19:07:43 2005 LIST /pub/pc/utilfile/1tox265.zip Sun Oct 23 19:07:45 2005 150 Opening ASCII mode data connection for file list. Sun Oct 23 19:07:45 2005 -rw-r--r-- 1 hubak sac 657431 Jun 15 11:07 /pub/pc/utilfile/1tox265.zip Sun Oct 23 19:07:45 2005 226 Transfer complete. Sun Oct 23 19:07:45 2005 Start Receiving Data! Sun Oct 23 19:07:45 2005 TYPE I Sun Oct 23 19:07:46 2005 200 Type set to I. Sun Oct 23 19:07:46 2005 PORT 10,24,238,23,5,123 Sun Oct 23 19:07:47 2005 200 PORT command successful. Sun Oct 23 19:07:47 2005 REST 26220 Sun Oct 23 19:07:50 2005 350 Restarting at 26220. Send STORE or RETRIEVE to initiate transfer. Sun Oct 23 19:07:50 2005 RETR /pub/pc/utilfile/1tox265.zip Sun Oct 23 19:07:51 2005 150 Opening BINARY mode data connection for /pub/pc/utilfile/1tox265.zip (631211 bytes). Что сделано не просто так... 8-) Фар тоже на Актив входит на FTP может что-то не то ? Я вообще всегда думал что клиент - это то что коннектится, а сервер - к чему... и всегда свято верил в то что клиент не должен принимать соединения *) а должен их устанавливать поясните > Открывает на ближайшем свободном порту в диапазоне 1025 - 16384 Это он мне в ответе говорт на PASV что он по IP,PORT открыл датаконекшин ? понятно. >Фиг знает, на русском кроме приведенной тобой ссылки ничего не видел. Фтп сервер писал както по рфс. Я в сети могу найти кучи ссылок на этот мануал... *-) а так же его копии ... может линк на сырцы будет ?? (тока не на WinInet) ???
В режиме port mode все наоборот, сервер конектиться к клиенту. И если соединение проходит, значит NAT у провайдера двусторонний и входящие соединения принимать можно. В ответ на PASV он говорит на каком адресе/порту он ждет поключения клиента для открытия соединения данных. Если используется команда PORT, то в ее параметрах будет ip/port на котором клиент ждет подключения сервера. Хз, нормальных сырйов фтп сервера пригодных для изучения найти так и не удалось. Везде либо VCL компоненты, либо жуткое ООП, либо просто запутаный код. Свои сорцы к сожалению дать не могу, так как проект коммерческий.
Ms Rem > значит NAT у провайдера двусторонний и входящие соединения принимать можно. Разве NAT двухсторонний )? ... откуда знает сервер о NAT ? или NAT парсит управляющее соединение FTP и подменяет адреса прозрачно для обоих ? или я чего не догоняю ?))) > Везде либо VCL компоненты ну их тоже можно, если они сырцами и не используют WinInet > либо жуткое ООП у меня жуткое ООП... если сырцы не WinInet то годятся... И еще один вопрос - есть ведь шанс получить активное соединение через SOCKS5 ? он вроде бы соединения может принимать ... или я не прав ?
Если на каждое подключение провайдер выделяет внешний IP адрес, то NAT просто транслирует внешний IP в внутрений, естественно при этом можно принимать входящие соединения. Ну это вряли. Ставь тогда Delphi 7 и разбарайся, но в тех компонентах черт ногу сломит, так как там компонент на компоненте сидит и компонентом погоняет В атаче весьма жуткий пример фтп сервера. Да, но не все реализации сокс5 это поддерживают. 1912904927__FTPServer.rar
> Если на каждое подключение провайдер выделяет внешний IP адрес, то NAT просто транслирует внешний IP в внутрений, естественно при этом можно принимать входящие соединения. Вряд ли у мегафона стока адресов у них фигова туча абонентов.... и если все так замечательно - ззачем собственно NAT с внутренними адресами ? ) > „или сервак парсит управляющее соединение FTP и подменяет адреса прозрачно для обоих ?“ Ну это вряли. Имел ввиду при маршрутизации пакетов NAT открывает у себя порт и подменяет его номера в пакетах, и свой адрес прописывает... а все что приходит в ответ - заменяет на внутренний и киает вовнутрь... вполне реальная штука... вот скажем WinRoute может блокировать определенный контент на страницах .... Outpost тоже может прозрачно баннеры вырезаь... > Ставь тогда Delphi 7 и разбарайся, но в тех компонентах черт ногу сломит, так как там компонент на компоненте сидит и компонентом погоняет А в конечном то счете они на WinInet > В атаче весьма жуткий пример фтп сервера. thanks > Да, но не все реализации сокс5 это поддерживают. Жаль ... значит только PASV... . Спасибо за ответы