Кратко

  • В объединённых таблицах ARPANET и DCNET уже было более четырёхсот имён и прозвищ. Mills предложил домены, чтобы каждому хосту не приходилось хранить плоский список всех будущих участников сети.
  • Одна машина могла пересылать почту для COMSAT и INTELPOST. Mills@HOST мог обозначать разные ящики в двух доменах, а адрес машины не подсказывал нужный для ответа. Полное имя ящика и обратный маршрут должны были сохранить домен.

На одном столе лежат два письма для Mills@HOST. Первое относится к COMSAT, второе к INTELPOST. Если убрать пометки домена, сортировщику останется угадывать. D. L. Mills изложил этот случай без выдуманной комнаты, но с точными маршрутами, в RFC 799 за сентябрь 1981 года. Объединённые таблицы ARPANET и DCNET уже содержали больше четырёхсот имён и прозвищ. Разделить толстую книгу на части казалось разумным. Сложнее было оставить на письме указание, по какой именно части книги искать получателя и куда направлять ответ.

Домены имён в проекте Mills могли соответствовать ARPA, UCL, COMSAT и другим организациям. Они могли пересекаться и не обязаны были охватывать все адреса. Для анализа автор взял один уровень доменов, хотя стандартная запись ящика <user>.<host>@<domain> читалась справа как трёхчастная. Внутри COMSAT имя Mills@COMSAT-DLM могло быть понятным. Снаружи Mills.COMSAT-DLM@COMSAT называло и локальную книгу, где оно имело смысл. В разных доменах одинаковые прозвища были допустимы. Хвост имени превращался в адрес нужной полки.

У каждого домена было бы одно или несколько процессов пересылки почты. Пересыльщик держал имена всех хостов своего домена и хотя бы одного пересыльщика каждого другого. Обычным хостам хватило бы списка таких точек связи и дополнительных имён по желанию. Один хост мог входить в несколько доменов, иметь несколько интернет-адресов и запускать несколько процессов пересылки. Mills допускал копии пересыльщиков ради надёжности, не изображая, будто сложности маршрутизации при этом исчезают. Местные правила названий сохранялись; граница должна была знать, чьи правила сейчас действуют.

Почтовый пересыльщик не обязан был становиться промежуточной станцией для каждого письма. Mills ожидал, что основная масса почты пойдёт прямо от отправителя к адресату. Промежуточный узел нужен, когда оба хоста не могут быть в сети одновременно, отправителю не хватает средств для перевода имён в адреса, прямому пути мешают нормативные, экономические или защитные ограничения, либо стороны используют разные транспортные протоколы, например TCP и NCP. Обычный узел хранения и пересылки не обязательно владел полными междоменными таблицами пересыльщика. Получить мешок писем и вести все адресные книги — разные должности.

RFC приводит пару маршрутов: MRCP to:<@COMSAT,Mills@HOST> и MRCP to:<@INTELPOST,Mills@HOST>. Они способны указать на разные ящики, даже если обе службы находятся на одной машине. Если эта машина называется FORWARDER в обоих доменах, укороченная запись MRCP to:<@FORWARDER,Mills@HOST> теряет различие. Проверка интернет-адреса не поможет: адрес указывает на машину, но не говорит, выступала ли она здесь от COMSAT или INTELPOST.

У обратного пути та же беда. В рассматриваемом порядке RFC 780 получатель строил имя для маршрута отправителя по интернет-адресу предыдущего хоста. Для машины с несколькими доменными ролями в адресе недоставало ключевой части. Mills требовал обновлять и маршрут получателя, и маршрут отправителя: первый элемент полученного маршрута получателя копировать в начало обратного маршрута. Квитанция должна была помнить не только здание, но и окно, в которое сдали письмо.

Старые почтовые системы использовали сокращения. Mills избегал повторной правки заголовков RFC 733 на каждом узле: операция требовала глубокого разбора текста. Новые системы могли сразу пользоваться полным интернет-именем. Для существующей почты ARPANET местное <anything>@<host> следовало превратить в <anything>.<host>@ARPA при первом входе в интернет-почту. Уже известное <anything>@<domain> оставалось как есть. Пока письмо находится на пороге, происхождение сокращённого имени ещё понятно.

RFC 799 заканчивалась приглашением к обсуждению. Это был проект 1981 года, а не отчёт о построенном впоследствии DNS. Но пример общего пересыльщика точно отделил две вещи: 32-битный адрес однозначно называет компьютер, тогда как почтовых ролей у него может быть несколько. Четыреста с лишним имён делали плоскую таблицу тяжёлой; два ящика за одним адресом объясняли, почему заботиться нужно и об обратном пути.