Редактирование: UNИX, осень 2008, 11 лекция (от 10 декабря)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 42 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 153: Строка 153:
* Централизованная сеть. Сеть, имеющая центр. Сеть, рассчитанная на то, что есть сервер, знает обо всех клиентах и у какого что есть. И когда приходит новый клиент, он спрашивает, где есть такой-то файл;
* Централизованная сеть. Сеть, имеющая центр. Сеть, рассчитанная на то, что есть сервер, знает обо всех клиентах и у какого что есть. И когда приходит новый клиент, он спрашивает, где есть такой-то файл;
* Промежуточная стадия;
* Промежуточная стадия;
-
* Полностью децентрализованная. Клиент как-то приходит в сеть, поиском по сети пытается найти, что ему нужно. Такие сети бывают построены на разных алгоритмах, но нужно знать кого-либо из клиентов, чтобы подключиться
+
* Полностью децентрализованная. Клиент как-то приходит в сеть, поиском по сети пытается найти, что ему нужно. Такие сети бывают построены на разных алгоритмах, но ...
== EDonkey ==
== EDonkey ==
Строка 160: Строка 160:
Как она устроена: по большей части это неизвестно, протокол закрытый, все реализации протокола ..., есть смутное понятие сервера и клиента.
Как она устроена: по большей части это неизвестно, протокол закрытый, все реализации протокола ..., есть смутное понятие сервера и клиента.
Что творится между серверами, неизвестно.
Что творится между серверами, неизвестно.
-
Клиенты есть двух типов: те клиенты, которые имеют возможность открывать соединения и слушать порт (High ID) и те, которые такой возможности не имеют (Low ID).
+
Клиенты есть двух типов: те клиенты, которые имеют возможность открывать соединения и слушать порт (High ID) и те, которые такой возм. не имеют (Low ID).
-
 
+
Как происходит добыча данных из edonkey: во-первых, всякий файл ищется по его хэшу.
-
Как происходит добыча данных из edonkey:
+
Хэш используется md4.
-
* всякий файл ищется по его хэшу. Хэш используется md4.
+
Во вторых: чтобы получить файл, сервер занимается поиском, как --- неизвестно, в результате ответ ---- качай с сервера или с high id.
-
* чтобы получить файл, сервер занимается поиском, как --- неизвестно, в результате ответ ---- качай с сервера или с high id.
+
Опять же неизвестно, могут ли серверы ретранслировать данные.
Опять же неизвестно, могут ли серверы ретранслировать данные.
Данные можно нарезать на куски стандартного размера --- примерно 10к, ходят с хешом, можно получать распределённо.
Данные можно нарезать на куски стандартного размера --- примерно 10к, ходят с хешом, можно получать распределённо.
Строка 171: Строка 170:
Например, держать у себя список клиентов и обмениваться с соседями.
Например, держать у себя список клиентов и обмениваться с соседями.
В конце концов, некоторые программы могут существовать в таком режиме: получить списки клиентов и общаться только с клиентами, не трогая сервера.
В конце концов, некоторые программы могут существовать в таком режиме: получить списки клиентов и общаться только с клиентами, не трогая сервера.
- 
Но это опять-таки чревато и неприятно, поскольку это нестандартное расширение, по которому могут договориваться разве что два экземпляра одной программы.
Но это опять-таки чревато и неприятно, поскольку это нестандартное расширение, по которому могут договориваться разве что два экземпляра одной программы.
Ещё одна важная фишка: в нём каким-то образом реализован поиск на серверах, причём, судя по всему, поиска не было до первого неофициального сервера.
Ещё одна важная фишка: в нём каким-то образом реализован поиск на серверах, причём, судя по всему, поиска не было до первого неофициального сервера.
Строка 180: Строка 178:
Один из них --- Kademlia.
Один из них --- Kademlia.
В основе лежит DHT --- Distributed Hash Table.
В основе лежит DHT --- Distributed Hash Table.
- 
В чём её суть: сначала надо договориться о таких понятиях, как ID --- имя машины, Key и Value.
В чём её суть: сначала надо договориться о таких понятиях, как ID --- имя машины, Key и Value.
Договорённость первая --- это строки какой-то длины, и важно, что Id и ключи имеют равную длину.
Договорённость первая --- это строки какой-то длины, и важно, что Id и ключи имеют равную длину.
Мы определяем функцию, которая по двум id или по паре id-ключ умеет находить расстояние.
Мы определяем функцию, которая по двум id или по паре id-ключ умеет находить расстояние.
-
 
+
На этих двух предположениях строится довольно простой способ, как искать данные в сети, про которую изначально почти ничего неизвестно, есть машины, с id, каждая машина хранит списки машин для каждого бита, у которых отличие в id начинается с данного бита. Поиск строится на 4 операциях: ping (проверить, что машина жива), store и find.
-
На этих двух предположениях строится довольно простой способ, как искать данные в сети, про которую изначально почти ничего неизвестно, есть машины, с id, каждая машина хранит списки машин для каждого бита, у которых отличие в id начинается с данного бита.
+
-
 
+
-
Поиск строится на 4 операциях:
+
-
* ping (проверить, что машина жива)
+
-
* store
+
-
* find_node - искать N штук ID, самых ближних к ключу
+
-
* find_value - то же, но заодно и искать по ключу у себя
+
-
 
+
Можно попросить машину сохранить кусочек данных (если мы уже знаём её ip, порт).
Можно попросить машину сохранить кусочек данных (если мы уже знаём её ip, порт).
-
Поиск ведётся следующим образом: для поиска сначала надо получить ключ, потом ищем по списку в каждом из концевых кругов, и в каждом круге примерно одинаковое количество соседей и подд. дост. надёжные.
+
Поиск ведётся следующим образом: для поиска сначала надо получить ключ, потом ищем по списку в каждом из концевых кругов, и в каждом круге примерно одинаковое количество соседей и подд. дост.ю надёжные.
-
 
+
Сначала ищется во внутреннем круге, находим соседа и просим найти его соседа, самых близких к данному ключу, дальше для следующего и так далее.
Сначала ищется во внутреннем круге, находим соседа и просим найти его соседа, самых близких к данному ключу, дальше для следующего и так далее.
Понятно, как теперь найти машину, на которой хранится заданная битовая строчка.
Понятно, как теперь найти машину, на которой хранится заданная битовая строчка.
Строка 202: Строка 190:
== bit torrent ==
== bit torrent ==
Возник протокол где-то в 2001 году, строился он именно вокруг этой самой идеи.
Возник протокол где-то в 2001 году, строился он именно вокруг этой самой идеи.
-
 
+
Он состоит из двух частей: чисто клиент-серверный протокол, у которого есть трекер, и есть клиенты, которые к нему подключены.
-
Он состоит из двух частей:
+
-
* чисто клиент-серверный протокол, у которого есть трекер
+
-
* клиенты, которые к нему подключены
+
Общение с торрентом начинается с .torrent, который содержит два поля: всякая метаинформация, например, на какие фрагменты нарезан файл, адрес трекера, поле, которое содержит метаинформацию о файлах --- список файлов и их размер, и в торренте хранится хэш каждого кусочка (чанка).
Общение с торрентом начинается с .torrent, который содержит два поля: всякая метаинформация, например, на какие фрагменты нарезан файл, адрес трекера, поле, которое содержит метаинформацию о файлах --- список файлов и их размер, и в торренте хранится хэш каждого кусочка (чанка).

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы