MSN Messenger Protocol
MSNP9 is a new protocol that was introduced with MSN Messenger 6. More information about it can be found in the following resources. We plan to address it fully eventually, but for now we can only offer some links.
MSNP9 offers new peer-to-peer features, including things like custom emoticons and display pictures. In my personal opinion, the changes are at least as significant as those in MSNP8, but are just adding new "luxury" features rather than changing fundamental parhs of the protocol.
MSNP9 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. The initial profile hasn't changed since MSNP8, so clients which only support MSNP8 could use this information (for example, informing the user about the connection). 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:
If the client is somehow unable to determine its connection type, it will label the connection "Unknown-Connect".
Notes by Dave Woods
Notes by ZoRoNaX
Several people have posted useful information about MSNP9 on the Discussion Forum. Below is a list of some useful threads in chronological order of their first post.