AppleTalk — это устаревший фирменный набор сетевых протоколов, разработанный Apple Computer для компьютеров Macintosh . AppleTalk включает ряд функций, которые позволяют подключать локальные сети без предварительной настройки или необходимости в централизованном маршрутизаторе или сервере любого типа. Подключенные системы, оснащенные AppleTalk, автоматически назначают адреса, обновляют распределенное пространство имен и настраивают любую необходимую межсетевую маршрутизацию.
AppleTalk был выпущен в 1985 году и был основным протоколом, используемым устройствами Apple в 1980-х и 1990-х годах. Версии также были выпущены для IBM PC и совместимых и Apple IIGS . Поддержка AppleTalk также была доступна в большинстве сетевых принтеров (особенно лазерных ), некоторых файловых серверах и ряде маршрутизаторов .
Развитие TCP/IP в 1990-х годах привело к повторной реализации большинства этих типов поддержки в этом протоколе, и AppleTalk перестал поддерживаться с выпуском Mac OS X v10.6 в 2009 году. Многие из более продвинутых функций автоконфигурации AppleTalk были с тех пор представлены в Bonjour , в то время как Universal Plug and Play удовлетворяет схожие потребности.
После выпуска компьютера Apple Lisa в январе 1983 года Apple вложила значительные усилия в разработку локальной сетевой системы (LAN) для машин. Известная как AppleNet , она была основана на основополагающем стеке протоколов Xerox XNS [1], но работала на пользовательской системе коаксиального кабеля 1 Мбит/с , а не на 2,94 Мбит/с Ethernet от Xerox . AppleNet была анонсирована в начале 1983 года с полным внедрением по целевой цене 500 долларов за подключаемые карты AppleNet для Lisa и Apple II . [2]
В то время ранние системы LAN только выходили на рынок, включая Ethernet , Token Ring , Econet и ARCNET . Это была тема крупных коммерческих усилий в то время, доминирующая на таких шоу, как Национальная компьютерная конференция (NCC) в Анахайме в мае 1983 года. Все системы боролись за положение на рынке, но даже в это время широкое признание Ethernet предполагало, что он станет фактическим стандартом. [3] Именно на этом шоу Стив Джобс задал Гуршарану Сидху, казалось бы, безобидный вопрос: «Почему сетевые технологии не прижились?» [4]
Четыре месяца спустя, в октябре, AppleNet был отменен. В то время они объявили, что «Apple поняла, что создание сетевой системы — не их бизнес. Мы создали и использовали AppleNet внутри компании, но мы поняли, что если бы мы его выпустили, то увидели бы появление новых стандартов». [5] В январе Джобс объявил, что вместо этого они будут поддерживать Token Ring от IBM , который, как он ожидал, должен был выйти через «несколько месяцев». [5]
В этот период Apple была глубоко погружена в разработку компьютера Macintosh. Во время разработки инженеры приняли решение использовать чип контроллера последовательного порта Zilog 8530 (SCC) вместо более дешевого и более распространенного UART для обеспечения последовательных портов . [6] SCC стоил примерно на 5 долларов дороже, чем UART, но предлагал гораздо более высокие скорости до 250 килобит в секунду (или выше с дополнительным оборудованием) и внутренне поддерживал ряд базовых сетевых протоколов, таких как Bisync от IBM . [7]
SCC был выбран, потому что он позволял подключать к порту несколько устройств. Периферийные устройства , оснащенные аналогичными SCC, могли взаимодействовать с использованием встроенных протоколов, чередуя свои данные с другими периферийными устройствами на той же шине. Это исключало необходимость в дополнительных портах на задней панели машины и позволяло исключить слоты расширения для поддержки более сложных устройств. Первоначальная концепция была известна как AppleBus , представляя собой систему, контролируемую хостом Macintosh, опрашивающим «немые» устройства способом, похожим на современную универсальную последовательную шину . [8]
Команда Macintosh уже начала работу над тем, что должно было стать LaserWriter , и рассмотрела ряд других вариантов ответа на вопрос о том, как совместно использовать эти дорогие машины и другие ресурсы. Серия записок Боба Белвилля прояснила эти концепции, описав Mac, LaserWriter и файловую серверную систему, которая должна была стать Macintosh Office . [4] К концу 1983 года стало ясно, что Token Ring от IBM не будет готов к запуску Mac и может пропустить запуск этих других продуктов. В конце концов, Token Ring не будет выпущен до октября 1985 года. [9]
Более ранний вопрос Джобса Сидху уже вызвал ряд идей. Когда в октябре AppleNet был отменен, Сидху возглавил усилия по разработке новой сетевой системы на основе оборудования AppleBus. Эта новая система не должна была соответствовать каким-либо существующим предубеждениям и была разработана так, чтобы быть достойной Mac — система, которая могла быть установлена пользователем и не требовала никакой настройки или фиксированных сетевых адресов — короче говоря, настоящая сеть plug-and-play. [10] [ необходим сторонний источник ] Требовались значительные усилия, но к моменту выпуска Mac основные концепции были намечены, и некоторые из низкоуровневых протоколов были на пути к завершению. Сидху упомянул о работе в Belleville всего через два часа после анонса Mac. [4]
«Новый» AppleBus был анонсирован в начале 1984 года, [N 1] позволяя прямое подключение с Mac или Lisa через небольшую коробку, которая вставляется в последовательный порт и подключается кабелями к следующему компьютеру выше и ниже по течению. Также были анонсированы адаптеры для Apple II и Apple III . [11] Apple также объявила, что сеть AppleBus может быть подключена к системе Token Ring и будет выглядеть как единый узел внутри нее. [5] Подробности того, как это будет работать, были отрывочными. [5]
Незадолго до своего выпуска в начале 1985 года AppleBus был переименован в AppleTalk . Первоначально продаваемый как AppleTalk Personal Network , он включал в себя семейство сетевых протоколов и физический уровень.
Физический уровень имел ряд ограничений, включая скорость всего 230,4 кбит/с, максимальное расстояние 1000 футов (300 м) от конца до конца и всего 32 узла на локальную сеть. [12] Но поскольку базовое оборудование было встроено в Mac, добавление узлов стоило всего около 50 долларов за адаптер. Для сравнения, карты Ethernet или Token Ring стоили сотни или тысячи долларов. Кроме того, весь сетевой стек требовал всего около 6 кБ оперативной памяти, что позволяло ему работать на любом Mac. [13]
Относительно низкая скорость AppleTalk позволила дополнительно снизить стоимость. Вместо использования сбалансированных цепей передачи и приема RS-422 , кабели AppleTalk использовали одно общее электрическое заземление , что ограничивало скорость примерно до 500 кбит/с, но позволяло удалить один проводник. Это означало, что для проводки можно было использовать обычные трехпроводные кабели. Кроме того, адаптеры были разработаны как «самозавершающие», что означало, что узлы в конце сети могли просто оставить свой последний разъем неподключенным. Не было необходимости в том, чтобы провода были соединены вместе в петлю, и не было необходимости в концентраторах или других устройствах.
Система была разработана для будущего расширения; система адресации допускала расширение до 255 узлов в локальной сети (хотя в то время можно было использовать только 32), а с помощью «мостов» (которые стали известны как «маршрутизаторы», хотя технически это не одно и то же) можно было объединять локальные сети в более крупные совокупности. «Зоны» позволяли адресовать устройства в Интернете, соединенном мостом. Кроме того, AppleTalk был разработан с самого начала, чтобы позволить использование с любым потенциальным базовым физическим соединением, [14] и через несколько лет физический уровень был переименован в LocalTalk , чтобы отличать его от протоколов AppleTalk.
Главным преимуществом AppleTalk было то, что он был совершенно необслуживаемым. Чтобы подключить устройство к сети, пользователь просто подключал адаптер к машине, затем подключал кабель от него к любому свободному порту на любом другом адаптере. Сетевой стек AppleTalk согласовывал сетевой адрес, назначал компьютеру понятное для человека имя и составлял список имен и типов других машин в сети, чтобы пользователь мог просматривать устройства через Chooser . AppleTalk был настолько прост в использовании, что сети ad hoc, как правило, появлялись всякий раз, когда несколько компьютеров Mac находились в одной комнате. [15] Позже Apple использовала это в рекламе, показывающей сеть, создаваемую между двумя сиденьями в самолете. [16]
В течение следующих нескольких лет развивался процветающий рынок сторонних производителей для устройств AppleTalk. Одним из особенно примечательных примеров был альтернативный адаптер, разработанный BMUG и коммерциализированный Farallon как PhoneNET в 1987 году. [17] По сути, это была замена разъема Apple, который имел обычные телефонные гнезда вместо круглых разъемов Apple. PhoneNet позволял соединять сети AppleTalk с помощью обычных телефонных проводов и с минимальными дополнительными усилиями мог запускать аналоговые телефоны и AppleTalk на одном четырехпроводном телефонном кабеле.
Другие компании использовали возможность SCC считывать внешние часы для поддержки более высоких скоростей передачи данных, до 1 Мбит/с. В этих системах внешний адаптер также включал свои собственные часы и использовал их для подачи сигналов на входные контакты часов SCC. Самой известной такой системой была FlashTalk компании Centram , которая работала на скорости 768 кбит/с и предназначалась для использования с их сетевой системой TOPS . [18] Аналогичным решением была DaynaTalk со скоростью 850 кбит/с , которая использовала отдельный блок, подключаемый между компьютером и обычным блоком LocalTalk/PhoneNet. Dayna также предлагала карту расширения для ПК, которая работала со скоростью до 1,7 Мбит/с при взаимодействии с другими картами Dayna для ПК. [19] [20] Существовало также несколько других систем с еще более высокой производительностью, но они часто требовали специальных кабелей, которые были несовместимы с LocalTalk/PhoneNet, а также требовали исправлений в сетевом стеке, что часто вызывало проблемы.
По мере того, как Apple расширялась на коммерческие и образовательные рынки, им требовалось интегрировать AppleTalk в существующие сетевые установки. Многие из этих организаций уже инвестировали в очень дорогую инфраструктуру Ethernet, и не было прямого способа подключить Macintosh к Ethernet. AppleTalk включал структуру протокола для соединения подсетей AppleTalk, и поэтому в качестве решения изначально был создан EtherTalk для использования Ethernet в качестве магистрали между подсетями LocalTalk. Чтобы добиться этого, организациям необходимо было приобрести мост LocalTalk-to-Ethernet , и Apple предоставила третьим сторонам возможность производить эти продукты. [21] Откликнулось несколько компаний, включая Hayes и несколько недавно созданных компаний, таких как Kinetics.
К 1987 году Ethernet явно выигрывал битву стандартов у Token Ring, и в середине того же года Apple представила EtherTalk 1.0 , реализацию протокола AppleTalk на физическом уровне Ethernet. Представленная для недавно выпущенного компьютера Macintosh II , одного из первых двух Macintosh от Apple со слотами расширения (у Macintosh SE был один слот другого типа), операционная система включала новую панель управления сетью , которая позволяла пользователю выбирать, какое физическое соединение использовать для работы в сети (из «Built-in» или «EtherTalk»). На момент появления интерфейсные карты Ethernet были доступны от 3Com и Kinetics, которые подключались к слоту Nubus в машине. Новый сетевой стек также расширил систему, позволив использовать целых 255 узлов на локальную сеть. С выпуском EtherTalk персональная сеть AppleTalk была переименована в LocalTalk , [22] под этим именем она будет известна большую часть своей жизни. Token Ring позже будет поддерживаться похожим продуктом TokenTalk , который использовал ту же панель управления сетью и базовое программное обеспечение. Со временем многие сторонние компании представили совместимые карты Ethernet и Token Ring, которые использовали те же драйверы.
Появление Macintosh с прямым подключением Ethernet также усилило проблему совместимости Ethernet и LocalTalk: сети с новыми и старыми Mac нуждались в каком-то способе связи друг с другом. Это могло быть так же просто, как сеть Ethernet Mac II, пытающаяся связаться с LaserWriter, который был подключен только к LocalTalk. Apple изначально полагалась на вышеупомянутые продукты моста LocalTalk-to-Ethernet, но вопреки убеждению Apple, что это будут продукты с небольшим объемом, к концу 1987 года использовалось 130 000 таких сетей. AppleTalk была в то время самой используемой сетевой системой в мире, с более чем в три раза большим количеством установок, чем у любого другого поставщика. [23] [ необходим сторонний источник ]
1987 год также ознаменовался выпуском продукта AppleShare , выделенного файлового сервера , работавшего на любом Mac с 512 КБ ОЗУ или более. Распространенной машиной AppleShare был Mac Plus с внешним жестким диском SCSI . AppleShare была сетевой операционной системой № 3 в конце 1980-х годов после Novell NetWare и MS-Net от Microsoft . [24] AppleShare фактически заменила неудачные попытки Macintosh Office, которые были основаны на выделенном файловом сервере.
Значительная переработка была выпущена в 1989 году как AppleTalk Phase II . Во многих отношениях Phase II можно считать попыткой сделать более раннюю версию (никогда не называвшуюся Phase I) более общей. ЛВС теперь могли поддерживать более 255 узлов, а зоны больше не были связаны с физическими сетями, а были полностью виртуальными конструкциями, используемыми просто для организации узлов. Например, теперь можно было создать зону «Принтеры», которая перечисляла бы все принтеры в организации, или можно было бы захотеть поместить то же самое устройство в зону «2-й этаж», чтобы указать его физическое местоположение. Phase II также включала изменения в базовые межсетевые протоколы, чтобы сделать их менее «болтливыми», что ранее было серьезной проблемой в сетях, которые соединялись через глобальные сети. [25]
К этому моменту Apple разрабатывала широкий спектр коммуникационных продуктов, и многие из них были анонсированы вместе с AppleTalk Phase II. Они включали обновления EtherTalk и TokenTalk, программное обеспечение AppleTalk и оборудование LocalTalk для IBM PC , EtherTalk для операционной системы Apple A/UX, позволяющей использовать LaserWriters и другие сетевые ресурсы, а также продукты Mac X.25 и MacX .
Ethernet стал почти универсальным к 1990 году, и пришло время встраивать Ethernet в компьютеры Mac прямо с завода. Однако физическая проводка, используемая этими сетями, еще не была полностью стандартизирована. Apple решила эту проблему, используя один порт на задней панели компьютера, в который пользователь мог подключить адаптер для любой заданной кабельной системы. Эта система FriendlyNet была основана на стандартном интерфейсе Attachment Unit Interface или AUI, но намеренно выбрала нестандартный разъем, который был меньше и проще в использовании, который они назвали «Apple AUI» или AAUI . FriendlyNet был впервые представлен на компьютерах Quadra 700 и Quadra 900 и некоторое время использовался во многих моделях Mac. [26] Как и в случае с LocalTalk, быстро появилось несколько сторонних адаптеров FriendlyNet.
Поскольку 10BASE-T стал фактической кабельной системой для Ethernet, машины Power Macintosh второго поколения добавили порт 10BASE-T в дополнение к AAUI. PowerBook 3400c и младшие Power Mac также добавили 10BASE-T. Power Macintosh 7300 / 8600 / 9600 были последними компьютерами Mac, включавшими AAUI, а 10BASE-T стал универсальным, начиная с Power Macintosh G3 и PowerBook G3 .
С самого начала AppleTalk пользователи хотели подключить Macintosh к сетевым средам TCP/IP . В 1984 году Билл Крофт из Стэнфордского университета стал пионером в разработке IP-пакетов, инкапсулированных в DDP, в рамках проекта SEAGATE (Stanford Ethernet–AppleTalk Gateway). SEAGATE был коммерциализирован компанией Kinetics в их мосте LocalTalk-to-Ethernet в качестве дополнительной опции маршрутизации. Несколько лет спустя MacIP был отделен от кода SEAGATE и стал фактическим методом маршрутизации IP-пакетов по сетям LocalTalk. К 1986 году Колумбийский университет выпустил первую версию Columbia AppleTalk Package (CAP), которая позволила повысить интеграцию сред Unix, TCP/IP и AppleTalk. В 1988 году Apple выпустила MacTCP , систему, которая позволила Mac поддерживать TCP/IP на машинах с подходящим оборудованием Ethernet. Однако это оставило многие университеты с проблемой поддержки IP на своих многочисленных компьютерах Mac, оснащенных LocalTalk. Вскоре поддержка MacIP стала обычным явлением в мостах LocalTalk-to-Ethernet. [26] MacTCP не входил в стандартную часть классической Mac OS до 1994 года, [27] к тому времени он также поддерживал SNMP и PPP .
В течение некоторого времени в начале 1990-х годов Mac был основным клиентом в быстро расширяющемся Интернете. [ требуется ссылка ] Среди наиболее известных программ, широко используемых, были Fetch, Eudora, eXodus, NewsWatcher и пакеты NCSA, особенно NCSA Mosaic [28] и его потомок Netscape Navigator . [29] Кроме того, появилось несколько серверных продуктов, которые позволяли Mac размещать интернет-контент. В течение этого периода у Mac было примерно в 2-3 раза больше клиентов, подключенных к Интернету, чем у любой другой платформы, [30] [ требуется сторонний источник ] несмотря на относительно небольшую общую долю рынка микрокомпьютеров.
Поскольку мир быстро перешел на IP для использования как в LAN, так и в WAN, Apple столкнулась с необходимостью поддерживать две все более устаревшие кодовые базы на все более широкой группе машин, а также с внедрением машин на базе PowerPC . Это привело к усилиям Open Transport , которые повторно реализовали и MacTCP, и AppleTalk на совершенно новой кодовой базе, адаптированной из стандарта Unix STREAMS . Ранние версии имели проблемы и некоторое время не становились стабильными. [31] К тому моменту Apple была глубоко погружена в свои в конечном итоге обреченные усилия Copland .
С покупкой NeXT и последующей разработкой Mac OS X , AppleTalk стал строго устаревшей системой. Поддержка была добавлена в Mac OS X, чтобы обеспечить поддержку большого количества существующих устройств AppleTalk, в частности лазерных принтеров и файловых ресурсов, но альтернативные решения для подключения, распространенные в эту эпоху, в частности USB для принтеров, ограничили их спрос. Поскольку Apple отказалась от многих из этих категорий продуктов, а все новые системы были основаны на IP, AppleTalk становился все менее и менее распространенным. Поддержка AppleTalk была окончательно удалена из линейки macOS в Mac OS X v10.6 в 2009 году. [32]
Однако потеря AppleTalk не уменьшила потребность в сетевых решениях, которые сочетали бы простоту использования с IP-маршрутизацией. Apple возглавляла разработку многих таких усилий, от внедрения маршрутизатора AirPort до разработки сетевой системы с нулевой конфигурацией и ее реализации Rendezvous, позже переименованной в Bonjour .
Начиная с 2020 года поддержка AppleTalk полностью прекращена в macOS 11 Big Sur.
Проект AppleTalk строго следовал модели OSI для иерархии протоколов. В отличие от большинства ранних систем LAN , AppleTalk не был построен с использованием архетипической системы Xerox XNS . Предполагаемой целью не был Ethernet, и у него не было 48-битных адресов для маршрутизации. Тем не менее, многие части системы AppleTalk имеют прямые аналоги в XNS.
Одним из ключевых отличий AppleTalk было то, что он содержал два протокола, направленных на то, чтобы сделать систему полностью самонастраивающейся. Протокол разрешения адресов AppleTalk ( AARP ) позволял хостам AppleTalk автоматически генерировать свои собственные сетевые адреса, а протокол привязки имен ( NBP ) был динамической системой для сопоставления сетевых адресов с именами, читаемыми пользователем. Хотя системы, похожие на AARP, существовали и в других системах, например , Banyan VINES . Начиная примерно с 2002 года Rendezvous (комбинация обнаружения служб на основе DNS , многоадресной DNS и локальной адресации ) предоставлял возможности и удобство использования IP, которые были похожи на возможности AppleTalk. [33] [34]
И AARP, и NBP определили способы, позволяющие устройствам «контроллера» переопределять механизмы по умолчанию. Концепция заключалась в том, чтобы позволить маршрутизаторам предоставлять информацию или «жестко подключать» систему к известным адресам и именам. В более крупных сетях, где AARP мог вызывать проблемы, поскольку новые узлы искали свободные адреса, добавление маршрутизатора могло уменьшить «болтливость». Вместе AARP и NBP сделали AppleTalk простой в использовании сетевой системой. Новые машины добавлялись в сеть путем их подключения и, по желанию, присвоения им имени. Списки NBP проверялись и отображались программой, известной как Chooser , которая отображала список машин в локальной сети, разделенных на классы, такие как файл-серверы и принтеры.
Адрес AppleTalk представлял собой четырехбайтовую величину. Он состоял из двухбайтового номера сети, однобайтового номера узла и однобайтового номера сокета. Из них только номер сети требовал какой-либо настройки, поскольку его получали от маршрутизатора. Каждый узел динамически выбирал свой собственный номер узла в соответствии с протоколом (первоначально LocalTalk Link Access Protocol LLAP, а позднее, для Ethernet/EtherTalk, AppleTalk Address Resolution Protocol, AARP) [35] , который разрешал конфликт между разными узлами, случайно выбиравшими один и тот же номер. Для номеров сокетов несколько известных номеров были зарезервированы для специальных целей, специфичных для самого протокола AppleTalk. Помимо них, все протоколы уровня приложений должны были использовать динамически назначаемые номера сокетов как на стороне клиента, так и на стороне сервера.
Из-за этой динамики нельзя было ожидать, что пользователи будут получать доступ к сервисам, указывая свой адрес. Вместо этого все сервисы имели имена , которые, будучи выбранными людьми, могли быть значимыми для пользователей, а также могли быть достаточно длинными, чтобы минимизировать вероятность конфликтов.
Поскольку имена NBP транслировались в адрес, который включал номер сокета, а также номер узла, имя в AppleTalk напрямую сопоставлялось со службой, предоставляемой машиной, которая была полностью отделена от имени самой машины. Таким образом, службы можно было перенести на другую машину, и пока они сохраняли то же имя службы, пользователям не нужно было делать что-либо другое, чтобы продолжить доступ к службе. И одна и та же машина могла размещать любое количество экземпляров служб одного и того же типа без каких-либо конфликтов сетевого подключения.
Сравните это с записями A в DNS , в которых имя преобразуется в адрес машины, не включая номер порта, который может предоставлять услугу. Таким образом, если люди привыкли использовать определенное имя машины для доступа к определенной службе, их доступ будет нарушен, когда служба будет перемещена на другую машину. Это можно несколько смягчить, настаивая на использовании записей CNAME, указывающих на службу, а не фактических имен машин для ссылки на службу, но нет способа гарантировать, что пользователи будут следовать такому соглашению. Некоторые новые протоколы, такие как Kerberos и Active Directory, используют записи DNS SRV для идентификации служб по имени, что гораздо ближе к модели AppleTalk. [ оригинальное исследование? ]
Протокол разрешения адресов AppleTalk (AARP) преобразует адреса AppleTalk в адреса канального уровня . [36] Он функционально эквивалентен ARP и обеспечивает разрешение адресов методом, очень похожим на ARP.
AARP — довольно простая система. При включении машина AppleTalk транслирует пакет зондирования AARP с запросом сетевого адреса, намереваясь получить ответ от контроллеров, таких как маршрутизаторы. Если адрес не указан, он выбирается случайным образом из «базовой подсети», 0. Затем он транслирует другой пакет с сообщением «Я выбираю этот адрес», а затем ждет, не пожалуется ли кто-нибудь еще в сети. Если этот адрес есть у другой машины, новая подключающаяся машина выберет другой адрес и будет продолжать попытки, пока не найдет свободный. [37] В сети со многими машинами может потребоваться несколько попыток, прежде чем будет найден свободный адрес, поэтому для повышения производительности успешный адрес записывается в NVRAM и в будущем используется как адрес по умолчанию. Это означает, что в большинстве реальных установок, где машины добавляются по несколько за раз, требуется всего одна или две попытки, прежде чем адрес фактически станет постоянным.
AppleTalk Data Stream Protocol (ADSP) был сравнительно поздним дополнением к набору протоколов AppleTalk, когда стало ясно, что необходим надежный транспорт, ориентированный на соединение, в стиле TCP . Существенные отличия от TCP заключались в следующем:
Apple Filing Protocol (AFP), ранее AppleTalk Filing Protocol, — это протокол для связи с файловыми серверами AppleShare . Созданный на основе AppleTalk Session Protocol (для устаревшего AFP через DDP) или Data Stream Interface (для AFP через TCP), он предоставляет услуги для аутентификации пользователей (расширяемые для различных методов аутентификации, включая двусторонний обмен случайными числами) и для выполнения операций, специфичных для файловой системы Macintosh HFS . AFP по-прежнему используется в macOS, хотя большинство других протоколов AppleTalk устарели.
AppleTalk Session Protocol (ASP) был промежуточным протоколом, построенным поверх AppleTalk Transaction Protocol (ATP), который, в свою очередь, был основой AFP. Он предоставлял базовые услуги для запроса ответов на произвольные команды и выполнения внеполосных запросов состояния. Он также позволял серверу отправлять асинхронные сообщения внимания клиенту.
AppleTalk Transaction Protocol (ATP) был оригинальным надежным протоколом транспортного уровня для AppleTalk, построенным поверх DDP. Во время его разработки полноценный, надежный протокол с ориентированным на соединение протоколом, такой как TCP, считался слишком дорогим для внедрения в большинстве предполагаемых применений AppleTalk. Таким образом, ATP был простым обменом запросами/ответами без необходимости устанавливать или разрывать соединения.
На пакет запроса ATP можно было ответить восемью пакетами ответов . Затем запрашивающая сторона отправляла пакет подтверждения , содержащий битовую маску, указывающую, какой из пакетов ответов она получила, чтобы отвечающая сторона могла повторно передать оставшуюся часть.
ATP может работать в режиме «по крайней мере один раз» или в режиме «точно один раз». Режим «точно один раз» был необходим для операций, которые не были идемпотентными ; в этом режиме ответчик хранил копию буферов ответа в памяти до успешного получения пакета освобождения от запрашивающей стороны или до истечения времени ожидания. Таким образом, он мог отвечать на дублирующиеся запросы с тем же идентификатором транзакции, повторно отправляя те же данные ответа, не выполняя фактическую операцию снова. [39]
Протокол доставки датаграмм (DDP) был транспортным протоколом самого низкого уровня, независимым от канала передачи данных. Он предоставлял службу датаграмм без гарантий доставки. Все протоколы уровня приложений, включая инфраструктурные протоколы NBP, RTMP и ZIP, были построены поверх DDP. DDP AppleTalk тесно соответствует сетевому уровню модели взаимодействия открытых систем ( OSI ).
Протокол привязки имен (NBP) был динамической, распределенной системой для управления именами AppleTalk. Когда служба запускалась на машине, она регистрировала для себя имя, выбранное администратором-человеком. На этом этапе NBP предоставляла систему для проверки того, что никакая другая машина уже не зарегистрировала то же самое имя. Позже, когда клиент хотел получить доступ к этой службе, он использовал NBP для запроса машин, чтобы найти эту службу. NBP обеспечивал возможность просмотра («каковы названия всех доступных служб?»), а также возможность найти службу с определенным именем. [36] Имена были читаемыми человеком, содержали пробелы и заглавные и строчные буквы, и включали поддержку поиска.
AppleTalk Echo Protocol (AEP) — это протокол транспортного уровня, разработанный для проверки достижимости сетевых узлов. [36] AEP генерирует пакеты для отправки в сетевой узел и идентифицируется в поле Type пакета как пакет AEP. Сначала пакет передается в исходный DDP. После того, как он идентифицирован как пакет AEP, он пересылается в узел, где пакет проверяется DDP в пункте назначения. После того, как пакет идентифицирован как пакет AEP, пакет копируется, и поле в пакете изменяется для создания пакета ответа AEP, а затем возвращается в исходный узел.
Протокол доступа к принтеру (Printer Access Protocol, PAP) был стандартным способом связи с принтерами PostScript . Он был построен поверх ATP. [36] Когда соединение PAP было открыто, каждый конец отправлял другому запрос ATP, который по сути означал «отправь мне больше данных». Ответ клиента серверу состоял в отправке блока кода PostScript, в то время как сервер мог ответить любыми диагностическими сообщениями, которые могли быть сгенерированы в результате, после чего отправлялся еще один запрос «отправить больше данных». Такое использование ATP обеспечивало автоматическое управление потоком ; каждый конец мог отправлять данные другому концу только в том случае, если имелся невыполненный запрос ATP для ответа.
PAP также обеспечивал запросы статуса вне диапазона, обрабатываемые отдельными транзакциями ATP. Даже когда он был занят обслуживанием задания печати от одного клиента, сервер PAP мог продолжать отвечать на запросы статуса от любого количества других клиентов. Это позволяло другим компьютерам Macintosh в локальной сети, ожидающим печати, отображать сообщения о статусе, указывающие на то, что принтер занят, и на то, каким заданием он занят.
Протокол обслуживания таблицы маршрутизации (RTMP) был протоколом, с помощью которого маршрутизаторы информировали друг друга о топологии сети. [36] Это была единственная часть AppleTalk, которая требовала периодических незапрошенных широковещательных рассылок: каждые 10 секунд каждый маршрутизатор должен был отправлять список всех известных ему сетевых номеров и предполагаемое расстояние до них.
Протокол зональной информации (ZIP) был протоколом, с помощью которого номера сетей AppleTalk были связаны с именами зон. [36] Зона была подразделением сети , которое имело смысл для людей (например, «Бухгалтерский отдел»); но в то время как номер сети должен был быть назначен топологически непрерывному участку сети, зона могла включать в себя несколько различных несмежных частей сети.
Первоначальная реализация оборудования по умолчанию для AppleTalk представляла собой высокоскоростной последовательный протокол, известный как LocalTalk , который использовал встроенные порты RS-422 Macintosh на скорости 230,4 кбит/с. LocalTalk использовал разветвитель в порту RS-422 для обеспечения восходящего и нисходящего кабеля из одного порта. Топология представляла собой шину : кабели были последовательно соединены от каждой подключенной машины к следующей, вплоть до максимального количества в 32, разрешенного в любом сегменте LocalTalk . По сегодняшним меркам система была медленной, но в то время дополнительные расходы и сложность сетевых соединений на ПК были таковы, что было обычным делом, что Mac были единственными сетевыми персональными компьютерами в офисе. Другие более крупные компьютеры, такие как рабочие станции UNIX или VAX, обычно подключались к сети через Ethernet.
Также были доступны другие физические реализации. Очень популярной заменой LocalTalk был PhoneNET , стороннее решение от Farallon Computing, Inc. (переименованный в Netopia , приобретенный Motorola в 2007 году), который также использовал порт RS-422 и был неотличим от LocalTalk, насколько это касалось драйверов порта LocalTalk от Apple, но работал по очень недорогим стандартным телефонным кабелям с четырехпроводными шестипозиционными модульными разъемами , тем же кабелям, которые использовались для подключения стационарных телефонов. Поскольку он использовал вторую пару проводов, сетевые устройства можно было подключать даже через существующие телефонные разъемы, если второй линии не было. Предвосхищая сегодняшние сетевые концентраторы и коммутаторы, Farallon предоставил решения для PhoneNet, которые можно было использовать как в звездных, так и в шинных конфигурациях, как с пассивными звездными соединениями (с телефонными проводами, просто соединенными друг с другом в центральной точке), так и с активной звездой с аппаратным обеспечением концентратора «PhoneNet Star Controller». В конфигурации «звезда» любая проблема с проводкой затрагивала только одно устройство, и проблемы было легко обнаружить. Низкая стоимость PhoneNet, его гибкость и простота устранения неполадок привели к тому, что он стал доминирующим выбором для сетей Mac в начале 1990-х годов.
Протоколы AppleTalk также стали работать на физических уровнях Ethernet (сначала коаксиальный, а затем витая пара) и Token Ring , обозначенных Apple как EtherTalk и TokenTalk соответственно. EtherTalk постепенно стал доминирующим методом реализации для AppleTalk, поскольку Ethernet стал широко популярен в индустрии ПК в течение 1990-х годов. Помимо AppleTalk и TCP/IP , любая сеть Ethernet также могла одновременно переносить другие протоколы, такие как DECnet и IPX .
Когда AppleTalk был впервые представлен, доминирующей офисной вычислительной платформой был ПК, совместимый с MS-DOS. Apple представила AppleTalk PC Card в начале 1987 года, что позволило ПК присоединиться к сетям AppleTalk и печатать на принтерах LaserWriter. [40] Год спустя был выпущен AppleShare PC, что позволило ПК получить доступ к файловым серверам AppleShare. [41]
Сетевая система MS-DOS "TOPS Teleconnector" [42] через систему AppleTalk позволяла ПК с MS-DOS взаимодействовать через сетевое оборудование AppleTalk; она включала в себя интерфейсную карту AppleTalk для ПК и набор сетевого программного обеспечения, обеспечивающего такие функции, как общий доступ к файлам, дискам и принтерам. Помимо возможности создания сети AppleTalk только для ПК, она позволяла осуществлять связь между ПК и компьютерами Mac с установленным программным обеспечением TOPS. (Компьютеры Mac без установленного TOPS могли использовать ту же сеть, но только для связи с другими компьютерами Apple.) Программное обеспечение Mac TOPS не соответствовало качеству собственного программного обеспечения Apple ни по простоте использования, ни по надежности и отсутствию сбоев, но программное обеспечение DOS было относительно простым в использовании в терминах DOS и было надежным.
Операционные системы BSD и Linux поддерживают AppleTalk через проект с открытым исходным кодом Netatalk , который реализует полный набор протоколов и позволяет им выступать в качестве собственных файловых серверов или серверов печати для компьютеров Macintosh, а также печатать на принтерах LocalTalk по сети.
Операционные системы Windows Server поддерживали AppleTalk , начиная с Windows NT и заканчивая Windows Server 2003. Miramar включила AppleTalk в свой продукт PC MacLAN, выпуск которого был прекращен CA в 2007 году. GroupLogic продолжает связывать свой протокол AppleTalk с серверным программным обеспечением ExtremeZ-IP для интеграции Macintosh-Windows, которое поддерживает Windows Server 2008 и Windows Vista , а также предыдущие версии. HELIOS Software GmbH предлагает собственную реализацию стека протоколов AppleTalk как часть своего сервера HELIOS UB2. По сути, это набор файловых и печатных серверов, который работает на целом ряде различных платформ.
Кроме того, Колумбийский университет выпустил Columbia AppleTalk Package (CAP), который реализовал набор протоколов для различных разновидностей Unix, включая Ultrix , SunOS , BSD и IRIX . Этот пакет больше не поддерживается активно.