#REDIRECT [[Yahoo Messenger]]
'''YMSG''' is the underlying [[network protocol]] used by the [[Yahoo! Messenger|Y!M]] [[instant messaging]] client, for [[Yahoo!]]. [[Yahoo!]] Instant Messager supports many features beyond just messaging, including off-line messaging, file transfer, chat, conferencing, voice chat, [[webcam]]s and [[avatar]]s.
{{Rcat shell|
==Technical Overview==
{{R to related topic}}
}}
The YMSG protocol communicates between the client application, and a server, using a [[TCP/IP]] connection on port 5050 by default. Other ports may be used if this port is blocked. Alternatively, a [[HTTP]] route is also available for clients behind a well secured [[firewall (networking)|firewall]], with [[HTTP]] requests being used to upload messages from the client, while downloading all messages which have accumulated on the server since the last request.
The client remains logged in for as long as the [[TCP/IP]] connection is kept open. Or, in the case of a client connected via [[HTTP]], until the client fails to send a request for some time (frequent '[[ping]]' messages are sent every thirty seconds or so).
Messages consist of a twenty byte header, followed by a variable length table of key/value pairs, where the key is an [[ASCII]] represenation of a numberic code representing the field type, and the value is its associated data. A two byte separator, the [[hexadecimal]] values c0 80, are used to delimit each entry in this table.
Some parts of YMSG rely on other protocols. For example, file transfer is initially negotiated using YMSG, but the actual transfer of the file is done via [[HTTP]]. Super [[Webcam]]s too use YMSG to discover and request permission to view a [[webcam]], but [[HTTP]] to actually feed JPEG2000 images from one client to another. Chatroom categories, rooms and lobbies are retrieved using [[HTTP]] as [[XML]] documents. Regullar [[webcam]] connections use [[H.323]]. Yahoo with Voice uses [[SIP]]. For calls, [[VoIP]] is handled indirectly by Yahoo servers so the chat client doesn't have direct access to it.
The chatroom categories can be retrieved from [http://insider.msg.yahoo.com/ycontent/?chatcat here].
==Login==
The login process for YMSG is quite complex. First the client introduces itself with a message containing its [[username]]. The server responds with a rather long seed value, which looks like a mathematical equation. The client feeds this into a rather involved [[algorithm]], along with the account's [[username]] and [[password]], to produce two response values looking like variable assignments which are sent to the server. If these values match the server's expectations, the client is admitted and sent data associated with that account (such as buddy/friends lists).
Although the seed value looks like an equation, it is in reality little more than a series of instructions in which the [[operand]]s control lookups into a series of in-built tables, and the [[operator]]s determine which logic operation to perform. [[SHA1]] is also used to create two [[message digest]] data arrays, which are then encoded using a table to resemble software variable [[Assignment_(computer_science)|assignment]]s.
==See also==
*[[Comparison of instant messengers]]
[[Category:Instant messaging]]
|