Карта0
Карта1
Карта2
Карта3
Карта4
Карта5
Карта6
Карта7
Карта8
Карта9
Карта10
Карта11
Карта12
Карта13
Карта14
Карта15
Карта16
Карта17
Карта18
Карта19
Карта20
Карта21
Карта22
Карта23
Карта24
Карта25
Карта26
Карта27
Карта28
Карта29
Карта30
Карта31
Карта32
Карта33
Карта34
Карта35
Карта36
Карта37
Карта38
Карта39


Наш форум » Разное » ЖЖ » papenkin

ЖЖ LiveJournal, или Журнал Жизни

Ответ
Старый 11.12.2008, 11:42   #1 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 
papenkin


Сразу прошу не пинать, т.к. блог еще долго будет в разработке.
По задумке это будет не совсем дневник, скорее черновик. В свете последних событий, пришел к выводу, что многие люди не понимают принципов работы того, что они используют, как оно работает и пр. Это я сейчас о dc++ и торрентах. Поэтому и решил популярным языком сравнить этих зверушек)).
papenkin вне форума   Ответить с цитированием
Старый 11.12.2008, 12:00   #2 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 
Часть 1.


итак приступим...
Часть 1. Что это такое?
DC++
DС++ - это развитие протокола DC, сохраняющее топологию (т.е. есть центральный хаб и клиенты). Клиенты соединяются с хабом и должны поддерживать постоянное соединение, файлы между клиентами передаются напрямую, т.е. без участия хаба. Перед тем как файлы будут доступны для скачивания, они должны быть проиндексированы (алгоритм TTH, но об этом чуть позже). Файлы с одинаковыми хешами(индексами) могут закачиваться в несколько потоков с разных клиентов. Так же в дополнение к обмену файлами есть чат (как публичный, так и приватный), однако, обмениваться сообщениями напрямую клиенты не могут, только через хаб.
BitTorrent
BitTorrent - очень популярная и бурно развивающаяся p2p-сеть. По подсчетам [ссылку потом] 80% мирового трафика составляют именно торренты. Здесь также используется центральный узел (трекер), который координирует работу p2p-сети по специальному алгоритму (например, следит за тем, чтобы пользователи по возможности скачивали различные(!) части файлов, повышая тем самым вероятность скачивания целого файла при отключения источника или произвольного числа других клиентов). Как правило, кроме самого трекера присутствует "обертка" (форум) к нему, на которой в строгом порядке, в соответствии с правилами оформляются раздачи и хранятся файлы-дескрипторы(торрент-файлы). В торрент-файле содержатся контрольные суммы (алгоритм SHA1, чуть позже сравним с ТТН) всех кусков всех файлов в раздаче, а также информация, которая позволяет идентифицировать и контролировать пользователей (кто сколько скачал/отдал, на какой скорости и т.п.).
papenkin вне форума   Ответить с цитированием
Старый 11.12.2008, 12:26   #3 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 
Часть2.


Что удобнее для обычного пользователя?
А вот на этот вопрос нужно взглянуть с разных сторон...
Итак, представим такую ситуацию. Пользователь А захотел рашарить фильм "Х" размером 700 МБ, который хранится у него на жестком диске.
1. DC++.
Тут все просто. Либо помещаем файл в уже расшаренную директорию, либо расшариваем ту директорию, в которой файл в данный момент находится. Во втором случае, расшарить один файл из многих нельзя, только всю директорию целиком.
После этого необходимо ждать, пока программа-клиент (ApexDC, StrongDC и т.п.) прохеширует этот файл и обновит свой список файлов. Все файл доступен общественности.
2. BitTorrent.
Тут немного сложнее... Сначала программой-клиентом необходимо создать торрент-файл (аналог хеширования в dc++). После этого на форуме трекера необходимо оформить раздачу надлежащим образом, закачав туда торрент-файл. После создания темы, необходимо туда зайти, скачать свой торрент-файл и начать скачивание в ту директорию, где находится файл. После этого файл станет доступен общественности.

