doldonius: (Default)
[personal profile] doldonius
Просто собираю мысли в кучку.

Что есть и к чему стремиться:

DNSP2PNS
Иерархическая система.Узел считается "хозяином" захваченных им доменов; в остальном система плоская.
Авторитетные серверы для доменов известны только серверам более высокого уровня.Все знают всех.
Имена в доменах, серверы которых недоступны, узнать невозможно.Каждый узел хранит возможно полную копию всей таблицы имен-адресов.
Существует платная система регистратур, которые могут в любой момент отменить делегирование.Регистрация домена осуществляется бесплатно, явочным порядком; пока узел ведет себя прилично, никто у него домен не отнимет.
Существуют корневые серверы, без которых вся система быстро перестанет работать.Более-менее актуальную информацию можно получить, пока жива хотя бы часть пиров.
Доменные имена продают и покупают.Тоже возможно, но заведомые сквоттеры рискуют угодить в черный список.
Домен освобождается тогда, когда истекает срок оплаты.Домен освобождается, если самой свежей записи исполнилось, допустим, 32 миллиона секунд.
Записи считаются валидными в течение установленного времени. Пока оно не истекло, конечные пользователи могут получать устаревшие данные.Запись считается валидной год с лишним, но изменения попадают к пирам так быстро, как только возможно.
Нагрузка на серверы пропорциональна их рангу. Корневые загружены по самые уши.Пиры стараются распределить нагрузку.


Еще подумать:

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


А еще вредно много писать на баше. Так и норовлю вместо "</tag>" ляпнуть "<gat>".

Date: 2012-03-07 09:23 pm (UTC)
link01: (Default)
From: [personal profile] link01
М-да. Если кто и занимался проблемой обеспечения уникальности имен, то я пока этого не нашел.

В общем, мысль такая.

1) Каждый хост имеет уникальный случайный ID.
2) Сам по себе ID ценности не имеет; если мы впервые подключились к сети и узнали, что кто-то уже этот ID занял, мы просто генерируем новый.

Если мы не собираемся держать свой сайт, то мы представляемся в сети только своим ID. (Наша машина тоже будет обеспечивать работу сети - хранить и выдавать какую-то информацию об именах, хэши которых похожи на наш ID.)

Если собираемся, и хотим себе имя первого уровня, то
3) Вычисляем хэш имени.
4) Находим хосты, чьи ID похожи на этот хеш,
5) Спрашиваем у них, занято ли это имя.

В идеальном случае они дружно отвечают "занято" либо "свободно". Если занято, уходим придумывать новое имя.
Если свободно, просим их запомнить наши имя и IP-адрес, а также наш публичный криптографический ключ. Это надо на случай, если мы сменим IP и попросим хосты, которые отвечают за наше имя, запомнить новый адрес -- они смогут переспросить и убедиться, что это и правда мы.

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

Date: 2012-03-07 09:29 pm (UTC)
link01: (Default)
From: [personal profile] link01
(Да, прошу прощения за кривописание. Три года читал только документацию на английском.)