Кратко

  • RFC 779 описала опцию Telnet для передачи удалённому хосту текстового местонахождения пользователя. Название организации, откуда пришло соединение, можно было дополнить подсказкой о конкретном месте.
  • Передача состояла из отдельных шагов: исходный отказ, предложение клиента, согласие сервера, отправка строки и решение сервера о её использовании.

Представьте университетский корпус до мобильных телефонов. Коллега хочет вас позвать и спрашивает у компьютера, кто сейчас вошёл в систему. Если вы сидите за местным терминалом, список может подсказать комнату или аппарат поблизости. При входе из другого учреждения удалённый сервер часто отвечает только названием этого учреждения. Остаётся звонить в приёмную и надеяться на чудо. Earl Killian в RFC 779 предложил передать через Telnet то, чего сервер сам не видел: описание места у терминала.

У запроса была понятная предыстория. RFC 742 о NAME/FINGER описывала список вошедших пользователей с полными именами и физическим расположением терминалов, насколько его удавалось определить. Рядом могли стоять название задания и время бездействия. Такой справочник помогал отыскать человека в здании или набрать телефон возле него. Сеанс издалека ломал полезную точность. Сервер видел место происхождения подключения, а дверь нужной комнаты оставалась за пределами его сведений.

Killian назвал опцию SEND-LOCATION и присвоил ей номер 23. По умолчанию обмен был выключен: состояния WON'T и DON'T. Если программа пользователя знала адрес стола, она могла предложить WILL SEND-LOCATION. Сервер выражал согласие командой DO SEND-LOCATION или сам запрашивал сведения с помощью DO. После согласования клиент отправлял печатные символы ASCII в подкоманде, ограниченной IAC SB и IAC SE. Строка исходила со стороны пользователя. Протоколу требовались буквы, а не прибор для поиска человека.

Короткие слова Telnet разделяли права сторон. WON'T позволяло отказаться от отправки; DON'T — попросить другую сторону прекратить её. Сервер мог заинтересоваться местом, а клиент мог не поделиться им. Даже после согласия текст разрешалось послать позже, уже во время сеанса. Поэтому запись переговоров нельзя свести к одному флажку «место известно». Есть предложение, разрешение, фактическая строка и программа сервера, которая решает, что с этой строкой делать.

Идея уже жила в другой среде. RFC 734 о протоколе SUPDUP описывала команду, передававшую удалённой системе местонахождение консоли. Система обычно сохраняла текст для вывода who. RFC 779 перенесла схожую бытовую задачу в механизм опций Telnet. Ближняя к человеку машина могла получить полезную подсказку; дальняя держала список посетителей. Между ними пришлось провести маленький, но явный разговор.

Разница между двумя документами о списках существенна. NAME/FINGER объясняла, какие данные могут появляться при поиске пользователя; SEND-LOCATION объясняла, как один из таких фрагментов мог поступить во время Telnet-входа. В RFC 779 упомянута система ITS, способная применить новое поле. Конкретный сервер распоряжался полученным текстом по своим правилам. Полученная строка и опубликованная строка — соседние, но разные события. Компьютерная справочная всё ещё имела редактора, пусть им был код.

Это история о крайне малом объёме данных и довольно большом выигрыше для человека. «Он вошёл из другого института» и «он у такого-то телефона» звучат почти одинаково для машины и совершенно по-разному для того, кто собирается позвонить. В RFC 779 Telnet добавил к удалённой сессии дорогу от названия здания к возможному месту встречи. Несколько служебных байтов помогали ответить на вопрос, для которого сеть прежде выдавала слишком длинный коридор.