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

Традиционно для их передачи используют файлообменные сервисы, вроде Ex.ua или RapidShare. Такая передача данных неэффективна, потому что создает ненужное промежуточное звено: прежде чем файл можно будет скачать, его нужно загрузить на сервер. Если файл очень большой, то его загрузка может занять приличное время. И это даже без учета ограничений скорости исходящих соединений — а большинство интернет-провайдеров ограничивают скорость так называемого исходящего траффика. На практике это значит, что файл, который скачивается 10-15 минут, будет загружаться минут 40.

Можно передать файл через Skype. В таком случае файл передается непосредственно от отправителя получателю, что существенно ускоряет процесс. Но в случае обрыва соединения нужно начинать процесс заново. Кроме того, как только отправитель покидает сеть, файл становится недоступен для загрузки, даже если некоторые участники Skype-чата уже успели его скачать.

Для решения всех этих проблем и был придуман протокол BitTorrent. За свою историю он прилично оброс скандалами и слухами, и сейчас ассоциируется скорее с медиапиратством, чем с передачей файлов. Причина банальна: с его помощью удобно передавать большие объемы информации. Это и способствовало его распространения в среде медиапиратов, ведь в 2001 году (когда протокол был придуман) передача 1 Гб занимала гораздо больше, чем 20 минут.

Техническая справка

BitTorrent — пиринговый сетевой протокол для кооперативного обмена файлами через Интернет.

Статья о BitTorrent на Википедии

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

Статья о пиринговых сетях на Википедии

Как работает BitTorrent

Чтобы лучше понять принцип работы, давайте сначала разберемся с действующими лицами. Понятно, что есть отправитель и получатель — это конечные пользователи. У каждого из них есть torrent-клиент — программа, умеющая работать с протоколом BitTorrent, которую они установили на свой компьютер. Наконец, есть torrent-трекер — сервер, который помогает отправителям и получателям находить друг друга.

Итак, как же работает передача файлов в BitTorrent? Используя свой torrent-клиент, отправитель создает специальный torrent-файл — своеобразное оглавление всех передаваемых данных. В момент создания файла torrent-клиент регистрирует его на одном или нескольких torrent-трекерах. В момент регистрации отправитель автоматически становится сидером — источником, где передаваемые данные есть в полном объеме. Далее отправитель передает этот файл получателю. Сам torrent-файл совсем небольшой, поэтому передать его можно любым удобным способом, например через Skype или по почте. Получатель открывает torrent-файл спомощью своего torrent-клиента, и тот запрашивает у torrent-трекера список сидеров. В этот момент получатель становится личером — источником, где передаваемых данных нет, либо они есть не в полном объеме. Torrent-клиент устанавливает соединение со всеми доступными сидерами и начинает скачивать файл.

Файлы скачиваются маленькими частями в произвольном порядке. Когда все части скачаны, они объединяются в конечный файл. Если одни и те же данные скачивает более одного человека, то у каждого из них эти части будут скачиваться в разном порядке. Изюминка протокола заключается в том, что личеры скачивают данные не только у сидеров, но и друг у друга. Как только личер скачал хотя бы одну часть, он начинает отдавать ее другим личерам. А когда личер скачал все данные и получил готовый файл — он сам становится сидером. В этот момент отправитель данных может более не участвовать в процессе. Строго говоря, отправитель может не участвовать в процессе с момента, когда каждая часть данных есть хотя бы у одного из получателей.

Благодаря распределенной схеме передачи данных, скорость их передачи растет с ростом количества источников. Более того, если сидер и личер находятся внутри одной локальной сети, то и скорость передачи данных между ними гораздо выше.

Как передать файл через BitTorrent

Передавать данные будем спомощью программы uTorrent. Это один из самых популярных и удобных torrent-клиентов который, к тому же, занимает мало места.

Для начала откройте программу и выберите пункт «Создать новый торрент...» в меню «Файл». Откроется диалоговое окно создания torrent-файла.

Экран создания torrent-файла

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

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

Статус загрузки данных: объем данных, сколько данных загружено, сколько доступно и какая скорость передачи

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

 

При всех недостатках процесса создания и передачи torrent-файла, сама техника остается наиболее эффективной для файлов от 1 Гб и выше. Особенно если учитывать ограничения большинства провайдеров на скорость отправки файла в интернет.