Введение
Метод поиска в одноранговой сети. Затопление запросами (Query flooding) – это метод поиска ресурса в одноранговой сети. Он прост, но очень плохо масштабируется и поэтому используется редко. Ранние версии протокола Gnutella использовали затопление запросами, а более новые версии – более эффективные алгоритмы поиска.
Query flooding is a method to search for a resource on a peer to peer network. It is simple and scales very poorly and thus is rarely used. Early versions of the Gnutella protocol operated by query flooding; newer versions use more efficient search algorithms.
Операция
Сеть типа "одноранговая" (peer to peer) обычно состоит из большого количества узлов, каждый из которых связан лишь с небольшим подмножеством других узлов, а не со всеми узлами сети. Если узлу необходимо найти ресурс в сети, который может находиться на узле, о котором он ничего не знает, он может просто широковещательно отправить свой поисковый запрос своим непосредственным соседям. Если у соседей нет искомого ресурса, он просит их переслать запрос своим соседям. Этот процесс повторяется до тех пор, пока ресурс не будет найден, не будут просмотрены все узлы или не будет достигнут лимит пересылок, установленный сетью. Потоковая рассылка запросов проста в реализации и эффективна для небольших сетей с небольшим количеством запросов. Она охватывает все доступные узлы в сети и, следовательно, позволяет точно определить, существует ли искомый ресурс (например, Freenet возвращает лишь вероятностный результат). С другой стороны, каждый запрос потенциально может привести к обращению к каждому узлу в сети. Каждый узел может генерировать небольшое количество запросов, однако каждый такой запрос вызывает потоковую рассылку по сети. Таким образом, в большей сети трафик на узел будет значительно выше, чем в меньшей, что делает её масштабируемость ограниченной. Кроме того, поскольку узел может вызвать потоковую рассылку запросов, просто отправив запрос на несуществующий ресурс, существует возможность организации атаки типа "отказ в обслуживании" на сеть.
Альтернативы
Версия 0.6 протокола Gnutella требует маршрутизации запросов. Спецификация маршрутизации запросов описывает, как реализованы идеи, заложенные в первоначальных исследованиях. Другие сети обмена файлами, такие как сеть Kad, используют распределенные хеш-таблицы для индексации файлов и поиска по ключевым словам. BitTorrent создает отдельные накладные сети для обмена отдельными файлами (или архивами). Поиск осуществляется другими способами, например, путем поиска торрент-файлов, проиндексированных на веб-сайте. Аналогичный механизм может быть использован в сети Gnutella с использованием magnet-ссылок. Например, Bitzi предоставляет веб-интерфейс для поиска magnet-ссылок. Более ранние P2P-сети, такие как Napster, использовали централизованную базу данных для поиска файлов. Это не имеет проблем с масштабируемостью, но центральный сервер является единственной точкой отказа.