How Mac OS 9 Network Emulation Works in SheepShaver

Running classic Mac OS 9 inside modern emulators like SheepShaver requires translating vintage networking stacks into protocols that modern host operating systems can handle. This process relies on a virtualized network driver presented to the guest OS, which intercepts low-level network packets from Mac OS 9's Open Transport subsystem and bridges them to the host computer's physical network adapters. By leveraging either user-mode network address translation (NAT) or virtual TAP interfaces, the emulator creates a seamless path for Mac OS 9 to access local networks and the modern internet.

Inside Mac OS 9, networking is governed by Open Transport, Apple's communications architecture for handling TCP/IP and AppleTalk. Rather than attempting to emulate specific vintage hardware down to the silicon level—such as an Apple PCI Ethernet card—SheepShaver implements a paravirtualized approach. It injects a custom driver directly into the emulated Mac OS environment. To Mac OS 9, this driver appears as a standard Ethernet interface in the TCP/IP and Network control panels, allowing users to configure settings via DHCP or manual IP assignment without knowing virtualization is taking place.

At the host level, SheepShaver typically routes the virtual network card’s traffic using one of two methods:

User-Mode Networking (Slirp)

The default and most portable method uses an integrated implementation of Slirp, a software library that provides user-mode TCP/IP emulation. When Mac OS 9 sends an Ethernet frame, the virtual driver intercepts the packet and passes it to the Slirp subsystem in the emulator. Slirp acts as a lightweight, internal router and DHCP server. It unpacks the guest's IP packets, maps them to standard user-space socket calls on the host operating system, and sends them out to the internet. While this method requires no administrator privileges or special host-level drivers, it operates strictly via NAT, preventing external devices on the local physical network from directly initiating connections to the emulated Mac.

Bridged Networking (TAP Devices)

For environments requiring bidirectional traffic—such as hosting an AppleShare file server or running legacy network games—SheepShaver utilizes virtual network interfaces on the host, such as TUN/TAP drivers on macOS and Linux, or WinPcap/Npcap on Windows. In this mode, SheepShaver binds its virtual Ethernet card directly to the host's physical network adapter. Raw Ethernet frames emitted by Mac OS 9 are transferred directly to the host network stack without packet rewriting. This assigns the emulated Mac its own unique IP address on the physical local area network (LAN), making it visible to other physical machines.

Frame Processing and Memory Management

The actual transfer of data involves SheepShaver monitoring the memory buffers allocated by the guest driver inside the emulated RAM. When the guest transmits data, the emulator copies the raw frame from the guest's memory space into the host's networking subsystem. Conversely, when incoming frames are received on the host side, SheepShaver places the data into the emulated receive buffers and raises a virtual hardware interrupt. This signals Open Transport to process the incoming packet, completing the transparent link between classic Mac OS software and modern internet infrastructure.