← На главную

Gnutella всё ещё работает после 10 лет в мейнстриме

22.05.2026 02:24 · hackernews

Gnutella — пиринговый протокол для обмена файлами, о котором почти все забыли. А зря. Он собрал миллионы обычных пользователей, которым было плевать на децентрализацию. Они просто качали MP3. Никто не ждал, что «GnutellaCoin» взлетит. Сеть взорвалась популярностью, держалась почти десять лет, а потом ушла в «длинный хвост» — работает до сих пор, но уже не в мейнстриме.

Всё началось с того, что AOL прикрыла внутренний проект, а прототип утёк в сеть. Вернуть его обратно было нельзя — децентрализованная архитектура без единого сервера не позволяла. Gnutella выжила, несмотря на годы попыток её задушить. Утверждения, что она «провалилась», несправедливы. Она масштабировалась до миллионов активных пользователей и процветала целое десятилетие. Просто мир, в котором она родилась, исчез.

В начале 2000-х интернет переставал быть уделом гиков. Музыкальная индустрия отказывалась меняться, MP3-плееры стали доступны, dial-up не тянул стриминг, а управлять файлами на диске было нормой. Идеальный шторм.

Gnutella — это по сути децентрализованная поисковая система для произвольных данных (blobs). Она не была «просто файлообменником». Вы открывали LimeWire или GTK-Gnutella, вводили запрос, он расползался по сети, и отклики возвращались от случайных компьютеров по всему миру. Файлы качались прямо по HTTP. Иногда попадалось что-то неожиданное — новый трек или вирус. Это «собирательство» исчезло с приходом рекомендательных алгоритмов.

Технически всё просто. У вас на компе поднимался HTTP-сервер, а Gnutella добавляла к нему gossip-протокол для координации. В 2000-х не было проблем с NAT и фаерволами, поэтому IP-адрес был публичным. Но адреса менялись — нужен был способ находить друг друга. Для этого придумали бутстраппинг через GWebCache — федерацию волонтёрских серверов, которые хранили списки активных узлов. Никакой единой точки отказа: если один кэш упал, есть другие. А после входа в сеть вы начинали собирать PONG-сообщения от соседей и больше не зависели от бутстрапа.

В основе протокола — пять типов сообщений: PING/PONG (поиск живых пиров), QUERY/QUERYHIT (поиск файлов) и PUSH (костыль для обхода фаерволов, когда сервер сам подключается к клиенту). К этому добавили расширения: GGEP для вставки произвольных данных и HUGE для идентификации файлов по SHA-хешам вместо имён. Инженеры LimeWire внедрили динамическую маршрутизацию запросов на основе фильтров Блума, что позволило сети выдержать миллионы пользователей.

Gnutella живёт до сих пор. GTK-Gnutella до сих пор поддерживается. Кто-то даже пишет новые клиенты (hobby projects, как мой на Bun). Сеть пережила все сайты, которые когда-то описывали её протокол. Это лучший комплимент архитектуре.

Читать оригинал →