Network Protocol
The SANE interface has been designed to facilitate network access to
image acquisition devices. In particular, most SANE implementations
are expected to support a network backend (net client) and a
corresponding network daemon (net server) that allows accessing image
acquisition devices through a network connection. Network access is
useful in several situations:
- To provide controlled access to resources that are inaccessible
to a regular user. For example, a user may want to access a device
on a host where she has no account on. With the network protocol,
it is possible to allow certain users to access scanners without
giving them full access to the system.
Controlling access through the network daemon can be useful even in
the local case: for example, certain backends may require root
privileges to access a device. Rather than installing each frontend
as setuid-root, a system administrator could instead install the
SANE network daemon as setuid-root. This enables regular users to
access the privileged device through the SANE daemon (which,
presumably, supports a more fine-grained access control mechanism
than the simple setuid approach). This has the added benefit that
the system administrator only needs to trust the SANE daemon, not
each and every frontend that may need access to the privileged
device.
- Network access provides a sense of ubiquity of the available
image acquisition devices. For example, in a local area network
environment, this allows a user to log onto any machine and have
convenient access to any resource available to any machine on the
network (subject to permission constraints).
- For devices that do not require physical access when used (e.g.,
video cameras), network access allows a user to control and use
these devices without being in physical proximity. Indeed, if such
devices are connected to the Internet, access from any place in the
world is possible.
The network protocol described in this chapter has been design with
the following goals in mind:
- Image transmission should be efficient (have low encoding
overhead).
- Accessing option descriptors on the client side must be
efficient (since this is a very common operation).
- Other operations, such as setting or inquiring the value of an
option are less performance critical since they typically require
explicit user action.
- The network protocol should be simple and easy to implement on
any host architecture and any programming language.
The SANE protocol can be run across any transport protocol that
provides reliable data delivery. While SANE does not specify a
specific transport protocol, it is expected that TCP/IP will be among
the most commonly used protocols.