💾 Archived View for ps.cities.yesterweb.org › uk › nex-lightweight-gemini-alternative.gmi captured on 2024-08-31 at 11:33:22. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-06-20)

-=-=-=-=-=-=-

Протокол NEX - легка альтернатива Gemini

Останнім часом стало поширеним явище інтеграції TLS навіть там, де використання цієї технології може бути зайвим.

Сьогодні майже кожна програма включає в себе параноїдальні пресети безпеки з коробки, через які результуючий трафік часто шифрується в декілька шарів, тим само створюючи часові затримки на handshake і вичерпуючи заряд мобільних акумуляторів при передачі великих об'ємів даних.

Звісно, протокол Gemini - не про великий трафік. Тим не менше, хотілось би поділитись його спрощеною альтернативою - NEX, яка може згодитись деяким гікам, зокрема - в альтернативних мережах Onion та Yggdrasil, де канальний трафік між двома підключеннями вже зашифрований а використання класичного DNS вважається поганим тоном.

Архітектура

NEX - це мережний протокол прикладного рівня, сімейства Gopher / Gemini.

Окрім відсутності характерних для Gemini вимог шифрування, протокол також зручний для прямих підключень по IP без використання DNS та SNI. Не потрібно генерувати сертифікати, слідкувати за їх актуалізацією та вигадувати костилі для Certbot.

Подібно до Gemini, взаємодія між клієнтом і сервером відбувається шляхом надсилання пакету через сокет. Для ідентифікації типу підключення клієнтом використовується схема nex://, а замість порту 1965 стандартним є 1900.

NEX не містить жодних мета заголовків: переадресацій, кодів статусів, MIME типів та іншого. Тим не менше, він підтримує і дозволяє працювати з різними типами даних, включно з Gemtext і медіа форматами.

Ось кілька простих правил з документації:

Специфікація протоколу не декларує власного типу даних і розмітки за виключенням синтаксису посилань, формат яких подібний до Gemtext - тобто посилання можна робити клікабельними, використовуючи префікс => в text/plain.

Клієнти

Протокол NEX є поширеним і давно відомим в середовищі Geminispace - такий популярний браузер як Lagrange підтримує його з коробки, тому не потрібно шукати додаткових рішень для GUI чи змінювати улюблений клієнт.

Говорячи про CLI, на мою думку, NEX є зручнішим і більше орієнтованим для користувачів саме командного рядка: для взаємодії можна використовувати такі базові утиліти як telnet, nc, ncat тощо:

telnet nightfall.city 1900
nex

NPS

Подібно Titan для Gemini, NPS є сателітом для відправки даних на сервер - для NEX.

Специфікація

Стандартним для NPS є порт 1915.

В залежності від реалізації та специфіки конкретного сервера, клієнт може відправляти команди і типи даних в порядку що відрізняється і так, як задумано автором конкретного сервісу.

Зокрема, сервіс чату в блокчейн KevaChat NPS - вимагає на першому кроці введення ASCII каптчі, вибору кімнати і вже потім - безпосередньо відбувається надсилання текстового повідомлення.

Кожен сервер має власний гайд в режимі CLI, та як правило посилання на документацію.

Характерною рисою NPS є одна крапка в останньому рядку повідомлення, яка також сигналізує кінець з'єднання.

Приклади

Розберемо приклад надсилання оголошення на сервіс classifieds серверу nightfall.city

nc nightfall.city 1915
classifieds
YOUR MESSAGE GOES HERE
.

Якщо коротко розібрати команди:

Згідно такому принципу, можна надсилати і багато-строкові дані з певного файлу:

створимо file.txt з наступним вмістом:

classifieds
      ___
     /\__\          ___
    /:/  /         /\  \
   /:/__/          \:\  \
  /::\  \ ___      /::\__\
 /:/\:\  /\__\  __/:/\/__/
 \/__\:\/:/  / /\/:/  /
      \::/  /  \::/__/
      /:/  /    \:\__\
     /:/  /      \/__/
     \/__/
.

тепер надішлемо його на сервер nightfall.city, до розділу classifieds (що вказаний у першому рядку) за допомогою утиліти cat

cat file.txt | nc nightfall.city 1915

Проксі

Потокові дані легко проксуються через сервер Nginx, простий приклад з nginx.conf:

stream {
        server {
                listen 1915;
                proxy_pass [IP]:1915;
        }
}

Висновки

Протокол NEX - це окремий різновид взаємодії та спілкування у мережі. Його переваги здебільшого стають зрозумілими після досвіду роботи з Gemini, який не дивлячись на лаконічність, все ж має ряд особливостей, які у певних випадках бувають зайві.

Посилання

Специфікація NEX

Специфікація NPS

Офіційний сайт

Читайте також

Протокол Gemini як альтернатива HTTP

Yggdrasil - мережа з децентралізованим роутингом