Since March 10, 2003 - Version 2.1
hypothetic.org

MSN Messenger Protocol

Switchboard - Example Session

Back To Normal Layout

Overview

This page illustrates what an entire switchboard session might look like. There are two examples: the first starts with an incoming RNG and the second starts with an outgoing XFR.

Conventions Used on This Page

Throughout this page, the protocol is displayed from the point of view of Alice's (alice@passport.com) client.

Example 1

Notification Server

Another principal (bob@passport.com) invites Alice to a switchboard session. This session happens to already have two principals: Bob and Carol.

<<< RNG 17342299 207.46.108.78:1863 CKI 1056411141.26158 bob@passport.com Bob\r\n

The connection to the NS remains open, but Alice's client also opens a new connection to the given switchboard server. From now on, nothing that happens on the NS will affect the SB, and vice versa.

Switchboard

Alice's client opens a TCP connection to 207.46.108.78 on port 1863 and sends authentication information.

>>> ANS 1 alice@passport.com 1056411141.26158 17342299\r\n

The authentication information was correct and the server acknowledges that by sending the list of participants and an ANS reply.

<<< IRO 1 1 2 bob@passport.com Bob\r\n

<<< IRO 1 2 2 carol@passport.com Carol\r\n

<<< ANS 1 OK\r\n

Bob types a message and then sends it. The message is written in the font Lucida Sans Unicode and is bold and blue.

<<< MSG bob@passport.com Bob 89\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgscontrol\r\n
    TypingUser: bob@passport.com\r\n
    \r\n
    \r\n

<<< MSG bob@passport.com Bob 143\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/plain; charset=UTF-8\r\n
    X-MMS-IM-Format: FN=Lucida%20Sans%20Unicode; EF=B; CO=ff0000; CS=0; PF=22\r\n
    \r\n
    Hello.

Alice types message and then sends it. The message is written in the font MS Sans Serif and is black with no effects.

<<< MSG 2 U 91\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgscontrol\r\n
    TypingUser: alice@passport.com\r\n
    \r\n
    \r\n

>>> MSG 3 N 127\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/plain; charset=UTF-8\r\n
    X-MMS-IM-Format: FN=MS%20Sans%20Serif; EF=; CO=0; CS=0; PF=0\r\n
    \r\n
    Hi.

Alice types another message and then sends it. However, Carol is having network problems and does not receive the message, so Alice's client receives NAK, even though Bob receives the message. Alice is informed that one or more participants may not have received her message.

>>> MSG 4 U 91\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgscontrol\r\n
    TypingUser: alice@passport.com\r\n

>>> MSG 5 N 138\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/plain; charset=UTF-8\r\n
    X-MMS-IM-Format: FN=MS%20Sans%20Serif; EF=; CO=0; CS=0; PF=0\r\n
    \r\n
    Are you there?

<<< NAK 5\r\n

Alice types another message and then sends it. She spends a long time typing the message, so our client sends two typing notification messages. This time, the message is sent with type A (for no particular reason). Everybody receives it fine and Alice's client receives ACK.

>>> MSG 6 U 91\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgscontrol\r\n
    TypingUser: alice@passport.com\r\n

>>> MSG 7 U 91\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgscontrol\r\n
    TypingUser: alice@passport.com\r\n

>>> MSG 8 A 139\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/plain; charset=UTF-8\r\n
    X-MMS-IM-Format: FN=MS%20Sans%20Serif; EF=; CO=0; CS=0; PF=0\r\n
    \r\n
    I like turtles.

<<< ACK 7\r\n

Alice invites Dave (dave@passport.com) and he joins.

>>> CAL 8 dave@passport.com\r\n

<<< CAL 8 RINGING 17342299\r\n

<<< JOI dave@passport.com Dave\r\n

Alice tries to invite Ed (ed@passport.com) but he is offline.

>>> CAL 10 ed@passport.com\r\n

<<< 217 10\r\n

Alice tries to invite Frank (frank@passport.com) but his privacy settings and lists are setup in such a way that Alice is not authorised to invite him even though he is on-line.

>>> CAL 10 frank@passport.com\r\n

<<< 216 10\r\n

Bob invites George (george@passport.com) and he joins.

<<< JOI george@passport.com George\r\n

Carol leaves the conversation.

<<< BYE carol@passport.com\r\n

Nothing happens for 15 minutes and the conversation times out.

<<< BYE bob@passport.com 1\r\n

The switchboard server closes the connection and Alice's client informs the Alice that the conversation has timed out due to inactivity.

Example 2

Notification Server

The client (alice@passport.com) is logged into NS and has successfully authenticated but is "appearing offline". Alice tries to request a switchboard session while offline and receives error 913.