Как видим, в dc++ этот процесс гораздо легче - одна галочка и все.
А теперь представим ситуацию когда необходимо скачать этот фильм.
На трекере в строку поиска вводим название фильма (хоть на русском, хоть на языке оригинала), в итоге видим результаты, а также темы в котором они находятся (например, если есть одноименные фильм и мультфильм, то их сразу легко отличить). Еще пару секунд и закачка началась.
В дц вводим в строку поиска название фильма... и смотрим на тот хлам, который вывалился... Нечего скрывать, редкий пользователь хранит все данные на своем винчестере в идеальном порядке. Например, вот несколько вариантов названия одного фильма: Перевозчик, перевосчик, перевозчег, perevozchik, Transporter, perevoz4ik и т.п. Думаю суть вы поняли. далее файлы с одинаковыми хешами объединяются в одну группу и указывается количество источников. Но тут вы замечаете две группы с одним названием. Что это значит? А это значит, что фильм один и тот же, но в разных вариантах (разная продолжительность, кодеки, качество и пр.) Ну и какой из них качать? Давайте там где источников больше... Ждемс... Уфф... Вроде скачалось... Давайте скорее посмотрим новинку! Включаем... что это? Что за "О! Я! Даст ист фантастиш..."??? Ндя... Не "Перевозчик", хотя тоже неплохо)) Будем искать... (с)
В итоге не такой уж и большой минус в оформлении...

Еще стоит отметить возможность общения. Да, это здорово поболтать с другом из другого района, обеняться с ним парой шуток в главном чате, повеселив остальных... но сначала надо спросить как дела... молчит... спросим еще разок... опять молчит... хм... А! НАДО ПИСАТЬ ПО-КРУПНЕЕ, ТОГДА ЗАМЕТИТ. И правда заметил)) Эх, как же это здорово поговорить с другом. Но как напрягает искать его ответы среди бесчисленных строчек других пользователей, которые тоже хотят общаться! И в итоге, вместо приятного общения лицезреем словесную помойку нескольких сотен пользователей, многие из которых общаются в общем чате 1на1 (в смысле, в их разговоре никто больше не участвует).
Такой ли большой этот плюс? (о технической стороне далее).
papenkin вне форума   Ответить с цитированием
Старый 11.12.2008, 13:13   #4 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 
Часть 3.1.


такс... с очевидным разобрались, давайте попробуем заглянуть внутрь и понять как это работает.
DC++
Как таковой протокол отсутствует. Хаб принимает команды от клиента в текстовом виде, без шифрования (если кому интересно, во многих клиентах есть такая штука CDM-отладчик, включите ее и увидите все команды которые шныряют от клиента к хабу и обратно).
В самом начале клиент соединяться с хабом (порт 411). После этого хаб первым начинает "общение" с клиентом, посылая ему команду $Lock, в ответ клиент отсылает имя, пароль, описание, размер расшаренных файлов и пр. Тут следует отметить, что все команды в dc отсылаются в виде
Код:
 $command |
,
где | означет конец строки (кто не помнит, TCP - поточный протокол, никаких пакетов, кадров и пр.), т.е. любая команда при посылке будет занимать 1500 байт (это для витушников, для модемщиков немного по другому, т.к. они используют технологию DOCSIS, который имеет прямую поддержку протокола IP с не фиксированной длиной пакетов).
После соединения клиент часть полосы пропускания использует для принятия команд хаба, большая часть которых - чат.

Теперь давайте рассмотрим процесс поиска. Как вы уже, наверно, догадались клиент должен отправить команду хабу. но об этом чуть позже. Давайте рассмотрим процесс поиска. Кто- нибудь помнит как в настройках указывал порты TCP и UDP? Почему два протокола? Потому что с хабом клиент общается через TCP, а меж собой по UDP.
Так вот, клиент отсылает хабу запрос на поиск, хаб отправляет его всем клиентам, которые, в случае нахождения у себя этого файла, отвечают запрашивающему прямым ответом, минуя хаб. (тут есть небольшие тонкости относительно того "активный" или "пассивный" пользователь, если будет интерес, то о них я расскажу чуть позже).
Вот тут стоит остановиться...
Все дело в том, что программы-клиенты с заданным интервалом отправляют поисковые запросы с хешами, скачиваемых в данный момент файлов. Кто возьмется посчитать суммарный трафик от скажем 500 клиентов, скачивающих 2 файла каждый? т.е. регулярно отправляющих 1000 запросов всем подключившемся + посчитайте сколько съедает чат + эти 500 клиентов что-нибудь постоянно ищут. Мысль уловили? Немало пропускной способности канала потребляет эта процедура поиска. Думаете мало ищут? Запустите поиск-шпион - увидите (кстати, из-за такого принципа он и существует, любой может видеть, что ищут другие).

