oldi

Как работает «качалка»

Георгий Филягин

Закачка файлов — одна из самых распространенных задач, с которой сталкиваются пользователи Интернета. По Сети текут нескончаемые потоки данных: музыкальные ролики, видеоклипы, объемистые тома документации, дистрибутивы программ.

Для передачи файла необходимо наличие двух сторон: сервера и клиента. Сервер — компьютер, на котором размещен файл. В процессе обмена ему отводится пассивная роль источника, а инициатором процесса и получателем файла является клиент, в нашем случае — компьютер пользователя Сети. Для того чтобы компьютеры могли выполнять указанные роли, на них устанавливается специальное программное обеспечение. Передача обычно происходит по одному из двух протоколов: FTP (File Transfer Protocol — протокол для передачи файлов) и HTTP (HyperText Transfer Protocol — протокол для передачи гипертекстовых документов). Простейшие клиентские возможности, позволяющие закачивать файлы по этим протоколам, встроены в браузер. Этих возможностей вполне достаточно для начинающего пользователя, но как только возникает задача получения большого объема данных, желательно перейти на специализированные программы-«качалки».

В чем состоит выигрыш от их использования? Во-первых, процесс управления закачками становится гораздо более грамотно организованным и более контролируемым. Качалка может работать по собственному расписанию, автоматически устанавливать и разрывать соединение после выполнения задания, вести очередь заданий и раскладывать закачанные файлы по указанным папкам. Во-вторых, качалка может применять специальные приемы, повышающие эффективность загрузки канала: использовать многозадачность и многопоточность, осуществлять поиск файла на серверах-«зеркалах» и выбирать среди них оптимальный по скорости связи. Но, пожалуй, одно из самых заметных преимуществ качалок — возможность автоматически возобновить получение данных после обрыва и восстановления связи. При этом добавление данных происходит к уже закачанной части файла.

Первым специализированным менеджером закачки была программа ReGet, разработанная в 1996 году нашим соотечественником Владимиром Романовым, программистом из Санкт-Петербурга. Консольная утилита объемом всего лишь 50 Кбайт имела именно эту ключевую возможность — восстанавливать процесс закачки после обрыва соединения. За прошедшие годы программа полностью преобразилась, и теперь качалки представляют собой целый класс программ, где насчитывается несколько десятков имен. Самые популярные из них — FlashGet (ранее известная под названием JetCar), GetRight, Go!Zila, NetVampire и вышеупомянутая ReGet.

Итак, после щелчка по ссылке, ведущей к загружаемому файлу, задание попало к менеджеру закачек и вы спокойно продолжаете скользить по Сети, в то время как ваш незаметный помощник уже приступил к работе. С какими же препятствиями приходится сталкиваться качалкам при выполнении задания и как они их преодолевают?

Зная адрес файла, который вы хотите получить, менеджер закачки запрашивает его у сервера. В первую очередь сервер проверяет наличие указанного файла, а затем, в случае необходимости, запрашивает пароль. Как правило, пароль запрашивают серверы, работающие по протоколу FTP. Вы можете указать имя для входа и пароль в настройках задания, а можете положиться на данные, генерируемые автоматически. В большинстве случаев они удовлетворят «подозрительный» сервер. Если же сервер не является публичным, а у вас нет пароля, то в доступе будет отказано.

Одновременно сервер выполняет несколько запросов, поэтому при большом количестве соединений он может ответить с задержкой или сообщить, что все свободные соединения заняты и ваш запрос не может быть обработан. Если эта стадия прошла нормально, начинается передача файла.

Случается, что в процессе передачи файла связь обрывается. Причины могут быть самые разные: отключилось питание или завис компьютер, сервер разорвал соединение или повреждена линия связи, но результат один — на локальном диске вашего компьютера находится только часть файла.

В этой ситуации менеджер закачки совершенно необходим, поскольку он не «растеряется», а автоматически попытается восстановить связь и в случае ее успешного восстановления продолжит качать файл с того места, на котором закачка была прервана. На чем построена такая возможность?

При работе по FTP-протоколу клиент передает серверу, с которого он качает файл, команду REST nnn. Большинство серверов при получении этой команды начинают передавать файл не с начала, а с позиции nnn. Единственный популярный сервер, не поддерживающий эту команду, — Microsoft IIS. Точнее, он ее поддерживает, но требует, чтобы параметр всегда был равен нулю.

При передаче данных по HTTP клиент вставляет в запрос на получение файла специальное поле («Range: bytes nnn-»). Если же сервер поддерживает докачку, он передает запрошенную часть файла. Если сервер не поддерживает такой возможности, то он просто возвращает весь файл, как при обычном запросе. В таком случае, к сожалению, приходится качать с самого начала.

Множество вопросов возникает при совместном использовании менеджеров закачек и proxy-серверов. Общая схема работы с proxy выглядит так, как показано на рисунке.

