Русский
Русский
English
Статистика
Реклама

Томас найт

Краткая история Chaosnet

06.07.2020 20:09:26 | Автор: admin
Мы решили совершить еще один вояж в прошлое сетевых технологий. На сей раз мы поговорим о Chaosnet, специфическом сетевом протоколе, который использовался в 1970-х годах в Lisp-машинах. Исходным материалом для статьи послужила заметка на TwoBitHistory, которую мы расширили и дополнили собственными находками и иллюстрациями.

Если с помощью dig отправить к DNS запрос о каком-то сайте, например, it-grad.ru, мы получим примерно такой ответ:

$ dig it-grad.ru



В строке Answer Section содержится информация о записи типа A.

Приглядимся к полю IN. Возможно, кто-то думает, будто IN это такой предлог: it-grad.ru IN (внутри) A и имеет IP-адрес 212.116.122.3. На самом же деле IN значит Internet. Это класс записи.

Возникает закономерный вопрос: а какие, собственно, еще варианты здесь могут быть? Как можно получить доступ к хосту, который находится не в Интернете? Может показаться, что IN это вообще единственное значение, которое имеет смысл в современном мире. К тому же, если пробить тот же it-grad.ru и явно указать, что вы хотите получить запись с классом, отличным от IN, DNS-сервер вернет ошибку. Давайте сделаем еще один запрос и посмотрим, к чему приведет явное указание класса. Например, HS (Hesoid). Сервер вернет статус SERVFAIL.

$ dig -c HS it-grad.ru



Классы, отличные от IN, практически не используются в современном мире. Но это вовсе не означает, что их нет: например, существуют HS или CH. HS зарезервирован для использования в информационной службе Hesoid, названной в честь древнегреческого поэта. А вот класс CH зарезервирован под нужды героя статьи, Chaosnet. На текущий момент он представляет разве что историческую, мемориальную ценность.


Остальные классы DNS

Сегодня мир принадлежит TCP/IP. Этот протокол (вместе с UDP) управляет подавляющим числом сетевых подключений. Но, как видите, кое-где еще остались следы другой, давно исчезнувшей системы, и это по-своему замечательно. Что такое Chaosnet? Каким он был и кем использовался? Почему он канул в Лету? Давайте разберемся.

Всё началось в MIT


Chaosnet был создан сотрудниками лаборатории по изучению искусственного интеллекта MIT в 1970-х. Он был сопутствующим продуктом проекта машины, которая могла бы работать на языке программирования Lisp более эффективно, чем компьютеры общего назначения.

Lisp это детище профессора MIT и лауреата премии Тьюринга 1971 года Джона Маккарти. Он является основоположником функционального программирования и автором термина (порицаемого в некоторых кругах) искусственный интеллект.


Джон Маккарти собственной персоной

Самой ранней версией Lisp принято считать интерпретатор 1958 года для IBM 704. Фактически, это один из старейших актуальных языков программирования наряду с Фортраном.

Первое публичное упоминание о Lisp (версия 1) датируется 1960-м годом. А к 1962-му была готова продвинутая и усовершенствованная версия 1.5. Lisp включал в себя массу инструментов и функций, которые присутствуют в подавляющем большинстве современных языков программирования.

Это был первый язык, в котором была реализована система сборки мусора и автоматическое управление памятью. Он получил огромную популярность и любовь среди программистов, работавших над ИИ. Вот только один из известных примеров: SHRDLU, программа Терри Винограда, которая позволяла обращаться к компьютеру на естественном языке и заставлять его решать простые логические задачи. Была написана на DEC PDP-6 с использованием языков Lisp и Micro Planner.


Пример, иллюстрирующий SHRDLU

Единственной проблемой Lisp была его скорость. Простейшие операции занимали вдвое больше времени, чем в других языках, поскольку переменные проходили двойную проверку: и в процессе выполнения, и на этапе компиляции. Сборщик мусора работал более секунды на тогдашнем IBM 7090, находившемся в распоряжении MIT. Проблема производительности стояла чрезвычайно остро: ИИ-программисты строили системы, взаимодействовавшие с пользователем в реальном времени.

В конце 1970-х было решено построить специальный компьютер для Lisp с учетом всех особенностей языка. У компьютера должно было быть больше памяти и компактный набор инструкций, подходящих для Lisp. Предполагалось, что для проверки типов будет использоваться самостоятельная электрическая цепь, и это многократно ускорит работу кода. Еще одна особенность Lisp-машин состояла в том, что ни о каком разделении процессорного времени и речи быть не могло: амбициозные программы задействовали все ресурсы компьютера без остатка. Каждому пользователю приписывался отдельный центральный процессор. Вот как сотрудники Lisp Machine Group описывали перспективы работы с таким компьютером:
Lisp Machine это персональный компьютер. Это значит, что процессор и основная память не разделяются между пользователями. Система состоит из пула процессоров, каждый из которых имеет собственную основную память и собственный диск. Когда пользователь входит в систему, ему назначается процессор, и он эксклюзивно использует его в течение сеанса. При выходе из системы процессор возвращается в пул и может быть использован следующим человеком. Таким образом, нет конкуренции за память, а страницы, на которые часто ссылается пользователь, остаются в ядре, и накладные расходы значительно уменьшаются.
Разумеется, понятие персональный компьютер в отношении Lisp-машин употребляется в несколько ином значении, чем мы привыкли теперь.


