Редактирование: UNИX, осень 2008, 11 лекция (от 10 декабря)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 41 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 59: | Строка 59: | ||
...a.8.0.b.c.f.ip6.arpa. | ...a.8.0.b.c.f.ip6.arpa. | ||
- | == Про Whois == | + | == Про Whois. == |
Адреса и подсети выдаются не абы каму. | Адреса и подсети выдаются не абы каму. | ||
Строка 123: | Строка 123: | ||
Если вы написали программу и хотите, чтобы все о ней знали, то нужно написать e-mail на '''rpc@sun.com''' и сказать об этом. | Если вы написали программу и хотите, чтобы все о ней знали, то нужно написать e-mail на '''rpc@sun.com''' и сказать об этом. | ||
- | == rpcinfo == | ||
Про утилиты, которые можно непосредственно использовать: самая главная утилита --- '''rpcinfo'''. | Про утилиты, которые можно непосредственно использовать: самая главная утилита --- '''rpcinfo'''. | ||
Она позволяет обращаться к серверу, на котором есть программа, которая использует удалённый вызов процедур, и получать с него информацию. | Она позволяет обращаться к серверу, на котором есть программа, которая использует удалённый вызов процедур, и получать с него информацию. | ||
- | |||
'''rpcinfo -p''' --- полезная опция: указываем имя хоста, по этой команде клиент подключается к удалённому серверу, запрашивает множество программ, по этим программам выдаются функции которые у них есть, с версиями и именами. Обычно там можно увидеть nfs. | '''rpcinfo -p''' --- полезная опция: указываем имя хоста, по этой команде клиент подключается к удалённому серверу, запрашивает множество программ, по этим программам выдаются функции которые у них есть, с версиями и именами. Обычно там можно увидеть nfs. | ||
Строка 151: | Строка 149: | ||
Степени распределённости бывают такие: | Степени распределённости бывают такие: | ||
- | * Централизованная сеть. Сеть, имеющая центр. Сеть, | + | * Централизованная сеть. Сеть, имеющая центр. Сеть, расчитанная на то, что есть сервер, знает обо всех клиентах и у какого что есть. И когда приходит новый клиент, он спрашивает, где есть такой-то файл; |
* Промежуточная стадия; | * Промежуточная стадия; | ||
- | * Полностью децентрализованная. Клиент как-то приходит в сеть, поиском по сети пытается найти, что ему нужно. Такие сети бывают построены на разных алгоритмах, но | + | * Полностью децентрализованная. Клиент как-то приходит в сеть, поиском по сети пытается найти, что ему нужно. Такие сети бывают построены на разных алгоритмах, но ... |
== EDonkey == | == EDonkey == | ||
Строка 160: | Строка 158: | ||
Как она устроена: по большей части это неизвестно, протокол закрытый, все реализации протокола ..., есть смутное понятие сервера и клиента. | Как она устроена: по большей части это неизвестно, протокол закрытый, все реализации протокола ..., есть смутное понятие сервера и клиента. | ||
Что творится между серверами, неизвестно. | Что творится между серверами, неизвестно. | ||
- | Клиенты есть двух типов: те клиенты, которые имеют возможность открывать соединения и слушать порт (High ID) и те, которые такой | + | Клиенты есть двух типов: те клиенты, которые имеют возможность открывать соединения и слушать порт (High ID) и те, которые такой возм. не имеют (Low ID). |
- | + | Как происходит добыча данных из edonkey: во-первых, всякий файл ищется по его хэшу. | |
- | Как происходит добыча данных из edonkey: | + | Хэш используется md4. |
- | + | Во вторых: чтобы получить файл, сервер занимается поиском, как --- неизвестно, в результате ответ ---- качай с сервера или с high id. | |
- | + | ||
Опять же неизвестно, могут ли серверы ретранслировать данные. | Опять же неизвестно, могут ли серверы ретранслировать данные. | ||
Данные можно нарезать на куски стандартного размера --- примерно 10к, ходят с хешом, можно получать распределённо. | Данные можно нарезать на куски стандартного размера --- примерно 10к, ходят с хешом, можно получать распределённо. | ||
Строка 171: | Строка 168: | ||
Например, держать у себя список клиентов и обмениваться с соседями. | Например, держать у себя список клиентов и обмениваться с соседями. | ||
В конце концов, некоторые программы могут существовать в таком режиме: получить списки клиентов и общаться только с клиентами, не трогая сервера. | В конце концов, некоторые программы могут существовать в таком режиме: получить списки клиентов и общаться только с клиентами, не трогая сервера. | ||
- | |||
Но это опять-таки чревато и неприятно, поскольку это нестандартное расширение, по которому могут договориваться разве что два экземпляра одной программы. | Но это опять-таки чревато и неприятно, поскольку это нестандартное расширение, по которому могут договориваться разве что два экземпляра одной программы. | ||
Ещё одна важная фишка: в нём каким-то образом реализован поиск на серверах, причём, судя по всему, поиска не было до первого неофициального сервера. | Ещё одна важная фишка: в нём каким-то образом реализован поиск на серверах, причём, судя по всему, поиска не было до первого неофициального сервера. | ||
Строка 180: | Строка 176: | ||
Один из них --- 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 операциях: | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
Можно попросить машину сохранить кусочек данных (если мы уже знаём её ip, порт). | Можно попросить машину сохранить кусочек данных (если мы уже знаём её ip, порт). | ||
- | Поиск ведётся следующим образом: для поиска сначала надо получить ключ, потом ищем по списку в каждом из концевых кругов, и в каждом круге примерно одинаковое количество соседей и подд. дост. надёжные. | + | Поиск ведётся следующим образом: для поиска сначала надо получить ключ, потом ищем по списку в каждом из концевых кругов, и в каждом круге примерно одинаковое количество соседей и подд. дост.ю надёжные. |
- | + | ||
Сначала ищется во внутреннем круге, находим соседа и просим найти его соседа, самых близких к данному ключу, дальше для следующего и так далее. | Сначала ищется во внутреннем круге, находим соседа и просим найти его соседа, самых близких к данному ключу, дальше для следующего и так далее. | ||
Понятно, как теперь найти машину, на которой хранится заданная битовая строчка. | Понятно, как теперь найти машину, на которой хранится заданная битовая строчка. | ||
Строка 202: | Строка 188: | ||
== bit torrent == | == bit torrent == | ||
Возник протокол где-то в 2001 году, строился он именно вокруг этой самой идеи. | Возник протокол где-то в 2001 году, строился он именно вокруг этой самой идеи. | ||
- | + | Он состоит из двух частей: чисто клиент-серверный протокол, у которого есть трекер, и есть клиенты, которые к нему подключены. | |
- | Он состоит из двух частей: | + | |
- | + | ||
- | + | ||
Общение с торрентом начинается с .torrent, который содержит два поля: всякая метаинформация, например, на какие фрагменты нарезан файл, адрес трекера, поле, которое содержит метаинформацию о файлах --- список файлов и их размер, и в торренте хранится хэш каждого кусочка (чанка). | Общение с торрентом начинается с .torrent, который содержит два поля: всякая метаинформация, например, на какие фрагменты нарезан файл, адрес трекера, поле, которое содержит метаинформацию о файлах --- список файлов и их размер, и в торренте хранится хэш каждого кусочка (чанка). | ||
Строка 213: | Строка 196: | ||
Bittorrent постоянно расширяется, и недавно запихали в него такую вещь, что некие клиенты сами являются трекерами. | Bittorrent постоянно расширяется, и недавно запихали в него такую вещь, что некие клиенты сами являются трекерами. | ||
И при этом поиск трекеров ведётся через DHT. | И при этом поиск трекеров ведётся через DHT. | ||
- | |||
- | = Экзамен = | ||
- | 17 числа будет экзамен здесь, в 6 часов. | ||
- | |||
- | Нужно посылать письмо на адрес george@po.cs.msu.su с темой Экзамен за два-три дня. | ||
- | |||
- | На uneex.ru/LecturesCMC это написано. | ||
= Конспект Kda: = | = Конспект Kda: = |