Ethernet addressing

When using Ethernet in it's raw form, that is, without a standard protocol running over it, the addressing facilities are cruder that those provided by higher level protocols. This section describes what one can do.

Introduction: Ethernet Header fields An ethernet packet has a header which contains three fields
  1. A six byte destination address
  2. A six byte source address
  3. A two byte "protocol type" field
The source and destination addresses define the physical ethernet interface which recieve or sent the packet, respectively. These addresses are not, in general, modifiable by the user. Therefore, in order to distinguish packets intended for different logical destinations within the same machine, the protocol type field is all that remains. Normally, this field is used to select a higher level protocol, such as UDP, TCP, or TP4, which then interprets part of the rest of the packet as further subaddressing information in some format or other. The user of raw ethernet packets, however, must use different protocol types to distinuguish packets which would otherwise have identical headers. Most drivers which allow access to raw ethernet packets allow one to specify the partner address and/or the protocol type one wishes to use.

Address format In the RPC address format, the peer address and protocol type are specified in hexadecimal, with a medium name of "ETHERNET". <rpc_address> ::= <peer_address> [ <protocol_type> ] .ETHERNET <peer_address> ::= * | <byte><byte><byte><byte><byte><byte> <protocol_type> ::= <byte><byte> <byte> ::= [ _ ] <hex_digit> <hex_digit> Example: AA_00_04_00_2F_58_5050.ETHERNET This refers to ethernet node AA_00_04_00_2F_58 (which might be a particular VAX, for example) and protocol type 5050. The default protocol type used by the RPC system is is 5050 hex. This is assumed if none is given. Example: AA_00_04_00_2F_58.ETHERNET

Wildcard address In all cases, one must specify a protocol type (or the default is assumed). Normally, one also specifies the peer (partner) node address. An exception to this is when a server listens to any other node, in which case the peer address is replaced with a "*" ("$" is used under OS9, to prevent conflict with special meaning of "*") Example MONO *.ETHERNET This refers to any ethernet node, protocol type 5050. It is known as a wildcard address. Example MONO *_5055.ETHERNET This refers to any ethernet node, protocol type 5055.

Rules The following rules are necessary to prevent conflict: It is clear that in a complex system, some thought is necessary for the allocation of protocol types. Two simple ways of allocating types are as follows.
  1. For one& communication between tasks, specify both the protocol type and the ethernet address of the partner. The protocol type need only be unique within the process (or node, for OS9). Example off Server refers to client as: AA0004002F58_5050.ETHERNET Client refers to server as: AA0004004558_5050.ETHERNET
  2. For a server handling many clients, specify only the protocol type, and leave the address wildcard. Example Server refers to client as: *_5050.ETHERNET Client refers to server as: AA0004004558_5050.ETHERNET on In this case, check that the server is the only process using that protocol type on the node in question.
The RPC system runs its own protocol over ethernet in order to ensure reliable transmission. Note: When ethernet is used, the package number should not be given explicitly in the RPC address: rather, the name should be given. This forces the RPC system to make an initial call to discover the package number. If it is not done, the first call (only) may be executed twice.