Recent from talks
Contribute something
Nothing was collected or created yet.
AppleTalk
View on Wikipedia
| Protocol stack | |
| Developer(s) | Apple Computer |
|---|---|
| Introduction | 1985 |
| Hardware | LocalTalk, others |
AppleTalk is a discontinued proprietary suite of networking protocols developed by Apple Computer for their Macintosh computers. AppleTalk includes a number of features that allow local area networks to be connected with no prior setup or the need for a centralized router or server of any sort. Connected AppleTalk-equipped systems automatically assign addresses, update the distributed namespace, and configure any required inter-networking routing.
AppleTalk was released in 1985 and was the primary protocol used by Apple devices through the 1980s and 1990s. Versions were also released for the IBM PC and compatibles and the Apple IIGS. AppleTalk support was also available in most networked printers (especially laser printers), some file servers, and a number of routers.
The rise of TCP/IP during the 1990s led to a reimplementation of most of these types of support on that protocol, and AppleTalk became unsupported as of the release of Mac OS X v10.6 in 2009. Many of AppleTalk's more advanced autoconfiguration features have since been introduced in Bonjour, while Universal Plug and Play serves similar needs.
History
[edit]AppleNet
[edit]After the release of the Apple Lisa computer in January 1983, Apple invested considerable effort in the development of a local area networking (LAN) system for the machines. Known as AppleNet, it was based on the seminal Xerox XNS protocol stack[1] but running on a custom 1 Mbit/s coaxial cable system rather than Xerox's 2.94 Mbit/s Ethernet. AppleNet was announced early in 1983 with a full introduction at the target price of $500 for plug-in AppleNet cards for the Lisa and the Apple II.[2]
At that time, early LAN systems were just coming to market, including Ethernet, Token Ring, Econet, and ARCNET. This was a topic of major commercial effort at the time, dominating shows like the National Computer Conference (NCC) in Anaheim in May 1983. All of the systems were jockeying for position in the market, but even at this time, Ethernet's widespread acceptance suggested it was to become a de facto standard.[3] It was at this show that Steve Jobs asked Gursharan Sidhu a seemingly innocuous question: "Why has networking not caught on?"[4]
Four months later, in October, AppleNet was cancelled. At the time, they announced that "Apple realized that it's not in the business to create a networking system. We built and used AppleNet in-house, but we realized that if we had shipped it, we would have seen new standards coming up."[5] In January, Jobs announced that they would instead be supporting IBM's Token Ring, which he expected to come out in a "few months".[5]
AppleBus
[edit]Through this period, Apple was deep in development of the Macintosh computer. During development, engineers had made the decision to use the Zilog 8530 serial controller chip (SCC) instead of the lower-cost and more common UART to provide serial port connections.[6] The SCC cost about $5 more than a UART, but offered much higher speeds of up to 250 kilobits per second (or higher with additional hardware) and internally supported a number of basic networking-like protocols like IBM's Bisync.[7]
The SCC was chosen because it would allow multiple devices to be attached to the port. Peripherals equipped with similar SCCs could communicate using the built-in protocols, interleaving their data with other peripherals on the same bus. This would eliminate the need for more ports on the back of the machine, and allowed for the elimination of expansion slots for supporting more complex devices. The initial concept was known as AppleBus, envisioning a system controlled by the host Macintosh polling "dumb" devices in a fashion similar to the modern Universal Serial Bus.[8]
AppleBus networking
[edit]The Macintosh team had already begun work on what would become the LaserWriter and had considered a number of other options to answer the question of how to share these expensive machines and other resources. A series of memos from Bob Belleville clarified these concepts, outlining the Mac, LaserWriter, and a file server system which would become the Macintosh Office.[4] By late 1983 it was clear that IBM's Token Ring would not be ready in time for the launch of the Mac, and might miss the launch of these other products as well. In the end, Token Ring would not ship until October 1985.[9]
Jobs' earlier question to Sidhu had already sparked a number of ideas. When AppleNet was cancelled in October, Sidhu led an effort to develop a new networking system based on the AppleBus hardware. This new system would not have to conform to any existing preconceptions, and was designed to be worthy of the Mac – a system that was user-installable and required no configuration or fixed network addresses – in short, a true plug-and-play network.[10][independent source needed] Considerable effort was needed, but by the time the Mac was released, the basic concepts had been outlined, and some of the low-level protocols were on their way to completion. Sidhu mentioned the work to Belleville only two hours after the Mac was announced.[4]
The "new" AppleBus was announced in early 1984,[N 1] allowing direct connection from the Mac or Lisa through a small box that is plugged into the serial port and connected via cables to the next computer upstream and downstream. Adaptors for Apple II and Apple III were also announced.[11] Apple also announced that an AppleBus network could be attached to, and would appear to be a single node within, a Token Ring system.[5] Details of how this would work were sketchy.[5]
AppleTalk Personal Network
[edit]Just prior to its release in early 1985, AppleBus was renamed AppleTalk. Initially marketed as AppleTalk Personal Network, it comprised a family of network protocols and a physical layer.
The physical layer had a number of limitations, including a speed of only 230.4 kbit/s, a maximum distance of 1,000 feet (300 m) from end to end, and only 32 nodes per LAN.[12] But as the basic hardware was built into the Mac, adding nodes only cost about $50 for the adaptor box. In comparison, Ethernet or Token Ring cards cost hundreds or thousands of dollars. Additionally, the entire networking stack required only about 6 kB of RAM, allowing it to run on any Mac.[13]
The relatively slow speed of AppleTalk allowed further reductions in cost. Instead of using RS-422's balanced transmit and receive circuits, the AppleTalk cabling used a single common electrical ground, which limited speeds to about 500 kbit/s, but allowed one conductor to be removed. This meant that common three-conductor cables could be used for wiring. Additionally, the adaptors were designed to be "self-terminating", meaning that nodes at the end of the network could simply leave their last connector unconnected. There was no need for the wires to be connected back together into a loop, nor the need for hubs or other devices.
The system was designed for future expansion; the addressing system allowed for expansion to 255 nodes in a LAN (although only 32 could be used at that time), and by using "bridges" (which came to be known as "routers", although technically not the same) one could interconnect LANs into larger collections. "Zones" allowed devices to be addressed within a bridge-connected internet. Additionally, AppleTalk was designed from the start to allow use with any potential underlying physical link,[14] and within a few years, the physical layer would be renamed LocalTalk, so as to differentiate it from the AppleTalk protocols.
The main advantage of AppleTalk was that it was completely maintenance-free. To join a device to a network, a user simply plugged the adaptor into the machine, then connected a cable from it to any free port on any other adaptor. The AppleTalk network stack negotiated a network address, assigned the computer a human-readable name, and compiled a list of the names and types of other machines on the network so the user could browse the devices through the Chooser. AppleTalk was so easy to use that ad hoc networks tended to appear whenever multiple Macs were in the same room.[15] Apple would later use this in an advertisement showing a network being created between two seats in an airplane.[16] A disadvantage of AppleTalk Personal Network is that cable connectors easily separate, causing network failures.[17]
PhoneNet and other adaptors
[edit]Slow but inexpensive, AppleTalk became widely popular.[18] A thriving third-party market for AppleTalk devices developed over the next few years. One particularly notable example was an alternate adaptor designed by BMUG and commercialised by Farallon as PhoneNET in 1987.[19] This was essentially a replacement for Apple's connector using conventional phone jacks instead of Apple's round connectors. PhoneNet allows AppleTalk networks to be connected together using normal telephone wires, and with very little extra work, can run analog phones and AppleTalk on a single four-conductor phone cable.[17]
Other companies took advantage of the SCC's ability to read external clocks in order to support higher transmission speeds, up to 1 Mbit/s. In these systems, the external adaptor also included its own clock, and used that to signal the SCC's clock input pins. The best-known such system was Centram's FlashTalk, which ran at 768 kbit/s, and was intended to be used with their TOPS networking system.[20] A similar solution was the 850 kbit/s DaynaTalk, which used a separate box that plugged in between the computer and a normal LocalTalk/PhoneNet box. Dayna also offered a PC expansion card that ran up to 1.7 Mbit/s when talking to other Dayna PC cards.[21][22] Several other systems also existed with even higher performance, but these often required special cabling that was incompatible with LocalTalk/PhoneNet, and also required patches to the networking stack that often caused problems.
AppleTalk over Ethernet
[edit]As Apple expanded into more commercial and education markets, they needed to integrate AppleTalk into existing network installations. Many of these organisations had already invested in a very expensive Ethernet infrastructure and there was no direct way to connect a Macintosh to Ethernet. AppleTalk included a protocol structure for interconnecting AppleTalk subnets and so as a solution, EtherTalk was initially created to use the Ethernet as a backbone between LocalTalk subnets. To accomplish this, organizations would need to purchase a LocalTalk-to-Ethernet bridge and Apple left it to third parties to produce these products.[23] A number of companies responded, including Hayes and a few newly formed companies like Kinetics.
LocalTalk, EtherTalk, TokenTalk, and AppleShare
[edit]By 1987, Ethernet was clearly winning the standards battle over Token Ring, and in the middle of that year, Apple introduced EtherTalk 1.0, an implementation of the AppleTalk protocol over the Ethernet physical layer. Introduced for the newly released Macintosh II computer, one of Apple's first two Macintoshes with expansion slots (the Macintosh SE had one slot of a different type), the operating system included a new Network control panel that allowed the user to select which physical connection to use for networking (from "Built-in" or "EtherTalk"). At introduction, Ethernet interface cards were available from 3Com and Kinetics that plugged into a NuBus slot in the machine. The new networking stack also expanded the system to allow a full 255 nodes per LAN. With EtherTalk's release, AppleTalk Personal Network was renamed LocalTalk,[24] the name it would be known under for the bulk of its life. Token Ring would later be supported with a similar TokenTalk product, which used the same Network control panel and underlying software. Over time, many third-party companies would introduce compatible Ethernet and Token Ring cards that used these same drivers.
The appearance of a Macintosh with a direct Ethernet connection also magnified the Ethernet and LocalTalk compatibility problem: Networks with new and old Macs needed some way to communicate with each other. This could be as simple as a network of Ethernet Mac II's trying to talk to a LaserWriter that only connected to LocalTalk. Apple initially relied on the aforementioned LocalTalk-to-Ethernet bridge products, but contrary to Apple's belief that these would be low-volume products, by the end of 1987, 130,000 such networks were in use. AppleTalk was at that time the most used networking system in the world, with over three times the installations of any other vendor.[25][independent source needed]
1987 also marked the introduction of the AppleShare product, a dedicated file server that ran on any Mac with 512 kB of RAM or more. A common AppleShare machine was the Mac Plus with an external SCSI hard drive. AppleShare was the #3 network operating system (NOS) in the late 1980s, behind Novell NetWare and Microsoft's MS-Net. While NetWare had more than 50% of the NOS market, AppleTalk users were the happiest.[26] AppleShare was effectively the replacement for the failed Macintosh Office efforts, which had been based on a dedicated file server device.
AppleTalk Phase II and other developments
[edit]A significant re-design was released in 1989 as AppleTalk Phase II. In many ways, Phase II can be considered an effort to make the earlier version (never called Phase I) more generic. LANs could now support more than 255 nodes, and zones were no longer associated with physical networks but were entirely virtual constructs used simply to organize nodes. For instance, one could now make a "Printers" zone that would list all the printers in an organization, or one might want to place that same device in the "2nd Floor" zone to indicate its physical location. Phase II also included changes to the underlying inter-networking protocols to make them less "chatty", which had previously been a serious problem on networks that bridged over wide-area networks.[27]
By this point, Apple had a wide variety of communications products under development, and many of these were announced along with AppleTalk Phase II. These included updates to EtherTalk and TokenTalk, AppleTalk software and LocalTalk hardware for the IBM PC, EtherTalk for Apple's A/UX operating system allowing it to use LaserWriters and other network resources, and the Mac X.25 and MacX products.
Ethernet had become almost universal by 1990, and it was time to build Ethernet into Macs direct from the factory. However, the physical wiring used by these networks was not yet completely standardized. Apple solved this problem using a single port on the back of the computer into which the user could plug an adaptor for any given cabling system. This FriendlyNet system was based on the industry-standard Attachment Unit Interface or AUI, but deliberately chose a non-standard connector that was smaller and easier to use, which they called "Apple AUI", or AAUI. FriendlyNet was first introduced on the Quadra 700 and Quadra 900 computers, and used across much of the Mac line for some time.[28] As with LocalTalk, a number of third-party FriendlyNet adaptors quickly appeared.
As 10BASE-T became the de facto cabling system for Ethernet, second-generation Power Macintosh machines added a 10BASE-T port in addition to AAUI. The PowerBook 3400c and lower-end Power Macs also added 10BASE-T. The Power Macintosh 7300/8600/9600 were the final Macs to include AAUI, and 10BASE-T became universal starting with the Power Macintosh G3 and PowerBook G3.
The capital-I Internet
[edit]From the beginning of AppleTalk, users wanted to connect the Macintosh to TCP/IP network environments. In 1984, Bill Croft at Stanford University pioneered the development of IP packets encapsulated in DDP as part of the SEAGATE (Stanford Ethernet–AppleTalk Gateway) project. SEAGATE was commercialized by Kinetics in their LocalTalk-to-Ethernet bridge as an additional routing option. A few years later, MacIP was separated from the SEAGATE code and became the de facto method for IP packets to be routed over LocalTalk networks. By 1986, Columbia University released the first version of the Columbia AppleTalk Package (CAP) that allowed higher integration of Unix, TCP/IP, and AppleTalk environments. In 1988, Apple released MacTCP, a system that allowed the Mac to support TCP/IP on machines with suitable Ethernet hardware. However, this left many universities with the problem of supporting IP on their many LocalTalk-equipped Macs. It was soon common to include MacIP support in LocalTalk-to-Ethernet bridges.[28] MacTCP would not become a standard part of the Classic Mac OS until 1994,[29] by which time it also supported SNMP and PPP.
For some time in the early 1990s, the Mac was a primary client on the rapidly expanding Internet.[30]Among the better-known programs in wide use were Fetch, Eudora, eXodus, NewsWatcher, and the NCSA packages, especially NCSA Mosaic[31] and its offspring, Netscape Navigator.[32] Additionally, a number of server products appeared that allowed the Mac to host Internet content. Through this period, Macs had about 2 to 3 times as many clients connected to the Internet as any other platform,[33][independent source needed] despite the relatively small overall microcomputer market share.
As the world quickly moved to IP for both LAN and WAN uses, Apple was faced with maintaining two increasingly outdated code bases on an ever-wider group of machines as well as the introduction of the PowerPC-based machines. This led to the Open Transport efforts, which re-implemented both MacTCP and AppleTalk on an entirely new code base adapted from the Unix standard STREAMS. Early versions had problems and did not become stable for some time.[34] By that point, Apple was deep in their ultimately doomed Copland efforts.
Legacy and abandonment
[edit]With the purchase of NeXT and subsequent development of Mac OS X, AppleTalk was strictly a legacy system. Support was added to Mac OS X in order to provide support for a large number of existing AppleTalk devices, notably laser printers and file shares, but alternate connection solutions common in this era, notably USB for printers, limited their demand. As Apple abandoned many of these product categories, and all new systems were based on IP, AppleTalk became less and less common. AppleTalk support was finally removed from the macOS line in Mac OS X v10.6 in 2009.[35]
However, the loss of AppleTalk did not reduce the desire for networking solutions that combined its ease of use with IP routing. Apple has led the development of many such efforts, from the introduction of the AirPort router to the development of the zero-configuration networking system and their implementation of it, Rendezvous, later renamed Bonjour.
As of 2020, AppleTalk support has been completely removed from legacy support with macOS 11 Big Sur.
Design
[edit]The AppleTalk design rigorously followed the OSI model of protocol layering. Unlike most of the early LAN systems, AppleTalk was not built using the archetypal Xerox XNS system. The intended target was not Ethernet, and it did not have 48-bit addresses to route. Nevertheless, many portions of the AppleTalk system have direct analogs in XNS.
One key differentiation for AppleTalk was it contained two protocols aimed at making the system completely self-configuring. The AppleTalk address resolution protocol (AARP) allowed AppleTalk hosts to automatically generate their own network addresses, and the Name Binding Protocol (NBP) was a dynamic system for mapping network addresses to user-readable names. Although systems similar to AARP existed in other systems, Banyan VINES for instance. Beginning about 2002 Rendezvous (the combination of DNS-based service discovery, Multicast DNS, and link-local addressing) provided capabilities and usability using IP that were similar to those of AppleTalk.[36][37]
Both AARP and NBP had defined ways to allow "controller" devices to override the default mechanisms. The concept was to allow routers to provide the information or "hardwire" the system to known addresses and names. On larger networks where AARP could cause problems as new nodes searched for free addresses, the addition of a router could reduce "chattiness." Together AARP and NBP made AppleTalk an easy-to-use networking system. New machines were added to the network by plugging them in and optionally giving them a name. The NBP lists were examined and displayed by a program known as the Chooser which would display a list of machines on the local network, divided into classes such as file-servers and printers.
Addressing
[edit]An AppleTalk address was a four-byte quantity. This consisted of a two-byte network number, a one-byte node number, and a one-byte socket number. Of these, only the network number required any configuration, being obtained from a router. Each node dynamically chose its own node number, according to a protocol (originally the LocalTalk Link Access Protocol LLAP and later, for Ethernet/EtherTalk, the AppleTalk Address Resolution Protocol, AARP)[38] which handled contention between different nodes accidentally choosing the same number. For socket numbers, a few well-known numbers were reserved for special purposes specific to the AppleTalk protocol itself. Apart from these, all application-level protocols were expected to use dynamically assigned socket numbers at both the client and server end.
Because of this dynamism, users could not be expected to access services by specifying their address. Instead, all services had names which, being chosen by humans, could be expected to be meaningful to users, and also could be sufficiently long to minimize the chance of conflicts.
As NBP names translated to an address, which included a socket number as well as a node number, a name in AppleTalk mapped directly to a service being provided by a machine, which was entirely separate from the name of the machine itself. Thus, services could be moved to a different machine and, so long as they kept the same service name, there was no need for users to do anything different in order to continue accessing the service. And the same machine could host any number of instances of services of the same type, without any network connection conflicts.
Contrast this with A records in the DNS, in which a name translates to a machine's address, not including the port number that might be providing a service. Thus, if people are accustomed to using a particular machine name to access a particular service, their access will break when the service is moved to a different machine. This can be mitigated somewhat by insistence on using CNAME records indicating service rather than actual machine names to refer to the service, but there is no way of guaranteeing that users will follow such a convention. Some newer protocols, such as Kerberos and Active Directory use DNS SRV records to identify services by name, which is much closer to the AppleTalk model.[original research?]
Protocols
[edit]This section needs additional citations for verification. (March 2023) |
AppleTalk Address Resolution Protocol
[edit]The AppleTalk Address Resolution Protocol (AARP) resolves AppleTalk addresses to link layer addresses.[39] It is functionally equivalent to ARP and obtains address resolution by a method very similar to ARP.[40]
AARP is a fairly simple system. When powered on, an AppleTalk machine broadcasts an AARP probe packet asking for a network address, intending to hear back from controllers such as routers. If no address is provided, one is picked at random from the "base subnet", 0. It then broadcasts another packet saying "I am selecting this address", and then waits to see if anyone else on the network complains. If another machine has that address, the newly connecting machine will pick another address, and keep trying until it finds a free one.[30] On a network with many machines it may take several tries before a free address is found, so for performance purposes the successful address is recorded in NVRAM and used as the default address in the future. This means that in most real-world setups where machines are added a few at a time, only one or two tries are needed before the address effectively becomes constant.
AppleTalk Data Stream Protocol
[edit]The AppleTalk Data Stream Protocol (ADSP) was a comparatively late addition to the AppleTalk protocol suite, done when it became clear that a TCP-style reliable connection-oriented transport was needed. Significant differences from TCP were that:
- A connection attempt could be rejected.
- There were no "half-open" connections; once one end initiated a tear-down of the connection, the whole connection would be closed (i.e., ADSP is full-duplex, not dual simplex).
- AppleTalk had an included attention message system which allowed short messages to be sent which would bypass the normal stream data flow. These were delivered reliably but out of order with respect to the stream. Any attention message would be delivered as soon as possible instead of waiting for the current stream byte sequence point to become current.[41]
Apple Filing Protocol
[edit]The Apple Filing Protocol (AFP), formerly AppleTalk Filing Protocol, is the protocol for communicating with AppleShare file servers. Built on top of AppleTalk Session Protocol (for legacy AFP over DDP) or the Data Stream Interface (for AFP over TCP), it provides services for authenticating users (extensible to different authentication methods including two-way random-number exchange) and for performing operations specific to the Macintosh HFS filesystem. AFP is still in use in macOS, even though most other AppleTalk protocols have been deprecated.
AppleTalk Session Protocol
[edit]The AppleTalk Session Protocol (ASP) was an intermediate protocol, built on top of AppleTalk Transaction Protocol (ATP), which in turn was the foundation of AFP. It provided basic services for requesting responses to arbitrary commands and performing out-of-band status queries. It also allowed the server to send asynchronous attention messages to the client.
AppleTalk Transaction Protocol
[edit]The AppleTalk Transaction Protocol (ATP) was the original reliable transport-level protocol for AppleTalk, built on top of DDP. At the time it was being developed, a full, reliable connection-oriented protocol like TCP was considered to be too expensive to implement for most of the intended uses of AppleTalk. Thus, ATP was a simple request/response exchange, with no need to set up or tear down connections.
An ATP request packet could be answered by up to eight response packets. The requestor then sent an acknowledgement packet containing a bit mask indicating which of the response packets it received, so the responder could retransmit the remainder.
ATP could operate in either "at-least-once" mode or "exactly-once" mode. Exactly-once mode was essential for operations which were not idempotent; in this mode, the responder kept a copy of the response buffers in memory until successful receipt of a release packet from the requestor, or until a timeout elapsed. This way, it could respond to duplicate requests with the same transaction ID by resending the same response data, without performing the actual operation again.[42]
Datagram Delivery Protocol
[edit]The Datagram Delivery Protocol (DDP) was the lowest-level data-link-independent transport protocol. It provided a datagram service with no guarantees of delivery. All application-level protocols, including the infrastructure protocols NBP, RTMP and ZIP, were built on top of DDP. AppleTalk's DDP corresponds closely to the Network layer of the Open Systems Interconnection (OSI) communication model.
Name Binding Protocol
[edit]The Name Binding Protocol (NBP) was a dynamic, distributed system for managing AppleTalk names. When a service started up on a machine, it registered a name for itself as chosen by a human administrator. At this point, NBP provided a system for checking that no other machine had already registered the same name. Later, when a client wanted to access that service, it used NBP to query machines to find that service. NBP provided browsability ("what are the names of all the services available?") as well as the ability to find a service with a particular name.[39] Names were human-readable, containing spaces and upper- and lower-case letters, and including support for searching.
AppleTalk Echo Protocol
[edit]The AppleTalk Echo Protocol (AEP) was a transport layer protocol designed to test the reachability of network nodes.[39] AEP generates packets to be sent to the network node and is identified in the Type field of a packet as an AEP packet. The packet is first passed to the source DDP. After it is identified as an AEP packet, it is forwarded to the node where the packet is examined by the DDP at the destination. After the packet is identified as an AEP packet, the packet is then copied and a field in the packet is altered to create an AEP reply packet, and is then returned to the source node.
Printer Access Protocol
[edit]The Printer Access Protocol (PAP) was the standard way of communicating with PostScript printers. It was built on top of ATP.[39] When a PAP connection was opened, each end sent the other an ATP request which basically meant "send me more data". The client's response to the server was to send a block of PostScript code, while the server could respond with any diagnostic messages that might be generated as a result, after which another "send-more-data" request was sent. This use of ATP provided automatic flow control; each end could only send data to the other end if there was an outstanding ATP request to respond to.
PAP also provided for out-of-band status queries, handled by separate ATP transactions. Even while it was busy servicing a print job from one client, a PAP server could continue to respond to status requests from any number of other clients. This allowed other Macintoshes on the LAN that were waiting to print to display status messages indicating that the printer was busy, and what the job was that it was busy with.
Routing Table Maintenance Protocol
[edit]The Routing Table Maintenance Protocol (RTMP) was the protocol by which routers kept each other informed about the topology of the network.[39] This was the only part of AppleTalk that required periodic unsolicited broadcasts: every 10 seconds, each router had to send out a list of all the network numbers it knew about and how far away it thought they were.
Zone Information Protocol
[edit]The Zone Information Protocol (ZIP) was the protocol by which AppleTalk network numbers were associated with zone names.[39] A zone was a subdivision of the network that made sense to humans (for example, "Accounting Department"); but while a network number had to be assigned to a topologically contiguous section of the network, a zone could include several different discontiguous portions of the network.
Physical implementation
[edit]
The initial default hardware implementation for AppleTalk was a high-speed serial protocol known as LocalTalk that used the Macintosh's built-in RS-422 ports at 230.4 kbit/s. LocalTalk used a splitter box in the RS-422 port to provide an upstream and downstream cable from a single port. The topology was a bus: cables were daisy-chained from each connected machine to the next, up to the maximum of 32 permitted on any LocalTalk segment. The system was slow by today's standards, but at the time the additional cost and complexity of networking on PC machines was such that it was common that Macs were the only networked personal computers in an office. Other larger computers, such as UNIX or VAX workstations, would commonly be networked via Ethernet.
Other physical implementations were also available. A very popular replacement for LocalTalk was PhoneNET, a third-party solution from Farallon Computing, Inc. (renamed Netopia, acquired by Motorola in 2007) that also used the RS-422 port and was indistinguishable from LocalTalk as far as Apple's LocalTalk port drivers were concerned, but ran over very inexpensive standard phone cabling with four-wire, six-position modular connectors, the same cables used to connect landline telephones. Since it used the second pair of wires, network devices could even be connected through existing telephone jacks if a second line was not present. Foreshadowing today's network hubs and switches, Farallon provided solutions for PhoneNet to be used in star as well as bus configurations, with both passive star connections (with the phone wires simply bridged to each other at a central point), and active star with "PhoneNet Star Controller" hub hardware. In a star configuration, any wiring issue only affected one device, and problems were easy to pinpoint. PhoneNet's low cost, flexibility, and easy troubleshooting resulted in it being the dominant choice for Mac networks into the early 1990s.
AppleTalk protocols also came to run over Ethernet (first coaxial and then twisted pair) and Token Ring physical layers, labeled by Apple as EtherTalk and TokenTalk, respectively. EtherTalk gradually became the dominant implementation method for AppleTalk as Ethernet became generally popular in the PC industry throughout the 1990s. Besides AppleTalk and TCP/IP, any Ethernet network could also simultaneously carry other protocols such as DECnet and IPX.
Networking model
[edit]| OSI Model | Corresponding AppleTalk layers |
|---|---|
| Application | Apple Filing Protocol (AFP) |
| Presentation | Apple Filing Protocol (AFP) |
| Session | Zone Information Protocol (ZIP) AppleTalk Session Protocol (ASP) AppleTalk Data Stream Protocol (ADSP) |
| Transport | AppleTalk Transaction Protocol (ATP) AppleTalk Echo Protocol (AEP) Name Binding Protocol (NBP) Routing Table Maintenance Protocol (RTMP) |
| Network | Datagram Delivery Protocol (DDP) |
| Data link | EtherTalk Link Access Protocol (ELAP) LocalTalk Link Access Protocol (LLAP) TokenTalk Link Access Protocol (TLAP) Fiber Distributed Data Interface (FDDI) |
| Physical | LocalTalk driver Ethernet driver Token Ring driver FDDI driver |
Versions
[edit]This section needs expansion. You can help by adding to it. (June 2008) |
| AppleTalk version | Apple Filing Protocol | Corresponds to | Notes |
|---|---|---|---|
| 56 | System 7.0 | ||
| 57.0.4 | System 7.12 | ||
| 58.1.1 | System 7.1.2 | ||
| 58.1.3 | System 7.5 | ||
| 60.3 | Mac OS 7.6.1 | Open Transport 1.3 | |
| 60.0a6 | Mac OS 8.6 | Open Transport 2.0.3 | |
| 3.0 | Mac OS X 10.0.3 | ||
| 2.1, 2.0 and even 1.1 | Mac OS X v10.2 | ||
| 2.2, 3.0 and 3.1 | Mac OS X v10.3 | ||
| 3.2 | Mac OS X v10.4 |
Cross-platform solutions
[edit]By contrast to Macs, in the late 1980s no dominant LAN hardware standard existed[18][26] for the most popular office computing platform, the PC compatible running MS-DOS. Apple introduced the AppleTalk PC Card in early 1987, allowing PCs to join AppleTalk networks and print to LaserWriter printers.[43] A year later AppleShare PC was released, allowing PCs to access AppleShare file servers.[44]
The "TOPS Teleconnector"[45] MS-DOS networking system over AppleTalk system enabled MS-DOS PCs to communicate over AppleTalk network hardware; it comprised an AppleTalk interface card for the PC and a suite of networking software allowing such functions as file, drive and printer sharing. As well as allowing the construction of a PC-only AppleTalk network, it allowed communication between PCs and Macs with TOPS software installed. (Macs without TOPS installed could use the same network but only to communicate with other Apple machines.) The Mac TOPS software did not match the quality of Apple's own either in ease of use or in robustness and freedom from crashes, but the DOS software was relatively simple to use in DOS terms, and was robust.
The BSD and Linux operating systems support AppleTalk through an open source project called Netatalk, which implements the complete protocol suite and allows them to both act as native file or print servers for Macintosh computers, and print to LocalTalk printers over the network.
The Windows Server operating systems supported AppleTalk starting with Windows NT and ending after Windows Server 2003. Miramar included AppleTalk in its PC MacLAN product which was discontinued by CA in 2007. GroupLogic continues to bundle its AppleTalk protocol with its ExtremeZ-IP server software for Macintosh-Windows integration which supports Windows Server 2008 and Windows Vista as well prior versions. HELIOS Software GmbH offers a proprietary implementation of the AppleTalk protocol stack, as part of their HELIOS UB2 server. This is essentially a File and Print Server suite that runs on a whole range of different platforms.
In addition, Columbia University released the Columbia AppleTalk Package (CAP) which implemented the protocol suite for various Unix flavours including Ultrix, SunOS, BSD and IRIX. This package is no longer actively maintained.
See also
[edit]- Netatalk is a free, open-source implementation of the AppleTalk suite of protocols.
- Network File System
- Remote File Sharing
- Samba
- Server Message Block
Notes
[edit]- ^ AppleBus is mentioned by name in Steve Jobs' introduction of the Macintosh at the Boston Computer Society meeting in 1984. It appears just after the 7:20 mark in the video.
References
[edit]Citations
[edit]- ^ Markoff, John (14 February 1983). "Apple plans slower, affordable local area network". InfoWorld. p. 14.
- ^ Oppenheimer 2004, Slide 3.
- ^ Ahl, David (August 1983). "1983 National Computer Conference, May 16-19, Anaheim, California". Creative Computing. p. 188.
- ^ a b c Sidhu, Andrews & Oppenheimer 1989, p. xxiii.
- ^ a b c d Bartimo 1984, p. 45.
- ^ Oppenheimer 2004, Slide 6.
- ^ Zilog Z8530 User's Manual. Zilog. p. 1-1.
- ^ Oppenheimer 2004, Slide 9.
- ^ "Token-Ring Technical Summary". Section 1.2. Archived from the original on 22 April 2012.
- ^ Oppenheimer 2004, Slide 10.
- ^ Barimo, Jim (26 March 1984). "Apple, waiting for IBM net, links micros with AppleBus". InfoWorld. pp. 45–46.
- ^ Oppenheimer 2004, Slide 15.
- ^ Oppenheimer 2004, Slide 19.
- ^ Oppenheimer 2004, Slide 17.
- ^ Larson, Lee (October 1999). "LocalTalk to EtherTalk?". Louisville Computer News.
- ^ Apple Computer Ad - Powerbook Networking.
- ^ a b Wagner, Margaret (11 April 1988). "PhoneNET Recommeded for Macintosh LANs". U-M Computing News. 3 (8): 6–8 – via Google Books.
- ^ a b Satchell, Stephen (17 August 1987). "IBM PS/2 Model 25". Short Looks. InfoWorld. Vol. 9, no. 33. p. 44. Retrieved 25 May 2025.
- ^ Oppenheimer 2004, Slide 28.
- ^ Brown, Tim (26 October 1987). "AppleTalk Made Faster". Network World. p. 27.
- ^ Battelle, John (23 May 1989). "DaynaTalk accelerators ship". MacWEEK.
- ^ "Get More Net Work Out Of Your Network". InfoWorld. 11 December 1989.
- ^ Oppenheimer 2004, Slide 31.
- ^ Oppenheimer 2004, Slide 30.
- ^ Oppenheimer 2004, Slide 32.
- ^ a b DiDio, Laura (11 July 1988). "Study finds NetWare to be OS of choice". Network World. p. 17.
- ^ Oppenheimer 2004, Slide 34.
- ^ a b Oppenheimer 2004, Slide 36.
- ^ Oppenheimer 2004, Slide 43.
- ^ a b Faas, Ryan (15 March 2005). "Inside the Mac OS: A look at AppleTalk and zones". Macworld. Retrieved 21 March 2023.
- ^ Calore, Michael. "April 22, 1993: Mosaic Browser Lights Up Web With Color, Creativity". Wired. Retrieved 14 October 2017.
- ^ Oppenheimer 2004, Slide 46.
- ^ Oppenheimer 2004, Slide 51.
- ^ Oppenheimer 2004, Slide 54.
- ^ "Mac OS X v10.6: Mac 101 – Printing". Retrieved 2 September 2009.
- ^ Cheshire, Stuart. "Multicast DNS". Retrieved 5 October 2022.
- ^ Cheshire, S; Krochmal, M (February 2013). Multicast DNS. doi:10.17487/RFC6762. RFC 6762. Retrieved 5 October 2022.
- ^ Sidhu, Andrews & Oppenheimer 1989.
- ^ a b c d e f "AppleTalk Overview" (PDF). Cisco. 2 February 2010. Retrieved 21 March 2023.
- ^ "AppleTalk Address Resolution Protocol". DevX. Retrieved 29 January 2025.
- ^ Sidhu, Andrews & Oppenheimer 1989, p. 12-19.
- ^ "AppleTalk Transaction Protocol" (PDF).
- ^ Petrosky, Mary (2 February 1987). "AppleShare airs at last". Network World. p. 4.
- ^ Flynn, Laurie (18 January 1988). "Apple Starts Shipping AppleShare PC Software". InfoWorld. Vol. 10, no. 3. p. 29. Retrieved 25 May 2025.
- ^ Stephens, Mark (25 January 1988). "TOPS Teleconnectors Link PCs with Own Flashtalk Networks". InfoWorld. p. 12.
Bibliography
[edit]- Sidhu, Gursharan; Andrews, Richard; Oppenheimer, Alan (1989). Inside AppleTalk, Second Edition (PDF). Addison-Wesley. ISBN 0-201-55021-0. Archived (PDF) from the original on 9 October 2022.
- Bartimo, Jim (26 March 1984). "Apple, waiting for IBM net, links micros with AppleBus". InfoWorld: 45.
- Oppenheimer, Alan (January 2004). "A History of Macintosh Networking". MacWorld Expo. Archived from the original on 16 October 2006.
External links
[edit]AppleTalk
View on GrokipediaHistory
Early Development
Following the success of the Apple II in 1977, which established Apple Computer as a leader in personal computing, the company began exploring networked environments to enhance resource sharing among standalone systems. This shift was driven by the recognition that personal computers could benefit from interconnected setups in small offices and educational settings, allowing users to share files and peripherals without the complexity of mainframe-based networks. By the late 1970s, Apple initiated internal efforts to develop affordable networking solutions, motivated by the high costs and installation challenges of existing technologies, which often exceeded $1,000 per computer and required specialized expertise.[3] AppleNet emerged as an early prototype in this period, conceptualized in the late 1970s as a system to connect Apple devices including the Apple II, Apple III, and later Lisa computers, enabling peer-to-peer communication. This internal project focused on simple file sharing and printer access among Lisa systems, addressing the limitations of isolated business-oriented machines released in 1980. Although announced publicly in early 1983 with a target price of $500 for plug-in cards, AppleNet was cancelled in October 1983 after consuming significant resources, with its development roots traced back to prototypes tested on Apple hardware, laying groundwork for broader networking ambitions. The project was influenced by Xerox's XNS stack but adapted for Apple's emphasis on low-overhead, user-friendly implementation.[4][3] By 1981, these ideas evolved toward serial bus concepts for peripherals, influencing the networking architecture that would become AppleBus—the initial name for what developed into AppleTalk's physical layer. AppleBus prototypes emphasized a serial interface for easy daisy-chaining of devices, building on the need for seamless integration in personal systems. Steve Jobs played a pivotal role in accelerating this work, famously questioning at the 1983 National Computer Conference why networking had not yet become mainstream for personal computers, thereby refocusing efforts on user-friendly solutions timed for the Macintosh launch in 1984. Key contributors included lead designer Gursharan S. Sidhu, who shaped the protocol stack, and engineers like Alan Oppenheimer and Ron Hochsprung, who handled hardware and testing.[3][5] The core goals of these early developments centered on creating a low-cost, easy-to-install local area network that operated without dedicated servers, promoting plug-and-play connectivity over twisted-pair wiring at speeds around 230 Kbits/s. This approach prioritized affordability and simplicity for non-expert users, contrasting with enterprise-grade systems, and set the stage for AppleTalk's formal introduction as a suite enabling interpersonal computing in workgroups.[3]Phase I Introduction
AppleTalk Phase I was officially released in January 1984 alongside Macintosh System Software 1.0, marking the debut of Apple's proprietary networking suite designed for seamless connectivity among Macintosh computers.[1] This initial implementation emphasized simplicity and ease of use, allowing users to connect multiple devices without complex configuration, and it was integrated directly into the Macintosh hardware and software ecosystem. Development of AppleTalk had begun in late 1983, with the protocol architecture finalized to support small-scale local area networks (LANs) tailored to the emerging personal computing environment.[6] At its core, Phase I introduced dynamic addressing, where each device automatically selected a unique 8-bit node ID upon joining the network, enabling up to 32 devices on a single network segment without manual intervention.[1] The protocol operated on non-routable flat networks, meaning all connected devices shared a single logical segment without support for internetworking across multiple physical networks, which kept the design straightforward for local workgroups. Peer-to-peer communication was a foundational concept, allowing any Macintosh to directly interact with others for tasks like data exchange, fostering a collaborative environment without dedicated servers in many cases.[1] The initial hardware support came via LocalTalk, a low-speed serial protocol using the built-in transceiver in the Macintosh's printer port (a mini-DIN 8 connector), which transmitted data at 230.4 kbps over twisted-pair or coaxial cabling up to 300 meters.[1] This plug-and-play approach eliminated the need for additional adapters on early models like the Macintosh 128K, making networking accessible to non-technical users. Early adoption of AppleTalk Phase I was particularly strong in educational institutions and small office settings, where it facilitated printer sharing and basic file transfer among Macintosh workstations, printers, and early file servers, thereby enhancing productivity in resource-constrained environments.[1] By providing a cost-effective alternative to more complex networking solutions of the era, it quickly became a staple for Macintosh users seeking simple resource sharing.Phase II Enhancements
AppleTalk Phase II, introduced in 1989, enhanced the original AppleTalk suite to accommodate larger-scale deployments beyond small workgroups, emphasizing scalability and internetworking capabilities. This upgrade built upon the foundational Phase I protocols while introducing mechanisms for extended networks, allowing Macintosh systems running compatible software to participate in more expansive configurations.[7][8] A key innovation was extended addressing, which assigned 16-bit network numbers ranging from 1 to 65,535 and 8-bit node addresses from 1 to 254 per network segment, theoretically supporting up to approximately 16 million nodes across a single extended physical network like Ethernet or Token Ring. This addressed the limitations of Phase I's single-network assumption, enabling cable ranges (e.g., networks 100–110) to logically subdivide a physical cable into multiple virtual networks for better organization and collision avoidance. Routers played a central role in internetworking, facilitating communication between these extended networks and supporting multi-zone configurations where up to 255 distinct zones could be defined per network, allowing administrators to group devices logically (e.g., by department) while maintaining a unified addressing space.[9][7][8] To ensure backward compatibility, Phase II incorporated a compatibility mode for Phase I devices, primarily through software utilities that translated packets between the two phases on shared cables, though all routers required upgrading to Phase II to avoid disruptions across the internet. Phase I nodes could operate in nonextended mode on the same physical network, but full Phase II features like zones were unavailable to them without updates. This transitional approach allowed gradual migration in mixed environments.[9][7] Performance enhancements focused on efficient packet handling, including the use of multicast addressing in place of broadcasts to reduce unnecessary traffic and the split-horizon technique in routing updates to prevent redundant information loops. These changes minimized network congestion in larger topologies, with improved router selection algorithms favoring optimal paths for better overall throughput and reliability, though specific error correction mechanisms remained consistent with Phase I's datagram delivery model.[9][8]Network Adaptations
One of the earliest significant adaptations for AppleTalk was PhoneNet, introduced in 1985 by Farallon Computing as an alternative to Apple's proprietary LocalTalk hardware. PhoneNet implemented the AppleTalk physical layer using the Macintosh's RS-422 serial ports (printer port) and twisted-pair telephone wiring, typically four-conductor phone lines, which allowed for a star or bus topology without the need for Apple's more expensive shielded twisted-pair cabling. This adaptation maintained compatibility with the LocalTalk Link Access Protocol (LLAP) while supporting distances up to 2,000 feet, making it a cost-effective solution for small networks.[10] In 1986, Apple released EtherTalk, enabling AppleTalk to operate over Ethernet networks by encapsulating AppleTalk packets within Ethernet frames via the EtherTalk Link Access Protocol (ELAP). EtherTalk utilized the AppleTalk Address Resolution Protocol (AARP) to map between 48-bit Ethernet MAC addresses and AppleTalk's 16-bit network and 8-bit node addresses, facilitating seamless integration without altering the core AppleTalk protocols. This adaptation supported both 10BASE-T and coaxial Ethernet, allowing Macintosh systems to connect to broader Ethernet infrastructures commonly used in enterprise environments.[11] Apple extended AppleTalk support to Token Ring networks with TokenTalk in 1989, as part of the Phase II enhancements, using the TokenTalk Link Access Protocol (TLAP) to handle the IEEE 802.5 Token Ring physical layer. TokenTalk adapted AppleTalk's datagram delivery to Token Ring's token-passing mechanism, supporting speeds of 4 or 16 Mbps and enabling connectivity in IBM-dominated Token Ring environments prevalent in corporate settings during the late 1980s.[1] Farallon also developed the PhoneNET PC adapter in the late 1980s, which provided IBM PC compatibility by allowing MS-DOS systems to join AppleTalk networks via a LocalTalk card or RS-232 interface, bridging Macintosh and PC environments through PhoneNET's twisted-pair wiring. These adaptations collectively offered substantial advantages, including significant cost savings—PhoneNet connectors cost around $49 each compared to Apple's higher-priced LocalTalk options—and easier integration with existing office infrastructure like phone lines and Ethernet cabling, thereby extending AppleTalk's reach beyond native Macintosh setups.[12][13]Decline and Discontinuation
The rise of TCP/IP as the dominant networking protocol in the late 1990s and early 2000s significantly contributed to AppleTalk's decline, particularly with the introduction of Mac OS X in 2001, which was built on a Unix foundation emphasizing Internet standards and native TCP/IP support over proprietary protocols like AppleTalk.[2][14] AppleTalk's deprecation was gradual, remaining available in Mac OS X versions up to 10.5 but fully removed in Mac OS X 10.6 Snow Leopard, released on August 28, 2009, marking the official end of native support.[2][15] Hardware support lingered longest for Apple laser printers from the 1990s, such as the LaserWriter series, which relied on AppleTalk (often via EtherTalk over Ethernet) for connectivity; these could still function with compatible systems until the 2009 protocol removal necessitated workarounds like print servers.[15] Apple shifted focus to wireless and standards-based local networking, introducing AirPort Wi-Fi hardware in 1999 and Bonjour (formerly Rendezvous) in 2002 for zero-configuration service discovery over TCP/IP, effectively supplanting AppleTalk's plug-and-play features without the need for proprietary infrastructure.[16][2] AppleTalk peaked in usage during the 1990s, particularly in the education sector where Apple held a 37 percent market share of school computers in the 1999-2000 academic year, enabling widespread local networks in classrooms and labs; by 2001-02, this had declined to 26 percent amid broader industry shifts to TCP/IP and Windows dominance.[17][2]Design and Architecture
Networking Model
AppleTalk employs a hybrid networking model that combines peer-to-peer and client-server paradigms, enabling flexible resource sharing among devices without requiring dedicated hardware for either role. In its peer-to-peer foundation, any connected device can function as both a client and a server, allowing direct communication between equals using protocols like the AppleTalk Data Stream Protocol (ADSP), which supports symmetrical, full-duplex sessions where both endpoints exert equal control over data exchange. This design promotes efficiency and user autonomy in small-scale environments, as workstations and servers coexist on the same node without centralized oversight.[1][3] Complementing this, client-server elements provide structured services through software like AppleShare, which centralizes file and printer access via the AppleTalk Filing Protocol (AFP) and AppleTalk Session Protocol (ASP). AppleShare enables workstations to initiate asymmetrical sessions with dedicated servers for authentication, access control, and resource management, such as remote file sharing and print spooling, integrating seamlessly with the Macintosh environment. This hybrid approach allows seamless transitions between ad-hoc peer interactions and managed server-based operations.[1][3][18] The logical topology of AppleTalk is bus-based, utilizing Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) for media access control, where devices listen for a clear channel before transmitting and employ mechanisms like Request-to-Send/Clear-to-Send (RTS/CTS) handshakes to avoid collisions on shared cabling such as LocalTalk. This topology supports scalability from small personal networks, accommodating 2 to 32 nodes over distances up to 300 meters, to larger extended networks handling thousands of nodes—or up to approximately 16 million in Phase 2 configurations—through internetworking via routers that segment traffic and manage hops limited to 15.[3][19][20] AppleTalk approximates the OSI reference model with a five-layer protocol stack: physical and data link (e.g., LocalTalk Link Access Protocol for bus access), network (Datagram Delivery Protocol for routing), transport (AppleTalk Transaction Protocol for reliable delivery), and a combined session/application layer (handling services like name binding and filing). This structure condenses OSI's seven layers into five functional ones, prioritizing simplicity for local area networking while supporting end-to-end connectivity across internets.[1][3][21]Layered Protocol Stack
AppleTalk employs a layered protocol stack architecture that aligns closely with the OSI reference model, facilitating modular design and interoperability across diverse network media. The stack consists of physical, data link, network, transport, and upper-layer (session and application) components, enabling end-to-end communication in a peer-to-peer environment. This structure supports plug-and-play connectivity by emphasizing stateless operation and dynamic configuration, where devices automatically acquire addresses and resources without manual intervention.[3][1] At the physical layer, AppleTalk handles the transmission of raw bits over various media, such as twisted-pair wiring using RS-422 signaling for LocalTalk, which operates at 230.4 Kbps over distances up to 300 meters supporting up to 32 nodes. This layer manages signal encoding, carrier sensing, and basic hardware connectivity, adapting to interfaces like coaxial cable for Ethernet or token ring.[3][1] The data link layer provides frame formatting, node-to-node delivery, and error detection within a single physical network segment. For instance, the LocalTalk Link Access Protocol (LLAP) employs carrier-sense multiple access with collision avoidance (CSMA/CA), dynamic node ID assignment from 1 to 254, and cyclic redundancy check (CRC) for integrity, accommodating packets up to 600 bytes. Similar protocols like ELAP for Ethernet and TLAP for Token Ring map AppleTalk addresses to hardware addresses via the AppleTalk Address Resolution Protocol (AARP), ensuring reliable local communication. In AppleTalk Phase I, this layer operates on nonextended networks limited to one logical network per cable, whereas Phase II extends support for multiple logical networks per physical segment.[3][22] The network layer manages internetworking and routing across multiple segments, using the Datagram Delivery Protocol (DDP) for connectionless, best-effort datagram delivery to sockets via 32-bit addressing (16-bit network number, 8-bit node ID, and 8-bit socket number). Phase I uses non-extended networks, each limited to a single flat logical network of up to 254 nodes, but supports routing between such networks via the Routing Table Maintenance Protocol (RTMP); Phase II introduces routable extended networks with 16-bit network numbers (allowing up to 65,535 networks) and protocols like RTMP for dynamic table updates and hop-by-hop forwarding, limited to 15 hops. This enables scalable topologies without centralized configuration.[3][22][1] The transport layer offers end-to-end reliability options atop the unreliable network layer, with protocols providing transaction-oriented delivery for request-response interactions. It supports mechanisms like transaction identifiers for matching responses and modes for at-least-once or exactly-once semantics, ensuring data integrity over potentially lossy paths without maintaining persistent connections, aligning with the stack's stateless ethos.[3][1] Upper layers encompass session and application functions for service discovery, session management, and data exchange. The session layer handles connection-oriented interactions, such as sequenced commands and printer access, while the application layer supports file sharing and zone-based organization through dynamic name binding and resource enumeration. Name resolution occurs via distributed lookups on specific sockets, promoting service discovery without dedicated servers, and all layers leverage dynamic socket allocation for flexibility in plug-and-play scenarios.[3][22][1]Addressing System
AppleTalk employs a hierarchical addressing system that operates at three levels: network, node, and socket. This structure enables dynamic configuration and supports both small local networks and larger internetworks. In Phase I, addressing was limited to nonextended networks without explicit network numbers, but Phase II introduced a more scalable 16-bit network number field, allowing for extended networks with ranges up to 65,535.[1] The node address, an 8-bit field ranging from 1 to 254, identifies individual devices on a network segment. Nodes dynamically assign their own addresses upon joining the network by selecting a provisional node ID and using AppleTalk Address Resolution Protocol (AARP) probe packets to detect conflicts; if a duplicate is found, the node retries with a different ID until a unique one is secured. This process ensures uniqueness without manual configuration, supporting up to 254 nodes per nonextended network.[23][1] Network numbers in Phase II are 16-bit values (0 to 65,535), with 0 typically indicating a nonextended network. Routers assign and advertise these numbers to nodes, enabling the formation of extended networks defined by a range of consecutive numbers for larger topologies. For nonextended setups, the network number is implicitly 0, simplifying local configurations.[1] Socket numbers serve as 8-bit ports (0 to 255) to distinguish services or processes on a given node, with well-known sockets reserved for standard protocols—such as socket 4 for Apple Filing Protocol (AFP). The full AppleTalk address combines the network number, node ID, and socket number into a 32-bit internet socket address, facilitating end-to-end communication.[1] AARP resolves AppleTalk network addresses to underlying physical layer addresses, such as Ethernet MAC addresses, by broadcasting probe, request, and response packets. When a node needs to communicate, it sends an AARP request to discover the target node's hardware address; responses populate a local cache for subsequent transmissions, ensuring efficient mapping across different media types. This protocol operates at the data link layer and includes mechanisms for duplicate address detection during node initialization.[24] ZIP manages logical groupings of networks and nodes into zones, which are named collections (up to 255 per extended network) used for organizing devices across multi-network environments. Routers maintain a zone information table mapping network numbers (or ranges) to zone names, dynamically updating it via ZIP packets in response to topology changes. Non-router nodes query routers using ZIP commands like GetMyZone or GetZoneList to retrieve zone assignments, enabling applications to operate within specific logical boundaries. Name Binding Protocol (NBP) uses ZIP-derived zone information for resolving names to addresses.[25][25]Protocols
Datagram and Transport Protocols
The Datagram Delivery Protocol (DDP) serves as the core network layer protocol in AppleTalk, providing connectionless, socket-to-socket delivery of datagrams similar to UDP in the TCP/IP suite.[26] It operates without establishing sessions, enabling efficient transmission for applications that can tolerate potential packet loss, such as diagnostics or real-time data streams.[26] DDP supports both short and long header formats, with the long header including fields for source and destination node addresses, network numbers, and a hop count to prevent indefinite routing loops.[26] The protocol includes an optional checksum in long headers to verify data integrity, computed over the entire datagram excluding the checksum field itself.[26] DDP datagrams carry 1 to 586 bytes of user data, with the total packet length limited to 599 octets including the header.[27] The packet format begins with a 1-byte length field indicating the total size, followed by a 1-byte type field specifying the higher-layer protocol (e.g., 2 for ATP), and in long headers, a 1-byte hop count initialized to 0 by the sender and incremented by each router.[26] If the hop count reaches 15, the datagram is discarded to avoid loops in routed networks. Checksum failures result in immediate packet discard without retransmission, as DDP offers best-effort delivery and relies on upper-layer protocols for reliability.[26] Built atop DDP, the AppleTalk Transaction Protocol (ATP) provides a reliable transport mechanism for request-response transactions, ensuring delivery through acknowledgments and retransmissions.[28] ATP uses 16-bit transaction IDs generated by the requester to match requests (TReq) with responses (TResp), supporting up to eight sequenced datagrams per transaction via sequence numbers 0-7.[28] An 8-bit bitmap in the TReq header indicates which response datagrams are expected, and the responder echoes a modified bitmap in TResp to acknowledge receipt; incomplete bitmaps trigger requester retransmissions after a timeout.[28] ATP operates in two modes: At-Least-Once (ALO) for simple retries and Exactly-Once (XO) for idempotent operations using a transaction history list to suppress duplicates.[28] This design supports short, atomic exchanges, such as those used in higher protocols like the AppleTalk Session Protocol (ASP).[28] The AppleTalk Echo Protocol (AEP) functions as a basic diagnostic tool, akin to ICMP echo in IP networks, for testing node reachability and measuring round-trip latency.[1] Implemented as a DDP client on every AppleTalk node via the AEP Echoer process, it listens on socket 68 and reflects any received datagram—up to 585 bytes—back to the sender unchanged.[1] No dedicated API exists for AEP; applications invoke it indirectly through DDP writes to the echo socket, making it a lightweight utility for network troubleshooting without additional reliability features.[1]Session and Transaction Protocols
The AppleTalk Session and Transaction Protocols operate at the session layer of the AppleTalk protocol stack, providing mechanisms for establishing, maintaining, and terminating connections between network processes while ensuring reliable and ordered data exchange. These protocols build upon the lower-layer Datagram Delivery Protocol (DDP) and AppleTalk Transaction Protocol (ATP), enabling applications to conduct structured interactions such as client-server dialogues.[1] ASP and ADSP represent the primary protocols in this category, with ASP focusing on asymmetrical session management for transaction-oriented services and ADSP offering symmetrical full-duplex streams.[1] The AppleTalk Session Protocol (ASP) is an asymmetrical protocol designed to manage sessions between a workstation client and a server process, where the client initiates and controls the connection while the server responds passively.[29] It supports multiple concurrent sessions from the same workstation to a single server, each identified by a unique 16-bit session reference number assigned during connection establishment.[29] Key commands include ASPOpenSess to initiate a session via ATP transactions, ASPCloseSess to terminate a specific session, and ASPCloseAll to end all active sessions with the server.[30] Additional commands such as ASPUserCmd enable the client to send application-specific commands (up to a maximum size determined by ASPGetParms, typically 572 bytes), while ASPUserWrite handles data transfers and ASPAttn allows the server to send asynchronous attention messages, such as notifications for session interruptions.[29] ASP relies on ATP to ensure that commands are delivered reliably and without duplicates, making it suitable for state-dependent applications like file serving under the AppleTalk Filing Protocol (AFP).[1] In contrast, the AppleTalk Data Stream Protocol (ADSP) provides a symmetrical, connection-oriented service for full-duplex byte-stream communication between two peer processes over DDP, analogous to TCP in its reliability features.[31] Sessions are established using socket-based endpoints initialized with dspInit, followed by dspOpen in modes such as ocRequest for active connection attempts or ocPassive for listening; successful connections assign a 16-bit connection ID (CID) for packet identification.[31] Reliability is achieved through 32-bit sequence numbers (sendSeq and recvSeq) that track data ordering and detect losses or duplicates, with optional 16-bit checksums for integrity verification.[31] Flow control prevents receiver overload by monitoring available buffer space via the sendWindow parameter (defaulting to 600 bytes) and blocking sends when queues exceed limits, ensuring efficient data flow in both directions.[31] ADSP also supports out-of-band attention messages (up to 570 bytes) for urgent signaling and can be extended with the AppleTalk Secure Data Stream Protocol (ASDSP) for authentication and encryption using mechanisms like session keys.[31] ASP's transaction flow leverages ATP to sequence and coordinate multiple transactions into an ordered session dialogue, ensuring that commands and responses arrive in the correct sequence despite potential network disruptions.[29] Each ASP command or reply packet encapsulates an ATP transaction request or response, utilizing ATP's 8-bit bitmap sequence numbers to confirm delivery of up to eight response packets per request and handle retransmissions if acknowledgments are missing.[1] This sequencing maintains session state integrity, with the client tracking outstanding transactions and the server processing them in order, thereby providing a reliable foundation for higher-level protocols without requiring end-to-end acknowledgments at the session layer.[30]Filing and Printing Protocols
The filing and printing protocols in AppleTalk formed the application layer for resource sharing, enabling Macintosh users to access remote files and printers over local networks. These protocols relied on the underlying session and transport layers for reliable delivery, focusing on user-centric operations like file manipulation and print job management. The Apple Filing Protocol (AFP) served as the primary mechanism for file sharing in AppleTalk networks, allowing workstations to connect to remote file servers for reading, writing, and managing files and directories. Introduced in 1985, AFP provided basic remote filing capabilities through commands for opening sessions, enumerating volumes, and performing file operations. Subsequent versions enhanced functionality: AFP 2.0, documented in the late 1980s, introduced improved volume mounting and error handling; AFP 2.1 and 2.2 added support for extended authentication methods like cleartext and random number exchange. AFP supported key features including directory browsing via theafpEnumerate command (code 9), which listed folder contents with options for recursion and filtering; file locking through byte-range mechanisms like afpByteRangeLock (code 1) to prevent concurrent access conflicts; and authentication using afpLogin (code 18) for user validation at the volume or folder level, enforcing access controls. Operating over the AppleTalk Session Protocol (ASP) atop the AppleTalk Transaction Protocol (ATP) and Datagram Delivery Protocol (DDP), AFP sessions were established on DDP socket 5.
AppleShare represented Apple's official software implementation of an AFP server, enabling standard Macintosh computers to function as dedicated file servers in AppleTalk environments. Integrated into Mac OS starting with System 6 and refined in later versions like AppleShare IP, it leveraged the host's native file system (such as HFS) for most operations, translating AFP commands into local file I/O while handling session management and multi-user access. This allowed seamless sharing of volumes across the network without requiring specialized hardware.
The Printer Access Protocol (PAP) managed printing services in AppleTalk, providing a connection-oriented, transactionless interface for submitting jobs to remote printers and querying their status. Built directly on ATP for reliable, sequenced delivery without acknowledgments at the application level, PAP used DDP socket 4 and supported both client-initiated connections to printer servers and server-side listening for incoming requests. Key capabilities included job queuing, where clients divided print data into logical units sent via OTSnd functions and marked with end-of-message flags; status reporting through dedicated SendStatus requests, allowing clients to retrieve printer availability, error conditions, or queue depth; and connection lifecycle management with open, data transfer, and close phases to ensure orderly job processing. Primarily designed for PostScript printers, PAP's simplicity made it the standard for AppleTalk printing until the protocol's decline.
