Электронная почта: про идею, «собаку» и первое письмо

Евгений Лебеденко / 20.07.2011 / 11:59

Сегодня, когда социальные сети глубоко пустили корни в наши компьютеры, когда поколение «Фейсбука» и «ВКонтакте» предпочитает читать свою «стену», а не почту, когда для многих понятие интернета свелось всего-навсего к одной социальной страничке в браузере, стоит поговорить о древнем ритуале электронного эпистолярного жанра. Об электронной почте. Обсуждая нынешние средства интернет-социализации, принято рассматривать парадигму, которая лежит в их основе. Но все эти «стены» и «круги» даже близко не лежат с простой и понятной идеей электронного почтового ящика. У e-mail, правильно именуемой «служба обмена сообщениями», есть свои истоки, начинающиеся в далеком 1965 году.

Системы разделения времени. Команда MAIL

В начале 60-х годов прошлого века коллектив ученых и программистов из компьютерного центра Масачуссетского технологического института (MIT Computation Center), работающих под руководством профессора Фернандо Хосе Корбато (Fernando J. Corbató), которого за глаза называли Corby, получила в свое распоряжение настоящее вычислительное сокровище. IBM 7094 – по тем временам один из самых мощных компьютеров общего назначения, был предоставлен лаборатории Corby в рамках грандиозного «проекта MAC», положившего начало развитию многопользовательских систем и компьютерных сетей.

Компьютер IBM7094, используемый для разработки первой системы разделения времени, был в 1961 году одним из самых мощных в мире.

Профессор Фернандо Корбато (Corby) рядом со своим детищем.

Лаборатория профессора Корбато выполняла одну из важнейших задач проекта – разработку операционной системы, позволяющей множеству пользователей подключаться и работать в одной ЭВМ в одно и то же время. Это был новый класс управляющих программ, именуемых системы разделения времени (time-sharing systems), и их появление в корне меняло принципы работы с компьютерами, практиковавшиеся в то время. Благодаря системе разделения времени, пользователю не нужно было формировать пакет своих программ, отдавать его оператору ЭВМ и долго ждать, когда же подойдет очередь для их обработки. Вместо этого пользователю предоставлялся терминал (teletype), который, фактически, был обычной электрической печатной машинкой с рулоном бумаги внутри. Пользователь печатал в терминале команды, которые по линии связи передавались в компьютер, а компьютер в ответ печатал результаты их обработки.

Важным свойством time-sharing-систем было не только разделение между пользователями процессорного времени ЭВМ, но и ее памяти, где каждому зарегистрировавшемуся пользователю предоставлялась приватная территория для хранения своих файлов, а специальные механизмы разграничения доступа гарантировали неприкосновенность его данных и возможность обрабатывать информацию совместно. В последнем случае система автоматически следила за блокировками в процессе чтения или записи данных от множества пользователей в один и тот же файл.

В 1961 году коллектив доктора Corbyпредставил операционную систему CTSS (CompatibleTime-Sharing System). Будучи полностью совместимой по системе команд с использующейся в IBM 7094 пакетной операционной системой FMS (Fortran Monitor System), CTSS дополняла ее возможностью одновременной работы множества пользователей через терминалы. При этом благодаря терминальному контроллеру IBM 7750 терминалы подключались к ЭВМ не только напрямую, но и через телефонную сеть института, что расширило количество зарегистрированных в CTSS пользователей до нескольких тысяч человек.

Исторический магнитный диск с исходным кодом системы CTSS.

Именно тогда и появилась первая идея организации обмена сообщениями между всеми этими пользователями. Первое упоминание о ней можно найти в докладной записке № 39 группы программистов системы CTSS Крисмана, Шредера и Пузина (Crisman, Shroeder, Pouzin), предложившими, наряду с другими командами для CTSS, команду MAIL.

Та самая докладная записка №39, где впервые появилась идея e-mail.

Описание функций будущей команды MAIL.

Авторы записки предполагали, что введение такой команды облегчит жизнь, как администратору системы, который сможет сообщать пользователям о том, например, что их файлы успешно заархивированы, так и самим пользователям, которые получают возможность обмениваться друг с другом произвольным текстом. Чтобы не быть голословными, системные архитекторы приложили к записке описание принципов работы команды MAIL. Вот они:

