Because clients communicate with each other through their servers, and never communicate with each other directly, most aspects of the client/client "protocol" are abstract concepts that ought to be described in general terms rather than specific "wire-level" details. The low-level details of effective client/client interactions are adequately addressed in ODSIMS Client/Server Protocol and ODSIMS Server/Server Protocol.
With respect to each other, and without consideration of the underlying client/server architecture, most clients are interested in achieving only a few basic tasks:
Obviously, exchanging messages with each other is the most important aspect of instant messaging. However, instant messaging requires both the sender and the receiver to be on-line at the same time, so detecting each other's presense is also extremely important. Least valuable, but also quite useful, is the ability to query each other for interesting data items in a non-interactive manner, such as status messages, IP addresses, home page URLs, etc. (Of course, the ability to query individual user properties must be controlled in a manner that secures each user's preferred level of privacy.) Lastly, a phenomenon that we have seen more and more in current IM solutions is the ability to launch secondary applications, such as voice chat, file transfer, etc.
In ODSIMS, the ability to query individual user properties is an essential feature upon which the ability to monitor each other's presense is based, so this feature will be discussed first.