[О блоге] [наверх] [пред] [2025-09-12 11:32:25+03:00] [59fdf60075de1bb380561096b618f420c9b89ae6]
Темы: [web]

Снова про простые протоколы

https://portal.mozz.us/spartan/spartan.mozz.us/
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/nex_protocol
https://nightfall.city/nex/info/specification.txt
https://nightfall.city/nex/info/station-guide.txt
https://nightfall.city/nps/info/specification.txt
https://nightfall.city/nps/info/form.txt
https://textprotocol.org/
https://github.com/zzo38/scorpion/
В 0f779dbbdbf24f2aec67b5593e0d0e8590abac25 упоминал про множество всяких
минималистичных протоколов. Причём более минималистичных относительно
Gemini.

Мне Gemini с самого начала не нравился, как и многим другим. Его правила
работы с URL-ами и redirect-ами (86360e1584dc8f63d4c15c4658e856a3fbadb16d)
косячны. Сама идея redirect -- нафиг. SNI и virtual hosting: нафиг, ибо
всегда можно всё понавешать на разные IP адреса (конечно не в legacy
мире IPv4) и домены. Из контекста, переходя с index-страниц, на практике
почти всегда можно понять что за файл будет скачан -- поэтому нафиг и
MIME types. Нафиг кодировки -- есть UTF-8. Вот и вышел nex:// протокол.

    echo path/to/document | nc host 1900 >document

    echo | nc nightfall.city 1900 | less

К которому есть и "nps" протокол для отправки данных. Как отличить
отправку данных (post) от получения (get)? Да банально используя другой
TCP порт:

    nc nightfall.city 1915
    classifieds
    YOUR MESSAGE GOES HERE
    .

Ведь, строго говоря, вполне можно и бинари без проблем так передавать.

Описание text:// протокола мне не нравится. Unicode emoji, и всё
выглядит как ребус. Надо поломать голову, чтобы понять как работает
протокол. Принципиально как и всякие gemini:// и прочие штуки. Там
здорово то, что не обязательно использовать TLS, а можно и Noise-based
протокол, вот только там не сказано как кодировать сообщения. Да и
реализаций с ним нет.

          ------------------------ >8 ------------------------

       Comparison: gemini:// vs. spartan://
                           gemini       spartan
                           ------       -------
    transport              TCP + TLS    TCP
    request structure      full URL     hostname & path
    request encoding       utf-8        us-ascii
    status codes           18           4
    document type          text/gemini  text/gemini
    input prompt           1x status    "=:" prompt line

    data upload            limited      yes
    mimetypes              yes          yes
    virtual hosting        yes          yes
    same-site redirects    yes          yes
    cross-site redirects   yes          no
    proxy requests         yes          no
    "lang" parameter       yes          no

          ------------------------ >8 ------------------------

                             gemini       spartan           scroll                nex
                             ------       -------           ------                ---
naming scheme                space        sparta/greece     scrolls & libraries   cityscape & highways
transport                    TCP + TLS    TCP               TCP + TLS             TCP
request structure            full URL     hostname & path   full URL              path
request encoding             utf-8        us-ascii          utf-8                 utf-8
status codes                 18           4                 18                    0
document type                text/gemini  text/gemini       text/scroll           text/plain
input prompt                 1x status    "=:" prompt line  1x status             none

data upload                  limited      yes               limited               no
mimetypes                    yes          yes               yes                   no
virtual hosting              yes          yes               yes                   no
same-site redirects          yes          yes               yes                   no
cross-site redirects         yes          no                yes                   no
proxy requests               yes          no                yes                   no
"lang" response parameter    yes          no                yes                   no
lang request parameter       no           no                yes                   no
response metadata            heuristic    heuristic         yes                   heuristic
abstract/metadata requests   no           no                yes                   no

link relationships           heuristic    heuristic         yes                   heuristic
list nesting                 no           no                yes                   heuristic

    [оставить комментарий]