Аргументами команды MAIL должны быть:

  • файл LETTER FILE, в котором отправитель сообщения пишет его текст;
  • USER– пользователь (пользователи), которым это сообщение адресуется;
  • ME– агрумент, который позволяет получателю напечатать полученное сообщение на своем терминале.

В домашнем каталоге каждого зарегистрированного пользователя должен создаваться файл MAILBOX, в конец которого и помещаются все присылаемые ему сообщение с указанием имени отправителя. Благодаря механизму блокировок система CTSS обеспечивала разделяемый доступ для записи в файл MAILBOX, в случае, если в него отправляли свои сообщения сразу несколько пользователей. Предлагалось также сделать класс сообщений срочной почты, которые помещались в файл URGENT MAIL, распечатывающийся на терминале без специальной команды со стороны пользователя. Для оповещения пользователя о поступившей почте предлагалось изменить команды регистрации в системе LOGIN, дополнив ее сообщениями YOU HAVE MAIL BOX или YOU HAVE URGENT MAIL, которые печатались после успешного входа пользователя в систему в случае, если файлы MAILBOX или URGENT MAIL были не пустыми.

Возможно записка №39 так бы и канула в бюрократическую пучину проекта CTSS (мало ли что там придумают эти разработчики), если бы в 1965 году ее не увидели два системных программиста Том Ван Влек и Ноэль Моррис.

Профессор Корбато и Том Ван Влек (слева).

Ноэль Моррис с сотрудницей лаборатории Корбато Мэри Томпсон.

Прочитав о команде MAIL, Моррис воскликнул: «Господи! Где это реализовано?» А узнав, что это – всего лишь идея, тут же загорелся желанием воплотить ее в реальность. Ван Влек, ответственный за системные утилиты, внес необходимые изменения в программу LOGIN и файловую систему CTSS, а Моррис написал код команды MAIL в соответствии с принципами, указанными в записке №39 и даже несколько улучшил их с точки зрения простоты использования.

Конечно, руководство института было не в восторге от предложения добавить в CTSS систему обмена сообщениями. Ведь IBM 7094 должна решать серьезные задачи, а не сохранять в файлах болтовню пользователей. Но Ван Влек и Моррис убедили институтскую бюрократическую машину в необходимости применения команды MAIL. Хотя бы для оперативного оповещения пользователей о проблемах с обработкой их программ или сохранением файлов. И вскоре все лаборатории в Масачуссетсе, где были установлены терминалы IBM 7094, вовсю обменивались сообщениями. Естественно, далеко не всегда по делу.

Команда MAIL в реализации Ван Влека и Морриса требовала наряду с именами пользователя и файлов для отправки указывать и номер проекта, в котором эти пользователи участвовали. Это позволяло выполнить широковещательную рассылку одного сообщения всем участникам проекта, используя в качестве шаблона символ «*». За собой же системные программисты закрепили возможность широковещательной отправки сообщений всем участникам всех проектов.

Кстати, если вы хотите поработать с командой MAIL в системе CTSS сделать это легко. Брат Ноэля Морриса Эррол (Errol Morris) реализовал эмулятор терминала IBM 7094, с которого можно отправить друзьям винтажное сообщение родом из 1965 года.

Почтовое сообщение, отправленное командой MAILс эмулятора терминала системы CTSS.

Письмо, полученное из далекого 1965.

Сейчас трудно сказать, была ли команда MAIL системы CTSS первенцем почтовых программ. Ведь над проектами систем разделения времени трудилось одновременно несколько коллективов ученых. Так, упоминания о системах обмена сообщениями между пользователями ЭВМ имеются в поздних версиях проекта time-sharing системы Q-32, разрабатываемой компанией SDC (System Developement Corporation) вначале для военной авиации, а затем для агентства DARPA. Кроме того, подобные службы в шеститесятых были реализованы в специализированной военной системе AUTODIN и университетской сети PLATO.

Обмен сообщениями в системе CTSS и ей подобных происходил между пользователями, подключенными к одной ЭВМ. Но cпоявлением омпьютерных сетей, идея MAILмигрировала в сетевую среду. Не в последнюю очередь благодаря Рею Томлинсону, которого частенько называют изобретателем e-mail.

