An Ockam node is any running application that can communicate with other applications
using various Ockam protocols like Routing, Secure Channels, Forwarding etc.

We can create Ockam nodes using this command line or using various Ockam programming
libraries like our Rust and Elixir libraries.


Workers
------

Ockam nodes run very lightweight, concurrent, stateful actors called Ockam Workers.
Workers have addresses and a node can deliver messages to workers on the same node or
on a different node using the Ockam Routing Protocol and its Transports.


Routing
------

The Ockam Routing Protocol is a very simple application layer protocol that allows
the sender of a message to describe the `onward_route` and `return_route` of message.

The routing layer in a node can then be used to route these messages between workers within
a node or across nodes using transports. Messages can be sent over multiple hops, within
one node or across many nodes.


Transports
------

Transports are plugins to the Ockam Routing layer that allow Ockam Routing messages
to travel across nodes over transport layer protocols like TCP, UDP, BLUETOOTH etc.


Services
------

One or more Ockam Workers can work as a team to offer a Service. Services have
addresses represented by /service/{ADDRESS}. Services can be attached to identities and
authorization policies to enforce attribute based access control rules.

Nodes created using `ockam` command usually start a pre-defined set of default services.

This includes:
  - An uppercase service at /service/uppercase
  - A secure channel listener at /service/api
  - A tcp listener listening at some TCP port
