MSN Messenger Protocol
MSN Messenger identifies each user with three names: an account name (also known as a "Passport", "user handle", or "logon name"), a friendly name (also known as a "custom name" or "custom user name"), and what we'll call a nickname.
Your account name is the Passport you use to sign in with - something like "email@example.com". You can't change it, and you will only be asked for it once, when logging in. Though most account names end in "@hotmail.com", it is possible to turn any email address into a Passport by registering it at passport.com. Hotmail and MSN accounts are automatically registered with the Passport system. An account name can be 129 bytes long at most.
All commands require you to refer to other users by their account name (rather than their friendly name or nickname). For example, when adding users to your contact lists, you must add them by account name. It would be impossible to refer to users by friendly names or nicknames because those names are not unique.
A user's nickname is the name you give them, which may or may not be the same as the name they give themselves, or the names other people give them. This is the name that should always appear on your contact list.
Nicknames are altered using the ADD and REA commands. Nicknames can be retrieved with the LST command (and therefore the SYN command as well because it sends an
One can not set a nickname to be more than 387 bytes. However, the official client will not allow users to set names to more than 129 characters (a three-byte URL-encoded character counts as one character) and will not properly display names with more than 129 characters.
Because nicknames are often used as a single parameter in a command, they must be URL-encoded. For example, when you see a nickname that looks like
Your friendly name is a string you use to identify yourself. You can set your friendly name with the REA command (but not the ADD command). LST (included in SYN), ADD, and REA use nicknames. All other commands use friendly names.
Friendly names are basically just nicknames in format. They follow URL-encoding, and have the same limits in regards to length and restricted words.
Nicknames in the official client
You cannot freely request someone's friendly name. Therefore, if a user changes his or her friendly name while you're offline, there's no way of finding out until you're both online at the same time.
Because of this, the official client resets the nickname for users in your contact lists to be the same as the friendly name whenever it receives a command from the server with a friendly name different than the stored nickname. However, this still doesn't guarantee that you have the most recent friendly name at all times.
If you prefer, you can give users completely different nicknames, but the official client (and other clients that follow the same behavior) will most likely overwrite them if you log back in with it.