Pull to refresh
0
T1 Cloud
Облако для бизнеса и разработки

Скрытые жемчужины — сетевые протоколы, о которых мало кто слышал

Reading time3 min
Views17K

Некоторые протоколы вызывают бурные обсуждения в ИТ-сообществе, становятся стандартами индустрии — например, QUIC или DoH. На второй чаше весов лежат разработки энтузиастов, о существовании которых можно даже не догадываться.

Мы в T1 Cloud нашли пару проектов, которые вполне можно окрестить термином hidden gemspartan:// и Spring '83.

/ Unsplash.com / Eric Prouzet
/ Unsplash.com / Eric Prouzet

Клиент-серверный протокол

Первая разработка, о которой мы хотим рассказать, — это клиент-серверный протокол spartan://, который берет пример с Gemini, Gopher и HTTP. Его представил инженер Майкл Лазар. В портфолио автора можно найти такие open source проекты, как TCP-сервер Jetforce и утилита для мониторинга логов Akita. Он также развивает форк библиотеки PRAW, которая представляет собой оболочку для Reddit API.

Что касается работы, то spartan:// передает запросы по TCP текстом в кодах ASCII. Контент предоставляется клиентам по запрошенному URL-адресу, структура которого напоминает HTTP. Процесс обмена очень прост: клиент отсылает URL того, что он хочет получить, завершая запрос символом новой строки. Сервер отвечает информационной строкой с цифровым кодом статуса.

Всего этих кодов четыре: «2: Success» — запрашиваемый ресурс найден и успешно загружен, «3: Redirect» — ресурс обнаружен в другом месте, нужно запросить его повторно, «4: Client Error» — запрос отклонен, синтаксическая ошибка «5: Server Error» — по какой-то причине сервер не может обработать корректный запрос.

По умолчанию spartan:// работает с трехсотым портом. Это — явная отсылка к Фермопильскому сражению, когда 300 спартанцев обороняли ущелье от персидской армии.

Разумеется, у такого простого протокола есть определённые недостатки. По словам разработчика, он хотел создать решение, с которым легко и интересно работать. В итоге автор не фокусировался на вопросах приватности и безопасности. В то же время spartan:// имеет много общего с Gemini — даже информация о нем опубликована на тематическом хостинге Yesterweb – и не поддерживает кэширование, сжатие и возобновление прерванных загрузок. Поэтому не годится для обмена объемными файлами.

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

На замену RSS

Интернет полон авторов, за блогами которых хочется следить. Однако, по мнению Робина Слоана — автора бестселлера «Круглосуточный книжный мистера Пенумбры» — для этого нет удобного, наглядного и простого инструмента. Да, есть ленты социальных сетей, но их алгоритмы продвигают посты по релевантности — не всегда то, что нужно или интересно. Существуют проверенные временем RSS-фиды, однако и они не лишены недостатков. Чаще всего загружаемый XML-файл представляет собой текстовую простыню без деления на абзацы и списки.

Робин Слоан решил трансформировать систему подписок и разработал протокол Spring '83. Название представляет собой своеобразный оммаж на стандарт RFC 865, оформленный весной 1983 года. Документ содержит описание протокола Quote of the Day Protocol. На заре TCP/IP его использовали для тестирования сетей — сервер возвращал случайную короткую цитату из предопределенного списка.

Spring ‘83 работает с так называемыми «досками» (boards). Это — HTML-фрагменты размером не более 2217 байт, которые не могут воспроизводить скрипты. Их формат отображения напоминает доски объявлений в газетах или винтажные рекламы комиксов. Авторов контента система идентифицирует с помощью пары ключей со схемой Ed25519. Они представлены в HEX-формате и имеют размер 64 бита. Открытый ключ нужен для запроса соответствующей доски с сервера, а закрытый — для её редактирования.

Автор показал демо клиента, а в сети уже можно найти несколько реализаций. Например, springboard на Go, где публикуются последние новости о Spring '83, и lets-dance с разношерстным контентом вроде погоды и фотографий.

В целом вокруг протокола постепенно собирается активное сообщество. Энтузиасты уже предложили ряд улучшений — например, не использовать YAML и заменить его на JSON, а также пересмотреть подход к ротации ключей. Что интересно, автор прислушивается к своей аудитории и планирует учесть фидбэк при дальнейшей разработке.


Больше интересных проектов в нашем блоге на Хабре:

Tags:
Hubs:
Total votes 13: ↑12 and ↓1+13
Comments6

Articles

Information

Website
t1-cloud.ru
Registered
Founded
Employees
101–200 employees
Location
Россия