The Apollo Domain Protocol is a networking protocol used by the Apollo computer system developed by Apollo Computer Inc. in the 1980s. It is a proprietary protocol that was used primarily for interconnecting Apollo workstations and servers in a local area network.
The Apollo Domain Protocol uses Ethernet as the physical layer and adds a new protocol type (0x8019) to the Ethernet frame. The protocol provides reliable, connection-oriented communication between endpoints using a sequence numbering scheme and acknowledgements.
The source and destination node addresses are encoded in the Apollo Domain Protocol header, which immediately follows the Ethernet header in a packet. The header has the following format:
typedef struct {
uint16_t count;
uint16_t type;
} apollo_header_t;
The count field is a sequence number that increments for each packet sent by the source node. The type field is a protocol identifier that is used to distinguish between different types of Apollo Domain Protocol packets. The source and destination node addresses are not explicitly encoded in the header, but are implied by the network topology.
In an Apollo network, each node is assigned a unique network address (also called a domain address) that is used to identify the node within the network. When a node sends a packet to another node, it first sends an ARP request to determine the destination node's Ethernet address. The ARP request includes the destination node's network address.
Once the sending node has the destination node's Ethernet address, it can construct an Ethernet frame with the appropriate source and destination MAC addresses and an Apollo Domain Protocol header with the appropriate sequence number and protocol type. The payload of the packet contains the actual data being transmitted.
In summary, the Apollo Domain Protocol is a proprietary protocol that provides reliable, connection-oriented communication between endpoints in an Apollo local area network. The source and destination node addresses are not explicitly encoded in the protocol header, but are implied by the network topology and resolved through the use of ARP.
=== What are some of the values of the "type" field in the Apollo Domain Protocol header?
The "type" field in the Apollo Domain Protocol header (immediately following the Ethernet header) is used to indicate the purpose or content of the packet. Here are some of the values that have been defined for the "type" field:
0x0000: Reserved
0x0001: Request to start a connection
0x0002: Acknowledgment of a connection request
0x0003: Negative acknowledgment of a connection request
0x0004: Data packet
0x0005: Request to end a connection
0x0006: Acknowledgment of a connection termination request
0x0007: Negative acknowledgment of a connection termination request
0x0008: Connection-oriented packet with no data
0x0009: Broadcast packet
0x000a: Request to join a multicast group
0x000b: Acknowledgment of a multicast group join request
0x000c: Negative acknowledgment of a multicast group join request
0x000d: Request to leave a multicast group
0x000e: Acknowledgment of a multicast group leave request
0x000f: Negative acknowledgment of a multicast group leave request
0x0010: Multicast packet
These are just some of the values that have been defined for the "type" field in the Apollo Domain Protocol. Different applications or protocols may define their own values for this field as needed.