Since March 10, 2003 - Version 2.1
hypothetic.org

MSN Messenger Protocol

Research - MSNC1

Back To Normal Layout

Overview

MSNC1 is the MSN client protocol version introduced with version 6.0 of the official client. It requires at least MSNP9. The following description of the protocol has not been peer-reviewed or tested, so probably contains omissions and errors. Please contact us if you find anything wrong with this page.

MSNObject

An MSNObject is a way of uniquely referring to an image. It's currently used to describe backgrounds, emoticons, and user display pictures. The format of the MSNObject is described well on ZoRoNaX's site.

Here is an example MSNObject:

<msnobj Creator="example@passport.com" Size="18122" Type="3" Location="TFRC.tmp" Friendly="AAA=" SHA1D="b0LvR+gGYm6YYzWAThpOkK5j1bk=" SHA1C="3dvgCHoESxOc9iulr+ihkIw54VG="/>

File transfer

For reasons of compatibility, MSNC1 clients must continue to support MSNC0-style file transfer, but a new "peer-to-peer" file transfer method has been created in MSNC1. As well as general-purpose file transfer, it has specialised modes for transferring backgrounds, emoticons, and user display pictures. Again, ZoRoNaX's site describes this well. Also, the new method resembles SIP, which is defined in RFC 2543 and RFC 3261.

MSNC1 file transfer allows clients to transmit more information about their NAT or proxy settings. This information is gathered from the "ClientPort" and "ClientIP" fields in the initial profile (which is the same in MSNP8 and MSNP9). In a session that has been NATed or proxied, the IP address and/or port will be those of the last NAT or proxy server before the MSN Messenger server. Connections sometimes pass through several NAT and proxy servers on their way to the server - if the client is using a proxy server, but the IP address is different to that of the proxy server, then the connection has been NATed or proxied again somewhere downstream. In an HTTP-proxied connection, ClientPort will always be 0. The official client compares its IP address and source port to that received from the server, and names the type of connection like this:

Same IP address Different IP address
Same port Direct-Connect IP-Restrict-NAT
Different port Port-Restrict-NAT Symmetric-NAT or
Unknown-NAT

If the client is somehow unable to determine its connection type, it will label the connection "Unknown-Connect".

P4-Context field

This optional field in a plaintext message specifies a name that should be marked as "saying" the text of the message. This was discussed in thread 6677. It's most likely a feature of either MSNC1 or MSNC2, but not enough research has been done to be certain. If the official client receives the following:

MIME-Version: 1.0\r\n
Content-Type: text/plain\r\n
P4-Context: My friendlyname\r\n
\r\n
Hello

It would display:

My friendlyname says:

Hello

Other sources of information

Notes by ZoRoNaX

ZoRoNaX has a site about MSNP9 at http://wisoftware.host.sk/msn6/.

Forum Posts

Several people have posted useful information about MSNC1 on the discussion forum. Below is a list of some useful threads in chronological order of their first post:

Copyright ©2002-2004 to Mike Mintz.
<http://www.mikemintz.com/>