The Jini infrastructure provides a universal mechanism for devices and software to connect to and register with a network. In the past, networks had fundamentally different ways of dealing with hardware devices and software, so it may seem strange at first to consider the two in the same fashion. For instance, hardware interconnects are typically described by a physical or link level protocol such as Ethernet or SCSI. Software interconnects are typically described by application level protocols, often unique to the programming language being used. Jini infrastructure, however, takes a fundamentally different approach and considers both hardware devices and software as network citizens who are both consumers of and possibly providers of network services. The first Jini infrastructure element is called Discovery and Join. Discovery and Join solves the difficult problem of how a device or application registers itself with the network for the first time with no prior knowledge of the network. The second Jini infrastructure element is called Lookup. Lookup is a sort of bulletin board for all services on the network.