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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Мы в T1 Cloud нашли пару проектов, которые вполне можно окрестить термином hidden gem — spartan:// и 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, а также пересмотреть подход к ротации ключей. Что интересно, автор прислушивается к своей аудитории и планирует учесть фидбэк при дальнейшей разработке.


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

  • Сможет ли новый язык программирования Hare стать альтернативой Си

  • Что там с OpenStack — все еще актуален или нет?

Источник: https://habr.com/ru/company/t1_cloud/blog/682370/


Интересные статьи

Интересные статьи

Функции умеет писать каждый программист. Их часто называют объектами первого класса, потому что это ключевая концепция JavaScript. Но умеете ли вы использовать их эффекти...
Отвечаем на разные «как», «почему» и «где»: поможем отдохнуть с помощью музыки и сериалов, обсудим изменения звукового ландшафта в контексте кризиса и позаботимся о вашей безопасности...
VUE.JS - это javascript фрэймворк, с версии 18.5 его добавили в ядро битрикса, поэтому можно его использовать из коробки.
Каждый лишний элемент на сайте — это кнопка «Не купить», каждая непонятность или трудность, с которой сталкивается клиент — это крестик, закрывающий в браузере вкладку с вашим интернет-магазином.
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...