Лисп-машина


Промо-фотография терминала

Предполагалось, что пользователи будут работать не непосредственно с компьютером, а со специальными терминалами. Каждый пользователь получит выделенные мощности, а сам компьютер будет находиться в машинном зале, чтобы не докучать всему офису звуками вычислений. Процессоры будут иметь доступ к файловой системе и к периферийным устройствам, таким как принтеры, через высокоскоростную локальную сеть с полностью распределенным управлением. Так и появился Chaosnet. Его создатели Томас Найт (биография на русском языке) и Джек Холлоуэй.

Chaosnet одновременно являлся и железным стандартом, и программным протоколом. В части оборудования этот стандарт был похож на Ethernet, а программный протокол в конечном итоге и работал по Ethernet. Но в отличие от TCP/IP, предполагалось управление исключительно локальными сетями. Один из сотрудников MIT Artificial Intelligence Lab рассказывал, что при разработке Chaosnet основное внимание было уделено написанию протокола, который в пределах небольшой сети показывал бы лучшие результаты, чем его конкуренты.

Скорость была крайне важна, поскольку Chaosnet был промежуточным звеном между процессором Lisp и файловой системой. Сетевые задержки сказались бы на скорости выполнения базовых операций. Для обеспечения максимального быстродействия за основу была взята (а в дальнейшем доработана) Network Control Program, применявшаяся тогда в Arpanet. Chaosnet, как и современный TCP/IP, использовал пакетные подтверждения сообщений, что позволило сократить общее количество пересылаемых пакетов на 30-50%.

Chaosnet также мог обойтись без алгоритмов маршрутизации, поскольку большинство хостов в сети Lisp-машин были связаны одним коротким проводом (CATV, коаксиальный кабель). Дэвид Мун, участник Lisp Machine Group писал, что схема маршрутизации Chaosnet основана на предположении, что сеть достаточно проста и в ней существует всего несколько коротких путей. Сложные схемы здесь не нужны. В результате управляющая программа Chaosnet весила вдвое меньше, чем Network Control Program для Arpanet.

Протокол Chaosnet имел и другие особенности. Так, длина адреса составляла всего 16 бит, что вдвое меньше длины адреса IPv4. Вполне разумный подход, учитывая, что Chaosnet предназначался только для локальных сетей. Первые 8 бит указывали на подсеть, вторые на конкретный хост.

Также Chaosnet не использовал номера портов. Вместо этого процесс, который хотел подключиться к другому процессу на другом компьютере, осуществлял запрос, в котором указывалось контактное имя цели. Зачастую название конкретной службы. Например, один хост мог попытаться подключиться к другому хосту, используя контактное имя TELNET. Это весьма похоже на TCP: например, к порту 80 можно обратиться по имени HTTP.

DNS-класс CH, Chaosnet, был добавлен в DNS в 1986 году. Он заменил другой класс, CSNET (Computer Science Network). Теперь уже сложно выяснить, почему именно Chaosnet получил свое место в DNS. Существовали и другие семейства протоколов, которые почему-то не были в неё добавлены. Например, Пол Мокапетрис (Paul Mockapetris), один из главных архитекторов DNS, писал, что изначально предполагалось включить в систему доменных имен класс сетевого протокола Xerox. Но по неизвестным причинам этого не произошло. А Chaosnet, возможно, был добавлен только потому, что большая часть работы над Arpanet и Интернетом производилась в BBN Technologies. Сотрудники этой компании были тесно связаны с MIT и, вероятно, многое слышали о Chaosnet.

Поначалу Lisp-машины имели коммерческий успех и продавались Symbolics и Lisp Machines Inc. Но с течением времени надобность в них отпала. Их вытеснили микрокомпьютеры, которым по силам было работать с Lisp, но уже без специальных схем. Затем на сцену вышел TCP/IP, в котором были исправлены недоработки Arpanet, и Chaosnet потерял актуальность.

Призрак прошлого


К сожалению, информации о Chaosnet сейчас не так уж и много. RFC 675, который, по сути, является первой версией TCP/IP, был опубликован в 1974 году. Chaosnet же появился на год позже. TCP/IP в конце концов завоевал мир, а Chaosnet развития не получил. Есть вероятность, что какие-то практики Chaosnet оказали влияние на разработку TCP/IP, но никаких подтверждающих или опровергающих это фактов нет. Интересный факт: в первоначальной версии Манифеста GNU упоминается поддержка протокола Chaosnet.

Различные имплементации Chaosnet и интересные ссылки:


Единственным заметным следом Chaosnet в мировой паутине является класс CH DNS. Это не более, чем призрак альтернативного сетевого протокола в мире победившего TCP/IP. Забавный артефакт цифровой археологии. Но он является живым напоминание о том, что интернет не появился в одночасье, а TCP/IP не единственный способ соединять компьютеры между собой.

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru