Поясните мне про FTP протокол

Тема в разделе "WASM.NETWORKS", создана пользователем Codeblight, 23 окт 2005.

  1. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    Вот читаю мануал - http://zeiss.net.ru/docs/technol/tcpip/tcp27.htm

    Встречаются строчки типа "сервер осуществляет активное открытие соединения данных" и т.п... не могу понять - сервер действительно коннектится к клиенту ??? А что делать если я сижу в инете через NAT ? как он до меня достучится ?

    Вообще не мог бы кто-нибудь в кратце пояснить как скачивается файл на уровне протокола ? или ссылку дать на какой-нибудь понятный мануал ???
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Да, но только в режиме Port mode.





    Тогда используется Passive mode, когда сервер открывает еще один порт для соединения данных и клиент коннектиться к нему.





    Клиент устанавливает соединение с сервером и передает сначала команду PORT (если используется port mode) или PASV (если passive mode), а затем команду RETR, по которой сервер открывает соединение данных (зависящее от текущего режима) и передает файл через него, после чего соединение данных закрывается.



    http://www.rfc-editor.org/rfc/rfc959.txt
     
  3. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    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



    Ну такие мануалы у меня тоже есть *) это полный но не очень ясный мануал *) Мне бы чего-нибудь на русском, чтобы ускорить понимание :)
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Наверно флешгет сам переходит в passive mode при недоступности port mode.





    Открывает на ближайшем свободном порту в диапазоне 1025 - 16384





    Да.





    Фиг знает, на русском кроме приведенной тобой ссылки ничего не видел. Фтп сервер писал както по рфс.
     
  5. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    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) ???
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    В режиме port mode все наоборот, сервер конектиться к клиенту. И если соединение проходит, значит NAT у провайдера двусторонний и входящие соединения принимать можно.





    В ответ на PASV он говорит на каком адресе/порту он ждет поключения клиента для открытия соединения данных.

    Если используется команда PORT, то в ее параметрах будет ip/port на котором клиент ждет подключения сервера.





    Хз, нормальных сырйов фтп сервера пригодных для изучения найти так и не удалось. Везде либо VCL компоненты, либо жуткое ООП, либо просто запутаный код. Свои сорцы к сожалению дать не могу, так как проект коммерческий.
     
  7. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    Ms Rem



    > значит NAT у провайдера двусторонний и входящие соединения принимать можно.



    Разве NAT двухсторонний :))? ... откуда знает сервер о NAT ? :) или NAT парсит управляющее соединение FTP и подменяет адреса прозрачно для обоих ? или я чего не догоняю ?)))



    > Везде либо VCL компоненты



    ну их тоже можно, если они сырцами и не используют WinInet



    > либо жуткое ООП



    у меня жуткое ООП... если сырцы не WinInet то годятся...





    И еще один вопрос - есть ведь шанс получить активное соединение через SOCKS5 ? он вроде бы соединения может принимать ... или я не прав ?
     
  8. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Если на каждое подключение провайдер выделяет внешний IP адрес, то NAT просто транслирует внешний IP в внутрений, естественно при этом можно принимать входящие соединения.





    Ну это вряли.





    Ставь тогда Delphi 7 и разбарайся, но в тех компонентах черт ногу сломит, так как там компонент на компоненте сидит и компонентом погоняет :)





    В атаче весьма жуткий пример фтп сервера.





    Да, но не все реализации сокс5 это поддерживают.

    [​IMG] 1912904927__FTPServer.rar
     
  9. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    > Если на каждое подключение провайдер выделяет внешний IP адрес, то NAT просто транслирует внешний IP в внутрений, естественно при этом можно принимать входящие соединения.



    Вряд ли у мегафона стока адресов :) у них фигова туча абонентов.... и если все так замечательно - ззачем собственно NAT с внутренними адресами ? :))



    > „или сервак парсит управляющее соединение FTP и подменяет адреса прозрачно для обоих ?“

    Ну это вряли.



    Имел ввиду при маршрутизации пакетов NAT открывает у себя порт и подменяет его номера в пакетах, и свой адрес прописывает... а все что приходит в ответ - заменяет на внутренний и киает вовнутрь... вполне реальная штука... вот скажем WinRoute может блокировать определенный контент на страницах .... Outpost тоже может прозрачно баннеры вырезаь...



    > Ставь тогда Delphi 7 и разбарайся, но в тех компонентах черт ногу сломит, так как там компонент на компоненте сидит и компонентом погоняет :)



    А в конечном то счете они на WinInet :derisive:



    > В атаче весьма жуткий пример фтп сервера.



    thanks



    > Да, но не все реализации сокс5 это поддерживают.



    Жаль ... значит только PASV... .





    Спасибо за ответы :)
     
  10. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    На вининет можно писать только FTP клиент, а для фтп сервера там нет никаких функций.