>>> XFR 7 SB\r\n

<<< 913 7\r\n

Alice's client sends a status of NLN and requests a switchboard again.

>>> CHG 8 NLN 0\r\n

<<< CHG 8 NLN 0\r\n

>>> XFR 9 SB\r\n

<<< XFR 9 SB 207.46.108.46:1863 CKI 189597.1056411784.29994\r\n

The connection to the NS remains open, but Alice's client also opens a new connection to the given switchboard server. From now on, nothing that happens on the NS will affect the SB, and vice versa.

Switchboard

Alice's client opens a TCP connection to 207.46.108.46 on port 1863 and sends authentication information. The information is correct and the server acknowledges that.

>>> USR 7 alice@passport.com 189597.1056411784.29994\r\n

<<< USR 7 OK alice@passport.com Alice\r\n

Alice invites Bob (bob@passport.com) to the session and he joins.

>>> CAL 8 bob@passport.com\r\n

<<< CAL 8 RINGING 189597\r\n

<<< JOI bob@passport.com Bob\r\n

Bob wants to send Alice a file.

<<< MSG bob@passport.com Bob 277\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Application-Name: File Transfer\r\n
    Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}\r\n
    Invitation-Command: INVITE\r\n
    Invitation-Cookie: 135395\r\n
    Application-File: turtle.txt\r\n
    Application-FileSize: 2341\r\n
    \r\n

Alice accepts the file.

>>> MSG 9 N 182\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Invitation-Command: ACCEPT\r\n
    Invitation-Cookie: 135395\r\n
    Launch-Application: FALSE\r\n
    Request-Data: IP-Address:\r\n
    \r\n

<<< MSG bob@passport.com Bob 244\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Invitation-Command: ACCEPT\r\n
    Invitation-Cookie: 135395\r\n
    IP-Address: 203.121.147.134\r\n
    Port: 6891\r\n
    AuthCookie: 1639797\r\n
    Launch-Application: FALSE\r\n
    Request-Data: IP-Address:\r\n
    \r\n

Alice's client opens a new connection to Bob's IP on port 6891 and takes care of file transfer outside of the switchboard.

However, if Alice's client does not connect within a reasonable period of time (30 seconds in the official client), Bob's client will stop waiting for our connection and send the following message, signifying a timeout.

<<< MSG bob@passport.com Bob 152\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Invitation-Command: CANCEL\r\n
    Invitation-Cookie: 135395\r\n
    Cancel-Code: FTTIMEOUT\r\n
    \r\n

Alice invites Bob to a session of NetMeeting. However, he rejects her invitation and nothing further happens.

>>> MSG 10 A 292\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Application-Name: NetMeeting\r\n
    Application-GUID: {44BBA842-CC51-11CF-AAFA-00AA00B6015C}\r\n
    Session-Protocol: SM1\r\n
    Invitation-Command: INVITE\r\n
    Invitation-Cookie: 6185072\r\n
    Session-ID: {60F887C8-A5D0-11D7-A88E-0040F43DB1D9}\r\n
    \r\n

<<< ACK 10\r\n

<<< MSG bob@passport.com Bob 225\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Invitation-Command: CANCEL\r\n
    Cancel-Code: REJECT\r\n
    Invitation-Cookie: 6185072\r\n
    Session-ID: {CE1ABB0F-D40D-432F-A359-5AEC532CDBC3}\r\n
    Session-Protocol: SM1\r\n
    \r\n

Bob invites Alice to use Whiteboard, but Alice doesn't have Whiteboard installed, so her client automatically rejects his invitation with the code REJECT_NOT_INSTALLED.

<<< MSG bob@passport.com Bob 335\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Application-Name: Whiteboard\r\n
    Application-GUID: {1DF57D09-637A-4ca5-91B9-2C3EDAAF62FE}\r\n
    Session-Protocol: SM1\r\n
    Application-URL: http://www.microsoft.com\r\n
    Invitation-Command: INVITE\r\n
    Invitation-Cookie: 3861056\r\n
    Session-ID: {463CB365-0213-4933-AA8A-D01FAA996858}\r\n
    \r\n

>>> MSG 11 A 216\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n
    \r\n
    Invitation-Command: CANCEL\r\n
    Cancel-Code: REJECT_NOT_INSTALLED\r\n
    Invitation-Cookie: 3861056\r\n
    Session-ID: {60F887CB-A5D0-11D7-A88E-0040F43DB1D9}\r\n
    \r\n

<<< ACK 11\r\n

Alice closes the conversation window, so therefore her client decides to send OUT.

>>> OUT\r\n

The switchboard server closes the connection.

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