Если обрыв соединения произошел на первом участке — между клиентом и proxy-сервером, то никакой дополнительной обработки не требуется.

В случае обрыва на втором участке proxy-сервер обычно передает клиенту сообщение об ошибке, которое приклеивается в конец закачанного фрагмента файла. Если продолжить закачку, то это сообщение остается внутри файла и файл оказывается «битым».

Есть два варианта решения этой проблемы. Первый из них заключается в том, что при всех обрывах (как на первом, так и на втором участке) программа обрезает последние два килобайта закачанного файла (так, например, поступает GetRight). Этот вариант имеет несколько недостатков: во-первых, даже если мусора в конце файла нет, мы теряем два килобайта с таким трудом закачанных данных, а во-вторых, обычно сообщение об ошибке имеет меньший размер, хотя он и меняется в зависимости от сообщения об ошибке и адреса сервера.

Альтернативный способ состоит в том, чтобы попытаться при обрыве найти внутри последних двух килобайт файла строку, с которой начинается сообщение об ошибке (обычно это «HTTP/1.x» или « «<HTML>»), и обрезать точно по границе сообщения. Если такая строка не найдена, программа считает, что обрыв произошел на первом участке, и продолжает закачку. Такой способ тоже имеет несколько недостатков: например, строки, используемые для обнаружения, могут находиться внутри файла или сообщение об ошибке может начинаться с другой строки.

Именно второй способ, называемый «хитрым откатом» (smart rollback), используется в ReGet.

Теперь, зная, как работает менеджер закачки, вы можете решить, стоит ли использовать proxy-сервер в каждом конкретном случае. Однозначного ответа на этот вопрос нет, поскольку работа через proxy-сервер имеет как плюсы, так и минусы. К несомненным достоинствам стоит отнести увеличение скорости работы. К сожалению, не все proxy-серверы поддерживают докачку. Совет, полученный от разработчиков ReGet, таков: не используйте proxy-сервер для закачки больших файлов, если ваш proxy не поддерживает докачку, и обязательно используйте хитрый откат при работе с proxy.

Какие еще возможности есть у хорошего менеджера закачки? Возьмем для примера ReGet Deluxe.

Как правило, инсталляция и настройка упрощены настолько, что требуется лишь минимальное участие пользователя. В случае ReGet Deluxe необходимо только выбрать тип соединения с Интернетом — и программа автоматически оптимальным образом настраивает параметры закачки. Так же автоматически определяются настройки proxy-сервера вашего браузера.

Для старта задания достаточно одного щелчка мышью: ReGet Deluxe органично встраивается во все популярные браузеры, включая новейшие версии Microsoft Internet Explorer 6 и Netscape Communicator 6.0.

Реализованы работа по протоколам FTP и HTTP, HTTPS (защищенные серверы); закачка с онлайновых дисковых пространств (MySpace.com, iDrive.com и других): обмен файлами в локальной сети; поддержка не только базовой (открытой), но и защищенной NT challenge/response (NTLM) аутентификации.

Особое внимание уделено повышению скорости и эффективности работы. За счет многопоточности достигнуто увеличение скорости закачки в 5-40 раз. ReGet Deluxe не мешает вам одновременно с закачкой просматривать страницы в браузере. Менеджер закачки определяет активность браузера и автоматически ограничивает свой трафик. Если какая-то закачка зависнет, ReGet Deluxe отсоединится от сервера и затем соединится снова, давая ей стартовый толчок.

Встроенный MSIE Spy предназначен для отслеживания активности браузера. Он показывает реальные URL всех скачиваемых браузером файлов, которые обычно невидимы для пользователя: картинок, скриптов, баннеров, кнопок, таблиц стилей (CSS) и файлов JavaScript.

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

Программа отличается исчерпывающими настройками заданий и интерфейса, а также наличием мощного планировщика, который способен запланировать начало и приостановку закачки, запуск и закрытие программы, сеансы связи с провайдером — одним словом, практически любое действие ReGet Deluxe для запуска в определенное время, регулярно или в зависимости от другого события.

Продуманная организация данных, позволяющая легко находить закачанные файлы, — еще одна особенность хорошего менеджера закачки. В архиве ReGet Deluxe сохраняется информация обо всех файлах, которые вы скачивали, поэтому вы больше не забудете, когда и откуда вы загружали данные и где они находятся на вашем жестком диске.

Короче говоря, если вам приходится много загружать из Сети, ReGet Deluxe будет хорошим выбором. Бесплатная версия программы размещена на нашем компакт-диске.

Конечно, для описания всех особенностей работы современных менеджеров закачки нашей статьи недостаточно. На вопрос, зачем нужна качалка, мы отвечаем кратко: она экономит ваше время и деньги! Желаем вам удачной закачки!

 

Ссылка для закачки ReGet Deluxe — http://www.reget.com/redir/redir.asp?lang=default&product=dx&link=free

КомпьютерПресс 6'2001