CONTENTS
[ Next ]
Click Here to visit the home page belonging to
the creator of DCP and get access to other downloads, including a
white paper on forward compatible
design for the Internet.
| |
Getting Started
Welcome to the Device Control Protocol Reference. This reference makes it
easy to learn about and develop applications for integrating common everyday
devices over the Internet.
|
|
The Device Control Protocol (DCP) is an application level protocol optimized for the
integration, monitoring and control of devices on a network. It provides a framework for
integrating unconventional network devices attached to networks either directly or as
computer periphery. DCP is a generic, object-oriented protocol which supports
connection and connectionless communication between resources. It employs an open ended
set of methods for indicating the purpose of a request and builds on the discipline of
reference provided by the Uniform Resource Identifier (URI), for indicating the object to
which these methods are to be applied. By the typing and negotiation of device data
representation, DCP allows applications and devices to be built independently of data
representation while maintaining interoperability. It defines an extensible object model
that enables the developer to expose objects, properties, methods, and events of a device.
Plug-and-play characteristics may be implemented for devices through the reserved user
interface and device driver objects. The Device Control Protocol has been designed to
provide a natural and comfortable extension of the Internet to devices.
This reference assumes knowledge of the Transmission Control Protocol
(TCP), the Universal Datagram Protocol (UDP), TCP/IP communications, and Object Oriented
Programming (OOP).
|
|
|
The Device Control Protocol Reference includes the following features.
DCP Protocol Standard
The DCP Specification is a protocol standard, similar to an
Internet RFC, which makes developing devices and applications that leverage this
Internet-based device control technology simple. It is a complete hyperlinked
reference to the protocol.
XML Document Type Definition for DCP
The DCP XML DTD is an Extensible Markup Language Document
Type Definition for DCP. It is a hierarchical markup language that can be used to
represent device states, properties and events. Device object models may also be
described with the DCP XML DTD. For your reference, a hyperlinked reference to this
XML DTD is available here.
|
|
|
DCP is a protocol designed for communication with and between network devices. While
the File Transfer Protocol (FTP) was designed for transferring files and the Hypertext
Transfer Protocol (HTTP) emphasizes the transfer of media, DCP focuses on controlling and
monitoring devices connected to the Internet. In the context of DCP, a device is any
resource attached to a network and is not necessarily a terminal or network infrastructure
equipment. DCP is a protocol for controlling network devices and should not be
compared with DCOM and CORBA, which are binary standards for network components.
DCP addresses the increasing demand for integrating non-traditional
network devices by specifying a common language for devices to interoperate with each
other, as well as Internet applications. It provides a protocol standard for devices that
embed Internet technology and connect to networks directly in addition to devices that
connect to networks as computer periphery (see illustration below).

