CryptoGnome Protocol Details
CryptoGnome models each
repository as a collection of versioned
objects. Each of these objects may be either
content-typed BLOBs or collections of other
versioned objects. These only behaviors supported by these
objects support the semantics of versioned storage and retireval
of the BLOB text.
The HTTP POST method essentially creates an RPC
transport within HTTP.
In RFC 1945, the
following statement is made:
The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI ... Applications must not cache responses to a POST request because the application has no way of knowing that the server would return an equivalent response on some future request.
There is really no difference between an HTTP URL and a CryptoGnome URL, but there are conventions about the semantics of the URL'S components. RFC 1808 informally defines the following components of URL syntax:
| URL Component | Structure | |
|---|---|---|
url |
<scheme> :// <net-loc> / <path> ;
<params> ? <query> # <fragment>
|
|
<scheme> : |
scheme name, as per Section 2.1 of RFC 1738 | |
// <net-loc> |
network location and login information, as per Section 3.1 of RFC 1738 | |
/ <path> |
URL path, as per Section 3.1 of RFC 1738 | |
; <params> |
object parameters (e.g., ";type=a" as in Section 3.2.2 of RFC 1738 | |
? <query> |
query information, as per Section 3.3 of RFC 1738 | |
# <fragment> |
fragment identifier |
For CryptoGnome URLs, the <scheme> is either
http or (in Ordo anyway)
vo, the difference being that vo URLs
have a well-defined default value for the
<net-loc> component, which the
http <scheme> does
not. Specifically, the default <net-loc> for
the vo <scheme> is
localhost:8002. This means that there is a precise
mapping of vo URLs to http URLs, as
well as ensuring that every valid http URL is a
valid CryptoGnome URL, while de-emphasizing the network location
of versioned objects under the vo
<scheme>.
CryptoGnome also makes (optional) use of the ;
<params>
construction which is not a part of standard
http URLs. The <params> value
indicates which specific version of the repository object is the
receiver of the <query> method invocation.