💾 Archived View for goodclover.xyz › texts › WIP › subspace-delagation-system.gmi captured on 2021-12-04 at 18:04:22. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-12-03)

➡️ Next capture (2022-01-08)

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

Subspace name delegation system & protocol

This is a combination of a draft spec and idea-sharing document.

The DNS is complicated, paywalled, and centrally controlled.

For a while I've wished there was an alternative with the control being back in our hands, so here is my ideas

A way to distinguish them from DNS domains is needed when using URIs.

The easy route is to not allow TLDs that are in the DNS, but I wanted them to become left-to-right like NNTP which would break this easy route.

Goals

Questioned ideas

Issues

Top-level domains

Domain existence is determined by what the server admins allow and disallow, the same applies for TLDs.

The issue comes with who owns/controls those domains? How would having an unowned domain work?

I don't like the registrar system that DNS takes, as it leads to people selling them. I'm not against selling them, as each domain's contents is up to it's owner, but I would like to avoid that for TLDs especially.

The protocol spec

Text encoding must be UTF-8.

Line terminators must be CR-LF, all requests & responses must end with a CR-LF.

The default port is 1445 (144.5 light years/day is the approximate speed of subspace radio).

All communication must be done over TLS with server certificates, to prevent piggy-in-the-middle attacks.

Client-server request

Example exchange:

C → S	<domain1>
C ← S	3 <domain2>
C → S	<domain2>
C ← S	2 <ip-addr>

Response codes:

Format spec:

Request: <domain><CRLF>

Response: <resp-code><s><info><CRLF>

<info>:
	For codes 1&4: <endpoint>
	For code 2: <domain>

<domain>: <safe-string>[.<domain>]

<endpoint>: <ip-addr>[:<port>]

<safe-string>:
	Anything but invisible characters (inc. space & tab), control characters and other special Unicode characters.

<s>: One tab or space.

Server-server exchange

When a server receives information from a peer server it should relay this information to it's other peers.

Servers must only accept info updates from trusted peers.

If a server already has the info supplied in the update it must not relay the information, ignoring the upate. Relaying could cause an infinite loop.

Servers should only accept updates from trusted peer servers.

I am yet to write the protocol for this.

This document is in the public domain.

Please email me comments