Applications for DCP are endless, but here are a few examples:
- Distributed security systems and security monitoring
- Integration and control of factory production machinery
- Remote data collection
- Load shedding and remote metering for utility providers
- Environmental control systems
- Consumer electronics and home appliance integration
- Device browsers that work with any DCP device
- Applications that provide logic for a network of devices
The Device Control Protocol is a generic, object-oriented protocol which
employs a session / transaction paradigm that may be implemented on both connection and connectionless communication between resources. The object-oriented
features of DCP allow the protocol to be easily applied to real world objects, or devices.
Since the protocol supports both connection and connectionless communication, it offers
facilities for reliable and secure communication, as well as broadcast and light-weight
messaging.
DCP is extensible and leverages existing Internet technology and standards.
It employs
an open-ended set of methods for indicating the purpose of a transaction request, allowing expansion
methods to be added. The Device Control Protocol builds on the discipline of reference
provided by the Uniform Resource Identifier (URI), for indicating the object to which
methods are to be applied. DCP extends URIs to include objects, properties, methods
and events in a style that object oriented programmers are used to.
Although an XML document type definition for device data has
been defined, use of the representation with DCP is not required. All that is required is
that the recipient of the representation be able to understand and process it. The
architecture of DCP exhibits the abstraction of device data from the protocol itself. By
the typing and negotiation of device data representation, DCP allows applications and
devices to be built independently of data representation while maintaining
interoperability. This allows for the expansion of data representation types without
changing the protocol, allowing developers to separate the transfer of data from the data
itself. Since DCP negotiates device data representation, multiple representation types may
be supported with ease.
The Device Control Protocol allows the developer to communicate with devices as if they
were objects by specifying a core set of facilities which include:
- getting a device property
- setting a device property
- tethering to a device property
- calling a device method
- subscribing to a device event
- transmitting a device event
- administrating sessions with devices
- discovering the devices attached to a network
DCP further extends it capabilities through a collection of reserved objects.
Developers may expose properties, methods, and events of device through a reserved object
model object. This allows applications and other devices to query and browse the
capabilities of a device. Plug and play characteristics may be implemented for DCP
aware devices through the reserved user interface and device driver objects. This
allows user interfaces and device drivers to be embedded inside devices. These
reserved objects only specify exposition, negotiation and transfer of the objects.
Although the devices may be implemented with DCP, the technology chosen is at the
discretion of the developer.
DCP provides a natural and comfortable extension of the Internet to devices. It has
been designed to leverage the massive infrastructure, huge physical network, and large
embedded base of software standards and knowledge associated with the Internet. It is also
designed to offer an object-oriented approach to embedding the Internet in
devices.
The result is a powerful, extensible protocol that allows developers to seamlessly connect
devices to the Internet in a comfortable and simple fashion.
|
|
|
The purpose of DCP is
- to enable remote control and monitoring of devices and applications on the Internet
- to promote the integration of non-traditional devices on networks
- to give network devices "plug-and-play" characteristics
- to encourage the development of distributed Internet applications and devices
- to shield a user from variations in specific protocols and interfaces for applications
and devices
|
|
|
This resource uses a number of terms to refer to roles played by participants in and
objects of DCP communication. Several new terms and new contexts for existing terms
are introduced. It is recommended that even the seasoned Internet developer review
the terms before proceeding to other areas of this reference.
| Application - a program or process attached to a network that is
capable of DCP communication. Throughout this reference, the terms "application",
"device" and "resource" are used
interchangeably. |
| Client - a network resource that issues requests to a server. In typical
client/server environments, resources usually play one role or the other. This is
not the case for DCP. In DCP, devices typically play roles as both clients and
servers by issuing requests to other devices and servicing requests from other devices.
To avoid confusion in this resource, the term client will not be used when making
reference to a DCP transaction. Instead, the device initiating a transaction will be
referred to as the initiator. The term initiator is intended to only be used in the
context of the DCP transaction that it is associated with. |
| Connection - a transport layer virtual circuit established between two network
resources for the purpose of communication. In DCP, when the mode of service
is connection-oriented, the initiator establishes a connection with the target before
making a request. |
| Device - a piece of physical equipment attached to a network that is
capable of DCP communication. A device is not limited to traditional
network hardware (like terminals, switches and routers), but it includes
unconventional network devices (like security systems, environmental control
systems and factory machinery). Throughout this reference, the terms "device",
"application" and "resource" are used
interchangeably. |
| Entity - a particular representation or rendition of device data that may be
enclosed within a request or response message. An entity consists of meta-information in
the form of entity headers and content in the form of an entity body. |
| Host - any resource on a network that provides services of any kind to
other resources on the network and is qualified by a valid Internet host name or IP address. |
| Initiator - refers to the device or application that initiates or starts a transaction
with another DCP resource (the target). In both open-loop and closed-loop
transactions, the initiator is the resource that initiates the transaction by making a DCP
request and the target is the resource that processes it. In a client/server model,
resources usually play a single messaging or processing role. This is not the
case for DCP, so the term client will not be used in this reference to avoid
confusion. Instead, the term initiator will be used and carry the meaning described
above. Since most DCP devices play multiple roles, the term initiator only has
meaning in the context of the transaction that it refers to. |
| Message - the basic unit of DCP communication and consists of a structured sequence
of octets matching the syntax defined in this resource and transmitted via a connection or
datagram. DCP transactions are made up of messages. In DCP there are two types
of messages, requests and responses. DCP Messages have request or response lines,
headers and bodies. |
| Mode of Service (MOS) - the method used by a network to provide communication services
between two processes. In short, a mode of service specifies how a communication
layer performs an operation. DCP makes reference to two modes of service,
connection-oriented and connectionless. Connection-oriented services create a
virtual circuit, which gives the illusion of a physical communication path or
point-to-point connection. To an application using a connection oriented mode of
service, the communication channel appears to be a solid, unbroken path for communication.
A connection-oriented mode of service is similar to telephone communication.
A connectionless mode of service provides communication in the form of a delivery
service. In other words, a connectionless mode of service does not establish a
point-to-point connection. There is no illusion of a solid, unbroken communication
path. Communication takes place as a series of datagrams that are delivered by the
network through potentially different paths and at varying rates. |
| Object Model - a hierarchical object oriented structure that describes a resource's
properties, methods and events. It contains all the information necessary for having
a DCP conversation with a resource. An object model may be used to expose the
accessible characteristics of a resource. |
| Request -a DCP request message. DCP transactions are initiated by a request message being
sent from the initiator to the target. |
| Resource - a device, application program or process attached to a network that is
capable of DCP communication. Throughout this reference, the terms
"resource", "device" and "application" are used
interchangeably. |
| Response - a DCP response message. DCP closed-loop transactions are completed by a response
message being sent from the target to the initiator. |
| Server - a network resource that services requests from a client. In typical
client/server environments, resources usually play one role or the other. This is
not the case for DCP. In DCP, devices typically play roles as both clients and
servers by initiating transactions with other devices and processing transactions started
by other devices. To avoid confusion in this resource, the term server will not be
used. Instead, the device servicing a transaction will be referred to as the
target. This term is intended to only be used in the context of the DCP transaction
that it is associated with. |
| Session - a DCP conversation between two devices. Once a session is opened,
any combination of DCP transactions may take place. Sessions apply to both
connection-oriented and connectionless modes of service and should not be considered the
same as a connection. Sessions are identified by a session ID, not a TCP connection. |
| Target - a resource that processes a DCP transaction initiated by another
resource, known as the initiator. In both open-loop and closed-loop transactions,
the target processes transactions. The target completes closed-loop transactions by
sending a response message to the initiator. In a client/server model, resources
usually play a single messaging or processing role. Since this is not the case for
DCP, the term server will not be used in this reference to avoid confusion. Instead,
the term target will be used and carry the meaning described above. Since most DCP
devices play multiple roles, the term target only has meaning in the context of the
transaction that it refers to. |
| Tether - a feature of DCP communication that allows a resource to bind itself to a
property of another resource. The DCP tether facilitates a continuous (as opposed to
event driven) stream of property data from the target to the initiator. |
| Transaction - a piece of DCP communication that occurs within a session.
Many transactions can occur within a single session. Transactions may be of an open-loop or closed-loop nature. Open-loop transactions
consist of a DCP request message that is sent from an initiator to a target and the
processing performed by the target to satisfy the request. Closed-loop transactions
are identical to open-loop transactions except that they also include a DCP response
message sent from the target to the initiator to acknowledge the request and
return device data when appropriate. |
|
|
|
The DCP protocol follows a session / transaction
paradigm that may be implemented on both connection-oriented and connectionless
modes
of service. A DCP conversation behaves as follows:
An initiator resource opens a DCP session with a target
resource.
Any number of DCP transactions are performed within the session
by either party.
The DCP session is closed.
DCP sessions and transactions can be compared to a conversation between
people. A session is like an entire conversation and transactions are like
statements (or questions and answers). Just as many statements are made by both
parties in a conversation, many transactions can be made by both participants in a single
DCP session.
Within a session, any combination of transactions can take place.
There are two general types of DCP transactions and each of these may occur in either
direction:
open-loop
closed-loop
Open-loop transactions are one-way communication scenarios that are initiated by one
resource and processed by another. They do not include a response. A closed-loop transaction is a two-way communication scenario that, in
addition to the message that initiates the transaction, includes a response.
DCP devices are
likely to initiate and process both open-loop and closed-loop transactions.
In both open-loop and closed-loop transactions, a
request is sent from an initiator resource to a target resource in the form of a request method, URI and protocol version followed by
headers and a MIME-like message with possible body content. For closed-loop
transactions, a response follows in the form of a status line, including a protocol
version and status code followed by headers and a MIME-like message with possible body
content. Message headers are used to communicate and negotiate content representation
of the body, permitting DCP applications and devices to be built
independently of data representation while maintaining interoperability.
|
|