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
.
Throughout this page, the protocol is displayed from the point of view of Alice's (alice@passport.com) client.
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.
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.
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.
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.