Пассивный ftp. Активный режим. Из «чаво» tmeter

  • 06.04.2019

При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключится к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

В активном режиме , когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В пассивном режиме , после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных.

Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных . В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.

Основные команды

ABOR — Прервать передачу файла
CDUP — Сменить директорию на вышестоящую.
CWD — Сменить директорию.
DELE — Удалить файл (DELE filename).
EPSV — Войти в расширенный пассивный режим. Применяется вместо PASV.
HELP — Выводит список команд, принимаемых сервером.
LIST — Возвращает список файлов директории. Список передаётся через соединение данных.
MDTM — Возвращает время модификации файла.
MKD — Создать директорию.
NLST — Возвращает список файлов директории в более кратком формате, чем LIST. Список передаётся через соединение данных.
NOOP — Пустая операция
PASV — Войти в пассивный режим. Сервер вернёт адрес и порт, к которому нужно подключиться, чтобы забрать данные. Передача начнётся при введении следующих команд: RETR, LIST и т.д.
PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
PWD — Возвращает текущую директорию.
QUIT — Отключиться
REIN — Реинициализировать подключение
RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
RMD — Удалить директорию
RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
SIZE — Возвращает размер файла
STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
SYST — Возвращает тип системы (UNIX, WIN, …)
TYPE — Установить тип передачи файла (бинарный, текстовый)
USER — Имя пользователя для входа на сервер

Полный список кодов ответов FTP сервера

100Запрошенное действие инициировано, дождитесь следующего ответа прежде, чем выполнять новую команду.
110Комментарий
120Функция будет реализована через nnn минут
125Канал открыт, обмен данными начат
150Статус файла правилен, подготавливается открытие канала
200Команда корректна
202Команда не поддерживается
211Системный статус или отклик на справочный запрос
212Состояние каталога
213Состояние файла
214Справочное поясняющее сообщение
215Выводится вместе с информацией о системе по команде SYST
220Служба готова для нового пользователя.
221Благополучное завершение по команде quit
225Канал сформирован, но информационный обмен отсутствует
226Закрытие канала, обмен завершен успешно
227Переход в пассивный режим (h1,h2,h3,h4,p1,p2).
228переход в длинный пассивный режим (длинный адрес, порт).
229Переход в расширенный пассивный режим (|||port|).
230Пользователь идентифицирован, продолжайте
231Пользовательский сеанс окончен; Обслуживание прекращено.
232Команда о завершении сеанса принята, она будет завершена по завершении передачи файла.
250Запрос прошёл успешно
257«ПУТЬ» создан.
331Имя пользователя корректно, нужен пароль
332Для входа в систему необходима аутентификация
350Запрошенное действие над файлом требует большей информации
404Данный удалённый сервер не найден
421Процедура не возможна, канал закрывается
425Открытие информационного канала не возможно
426Канал закрыт, обмен прерван
434Запрашиваемый хост недоступен
450Запрошенная функция не реализована, файл не доступен, например, занят
451Локальная ошибка, операция прервана
452Ошибка при записи файла (недостаточно места)
500Синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна)
501Синтаксическая ошибка (неверный параметр или аргумент)
502Команда не используется (нелегальный тип MODE)
503Неудачная последовательность команд
504Команда не применима для такого параметра
530Вход не выполнен! Требуется авторизация (not logged in)
532Необходима аутентификация для запоминания файла
550Запрошенная функция не реализована, файл не доступен, например, не найден
551Запрошенная операция прервана. Неизвестный тип страницы.
552Запрошенная операция прервана. Выделено недостаточно памяти
553Запрошенная операция не принята. Недопустимое имя файла.

По умолчаниюв не серверных версиях windows можно выполнить только одно подключение к удаленному рабочему столу, при этом работа текущего пользователя обязательно блокируется.


Исправляем это недоразумение.


Обязательно сохраним оригинальный файл termsrv.dll. Запустим командную строку от Администратора и выполним

copy c:\Windows\System32\termsrv.dll termsrv.dll_old

Затем смотрим вашу версию. Правый клик на файле c:\Windows\System32\termsrv.dll и выберем свойства.


Скачиваем измененный файл соответствующий вашей версии

Если хочется все исправить своими руками, то копируем свой файл termsrv.dll из папки c:\Windows\System32\ на рабочий стол. Открываете его любым hex редактором, например этим бесплатным HxD . И заменяете байты в указанной строчке.

В первой колонке значение, которое должно быть, во второй оригинальное.

Windows 7 SP1 64bit:

173C0: B8 8B
173C1: 00 87
173C2: 01 38
173C3: 00 06
173C5: 90 00
173C6: 89 39
173C8: 38 3C
173CC: 90 0F
173CD: 90 84
173CE: 90 EB
173CF: 90 C2
173D0: 90 00
173D1: 90 00
176FA: 00 01
5AD7E: EB 74
Для Windows 8.1 (64bit) заменяем целиком строку!
в v6.3.9600.16384
строчку
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
на
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

