Each user of the system is represented by an Upspin user name, which looks like an email address; a public/private key pair; and the network address of a directory server:
That directory server holds a hierarchical tree of names pointing to the user's data, which is held in a store server, possibly encrypted. Each item in the tree is represented by a directory entry containing a list of references that point to data in the store server:
All the users are connected through a central key server at key.upspin.io
, which holds the public key and directory server address for each user.
This is how the pieces fit together:
From top to bottom, these represent:
To illustrate the relationship between these components, here is the sequence of requests a client exchanges with the servers to read the file augie@upspin.io/Images/Augie/large.jpg
:
augie@upspin.io
). The key server‘s response contains the name of the directory server holding that user’s tree (dir.upspin.io
) and Augie's public key.store.upspin.io
).