Since March 10, 2003 - Version 2

MSN Messenger Protocol

Home Page






Validate XHTML
Validate CSS
General - Overview
Printable Version

What is MSN Instant Messenger?

MSN Instant Messenger [] is a proprietary instant messaging network brought to you by Microsoft. The client software was first released in July, 1999, and is neither the first nor the last instant messaging network. The software is now bundled with Windows (TM). MSN Messenger is sometimes also known as .NET Messenger or Windows Messenger. The term MSN Messenger can refer to the protocol, the server, and the official client from Microsoft.

MSN is among the top four proprietary instant messaging networks. There are currently (as of March, 2003) far less unique users on the MSN Instant Messenger network than there are on AOL Instant Messenger or ICQ but there are more than on the Yahoo Messenger network. Compared to AOL (which owns both AIM and ICQ), Microsoft is very nice to the third party developers of its protocol. The most likely reason why that is true is because Microsoft wants community support in order to get ahead of AOL in terms of users.

Who is this site aimed at?

This site is written for programmers who are interested in writing their own MSN Messenger client or server. It describes the technical details of the Messenger protocol, and how to write a program to speak that protocol. If you're an end-user - of Microsoft's client or someone else's - this site won't be of any use to you. There are other sites that might.

What is the protocol?

The MSN Instant Messenger protocol is the "language" used in communication between the client (the program on your PC) and the server. This site attempts to fully document the protocol so that third party software developers can write their own programs to interact with the network.

For example, when someone on your contact list goes offline, the servers sends a message like this to your client: FLN Your client parses this message and takes that user out of the list of online users and puts it into the list of offline users.

How did you learn the protocol?

All of the information on the protocol was learned by reading the official IETF draft, reading various sources, analyzing packets, and writing programs. A lot of information was contributed by readers who discovered aspects of the protocol on their own through testing and research. If you make any discoveries, we would certainly like to hear about them.

What versions of the protocol are covered?

This website attempts to fully uncover the protocol version MSNP7, which was the latest protocol until MSN Messenger 5.0 was released. MSN 5 uses a new MSNP8, which is very different from any older versions, and will be researched and discussed in the MSNP8 page. Differences in versions older than MSNP7 will be discussed in their relavent pages.

What syntax is used throughout this document?

Raw Protocol

This site includes many examples of dialogues between client and server, and between two clients. Client/server dialogues are always described from the point-of-view of the client. Client/client dialogues are described from the point-of-view of one or other client. A bold monospace font is always used for these dialogues. Text sent from the (local) client is always blue. Text sent from the server (or the other client) is always green. Information about the dialogue is always bluish green.

A block of text sent by the (local) client is always preceded by >>> followed by a space. A block of text sent by the server (or the other client) is always preceded by <<< followed by a space. Other information is always preceded by <o> and a space.

At the end of a line of text sent by the server or the client, there are often newline characters. In most cases, it is a carriage return followed by a linefeed which is expressed as the light-gray \r\n. Note that this is two bytes, and is not the literal characters "backslash R backslash N". Special attention should be paid to newlines, as the simplest (and most common) programming mistakes in the Messenger protocol involve putting a newline where there shouldn't be one, forgetting to put one where there should be one, or mis-counting the size of a newline.

When short examples of protocol are found in paragraphs, such as the name of a command or an example of a nickname, they are usually found in a bold monospace red font.

Copyright ©2002-2003 to Mike Mintz.