Уфф... устал писать. Как будет время, продолжу... материала много, если будет интерес выложу все.
ЗЫ. Замечания, поправления, вопросы и отзывы только приветствуются.

Последний раз редактировалось papenkin, 11.12.2008 в 17:06.
papenkin вне форума   Ответить с цитированием
Старый 11.12.2008, 20:20   #5 (permalink)
JaM Обратиться за помощью, с вопросом, предложением...
Администратор
 
Аватар для JaM
 
Регистрация: 30.01.2007
Адрес: 127.0.0.1
Возраст: 32
Сообщений: 2,985
Репутация: 613
Провайдер: Спарк


Классно! Особенно про скачку фильма Перевозчик понравилось.
Многие из нас не задумывались о механизмах работы клиентов файлообменных сетей. Для общего развития очень полезно. И не надо искать статьи по этой теме.
JaM вне форума   Ответить с цитированием
Старый 11.12.2008, 20:25   #6 (permalink)
Назгулище
 
Аватар для Nazgul
 
Регистрация: 21.03.2007
Адрес: Д. Песочня
Возраст: 39
Сообщений: 1,108
Репутация: 385
Провайдер: Спарк
За новинки Почетный модератор 


Цитата:
Сообщение от JaM Посмотреть сообщение
Многие из нас не задумывались о механизмах работы клиентов файлообменных сетей. Для общего развития очень полезно.
Согласен, очень позновательно.
__________________
---------------------------------------------------------------
Хорошо знать что хочешь, но ещё лучше понимать что имеешь.
---------------------------------------------------------------
Nazgul вне форума   Ответить с цитированием
Старый 11.12.2008, 22:39   #7 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 
Далее...


Сегодня был напряг с работой, голова уже не варит... Поэтому давайте отвлечемся от тонкостей работы и поговорим... обо всем))
Во-первых, давайте разберемся с тем что такое "актив" и "пассив" (это я сейчас про режим работы клиента), а заодно определимся с понятием "серые" и "белые" адреса, т.к. это почти одно и тоже.
Итак, как мы подключены к локальной сети АГ?
Рассмотрим пример "витых". Тут два варианта:
1. Сетевой кабель включен напрямую в компьютер. Т.е. из подъезда в квартиру и в компьютер. В данном случае все запросы из локальной сети обрабатывает компьютер, в т.ч. и на запрос установления соединения (в случае если порт открыт). Сетевому интерфейсу компьютера присвоен внутренний адрес сети АГ (например, 10.10.20.20), к которому другие клиенты имеют доступ (помните маршруты прописывали? как раз для того, чтобы знать как добраться до компьютера друга в другом районе).
2. Перед компьютером стоит оборудование.
Представим, что у вас дома есть еще один компьютер (брата, например). Как быть в этом случае? Поставить две сетевые карты на одном компьютере, разрешить доступ в интернет другим пользователям и наслаждаться одновременным доступом с двух компьютеров? Нет, это не путь джедая, т.к. представьте, что есть еще ноутбук (еще одну сетевуху покупать?) или вы пошли пить пиво с друзьями, а брату нужно срочно скачать реферат (два компьютера включать?). Нет. Необходимо установить роутер (маршрутизатор), тогда ему будет присвоен адрес 10.10.20.20, а два компьютера пусть будут 192.168.1.10 и 192.168.1.11, соответственно адрес шлюза 192.168.1.1 (это адрес роутера со стороны ваших компьютеров).
Как работает эта связка? Вы со своего компьютера отправляете запрос на форум. Тут следует отметить, что в передаваемом пакете кроме данных содержится адрес и порт источника, а также адрес и порт назначения.Так вот, маршрутизатор меняет адрес отправителя на 10.10.20.20, запоминает кому его надо вернуть и отправляет на 10.11.0.1 (форум). Сервер (на котором стоит форум) обрабатывает запрос и отвечает по тому адресу и порту, которые были в пакете (т.е. на ваш адрес внутри АГ). пакет приходит на маршрутизатор, который "вспоминает", меняет адрес назначения на 192.168.1.10 и отправляет на ваш компьютер. Все дальнейшее взаимодействие происходит по такому же принципу.