Рей Томлинсон. «Собака» на TENEX

1971 год. Компания «Bolt, Baraneк and Newman» (ныне, BBN Technologies – один из ведущих подрядчиков, небезызвестного агентства DARPA минобороны США. Заказом DARPA для BBN была система разделения времени, которую предполагалось использовать в экспериментальной компьютерной сети с пакетной коммутацией ARPANET. Той самой, которая позже перерастет в глобальную сеть – интернет.

К 1969 году компания BBNразработала архитектуру и действующий вариант операционной системы TENEX, которая трудилась на мейнфреймах PDP-10 компании DEC. Именно эти машины и составляли первые узлы сети ARPANET. Система TENEX, если сравнивать с другими time-sharing системами, обладала уникальной особенностью – технологией виртуальной памяти на основе подкачки страниц. Именно благодаря ей, в TENEX могли запускаться и работать программы, которые другим системам были не по зубам.

Рей Томлинсон (RayTomlinson) был одним из системных программистов TENEX. В частности, он отвечал за разработку протокола NCP (Network Control Protocol) – прародителя современного протокола IP, а также за развитие технологии обмена файлами между двумя ARPANET-узлами с его использованием.

Программиста Рея Томлинсона частенько именуют отцом e-mail. И, надо сказать, вполне заслуженно.

Результатом трудов Томлинсона была программа CPYNET для копирования файлов (CP в названии неслучайно) между двумя TENEX-системами, включенными в сегмент ARPANET. В ОС TENEX присутствовала программа SNDMSG, которая являлась практически полным аналогом той самой MAIL из CTSS.

Используя ее, Томлинсон задумался: почему бы не сделать так, чтобы сообщение, созданное SNDMSG на одной TENEX-машине, в виде файла передавалось с помощью CPYNET программе SNDMSG на другую машину, включенную в ARPANET? Он быстренько изменил код SNDMSG, включив в нее функции CPYNET, и приступил к экспериментам. Благо, испытательный стенд был под рукой. Две машины PDP-10, названные BBN-TENEXA и BBN-TENEXB, были включены в сегмент ARPANET и располагались рядом друг с другом.

Вот они – TENEXA и TENEXB, за которыми трудился Томлинсон.

Томлинстон напечатал сообщение на терминале ASR-33, подключенном к одной из них и получил его на таком же терминале другой машины. Случилось это осенью 1971 года. Эх, знал бы тогда Томлинсон, что отправляет первый в мире e-mail, обязательно бы запомнил то, что писал. Теперь же, отвечая на вопросы журналистов, ему приходится говорить, что в тексте сообщения он набрал не то «QWERTYUIOP», не то «TESTING 1 2 3 4».

Синтаксис сетевого варианта SNDMSG, разработанного Томлинсоном, ничем не отличался от рассмотренного выше, синтаксиса команды MAIL. За одним исключением. Программа была универсальной и могла отправлять как традиционные внутримашинные сообщения, так и сообщения между машинами. Но как программе отличить эти два вида сообщений? Томлинсон решает использовать символ «@«, разделяющий имя пользователя и адрес узла в сети, на который сообщение передается. Наткнувшись в аргументах на «@«, команда SNDMSG понимала, что имеет дело с сетевым сообщением и применяла встроенные функции программы CPYNET для его передачи по сети.

Почему именно «@»? В отличие от расхожих журналистских баек, в которых Томлинсон, якобы, случайно набрал культовую комбинацию клавиш Shift+F2, сам программист объясняет выбор «собаки» вполне рационально. В английском языке «@», именуемый коммерческой «А» и читаемый, как «at», используется в бизнес-сленге как стоимость единицы товара. Например, «5 items @ (at) $2», то есть «5 вещей по $2 за каждую». Именно такое звучание показалось Томлинсону наиболее приемлемым для сетевого имени: «user @ (at) host», то есть «пользователь user на узле host».

Выбор на «@« пал также и потому, что ни одна из программ TENEX не использовала его в качестве аргумента, а значит, он не мог быть истолкован двояко. И, кстати, на клавиатуре терминала ASR-33 «@» располагался вовсе не на клавише F2 (функциональных клавиш тогда вообще не было), а в верхнем регистре клавиши с буквой «Р».

На клавиатуре телетайпа ASR-33 символ «@« находился в верхнем регистре клавиши «Р».

И все-таки, почему же «собака»? Символ «@» называют «собакой» только на территории бывшего СССР, где в 70-е среди программистов была распространена простенькая компьютерная игра, в которой «@» изображал гонявшуюся за героем собачку. Финны, например в «@» видят свернувшуюся клубком кошку, итальянцы – улитку, а шведы – слона.

Итак, Рей Томлинсон – изобретатель e-mail? Скорее нет, чем да. Он, конечно, разработал программу, выполняющую функции e-mail клиента. И даже ввел символ «@» в почтовый адрес. Но современная система обмена сообщениями – это сложная клиент-серверная структура, которая использует массу протоколов и обеспечивает не только функции передачи текста, но и обмен любой информацией в MIME-формате – то есть «вложения». И кто же все это довел до ума?

Йон Постел. Папа всех доменов

В 1966 году, начав работать в проекте ARPANET, инженер и ученый Йон Постел предложил упорядочить шквал предложений о многочисленных службах новоиспеченной компьютерной сети в документах RFC (Request For Comments). Именно в них разработчики начали обсуждать работу сетевых служб и протоколы их взаимодействия. «Назвавшись груздем...», Постел взвалил на себя обязанности главного редактора лавины RFC. Впрочем, сам он активно участвовал в разработке многих протоколов, отраженных в более чем двухстах RFC. Одним из этих протоколов был SMTP (Simple Mail Transfer Protocol). Он описан Постелом в RFC 821 и поныне является базовым протоколом отправки сообщений.

Благодаря Йону Постелу современный интернет, включая e-mail, прекрасно задокументирован.

Вот такой «гигантской» была сеть ARPANET в феврале 1982 года (схема Йона Постела).

После разработки в 1982 году системы доменных имен DNS, Йон Постел предлагает внести изменения в почтовые адреса формата «user@host», используемые еще со времен программы Рея Томлинсона, на формат «user@host.domain». Именно Постелу в документе RFC 805 «Computer Mail Meetings Notes» принадлежит фраза: «В области систем обмена сообщениями идентификатор почтового ящика требуется расширить до «user@host.domain», где «domain» – иерархия интернет-доменов».

В 1983 году Постел с коллегами Полом Мокапетрисом и Крейгом Партриджем включают в протокол SMTP поддержку доменных имен .edu, .gov, .com, .mil, .org, .net. И именно с этого момента система обмена сообщениями через интернет становится похожей на так всем нам знакомый e-mail. Кстати, если вы думаете, что e-mail– это имя нарицательное, принадлежащее всему человечеству, то вы глубоко ошибаетесь. В 1982 году Офис товарных знаков США (U.S. Copyright Office) выдал свидетельство на регистрацию товарного знака EMAIL за номером TXu-111-775.

Господин Ayyadurai«скромно» величает себя «Доктор E-Mail».

Свидетельство было выдано программисту Shiva Ayyadurai, который таким образом защитил свое программное обеспечение «E-Mail System», разработанное им в 1978 году. Творение господина Ayyadurai не имело никакого отношения к архитектуре системы обмена сообщениями, поскольку являлось всего-навсего почтовым клиентом с дружественным пользовательским интерфейсом. Эту программу Shiva Ayyadurai успешно распространял среди клиник и частных медицинских практик Нью-Джерси для эффективного обмена актуальной медицинской информацией.

Официальная бумага на товарный знак EMAIL. Попробуй подкопайся.

Закон есть закон, и предприимчивый владелец торгового знака EMAIL и по сей день гордо именует себя «Доктор E-Mail». Но мы-то с вами знаем, что электронная почта, такой простой и удобный сервис, принадлежит человечеству. Именно к этому и стремились его разработчики, начав свой e-mail путь в далеком 1965 году.

Источник: mobi.ru
blog comments powered by Disqus
Обратная связь
Имя
E-mail
Сообщение:

Отправить