Новый протокол
~~~~~~~~~~~~~~~

Идея
-----

Идеи для протокола взяты как из gopher'а, так и из HTTP. Концептуально
он ближе ко второму, но средствами к первому.

- структура сети представлена в виде графа, где
 - вершины это ресурсы сети - документы/файлы
 - ребра/дуги это ссылки, связывающие документы между собой
- к ресурсу на сервере можно обратиться по некоторому идентификатору
- к ресурсу можно обратиться разными режимами (применить некоторую операцию (глагол))
 - получить атрибуты/метаданные о ресурсе
 - получить содержимое ресурса
 - получить связанные ссылки ресурса
   - ссылки, возможно, могут иметь атрибуты/тэги

Реализация
-----------

Самым простым вариантом реализации будет вариант, где режим обращения будет
указан в запросе, как метод HTTP. Проблематичным будет необходимость отправки
нескольких запросов для одного ресурса, хотя это можно решить возможностью
опционального (когда в запросе содержится указание на нужные операции) или
безусловного получения всей совокупности данных о ресурсе.

Вариант 1
C: inf:/res/document
S: ok
  size: 4096
  type: text/plain
..
C: get:/res/document
S: </res/document contents>
..
C: ref:/res/document
S: /res/document20 Reference 1
  /res/document22 Reference 2
  /res Documents index

Вариант 2
C: /res/document
S: ok
  size: 4096
  type: text/plain
  refs:
   /res/document20 Reference 1
   /res/document22 Reference 2
   /res Documents index
  body:
  < .. /res/document contents .. >

Вариант 3
C: /res/document inf+get
S: ok
  size: 4096
  type: text/plain
  body:
  < .. /res/document contents .. >

Альтернативный вариант - stateful протокол, где клиент отправляет идентификатор
ресурса и получает служебную информацию и список допустимых режимов доступа
(подобно HTTP HEAD и OPTIONS).

C: /res/document
S: ok
  options: ref get
  size: 4096
  type: text/plain
C: ref
S: /res/document20 Reference 1
  /res/document22 Reference 2
  /res Documents index
C: bye


Реализация иерархических структур
----------------------------------

При отображении иерархической структуры, вроде файловой системы, на такую
модель возникает проблема - с одной стороны файлы не содержат никаких ссылок
на другие файлы (возможно, только на каталог, в котором находятся), с другой
каталог, как ресурс, содержит только ссылки и, возможно, метаданные.