А теперь давайте вспомним поиск в дц. Клиент отправляет запрос на хаб, тот пересылает его всем клиентам, которые отвечают вам. Т.е. ваш компьютер отправив запрос по TCP, ожидает ответа на другом порту по UDP. В то же время роутер отправил TCP запрос,запомнил его и ждет ответа. В этот момент приходят ответы от других клиентов на совсем другой порт, который на роутере закрыт и все пришедшие пакеты отбрасываются. До вашего компьютера ничего не доходит, поэтому вы ничего и не видите в строке поиска.
Как быть? А в чем проблема? Проблема в том, что наш роутер не знает, что делать с пакетами которые приходят от других клиентов. Ну так, надо его научить. Процесс обучения называется портфорвардинг, т.е. говорим роутеру, что все пакеты которые приходят на порт скажем 30000 необходимо отправить комьютеру с адресом 192.168.1.10, поменяв там адрес назначения. А в своем клиенте ставим ручное перенаправление портов.

Итак, первый вариант подключения - актив, второй - брандмауер с ручным перенаправлением портов. А что такое пассив? Допустим, мы не научили роутер, тогда выбираем режим пассив. Как он работает: вы отправляете поисковый запрос на хаб, но в нем говорите, что клиенты должны отвечать не вам, а хабу. соединение уже установлено и хаб отправляет по нему все ответы от других клиентов. Вот так вот...
На сегодня, пожалуй, хватит. В следующий раз подробно рассмотрим механизм работы поиска и скачивания в dc...
papenkin вне форума   Ответить с цитированием
Старый 13.12.2008, 00:43   #8 (permalink)
Propovednik13
 
Аватар для Артемий
 
Регистрация: 01.12.2007
Адрес: дашки/кассимовка/первак/витая пара
Возраст: 20
Сообщений: 437
Репутация: 129
Провайдер: Мультинекс
Истинный любитель BF2 Злодей TF2 


очень познавательно......побольше таких людей .....на форуме ....
__________________
!!!!!!!!!!!!ВСЁ БУДЕТ ХОРОШО!!!!!!!!!!!

aka@ <<<PrOpOvEdNiK 13>>>@

<<Один мир - одна мечта>>.

Товарищ старшина, ваше приказание выполнено!
- А я ничего не приказывал.
- А я ничего и не делал!
Артемий вне форума   Ответить с цитированием
Старый 24.12.2008, 04:08   #9 (permalink)
Местный
 
Аватар для VlaSok
 
Регистрация: 16.03.2008
Сообщений: 1,049
Репутация: 569
Провайдер: Мультинекс


Продолжение темы планируется?
VlaSok вне форума   Ответить с цитированием
Старый 24.12.2008, 11:47   #10 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 


VlaSok, планируется, только со сроками пока неопределенность, т.к. сильно занят. В ближайшее время набросаю остаток dc++, потом за торренты. Или есть какие-то конкретные темы/вопросы?
papenkin вне форума   Ответить с цитированием
Ответ




Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С Днем Рождения, Papenkin! VALSH Дни рождения и праздники 113 22.04.2012 08:15


мальдивы для умеющих шикарно отдыхать отдых на мальдивах получите удовольствие от Мальдив. . только у нас! анализ крови норма быстро
При копировании информации ссылка на источник обязательна!

Часовой пояс GMT +4, время: 12:11.
vBulletin® Version 3.8.2.Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot
Template-Modifications by TMS