в 6.3.9600.16384 to 6.3.9600.17095
строчку
39 81 3C 06 00 00 0F 84 9E 31 05 00
на

6.3.9600.17095 to 6.3.9600.17415
строчку
39 81 3C 06 00 00 0F 84 D3 1E 02 00
на
B8 00 01 00 00 89 81 38 06 00 00 90
Воспользуемся инструментом замены с типом шестнадцатеричные значения

После замены сохраняете изменения.

Если испытываете трудности с правами доступа, то открываете свойства, вкладку безопасность, кнопка дополнительно. И меняете владельца на себя. Применяете. После этого сможете менять разрешения для групп и пользователей.



Далее останавливаете службу удаленного рабочего стола


Заменяем файл termsrv.dll на скаченный или измененный.

Еще нужно изменить значение ключа в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser на 0!

И снова запускаем службу!

Подключаемся и радуемся! Теперь локального пользователя не выкидывает из системы!

Для Windows XP
1) Редактируем файл
termsrv.dll (SP2 5.1.2600.2180) 295,424 bytes

128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termsrv.dll (SP3 5.1.2600.5512) 295,424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Заменять файл в директории C:\Windows\System32\ нужно в безопасном режиме, поскольку по умолчанию включена защита системных файлов (System File Protection). Для этого перезагрузите компьютер с зажатой F8 , выберите безопасный режим.
3) Добавить ключи реестра

EnableConcurrentSessions ”=dword:00000001

EnableConcurrentSessions ”=dword:00000001
AllowMultipleTSSessions ”=dword:00000001

4) Далее Пуск -> Выполнить, gpedit.msc. В окне редактора групповой политики Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба терминалов. Включите Ограничение количества подключений и установите количество подключений равное 3 или более.
5) Перезагружайтесь и подключайтесь!

Что такое активный режим и для чего он нужен?
Активный и Пассивный режимы это два разных вида подключения которые определяют, как вы будете подключатся к другим пользователям и порядок получения файлов.

Пассивный режим это наиболее простой в использовании и должен работать практически в любых условиях. Но за простоту приходится платить. Пассивный режим имеет ограничения при соединении (пассивные пользователи не могут подключатся к другим пассивным) и также вызывает дополнительную нагрузку на хаб, так как все связи пассивного режима идут через хаб. Это режим должен использоваться только когда невозможно использовать активный.

Сравнение

Следующая таблица показывает различия между двумя режимами соединения


Настройка активного режима

Ниже даны описания того как настроить активный режим в зависимости от топологии сети.

Топология A

Компьютер, напрямую подключенный к Интернету через “модем” (analog, ISDN, DSL, и т.д.), c динамическим или статическим IP.

В данном случае не требуется никаких дополнительных настроек, кроме включения опции Активный режим в настройках. DC++ автоматически определит ваш ip адрес, и использует любой свободный порт.

Если вы используете брандмауэр то выберите в DC++ определенный порт. В настройках брандмауэра, разрешите DC++ соединение через указанный порт.

Топология B

Компьютер как часть сети подключенной к Интернету через маршрутизатор. Компьютер имеет статичный или динамический внешний ip адрес. Технологии трансляции адресов (например NAT) не используются.


Активный режим настраивается аналогично топологии А.

Топология C

Компьютер подключенный к Интернету через маршрутизатор или шлюз которые используют технологию NAT (Network Address Translation). NAT это технология позволяющая нескольким компьютерам получать доступ в сеть через единственный ip адрес. В таком случае компьютер имеет собственный внутрисетевой ip (адреса начинающиеся на 192.168.*.*, 10.*.*.* или 172..*.*).

Домашние сети обычно используют данный вид подключения.


Настройка активного режима требует двух шагов:

* Настройка переадресации портов на маршрутизаторе/шлюзе.
* Настройка активного режима в DC++.

Настройка переадресации портов

К сожалению процесс настройки переадресации называется по разному у различных производителей маршрутизаторов. Он может называться: port mapping, virtual servers или другими синонимами. Не важно как они называются, все они используют один принцип. Его идея состоит в следующем: маршрутизатор настраивается таким образом что соединение на определенный порт на маршрутизатор (порт выбранный вами) переадресуется на конкретную машину внутри сети.

Настройка DC++

В меню “Настройки - Настройки Соединения” выберите активный режим. Введите внешний ip адрес. Введите номер порта, это должен быть порт настроенный на переадресацию в предыдущем разделе.

    активный режим - Состояние оборудования, которое включено и подсоединено к радиосети для осуществления обмена пользовательской информацией (голос или данные), также определяется как режим трафика (МСЭ Т K.49). }