Почему невозможен домашний FTP на Стриме

Немного устарело. Стрим сейчас поглощен МТС, но политика фильтрации трафика осталась той же. Я сам сейчас Стримом не пользуюсь, пользуюсь Корбиной – сейчас тоже поглощена Билайном, но тотальной фильтрации трафика как на Стриме у них нет, да и скорость существенно выше. Сделать полценный FTP, имея доступ в Интернет по Стриму, невозможно. Стандартный 21 порт у Стрима не доступен извне. Можно выбрать другой порт, но это не поможет.

Дело в протоколе FTP. Сервер FTP может работать в активном или пассивном режимах. В пассивном режиме работает нормально. Но режим работы работы задает клиент. В большинстве FTP клиентов по умолчанию используется активный режим, а многие клиенты в пассивном не работают вообще. Таким образом пассивный режим нельзя считать полноценным.

В активном режиме клиент открывает у себя на прослушивание порт и посылает серверу команду PORT со своим адресом и номером порта. Сервер, получив команду PORT, пытается при первой команде обмена информацией (LIST, GET и др.) установить исходящее соединение с клиентом (открыть порт на стороне клиента). Если клиент не за NAT, Proxy, Firewall (что сейчас редкость), то ему это удается и дальше все идет нормально. Но, как правило во всех вышеприведенных случаях возникают затруднения: 1 – клиент не знает своего внешнего адреса и сообщает серверу внутренний. Это еще можно попытаться побороть, заставив сервер не обращать внимания на адрес в команде PORT. Но есть более сильное затруднение: 2 – не все порты клиента доступны извне, а клиент выбирает порт, не глядя какие доступны, какие нет. Это делает практически невозможным работу FTP с такими клиентами (а их сейчас большинство). Остался последний вопрос – как же у таких клиентов работает FTP по стандарному 21 порту. Очень просто – как правило оборудование клиента “знает” заранее о существовании FTP протокола на стандартном 21 порту и производит необходимые корректировки. На на Стриме использовать стандартный порт для FTP невозможно, а при использовании других портов оборудование клиента не сможет производить корректировки для обеспечения доступности порта клиента извне.

В пассивном режиме сервер, получив команду PASV, открывает у себя порт на прослушивание и передает клиенту свой адрес и номер порта. Сервер можно заставить: 1 – узнать свой внешний адрес, 2 – выбирать номера портов не произвольно, а из заранее заданного списка. Оборудование также можно настроить на возможность доступа извне ко всем портам из списка. Таким образом в пассивном режиме FTP может работать на Стриме. Но так как у большинства посетителей FTP-клиенты настроены на активный режим, это не полноценная работа.

На последок разберем, как передаюся файлы при помощи HTTP. Процедура передачи выглядит так:

  1. В заголовок ответа добавить строку:
    "application/download"
    "Content-Disposition: attachment; filename=FileName"

    FileName – под каким именем браузер сохранит получаемый файл.
    Получив такой ответ, браузер выведет окно с предложением сохранить файл.
  2. Для использования докачки необходимо:
    1. Добавить в заголовок ответа строки:
      "Accept-Ranges=bytes"
    2. анализировать запросы на предмет наличия строки:
      "Range: bytes a-b/c"
      a – с какой позиции файла начать передавать (начиная от нулевой)
      b – на какой закончить
      с – сколько всего данных в файле
      Все значения в байтах. Строка запроса может содержать и один параметр.
    3. Перейти на указанную позицию в файле и ответить строками:
      "HTTP/1.1 206 Partial Content"Отвечает сервер. Но ему надо передать Status Code.
      "Content-Range: bytes a-b/c"
      Все значения такие же.
    4. Cкорректировать (её заполняет сервер) строку:
      "Content-Length: d"
      d = a – b

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *