The SCSI protocol is designed to provide an efficient peer-to-peer I/O bus with the maximum number of hosts and peripherals determined by the bus width (8 or 16). Data may be transferred asynchronously or synchronously at rates that depend primarily on device implementation and cable length. SCSI is an I/O interface that may be operated over a wide range of media and transfer rates. The set of SCSI standards provides for many different types of SCSI devices (disks, tapes, printers, scanners and many more), and specifies the interfaces, functions, and operations necessary to ensure interoperability between conforming SCSI implementations. This standard is a functional description of a device model that is applicable to all SCSI devices, and defines the SCSI commands that are mandatory and optional for all SCSI devices. Conforming implementations may employ any design technique that does not violate interoperability.