Idtp
IDTP (Identifier Tracing Protocol) is a communication protocol to tracing messages of things identified by UTDIs (Utid), which adapt request/response model and like a hybrid of HTTP and Web Service but using JSON data format rather than XML format.
Features
[edit]- It uses UTID rather than URL to indicate the destination address.
- It uses built-in forward mechanism to trace the messages of UTIDs.
Tracing
[edit]The forward rules are UTID suffix match (called tracing rule in this paper) and namespace match (called tracing track in this paper). The underlying protocol of IDTP may be TCP, UDP, UDP multicast, HTTP, HTTPS, Web Service, or local handling without forwarding.
Request and Response
[edit]Example of IDTP request:
idtp:0.9/1
utid:125.product~db$com1.test
ns:u.iot.db
name:UtidEcho
len:39
{"refUtid":"312.purchase~db$com2.test"}
Example of IDTP response:
idtp:0.9/1
code:200 OK
len:17
{"msg":"success"}
Header Data
[edit]+-----------------------------------------------------------------+ | Field Description Request Response| +-----------------------------------------------------------------+ | idtp Idtp version,request/response version yes yes | | utid Request UTID by client yes no | | ns Namespace (package) of a request yes no | | name Name of a request yes no | | code Response status code no yes | | len User's data length yes yes | | hop Count of hops, maximum is 8 yes yes | | hops List of hops for loop checking yes yes | | enc Encryption parameters optional optional| +-----------------------------------------------------------------+
Note: The "yes" or "no" in the third and fourth column indicates whether the field exists in request or response header data.
User's Data
[edit]The user's data is a JSON string or an XML string in one or more lines, which represents serialized data of an object in Object Oriented Languages.
For the consideration of performance and simplicity, the JSON format is recommended.
There is no format type field in header data to indicate that the user's data is in JSON string or in XML string. The format type is easy to determine by checking the first character of the user's data, where '{' stands for JSON string and '<' stand for XML string.
Reference implementation
[edit]http://sourceforge.net/p/busilet