CA2470013C - Transport system for instant messaging - Google Patents

Transport system for instant messaging Download PDF

Info

Publication number
CA2470013C
CA2470013C CA2470013A CA2470013A CA2470013C CA 2470013 C CA2470013 C CA 2470013C CA 2470013 A CA2470013 A CA 2470013A CA 2470013 A CA2470013 A CA 2470013A CA 2470013 C CA2470013 C CA 2470013C
Authority
CA
Canada
Prior art keywords
peer
connection
client computer
bridge
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA2470013A
Other languages
French (fr)
Other versions
CA2470013A1 (en
Inventor
John Holmes
David Michael Miller
Walter Vonkoch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to CA2782768A priority Critical patent/CA2782768C/en
Publication of CA2470013A1 publication Critical patent/CA2470013A1/en
Application granted granted Critical
Publication of CA2470013C publication Critical patent/CA2470013C/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/251Translation of Internet protocol [IP] addresses between different IP versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1063Application servers providing network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1073Registration or de-registration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • H04L65/4015Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

® An exemplary method involves creating a master session over a first connection through a server; and creating a virtual channel over the connection, the virtual channel operable to communicate a feature session. The method may involve establishing a direct connection that bypasses the server, and switching communication of the feature session to the direct connection. A system for network communication includes a plurality of transport bridges, each transport bridge corresponding to an active network device configuration, and a switching module operable to choose one of the transport bridges to form a connection between two computing devices based on the active network device configuration.

Description

TRANSPORT SYSTEM FOR INSTANT MESSAGING
2 TECHNICAL FIELD
3 The described subject matter relates to computer communications. More
4 particularly, the subject matter relates to a transport system for instant messaging.

BACKGROUND
8 Instant messaging is becoming a very popular communications tool for users of 9 computer devices. An instant messaging (Dv!) application (e.g., WINDOWS
Messenger system of Microsoft Corporation of Redmond, WA, Yahoo! Messenger, AOL instant 11 messenger (AIM), and the like) enables a user to engage in a real time conversation with 12 one or more contacts, who are identified in the user's private list of contacts. Typically, private lists are stored on a server and a conversation is established through a switchboard, or relay server, which directs inbound messages to the appropriate recipients.
Routing real time messages through the switchboard can be slower and more costly (in terms of server resources) than instant messaging in a peer-to-peer arrangement, wherein the messages do not go through a switchboard, but pass directly to and from participants in the conversation. Thus, after a conversation is established using a switchboard server, a 3 typical instant messaging system may attempt to convert the conversation into a peer-to-4 peer configuration. Converting to peer-to-peer may be done a number of ways, typically involving identifying a peer by an internet protocol (IP) address and/or port number, 6 whereby messages can be sent directly to the peer.

7 However, creating a peer-to-peer conversation can be difficult if not impossible in 8 situations involving active network devices, such as firewalls or network address translators (NATs). Such devices are used for system security, but are typically designed to prevent direct access to computers behind such devices. For example, a NAT has its own IP
II
address, and computers behind the NAT have their own IP addresses, which are private; i.e., other computers outside the NAT may not be able to determine the IF addresses of the computers behind the NAT. The IP address of a message received by the NAT is translated to the IP address of the recipient computer behind the NAT. Various techniques may be 16 applied to tunnel through or traverse an active network device to form a direct connection.

17 As instant messaging systems improve, they typically provide more features, besides 18 text, that make the conversation a richer experience. For example, an instant messaging 19 system may allow a user to transmit audio, video, or a custom user tile (also referred to as a Display Picture) uniquely associated with the user. Such features typically require more 21 resources, such as transmission bandwidth, than text to include in a conversation. Thus, a peer-to-peer connection is desirable when carrying on an instant messaging conversation because peer-to-peer typically provides higher performance than a connection through. a switchboard server.

Lee & Hayes, PLLC 2 MSI-1526US
303261.1 SUMMARY
According to one aspect of the present invention, there is provided a computer-readable medium having stored thereon computer-executable instructions for performing a method comprising: establishing an instant messaging session between a first client computer and a second client computer through a first connection via a switchboard server; establishing a peer-to-peer connection, comprising:
initiating, at the first client computer, an invitation to the second client computer through the first connection to establish one or more feature sessions between the first client computer and the second client computer, the invitation identifying all transport bridge types supported by the first client computer; receiving, from the second client computer, an acceptance through the first connection in response to the invitation at the first client computer, the acceptance identifying at least one or more transport bridge types preferred at the second client computer; creating, on the basis of the received acceptance, the one or more feature sessions between the first client computer and the second client computer through a second connection, wherein the second connection is a peer-to-peer connection through the one or more preferred transport bridges;
transmitting a first portion of a blob of first data associated with the instant messaging session through the first connection via the switchboard server; and transmitting, upon the establishment of the second connection, a subsequent portion of the blob of the first data associated with the instant messaging session through the peer-to-peer connection.
According to another aspect of the present invention, there is provided a computer-implemented method comprising: establishing an instant messaging session between a first client computer and a second client computer through a first connection via a switchboard server; establishing a peer-to-peer connection, comprising:
initiating, at the first client computer, an invitation to the second client computer through the first connection to establish one or more feature sessions between the first client computer and the second client computer, the invitation identifying all transport bridge types supported by the first client computer; receiving, from the second client computer, an acceptance through the first connection in response to the invitation at the first client computer, the acceptance identifying at least one or more transport bridge types preferred at the second client computer; creating, on the basis of the received acceptance, the one or more feature sessions between the first client computer and the second client computer through a second connection, wherein the second connection is a peer-to-peer connection through the one or more preferred transport bridges;
transmitting a first portion of a blob of first data associated with the instant messaging session through the first connection via the switchboard server; and transmitting, upon the establishment of the second connection, a subsequent portion of the blob of the first data associated with the instant messaging session through the peer-to-peer connection.

According to still another aspect of the present invention, there is provided a computer-readable medium having stored thereon computer-executable instructions for performing a method comprising: establishing an instant messaging session between a first client computer and a second client computer via a switchboard server; automatically establishing a peer-to-peer connection; transmitting first data associated with the instant messaging session via the switchboard server; and transmitting second data associated with the instant messaging session via the peer-to-peer connection, and transporting binary large objects in sequential order, including waiting to receive all ACKs associated with chunks of binary large objects that were previously transmitted over a non-direct connection, before transmitting a last chunk of a binary large object over a new direct connection.

According to yet another aspect of the present invention, there is provided a computer-implemented method comprising: establishing an instant messaging session between a first client computer and a second client computer via a switchboard server; automatically establishing a peer-to-peer connection;
transmitting first data associated with the instant messaging session via the switchboard server; and transmitting second data associated with the instant messaging session via the peer-to-peer connection, and transporting binary large objects in sequential order, including waiting to receive all ACKs associated with chunks of binary large objects that were previously transmitted over a non-direct connection, before transmitting a last chunk of a binary large object over a new direct connection.
3a 2 An exemplary method involves creating a master session over a first connection 3 through a server; and creating a virtual channel over the connection, the virtual channel 4 operable to communicate a feature session. The method may involve establishing a direct connection that bypasses the server, and switching communication of the feature session 6 to the direct connection.

7 A system for network communication includes a plurality of transport bridges, 8 each transport bridge corresponding to an active network device configuration, and a switching module operable to choose one of the transport bridges to form a connection between two computing devices based on the active network device configuration.

BRIEF DESCRIPTION OF THE DRAWINGS

14 Fig. 1 is a block diagram depicting components in an exemplary instant messaging system.

16 Fig. 2 illustrates a transport system including exemplary layers for managing 17 communication of data in an instant messaging scenario.

18 Fig. 3 is a block diagram illustrating an exemplary bridge selection module 19 operable to select a preferred transport bridge.

Fig. 4 is a block diagram illustrating virtual channels across a physical connection 21 between two peer devices.

3b Fig. 5 illustrates an operation flow having exemplary operations for establishing a feature session within a master session and creating a direct connection if possible.

3 Fig. 6 illustrates an operation flow having exemplary operations for determining a 4 preferred transport bridge and creating a direct connection using the preferred transport bridge.

6 Fig. 7 illustrates an operation flow having exemplary operations for transporting 7 binary large objects (BLOBS) in sequential order.

8 Fig. 8 illustrates an exemplary system that provides a suitable operating environment to transparently select a preferred transport bridge and communicate feature data in an instant messaging scenario.

DETAILED DESCRIPTION

14 Turning to the drawings., wherein like reference numerals refer to like elements, various methods are illustrated as being implemented in a suitable computing 16 environment. Although not required, various exemplary methods will be described in the 17 general context of computer-executable instructions, such as program modules, being 18 executed by a personal computer and/or other computing device. Generally, program 19 modules include routines, programs, objects, components, data structures, etc, that perform particular tasks or implement particular abstract data types.

Moreover, those skilled in the art will appreciate that various exemplary methods may be practiced with other computer system configurations, including hand-held devices, multi-processor systems, microprocessor based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and. the like.
Various Lee & Hayes, PLLC 4 MSI-1526US
303261.1 exemplary methods may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a 3 communications network. In a distributed computing environment, program modules 4 may be located in both local and remote memory storage devices.

In some diagrams herein, various algorithmic acts are summarized in individual 6 "blocks". Such blocks describe specific actions or decisions that are made or carried out 7 as a process proceeds. Where a microcontroller (or equivalent) is employed, the flow 8 charts presented herein provide a basis for a "control program" or software/firmware that 9 may be used by such a microcontroller (or equivalent) to effectuate the desired control.
As such, the processes are implemented as machine-readable instructions storable in memory that, when executed by a processor, perform the various acts illustrated as blocks.

Those skilled in the art may readily write such a control program based on the flow charts and other descriptions presented herein. It is to be understood and 16 appreciated that the subject matter described herein includes not only devices and/or 17 systems when programmed to perform the acts described below, but the software that is 18 configured to program the microcontrollers and, additionally, any and all computer-19 readable media on which such software might be embodied. Examples of such computer-readable media include, without limitation, floppy disks, hard disks, CDs, RAM, ROM, 21 flash memory and the like.

Exemplary Network Environment for Instant Messaging Lee & Hayes. PLLC 5 MS1-1526US
303261.1 Fig. 1 illustrates an exemplary network environment 100 for an instant messaging conversation. Generally, two clients 102 and 104 can communicate with each other via a 3 network 106. Active network devices 108 and 110 may or may not be present in the 4 network environment 100. An echo server 112 and a switchboard server 114 may be connected via the network 106 to facilitate communication between clients 102 and 104.

6 An instant messaging (IM) platform 116 enables the client (1) 102 and the client 7 (2) 104 to engage in an instant messaging conversation. A user of the IM
platform 116 8 interacts with the IM platform 1116 via a user interface (not shown) to send and receive 9 messages to and from the client (2) 104. The IM platform 116 includes features 118 (also called end user features (EUFs)) and a transport protocol stack 122 that facilitate communication of data between the client (1) 102 and the client (2) 104.

More specifically, the transport protocol stack 122 transparently establishes an instant messaging session based on characteristics of the network environment 100. In general, the established session. may be through the switchboard (SB) server 114 or, 16 alternatively, via a peer-to-peer connection 124, whereby data is not routed through the 17 SB server 114.

18 The clients 102 and 104 may access the network 106 via an internet service 19 provider (not shown), or otherwise. In one embodiment, the clients 102 and 104 each have unique network addresses, ports, and/or identifiers, whereby communications can be 21 established between the clients 102 and 104. For example, the SB server 114 can route data to the client computer (2) 104 using the client computer's (2) 104 network address, port, and/or identifier. Over a peer-to-peer connection 124, the client computer (1) 102 Lee & Hayes, PLLC 6 MS1-1526US
303261.1 can directly send data to the client computer (2) 104, using the client computer's (2) 104 network address, port, and/or identifier.

3 As discussed, active network device (1) 106 and active network device (2) 4 may or may not be present. Examples of active network devices are firewalls and network address translators, which provide system security for their respective client 6 devices. Thus, the active network device (2) 110 may provide security for the client 7 computer (2) 104, and the active network device (1) 108 may provide security for the 8 client computer (2) 102.

Various network configurations are therefore possible. In one network configuration, the active network device (1) 108 is present, but the active network device (2) 110 is not present. In another network configuration, the active network device (2) 110 is present, but the active network device (1) 108 is not present. In another network configuration, neither the active network device (1) 108, nor the active network device (2) 110 are present. In a fourth network configuration, both the active network device (1) 1s 16 108 and the active network device (2) 110 are present.

17 The active network devices 108 and 110 may have unique network addresses, 18 such as internet protocol (III) addresses, whereby the active network devices 108 and 110 -19 receive data bound for their respective clients 102 and 104. Active network devices 108 or 110 receive data on their network addresses and translate the network addresses to the 21 network addresses associated with their respective clients 102 and 104.

The client (1) 102 can use the echo server 112 to obtain the network address associated with the active network device (1) 108. The client (1) can send the echo server 112 a message. When the echo server 112 receives the message from the client (1) 102, f Lee & Hayes. PLLC 7 MSI-1526US
303261.1 the message will include the network address of the active network device 108.
In response, the echo server 112 sends the network address of the active network device 108 3 back to the client 102. The client (2) 104 may similarly obtain the network address of the 4 active network device (2) 110. Using the network addresses of the active network devices 108 and 110, the clients 102 and 104 may be able to establish a peer-to-peer connection 6 124.

7 Although the exemplary environment 100 in Fig. 1. depicts only two clients 8 and 104 in a conversation, it is to be understood that more than two clients may be involved in a conversation. Two or more clients may communicate in a multipoint fashion, wherein each client may have a peer-to-peer connection to every other client.

Alternatively, the two or more clients may engage in the conversation through the switchboard server 114. In addition, any combination of peer-to-peer connections and connections through the switchboard may be implemented in a conversation. More detailed descriptions of exemplary operations and systems that may be employed in the 1s 16 network environment 100 are provided below.

18 Exemplary Systems for Transporting Instant Messages Among Clients 19 Fig. 2 illustrates a transport system 200 including exemplary layers for managing communication of data in an instant messaging scenario. In general, each of the layers 21 provides functionality and/or data for carrying out various tasks associated with the layer.

Describing transport protocols and systems in terms of layers is understood by those skilled in the art.

Lee & Hayes, PLLC 8 MSI-1526US
303261.1 The transport system 200 includes features 202. Features 202 are functions hosted or executed by or within a messenger application (e.g., the instant messaging platform 3 116, Fig. 1) to present data associated with the feature. A feature may be characterized by 4 the type of data the feature presents, the manner of presenting the data, the operations that the feature may perform on the data, and/or the interactive options that the feature 6 provides to the user to interact with the data. For example, a custom user tile feature 7 presents picture data in a screen tile on the user interface; a file transfer feature enables a 8 user to select a file and send the file to an instant messaging contact. By way of example, but not limitation, the features layer 202 may include emoticons, ink, embedded pictures, and others.

The features 202 use layers in a transport protocol stack 206 to communicate data in an instant messaging scenario. The transport protocol stack 206 transparently manages details of receiving and transmitting data from and to clients in a conversation. The transport protocol stack 206 provides a transport application program interface (API) 208 is 16 to the features 202, whereby the features 202 can send and receive data.
Lower layers of 17 the transport protocol stack 206 use network configuration data, and information about 18 the data from the features 202, to establish instant messaging sessions.
Thus, the 19 transport protocol stack 206 makes lower level details of communicating data transparent to the features 202.

21 The terms "BLOB" (binary large object) and "chunk" are used herein to refer to portions of data that may be sent and/or received in a network environment, regardless of the type or size of the data. For example, a digital image may be composed of one or more BLOBs of data. A BLOB is composed of one or more chunks of data.

Lee & Hayes, PLLC 9 MSI -1526US
303261.1 As mentioned above, the exemplary transport API 208 provides methods, or ll functions, that expose functionality of the transport protocol stack to the features 202. A

3 particular implementation of the API 208 includes the following methods:
SendData0; Sends a blob of data to another client;
4 OnDataReceived(); Callback to feature when associated session receives a blob of data;
RegisterFeatureHandler(); 11 Called by features to register handlers. The handlers are called when another client sends an invitation for the feature.
6 RegisterDataChannelCallBack:sO; Called by features to register handlers that are called when channel events happen or channel states changes.
7 CreateDataChannel(); Creates a data channel (session) for a feature.
GetTransportCapabilitiesO; Returns capabilities of the conversation, for example Direct, 8 //Indirect, Store and Forward.
GetParticipantsO; Gets the list of participants in a conversation.

To illustrate the exemplary API 208, a feature in the features layer 202 can create i l a session using the CreateDataChannel() function. The feature may call the register 12 RegisterFeatureHandler() to register a handler to be called when an invitation is received 13 for the feature. The feature may call RegisterDataChannelCallBacks() to register a 14 handler to be called when a channel event occurs. The feature can call SendData() to send data to a client. The function OnDataReceived() is called by another transport protocol layer, such the session layer 210, when data is received for the feature.

An exemplary session layer 210 includes logic for providing session services to is features 202. An instant messaging conversation includes at least one session, called an instant messaging session for carrying on the conversation. An implementation of the 21 SLP also includes a master session, which has control logic for establishing other sessions 22 for the features, called feature sessions. The session layer 210 is the protocol by which 23 the sessions are initiated. In one implementation, the session layer 210 initiates a session 24 by negotiating session establishment between two peers based on the peers' respective capabilities.

Lee & Hayes, PLLC 10 MSI-1526US
303261.1 In a particular implementation of the session layer 210, a subset of the session initiation protocol (SIP) is employed. In this implementation, messages can be sent in a 3 human-readable format (e.g., Extensible Markup Language (XML), comma separated 4 value (CSV), etc.). Exemplary session management messages are "INVITE", "BYE", "CANCEL", and "ACID."

6 An exemplary transport layer 212 includes logic for handling a Transport Layer 7 Protocol of the Open System Interconnection (OSI) standard. The TLP is a binary s protocol for sending and receiving arbitrary sized binary large objects (BLOBs) via 9 network channels. The transport layer 212 performs various data management tasks. For example, as discussed in further detail below, the transport layer 212 is operable to multiplex data via a network connection to thereby create virtual channels within a single network connection. As discussed in further detail below, transport layer 212 interfaces with one or more transport bridges, such as a TCP bridge or an SB-Bridge, which reside IS at the transport bridge layer 214. The transport layer 212 may include a scheduler and 16 queues for scheduling data from the features 202 to be transported via bridges in the 17 bridge layer 214.

18 In a particular implementation, the transport layer 212 appends a TLP
header to 19 each chunk of each BLOB that is transported. The header provides information about the BLOB and the chunk. Upon receipt of a chunk, the transport layer 212 can parse the 21 header to determine how chunks should be reassembled and how BLOBS should be re-ordered, if necessary. In one exemplary implementation, the TLP header is as follows:

DWORD Sessld; Ii slave session id that this blob belongs to 24 DWORD Blobld; // id for this blob UNT64 Offset; offset of this chunk's data into the blob's data UINT64 BlobSize; // total size of all chunks not including headers DWORD ChunkSize; /1 size of the data in this chunk (not including header) Lee & Hayes, PLLC 1 1 MSI-1526US
303261.1 DWORD Flags; 1/ ORed together TLP_CONTROL-FLAGS

The field "Sessld" identifies the session associated with a chunk of data that is being sent or received. The "SessId" field is used by the transport layer 212 to associate a chunk of data with a particular session, and thereby multiplex and/or demultiplex the chunk of data. Data multiplexing employed by the transport protocol stack 206 is 6 described in further detail below.

7 The field "Blobld" identifies the binary large object (BLOB) corresponding to the 8 data being sent or received. The field "Blobld" may be used by the transport protocol 9 stack 206 to assemble or reassemble chunks into a corresponding BLOB. The "Offset"
field represents where a chunk is located in the corresponding BLOB. The Blobld may also be used to organize BLOBs in their proper order before delivery or after receipt. The "BlobSize" field represents the size of the BLOB. The "ChunkSize" field represents the size of the chunk of data, not including the header.

The "Flags" field provides a number of flags used by the transport layer 212 to manage the process of sending and receiving data among clients. Exemplary "Flags" are shown and described as follows:

18 enum TLP-CONTROL-FLAGS

TLP_NAK = 0x01, set in a non-acknowledgement packet (request for 19 retransmit) TLP_ACK = 0x02, // set in an acknowledgement packet TLP_RAK = 0x04, // set in a request for acknowledgement packet TLP_RST = 0x08, set in a Reset packet, closes the session on the other side 21 TLP_BIG = Ox10, // set when this chunk is part of a blob that should be saved as // a file 22 TLP_CAL = 0x20, set in a blob for which progress callbacks are requested 24 The transport bridge layer 214 includes logic for transporting data over a network.
For example, the transport bridge layer 214 may perform data encoding and/or decoding.

Lee & Hayes, PLLC 12 RMSI-1526US
303261.1 In one implementation, the transport bridge layer 214 includes one or more transport bridges that each have functionality corresponding to a network configuration, and data 3 characteristics, for communicating on the network. Exemplary transport bridges, as well 4 as systems and operations for selecting among the bridges, are described in detail below.

In one implementation, the transport layer 214 can use the transport bridge layer 6 214 to transition between two types of bridges in the midst of a session.
Thus, a session 7 may begin over a switchboard (SB) bridge, whereby the session data is communicated 8 through a switchboard server, but, later, the session may switch to a direct, or peer-to-peer connection. In addition, if the peer-to-peer connection is broken, the transport layer 212 can responsively switch back to the SB bridge or some other available bridge in the bridge layer 214. The transport. layer 212 handles the switch to a different connection type in a way that is transparent to higher layers of the transport protocol stack 206.

The transport layer 212 works with the bridge layer 214 to ensure that BLOBs are delivered and/or received in proper order. Because the t;
is pe of connection may change 16 from a slower connection to a faster connection in the midst of a session, BLOBs that 17 were transmitted over the slower connection may arrive at their destination after BLOBs 18 that are transmitted over the faster connection, unless the transport layer 212 takes steps 19 to ensure the proper order. Exemplary operations are described below that ensure a proper sequential order of delivery is maintained.

21 A network layer 218 represent lower level communications functionality that perform standard network communications functions. The network layer 218 may include, but is not limited to, Transmission Control Protocol/Internet Protocol (TCP/IP) functionality, Universal Datagram Protocol (UDP) functionality, Hypertext Transport Lee & Hayes, PLLC 13 MSI-1526US
303261.1 Protocol (HTTP) functionality, Simple Object Access Protocol (SOAP). The bridge layer 214 can use the network layer 218 functionality to communicate data via a network.

3 As discussed herein, a number of transport bridges are provided to handle 4 different network configurations, and data types, formats, and/or sizes.
Table 1 illustrates exemplary transport bridges and associated network configurations in which the bridges 6 maybe employed.

7 Table 1 cl~

to SB

12 Twister / / / / /
(IPv6) / / / / / /

16 A checkmark (/) at an intersection of a row and column in Table 1 indicates that 17 the bridge in the intersecting row can be used in the network configuration in the intersecting column.

The SB Bridge sends traffic via a switchboard server (e.g., the switchboard server 114, Fig. 1). In one implementation, when an instant messaging session is initially established, the SB bridge is the bridge used to transport the instant messaging session data. Subsequently, the SB bridge continues to be used only used if a direct (peer-to-24 peer) connection cannot be established.

Lee & Hayes, PLLC 14 MSI-1526US
303261.1 The Twister transport control protocol (TCP) (also called the Internet Protocol Version 5 (IPv6) TCP) bridge can be used to traverse an Internet Protocol Version 4 3 (IPv4) NAT. In one implementation, the IPv6 bridge utilizes a Teredo tunneling 4 technique to establish a peer-to-peer connection. Teredo is an IPv6/IPv4 transition s technology that provides address assignment and host-to-host automatic tunneling for 6 unicast IPv6 connectivity when IPv6/IPv4 hosts are located behind one or multiple IPv4 7 NATs. To traverse IPv4 NATs, IPv6 packets are sent as IPv4-based User Datagram 8 Protocol (UDP) messages.

9 The Twister TCP bridge is operable to establish a peer-to-peer TCP/IP
connection, even if a network address translator (NAT) is configured on the network. For example, if a first client is behind a NAT, and a second. client is not behind a NAT or firewall, the twister TCP bridge of the first client initiates an outgoing TCP
connection with the second client. The first client can use an echo server (e.g., the echo server 112, Fig. 1) to detect that the first client is behind the NAT, and thus determine the direction in 16 which to form the connection; i.e., the first client initiates the TCP
connection. A similar 17 technique may be applied when one of the clients is behind a Universal Plug and Play 18 (UPnP) NAT.

19 The Reliable Universal I)atagram Protocol (R"1. DP) bridge communicates data via UDP but emulates a TCP connection by acknowledging receipt of transmission of data 21 1 much as a "packet" would be acknowledged under TCP. In this fashion, the RUDP bridge provides a more reliable than a TJDP connection, because the protocol can detect when data is dropped (i.e., not received) and should be resent. The RUI)P bridge may use an echo server to obtain NAT network addresses, so that NATs can be traversed.

Lee & Hayes, PLLC 15 PISI-1526US
303261.1 The RUDP bridge appends a header to transmitted data. An exemplary header is shown below:

unsigned _int64 gwSegNum; sequence number of first byte in this packet 3 unsigned _int64 gwAckNum; II ack number of next byte the sender of this packet expects DWORD dwOtherFields; 114 bit offset in quadwords, 5 bit reserved, 5 control bits, 16 4 reserved, from most significant DWORD dwWindow; I/ window size receiver will accept DWORD dwSendTime; II timestamp for when the packet was sent DWORD dwEchoTime; last timestamp the sender recorded in a packet from receiver 7 An exemplary RUDP bridge protocol involves sending a "SYN" message to a 8 listening RUDP bridge, responding with "SYN ACK", and responding to the "SYN
9 ACK" message with an "ACK." Subsequently, a retransmit timer will continue to retransmit one or more sets of data until an ACK is received from the responding RUMP

bridge for the transmitted (or retransmitted) data sets.

Fig. 3 is a block diagram illustrating an exemplary selection module 302 operable to select a preferred transport bridge from among a set of transport bridges 304. The instant messaging application may have more than one feature 308, and each feature 308 communicates with a master session 306 and a session registrar 310 to set up an 17 associated feature session 312. Instant messaging data, including feature data, is 18 transported through a selected bridge.

19 The master session 306 executes at the session layer 210 (Fig. 2) in the transport protocol stack 206 (Fig. 2). The master session 306 is created when a conversation is 21 started in an instant messaging application. The master session 306 is associated with a 22 conversation window and is the object through which features 308 request slave, or 23 feature sessions 312. The master session 306 may also expose a static method that Lee & Hayes, PLLC 16 MSI-1526US
303261.1 enables features 308 to start a master session outside the context of a conversation window, whereby an instant messaging conversation will be created.

3 A feature 308 registers with a session registrar 310, which maintains information 4 about features running during a conversation. The session registrar 310 may also maintain information about "auto-start" features. Auto-start features are features that 6 should exist by default and their invite handlers will be invoked at both clients in the 7 conversation with predefined call IDs and session IDs once an underlying switchboard 8 connection is established.

9 When the feature 308 registers with the session registrar 310, the feature provides an invitation handler function and a globally unique identifier (GUID) associated with the feature 308. The master session 306 can use the feature registrar information to establish the feature session 312, through which the feature 308 can carry on a session with a peer feature.

For example, an invitation from a peer may be received by the master session 306, is 16 inviting the feature 308 to enter into a session. The invitation specifies the GUID
17 associated with the feature 308. The master session 306 looks up the GUID
in the session 18 registrar 310, to find the invitation handler function associated with the feature 308. If 19 the invitation is accepted by the feature 308, the master session 306 creates the new feature session 312.

21 The feature 308 may invite a peer feature to enter into a session. To do so, the feature 308 requests a new session from the master session 306 (for example, by calling CreateDataChannel() in the transport API 208, Fig. 2)). The request for a new session from the feature 308 can include a request for a type of connection (e.g., direct, non-Lee & Hayes, PLLC 17 MSI -1526US
303261.1 direct). The master session 306 will call the bridge selector 302 with information such as the direct connection requested, the size of the data, and/or the network configuration.

3 The bridge selector 302 uses the information to identify a preferred transport bridge to use 4 for the requested feature session.

In one implementation, the bridge selector 302 executes at the transport layer 6 (Fig. 2) and implements transport bridge selection rules to select the preferred bridge. In 7 one implementation, the design goal is to send as much traffic directly peer-to-peer as 8 possible, thereby avoiding delays and costs that may be associated with a switchboard server. In this implementation, the following factors are analyzed to select the transport bridge: the direct connection requested, the bandwidth supported by the transport bridge, the size of data to be sent, any limitations of the transport bridge, the cost associated with a particular transport bridge (e.g., relay costs), and/or privacy specifications (e.g., reveal or not reveal IP address).

Each transport bridge computes a score based on the above factors. The bridge 16 gives its score to the bridge selector 302, which chooses the preferred transport bridge 17 based on the scores. Before analyzing the raw scores, the bridge selector 302 takes 18 specified requests into account. For example, if the feature 308 requests a direct 19 connection, then the bridge selector 302 may eliminate all non-direct bridges from the set of candidate bridges. Bridges that will not work in a particular network configuration are 21 also eliminated from the set of candidate bridges. For example, the Twister TCP bridge is not considered if the network configuration includes 2 symmetric legacy NATs.

Information obtained from an echo server test during conversation initialization can be used to decide which bridges cannot work.

Lee & Hayes, PLLC 18 MSI-1526US
303261.1 Thus, one implementation of the bridge selector 302 employs the following transport bridge selection rules:

3 1. Eliminate bridges that cannot work based on echo test results.
2. Eliminate bridges that won't satisfy specific requests by caller.
4 3. Use remaining bridge with highest score.
4. If previous bridge fails, use remaining bridge with second highest score.
5. If previous bridge fails, use remaining bridge with next highest, and so on...
6 The bridge selector 302 notifies the master session 306 of the preferred bridge
7 based on the rules. In response, the master session 306 creates the feature session 312
8 and instantiates the preferred bridge to be used. After the feature session 312 is created,
9 the feature session 312 will be the session through which the feature 308 communicates 11 with other peer features. The feature session 312 handles sending data, as well as session 12 control calls, such as AcceptSession and AcceptDirect.

13 Fig. 4 is a block diagram illustrating virtual channels 402 across a physical 14 connection 404 between a first client device 406 and a second client device 408. The connection 404 and the channels 402 are used by the client devices 406 and 408 to engage in an instant messaging conversation, wherein data of various types is communicated.

Although the devices 406 and 408 are referred to as "client devices," it is to be understood that the connection 404 between the devices 406 and 408 need not be through a server, but could be a direct, or peer-to-peer connection.
As shown, data channel 0 is used to communicate text messages in the 22 conversation; data channel I is used to transfer files between the client devices 406 and 23 408; data channel 2 is used to transfer embedded pictures between the devices 406 and 24 408; and data channel 3 is used to communicate typing indicator information that indicates whether a user is currently typing a message at one of the devices 406 or 408.

Lee & Hayes, PLLC 19 MSI-1526US
303261.1 The virtual channel number corresponds to a session identifier. As discussed above, a header (see the TLP header above) is appended to data communicated over the 3 connection 404. The header includes a "Sessld" which indicates which session, and 4 which channel, (e.g., feature or master) the data corresponds to. Using the Sessld, data from multiple sessions can be multiplexed over the connection 404. Thus, the channels 6 402 are considered "virtual" channels. The Sessld is stripped off received data at the 7 client devices 406 and 408 and the data is routed to the appropriate session associated 8 with the Sessid.

In another implementation, more than one connection is established between the to client device 406 and the client device 408, and each of the connections can include multiple virtual channels. For example, when a conversation is initially created between the client device 406 and the client device 408, a master session will be created via a connection through a switchboard server. Later, a peer-to-peer connection may be established between the client devices 406 and 408. In this situation, features on the 16 devices 406 and 408 may establish virtual channels on either the switchboard connection 17 or the peer-to-peer connection.

19 Exemplary Operations Employing aTransport Protocol Stack Fig. 5 illustrates an operation flow 500 having exemplary operations for 21 establishing a feature session within a master session and creating a direct connection if possible. The operation flow 500 may be carried out by a client device, such as the client computer (1) 102, shown in Fig. 1, in order to engage in an instant messaging conversation with another client device, Lee & Hayes. PLLC 20 MSI-1526US
303261.1 An establishing operation 502 establishes a master session. The master session is established when a user initially launches the messenger application and attempts to contact another user. Establishing the master session involves inviting another client to 4 enter into the conversation. After the other client accepts the invitation, the master sessions are created on both the inviting client and the accepting client. The master 6 session is established through a switchboard bridge, via an Sly connection.
The master 7 session may be used later to establish feature sessions.

8 If an echo server test has not been conducted prior to the establishing operation 502, the establishing operation 502 may conduct an echo server test, to detect firewalls, NATs, or other active network devices that may be present. The echo server test involves sending a test message to an echo server (e.g., the echo server 112, Fig. 1), and the echo server responding with network address information corresponding to any active network devices that maybe configured.

The user may want to communicate feature data in addition to the text data.
Such 16 feature data includes, but is not limited to files, pictures, custom emoticons, custom user 17 tiles, and the like. In addition, the messenger application may create a feature session to 18 transfer feature data. Thus, in another establishing operation 504, a feature session is 19 established. The establishing operation 504 involves the master session creating a feature session at an inviting client and sending a feature invitation to a receiving client. When 21 the feature invitation arrives at the receiving client, the invitation is either accepted or rejected.

Continuing with the establishing operation 504, if the feature invitation is accepted, the master session on the receiving client creates a feature session on the Lee & Hayes, PLLC 21 MSI-1526US
303261.1 receiving client. The feature session on the receiving client has the GUID
corresponding to the inviting feature. The master session on the receiving client also calls an invitation 3 handler function that is registered for the GUI. If the feature invitation is accepted, the 4 associated feature stores the feature session, so that the feature session can be-used to interact with the transport API. for the session. When the feature accepts, callback 6 messages are sent to both the inviting feature and the accepting feature letting them know 7 the session is ready for use to send and receive data. If the feature invitation is rejected, 8 the master session deletes the feature session that was created.

9 The establishing operation 504 establishes the feature session through an existing connection, such as an established SB connection. More particularly, the feature session data is multiplexed with the master session data, as shown in Fig. 4, to carry on the feature session and the master session simultaneously. Because a connection through the switchboard may be slower than a peer-to-peer connection, a creating operation attempts to create a direct (peer-to-peer) connection over which to conduct the feature 16 session. An exemplary embodiment of the creating operation 506 is illustrated in Fig. 6, 17 and described below. If a direct connection can be created, the feature session will be 18 carried out using the direct connection. The operation flow 500 ends at an ending 19 operation 508.

Fig. 6 illustrates an operation flow having exemplary operations for creating a 21 direct connection. It is assumed that a user indicates to a feature at an initiating client that the user wants to change the feature session to a direct connection rather than the switchboard (SB) server. The user may prefer the direct connection because she wants to avoid being limited to a message size limit, or she wants to send more messages than Lee & Hayes, PLLC 22 MSI-1526US
303261.1 allowed by the SB server, or perhaps she wishes to keep her messages inside her corporate firewall.

When the feature receives the indication to move to a direct connection, a 4 requesting operation 602 executes, wherein the feature calls a method on the feature's slave session. The requesting operation 602 requests a direct connection. The slave 6 session passes the request to the master session. In response, the master session sends a 7 "reINVITE" message to the peer feature on a receiving client requesting a direct s connection.

Continuing with the requesting operation 602, the "reINVITE" message contains information that identifies all transport bridge types supported by the inviting client. The it feature session on the receiving client calls the invite handler function associated with the feature. The "reINVITE" may be accepted in any number of ways. In one implementation, the feature may have set an auto-accept setting in the feature's invitation handler. An auto-accept setting indicates that all requests for a direct connection are to be 16 automatically accepted. In another implementation, an auto-reject setting may be set in 17 the invite handler, which indicates that the direct connection request will be automatically 18 rejected.

19 If neither an auto-accept or auto-reject setting is set, the transport will look to a global default value. If the global default value is set to accept or reject, the appropriate 21 reply is made to the "reINVITE." If it is not set, the invited feature can respond to the invitation, for example, by prompting the user as to whether to accept or reject the "reINVITE." Assuming the "reINVITE" is accepted, a preferred transport bridge is identified in a selecting operation 606.

Lee & Hayes, PLLC 23 MSI-1526US
303261.1 The selecting operation 606 selects a preferred transport bridge using preference factors as discussed above with respect to Fig. 3. An accepting operation 608 sends an 3 accept message back to the inviting client. The accept message contains the preferred 4 bridge. The acceptance also includes the accepting client's internal and external lPv4 addresses as well as an IPv6 global address if the client has one.

6 The transport on the other end will attempt to connect to the received IP
address 7 and port using the preferred bridge listed in the accept message. After the inviting client & has connected, the transport sends a "RAK" and the accepting client replies with an 9 "ACK." If the connection fails, the inviting client will time out after sending the "RAK".
In one implementation, the inviting master session then sends another "reINVITE," this time excluding the transport bridge type that failed. The operation flow ends at an ending operation 610.

Fig. 7 illustrates an operation flow 700 having exemplary operations for transporting binary large objects (BLOBS) in sequential order. In general, before a last 16 chunk of a BLOB is transmitted over a new direct connection, the transport waits to 17 receive all "ACKs" associated with chunks of BLOBs that were previously transmitted 18 over a non-direct connection. Waiting for "ACKS" in this fashion occurs, regardless of 19 what type of transport bridge or connection (i.e., UDP, TCP, or otherwise) is being used.

A transmitting operation 702 begins transmitting a BLOB using a non-direct 21 connection. A query operation 704 determines whether the transport bridge type has been switched to a direct connection. If the transport bridge type has not been switched the query operation 704 branches "NO" to a transmitting operation 706. The transmitting operation 706 transmits a chunk of the BLOB via the non-direct connection.

Lee & Hayes, PLLC 24 MSI-1526US
303261.1 After the chunk is transmitted in the transmitting operation 706, the query operation 704 again determines whether the transport bridge type has changed.
If the transport bridge type has changed, the query operation 704 branches "YES" to another query operation 708. The query operation 708 determines if a current BLOB
identifier (ID) is greater than the last BLOB 1D. If the current BLOB III is not greater than the last 6 BLOB ID, the query operation 708 branches "NO" to the transmitting operation 706, 7 which transmits a chunk of the current BLOB.

8 If the query operation '708 determines that the current BLOB ID is greater than the last BLOB II), then the query operation 708 branches "YES" to another query operation 710. The query operation 710 determines whether the current chunk to be transmitted is 1i the last chunk in the BLOB. If the current chunk is not the last chunk in the BLOB, the query operation 710 branches "NO" to the transmitting operation 706, which transmits the current chunk. If the query operation 710 determines that the current chunk is the last chunk in the BLOB, the query operation 710 branches to a waiting operation 712. The 16 waiting operation 712 waits until all ACKs are received for BLOBS that were transmitted 17 via the original non-direct connection.

19 An Exemplary Computer System that may be used in a Network Environment for Instant Messaging 21 Fig. 8 and the corresponding discussion are iintended to g- provide a general description of a suitable computing environment in which the described arrangements and procedures for transporting computer data may be implemented. Exemplary computing environment 820 is only one example of a suitable computing environment and is not Lee & Hayes, PLLC 25 MSI-1526US
303261.1 intended to suggest any limitation as to the scope of use or functionality of the described I
subject matter. Neither should the computing environment 820 be interpreted as having 3 any dependency or requirement relating to any one or combination of components 4 illustrated in the exemplary computing environment 820.

The exemplary arrangements and procedures to transport computer data between 6 interconnected devices are operational with numerous other general purpose or special 7 purpose computing system environments or configurations. Examples of well known s computing systems, environments, and/or configurations that may be suitable for use with the described subject matter include, but are not limited'. to, personal computers, server computers, thin clients, thick clients, hand-held or laptop devices, multiprocessor it systems, microprocessor-based systems, mainframe computers, distributed computing environments such as server farms and corporate intranets, and the like, that include any of the above systems or devices.

The computing environment 820 includes a general-purpose computing device in 16 the form of a computer 830. The computer 830 may include and/or serve as an 17 exemplary implementation of a transport system for instant messaging described above is with reference to Figs. 1-7. The components of the computer 830 may include, by are not 19 limited to, one or more processors or processing units 832, a system memory 834, and a bus 836 that couples various system components including the system memory 834 to the 21 processor 832.

The bus 836 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of Lee & Hayes, PLLC 26 MSI-1526US
303261.1 example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video 3 Electronics Standards Association (VESA) local bus, and Peripheral Component 4 Interconnects (PCI) bus also known as Mezzanine bus.

s The computer 830 typically includes a variety of computer readable media.
Such 6 media may be any available media that is accessible by the computer 830, and it includes ' both volatile and non-volatile media, removable and non-removable media.

8 The system memory includes computer readable: media in the form of volatile memory, such as random access memory (RAM) 840, and/or non-volatile memory, such as read only memory (ROM) 838. A basic input/output system (BIOS) 842, containing ll the basic routines that help to communicate information between elements within the ? computer 830, such as during start-up, is stored in ROM 838. The RAM 840 typically contains data and/or program modules that are immediately accessible to and/or presently be operated on by the processor 832.
is 16 The computer 830 may further include other removable/non-removable, 17 volatile/non-volatile computer storage media. By way of example only, Fig.
8 illustrates 18 a hard disk drive 844 for reading from and. writing to a non-removable, non-volatile 19 magnetic media (not shown and typically called a "hard drive"), a magnetic disk drive 846 for reading from and writing to a removable, non-volatile magnetic disk 848 (e.g., a 21 "floppy disk"), and an optical disk drive 850 for reading from or writing to a removable, non-volatile optical disk 852 such as a CD-ROM, DVD-ROM or other optical media. The hard disk drive 844, magnetic disk drive 846, and optical disk drive 850 are each connected to bus 836 by one or more interfaces 854.

Lee & Hayes, PLLC 27 MSI-1526US
303261.1 The drives and their associated computer-readable media provide nonvolatile I
storage of computer readable instructions, data structures, program modules, and other 3 data for the computer 830. Although the exemplary environment described herein 4 employs a hard disk, a removable magnetic disk 848 and a removable optical disk 852, it should be appreciated by those skilled in the art that other types of computer readable 6 media which can store data that is accessible by a computer, such as magnetic cassettes, 7 flash memory cards, digital video disks, random access memories (RAMs), read only 8 memories (ROM), and the like, may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk, magnetic disk 848, optical disk 852, ROM 838, or RAM 540, including, by way of example, and not limitation, an operating system 858, one or more application programs 860, other program modules 862, and program data 864. Application programs 860 may include an instant messaging application, utilizing features and a transport protocol stack, as 16 discussed herein.

17 A user may enter commands and information into the computer 830 through is optional input devices such as a keyboard 866 and a pointing device 868 (such as a 19 "mouse"). Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, or the like. These and other input devices are 21 connected to the processing unit 832 through a user input interface 870 that is coupled to the bus 836, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).

Lee & Hayes, PLLC 28 MSI-1526US
303261.1 An optional monitor 872 or other type of display device is connected to the 2 bus 836 via an interface, such as a video adapter 874. In addition to the monitor, personal 3 computers typically include other peripheral output devices (not shown), such as speakers 4 and printers, which may be connected through output peripheral interface 875.

The computer 830 may operate in a networked environment using logical 6 connections to one or more remote computers, such as a remote computer 882.
The 7 remote computer 882 may include many or all of the elements and features described s herein relative to the computer 830. The logical connections shown in Fig. 8 are a local 9 area network (LAN) 877 and a general wide area network (WAN) 879. The LAN

and/or the WAN 879 can be wired networks,, wireless networks, or any combination of wired or wireless networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.

When used in a LAN networking environment, the computer 830 is connected to the LAN 877 via a network interface or an adapter 886. When used in a WAN
16 networking environment, the computer 830 typically includes a modem 878 or other 17 means for establishing communications over the WAN 879. The modem 878, which may 18 be internal or external, may be connected to the system bus 836 via the user input 19 interface 870 or other appropriate mechanism. Depicted in pig. 8 is a specific implementation of a WAN via the Internet. The computer 830 typically includes a modem 21 878 or other means for establishing communications over the Internet 880.
The modem 878 is connected to the bus 836 via the interface 870.

In a networked environment, program modules depicted relative to the personal computer 830, or portions thereof, may be stored in a remote memory storage device. By Lee & Hayes, PLLC 29 MSI-1526US
303261.1 way of example, and not limitation, Fig. 8 illustrates remote application programs 889 as residing on a memory device of remote computer 882. It will be appreciated that the 3 network connections shown and. described are exemplary and other means of establishing 4 a communications link between the computers may be used.

6 Conclusion 7 Although the described arrangements and procedures to have been described in language specific to structural features and/or methodological operations, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or operations described. Rather, the specific features and operations are disclosed as preferred forms of implementing the claimed present subject matter.

Lee & Hayes, PLLC 30 MSI-1526US
303261.1

Claims (8)

CLAIMS:
1. A computer-readable medium having stored thereon computer-executable instructions for performing a method comprising:

establishing an instant messaging session between a first client computer and a second client computer through a first connection via a switchboard server;
establishing a peer-to-peer connection, comprising:

initiating, at the first client computer, an invitation to the second client computer through the first connection to establish one or more feature sessions between the first client computer and the second client computer, the invitation identifying all transport bridge types supported by the first client computer;

receiving, from the second client computer, an acceptance through the first connection in response to the invitation at the first client computer, the acceptance identifying at least one or more transport bridge types preferred at the second client computer;

creating, on the basis of the received acceptance, the one or more feature sessions between the first client computer and the second client computer through a second connection, wherein the second connection is a peer-to-peer connection through the one or more preferred transport bridges;

transmitting a first portion of a blob of first data associated with the instant messaging session through the first connection via the switchboard server; and transmitting, upon the establishment of the second connection, a subsequent portion of the blob of the first data associated with the instant messaging session through the peer-to-peer connection.
2. The computer-readable medium as recited in claim 1, the establishing a peer-to-peer connection further comprising:

determining an active network device configuration associated with the first client computer and the second client computer; and selecting a peer-to-peer bridge corresponding to the active network configuration.
3. The computer-readable medium as recited in claim 2 wherein the peer-to-peer bridge comprises an RUDP bridge.
4. The computer-readable medium as recited in claim 2 wherein the peer-to-peer bridge comprises a TCP/IP bridge.
5. A computer-implemented method comprising:

establishing an instant messaging session between a first client computer and a second client computer through a first connection via a switchboard server;
establishing a peer-to-peer connection, comprising:

initiating, at the first client computer, an invitation to the second client computer through the first connection to establish one or more feature sessions between the first client computer and the second client computer, the invitation identifying all transport bridge types supported by the first client computer;

receiving, from the second client computer, an acceptance through the first connection in response to the invitation at the first client computer, the acceptance identifying at least one or more transport bridge types preferred at the second client computer;

creating, on the basis of the received acceptance, the one or more feature sessions between the first client computer and the second client computer through a second connection, wherein the second connection is a peer-to-peer connection through the one or more preferred transport bridges;

transmitting a first portion of a blob of first data associated with the instant messaging session through the first connection via the switchboard server; and transmitting, upon the establishment of the second connection, a subsequent portion of the blob of the first data associated with the instant messaging session through the peer-to-peer connection.
6. The computer-implemented method as recited in claim 5, the establishing a peer-to-peer connection further comprising:

determining an active network device configuration associated with the first client computer and the second client computer; and selecting a peer-to-peer bridge corresponding to the active network configuration.
7. The computer-implemented method as recited in claim 6 wherein the peer-to-peer bridge comprises an RUDP bridge.
8. The computer-implemented method as recited in claim 6 wherein the peer-to-peer bridge comprises a TCP/IP bridge.
CA2470013A 2003-07-01 2004-06-01 Transport system for instant messaging Expired - Fee Related CA2470013C (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CA2782768A CA2782768C (en) 2003-07-01 2004-06-01 Transport system for instant messaging

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/611,575 2003-07-01
US10/611,575 US7363378B2 (en) 2003-07-01 2003-07-01 Transport system for instant messaging

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CA2782768A Division CA2782768C (en) 2003-07-01 2004-06-01 Transport system for instant messaging

Publications (2)

Publication Number Publication Date
CA2470013A1 CA2470013A1 (en) 2005-01-01
CA2470013C true CA2470013C (en) 2012-09-11

Family

ID=33435436

Family Applications (2)

Application Number Title Priority Date Filing Date
CA2782768A Expired - Fee Related CA2782768C (en) 2003-07-01 2004-06-01 Transport system for instant messaging
CA2470013A Expired - Fee Related CA2470013C (en) 2003-07-01 2004-06-01 Transport system for instant messaging

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CA2782768A Expired - Fee Related CA2782768C (en) 2003-07-01 2004-06-01 Transport system for instant messaging

Country Status (8)

Country Link
US (3) US7363378B2 (en)
EP (3) EP1494410B1 (en)
JP (2) JP4634077B2 (en)
KR (1) KR101150110B1 (en)
CN (1) CN1578278B (en)
BR (1) BRPI0402437A (en)
CA (2) CA2782768C (en)
MX (1) MXPA04006451A (en)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546337B1 (en) 2000-05-18 2009-06-09 Aol Llc, A Delaware Limited Liability Company Transferring files
US7366779B1 (en) 2000-06-19 2008-04-29 Aol Llc, A Delaware Limited Liability Company Direct file transfer between subscribers of a communications system
US8266677B2 (en) * 2000-12-20 2012-09-11 Intellisync Corporation UDP communication with a programmer interface over wireless networks
US20030235538A1 (en) * 2002-04-09 2003-12-25 Boehringer Ingelheim Pharma Gmbh & Co. Kg Method for the administration of an anticholinergic by inhalation
US7978716B2 (en) * 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7493371B1 (en) * 2004-03-31 2009-02-17 Network Appliance, Inc. Using a client-server connection protocol to establish a peer-to-peer connection
US7961663B2 (en) * 2004-04-05 2011-06-14 Daniel J. LIN Peer-to-peer mobile instant messaging method and device
US7764637B2 (en) * 2004-04-05 2010-07-27 Daniel J. LIN Peer-to-peer mobile instant messaging method and device
US7773550B2 (en) * 2004-04-05 2010-08-10 Daniel J. LIN Peer-to-peer mobile data transfer method and device
US7672255B2 (en) 2004-04-05 2010-03-02 Oomble, Inc. Mobile instant messaging conferencing method and system
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
KR20070037649A (en) 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. A method and systems for routing packets from a gateway to an endpoint
EP1771998B1 (en) * 2004-07-23 2015-04-15 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US20060053485A1 (en) * 2004-09-08 2006-03-09 Chia-Hsin Li Network connection through NAT routers and firewall devices
US7805517B2 (en) * 2004-09-15 2010-09-28 Cisco Technology, Inc. System and method for load balancing a communications network
US8838795B2 (en) * 2004-12-03 2014-09-16 At&T Intellectual Property I, L.P. System, method, apparatus, and product for resource sharing
US7558862B1 (en) * 2004-12-09 2009-07-07 LogMeln, Inc. Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer
US20060253605A1 (en) * 2004-12-30 2006-11-09 Prabakar Sundarrajan Systems and methods for providing integrated client-side acceleration techniques to access remote applications
US8954595B2 (en) * 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) * 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
WO2006079954A1 (en) * 2005-01-31 2006-08-03 Koninklijke Philips Electronics N.V. Method and terminal for selecting a communication path depending on the presence of nat devices
KR100666956B1 (en) * 2005-03-08 2007-01-10 삼성전자주식회사 Apparatus and method for transmitting of media on network
US7543065B2 (en) 2005-03-15 2009-06-02 Microsoft Corporation Method and system for reducing the number of ports allocated by a relay
US8036140B2 (en) * 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US7957402B2 (en) * 2005-08-08 2011-06-07 American Megatrends, Inc. UDP to TCP bridge
US20070043820A1 (en) * 2005-08-18 2007-02-22 George David A System and method for obtaining remote instant messages
WO2007058633A1 (en) * 2005-11-21 2007-05-24 Cheh Ngee Goh An apparatus for communication and a method thereof
US9047588B2 (en) * 2005-12-21 2015-06-02 International Business Machines Corporation E-mail protocol for instant message
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) * 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8676899B2 (en) 2006-01-26 2014-03-18 International Business Machines Corporation Offline IM chat to avoid server connections
CN100518114C (en) * 2006-05-29 2009-07-22 腾讯科技(深圳)有限公司 Point-to-point data transmission method and system
DE102006030613A1 (en) * 2006-07-03 2008-01-10 Combots Product Gmbh & Co. Kg Method and communication system for controlling the data flow via network nodes
US20090132712A1 (en) * 2007-11-19 2009-05-21 General Instrument Corporation Method and system for session mobility between end user communication devices
JP4703576B2 (en) 2007-01-15 2011-06-15 株式会社東芝 Apparatus, method and program for maintaining connection
US7764691B2 (en) * 2007-03-15 2010-07-27 Microsoft Corporation Allowing IPv4 clients to communicate using teredo addresses when both clients are behind a NAT
US7715386B2 (en) * 2007-03-15 2010-05-11 Microsoft Corporation Reducing network traffic to teredo server
US7693091B2 (en) * 2007-03-30 2010-04-06 Microsoft Corporation Teredo connectivity between clients behind symmetric NATs
US8194683B2 (en) * 2007-03-30 2012-06-05 Microsoft Corporation Teredo connectivity between clients behind symmetric NATs
EP1988696B1 (en) 2007-05-01 2010-09-29 Research In Motion Limited Method and system for communicating and displaying data with a voice call
CN101330431B (en) * 2007-06-19 2011-04-06 阿里巴巴集团控股有限公司 Method and system for storing instant information
US8631155B2 (en) * 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
TWI407727B (en) * 2007-07-25 2013-09-01 Tencent Tech Shenzhen Co Ltd A Method and System of Data Transmission Based on Peer - to - Peer P2P
US8086678B2 (en) 2007-09-24 2011-12-27 Zipit Wireless, Inc. Device centric controls for a device controlled through a web portal
US8875237B2 (en) * 2007-10-31 2014-10-28 Microsoft Corporation Private network access using IPv6 tunneling
US20090149205A1 (en) * 2007-12-10 2009-06-11 Zipit Wireless Inc. System And Method For Regulating Data Messaging Between A Wireless Device And A Mobile Communication Device Using Short Message Service
US9246613B2 (en) * 2008-05-20 2016-01-26 Verizon Patent And Licensing Inc. Method and apparatus for providing online social networking for television viewing
US8612753B2 (en) * 2008-12-23 2013-12-17 Intel Corporation Method and apparatus for protected code execution on clients
US10826718B2 (en) 2009-05-19 2020-11-03 Xerox Corporation System and method for coupling a digital appliance to a monitoring service
WO2010135174A1 (en) 2009-05-19 2010-11-25 Zipit Wireless, Inc. System and method for coupling a wireless device to social networking services and a mobile communication device
US10740745B2 (en) 2009-05-19 2020-08-11 Zipit Wireless, Inc. System and method for coupling a wireless device to social networking services and a mobile communication device
CN101631127A (en) * 2009-08-06 2010-01-20 中兴通讯股份有限公司 File transfer method and clients
WO2011133195A1 (en) 2010-04-22 2011-10-27 Zipit Wireless, Inc. System and method for administration and operation of one or more mobile electronic communications devices
KR101696210B1 (en) 2010-05-11 2017-01-13 가부시키가이샤 체프로 Bidirectional communication system and server apparatus used therein
US8627411B2 (en) 2010-06-17 2014-01-07 Microsoft Corporation Techniques to share binary content
US9436685B2 (en) 2010-12-23 2016-09-06 Microsoft Technology Licensing, Llc Techniques for electronic aggregation of information
US9679404B2 (en) 2010-12-23 2017-06-13 Microsoft Technology Licensing, Llc Techniques for dynamic layout of presentation tiles on a grid
US20120166953A1 (en) * 2010-12-23 2012-06-28 Microsoft Corporation Techniques for electronic aggregation of information
GB2489283A (en) 2011-03-24 2012-09-26 Sony Corp OFDM frequency domain channel estimation with virtual scattered pilots created in frequency notches to restore pattern before interpolation
US9715485B2 (en) 2011-03-28 2017-07-25 Microsoft Technology Licensing, Llc Techniques for electronic aggregation of information
US9535888B2 (en) * 2012-03-30 2017-01-03 Bmenu As System, method, software arrangement and computer-accessible medium for a generator that automatically identifies regions of interest in electronic documents for transcoding
US9294563B2 (en) * 2013-02-27 2016-03-22 Omnivision Technologies, Inc. Apparatus and method for level-based self-adjusting peer-to-peer media streaming
CN103472995B (en) * 2013-09-10 2016-06-08 小米科技有限责任公司 A kind of method of message display, device and terminal unit
US10320730B2 (en) 2013-09-10 2019-06-11 Xiaomi Inc. Method and device for displaying message
US20150140978A1 (en) * 2013-11-18 2015-05-21 Zeta Project Swiss GmbH Voice conversations in a unified and consistent multimodal communication framework
US20160036873A1 (en) * 2014-08-01 2016-02-04 Smart Technologies Ulc Custom input routing using messaging channel of a ucc system
US9665414B2 (en) * 2015-01-21 2017-05-30 Oracle International Corporation Communication protocol bridge for card computing devices
US10419497B2 (en) * 2015-03-31 2019-09-17 Bose Corporation Establishing communication between digital media servers and audio playback devices in audio systems
US10237236B2 (en) * 2015-06-25 2019-03-19 Microsoft Technology Licensing, Llc Media Session
US11151239B2 (en) * 2017-10-02 2021-10-19 Red Hat, Inc. Single sign-on management for multiple independent identity providers
US11240318B1 (en) 2021-05-11 2022-02-01 Integrity Security Services Llc Systems and methods for virtual multiplexed connections
CN114679354A (en) * 2022-04-06 2022-06-28 北京小米移动软件有限公司 Gateway device, bridging method and device, and storage medium

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278955A (en) * 1990-06-18 1994-01-11 International Business Machines Corporation Open systems mail handling capability in a multi-user environment
JPH0484248A (en) * 1990-07-26 1992-03-17 Nec Corp Pre-communication processor
US5432907A (en) * 1992-05-12 1995-07-11 Network Resources Corporation Network hub with integrated bridge
US6289390B1 (en) * 1993-08-18 2001-09-11 Microsoft Corporation System and method for performing remote requests with an on-line service network
US5446888A (en) 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
JPH07311704A (en) 1994-05-19 1995-11-28 Fujitsu Ltd Directory system
WO1996017306A2 (en) * 1994-11-21 1996-06-06 Oracle Corporation Media server
WO1997019429A1 (en) 1995-11-20 1997-05-29 Motorola Inc. Displaying graphic messages in a radio receiver
US5802282A (en) * 1995-12-28 1998-09-01 Intel Corporation Recovering missing data during background data transfer in multipoint conferencing
US7013327B1 (en) 1996-02-16 2006-03-14 G&H Nevada -Tek Method and apparatus for computing within a wide area network
US6347085B2 (en) * 1996-08-16 2002-02-12 Netspeak Corporation Method and apparatus for establishing communications between packet-switched and circuit-switched networks
US5943478A (en) * 1997-04-04 1999-08-24 Flash Communications, Inc. System for immediate popup messaging across the internet
US5940390A (en) * 1997-04-10 1999-08-17 Cisco Technology, Inc. Mechanism for conveying data prioritization information among heterogeneous nodes of a computer network
US5987515A (en) * 1997-08-29 1999-11-16 International Business Machines Corporation Internet protocol assists using multi-path channel protocol
US6003088A (en) * 1997-08-29 1999-12-14 International Business Machines Corporation Blocking IP datagrams in a multi-path channel point-to-point environment
US6065062A (en) * 1997-12-10 2000-05-16 Cisco Systems, Inc. Backup peer pool for a routed computer network
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6252588B1 (en) 1998-06-16 2001-06-26 Zentek Technology, Inc. Method and apparatus for providing an audio visual e-mail system
US6463078B1 (en) * 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6262977B1 (en) * 1998-08-28 2001-07-17 3Com Corporation High availability spanning tree with rapid reconfiguration
EP1116172A2 (en) * 1998-09-23 2001-07-18 Siemens Aktiengesellschaft Method and configuration for determining a sequence of actions for a system which comprises statuses, whereby a status transition ensues between two statuses as a result of an action
US6490615B1 (en) * 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
US6873616B1 (en) * 1998-12-28 2005-03-29 Nortel Networks Limited Quasi-deterministic gateway selection algorithm for multi-domain source routed networks
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
AU5062900A (en) 1999-04-26 2000-11-10 Nokia Mobile Phones Limited Radio terminal for browsing the internet
US6788692B1 (en) * 1999-05-03 2004-09-07 Nortel Networks Limited Network switch load balancing
TW428146B (en) 1999-05-05 2001-04-01 Inventec Corp Data file updating method by increment
US7286115B2 (en) 2000-05-26 2007-10-23 Tegic Communications, Inc. Directional input system with automatic correction
US6549937B1 (en) * 1999-07-21 2003-04-15 Microsoft Corporation System and method for multi-protocol communication in a computer network
EP1075119A3 (en) * 1999-08-03 2002-09-18 AT&T Corp. Real-time messaging system with hyperlinks to objects on an application server
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6535867B1 (en) * 1999-09-29 2003-03-18 Christopher J. F. Waters System and method for accessing external memory using hash functions in a resource limited device
ES2280245T3 (en) * 1999-10-18 2007-09-16 Kabushiki Kaisha Eighting SYSTEM, METHOD OF DISTRIBUTION OF INFORMATION AND DISTRIBUTION PROGRAM OF STORAGE OF LEGIBLE MEDIA BY COMPUTER.
EP1104965B1 (en) * 1999-12-02 2007-02-28 Sony Deutschland GmbH Protocol for instant messaging
JP2001175550A (en) 1999-12-07 2001-06-29 Kizna.Com Inc Client/server system, data transmitting method for the same, and medium with program recorded thereon
US6931003B2 (en) * 2000-02-09 2005-08-16 Bookline Flolmstead Llc Packet prioritization protocol for a large-scale, high speed computer network
US6993559B2 (en) 2000-02-14 2006-01-31 Bigbow.Com, Inc. System, method, apparatus and computer program product for operating a web site by electronic mail
US7031956B1 (en) 2000-02-16 2006-04-18 Verizon Laboratories Inc. System and method for synchronizing and/or updating an existing relational database with supplemental XML data
US6594665B1 (en) * 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
EP1130869B1 (en) * 2000-03-01 2005-06-01 Sony International (Europe) GmbH Management of user profile data
AU2001245930A1 (en) 2000-03-22 2001-10-03 Omnipod, Inc. Integrated system and method of providing online access to files and information
WO2001077824A1 (en) * 2000-04-07 2001-10-18 Agora Interactive, Inc. Method for managing the simultaneous utilization of diverse real-time collaborative software applications
JP3855595B2 (en) * 2000-04-25 2006-12-13 株式会社日立製作所 COMMUNICATION SYSTEM, COMMUNICATION METHOD, AND COMMUNICATION DEVICE
US6453294B1 (en) * 2000-05-31 2002-09-17 International Business Machines Corporation Dynamic destination-determined multimedia avatars for interactive on-line communications
AU2001265407A1 (en) * 2000-05-31 2001-12-11 Snip, Llc Method and system for instant messaging
US6807178B1 (en) * 2000-05-31 2004-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Session dispatcher at a wireless multiplexer interface
AU2001271263A1 (en) * 2000-06-30 2002-01-14 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
DE60144233D1 (en) 2000-07-25 2011-04-28 America Online Inc VIDEO COMMUNICATIONS
US20020036990A1 (en) 2000-09-11 2002-03-28 Ben Chodor Still picture capture, editing and distribution system utilizing a publicly accessible wide area network
US7870196B2 (en) 2000-11-08 2011-01-11 Nokia Corporation System and methods for using an application layer control protocol transporting spatial location information pertaining to devices connected to wired and wireless internet protocol networks
US7222184B2 (en) 2000-11-29 2007-05-22 Ncr Corporation Method of downloading web content to a network kiosk in advance
KR100377936B1 (en) 2000-12-16 2003-03-29 삼성전자주식회사 Method for inputting emotion icon in mobile telecommunication terminal
AU2002234258A1 (en) 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US20020103898A1 (en) * 2001-01-31 2002-08-01 Moyer Stanley L. System and method for using session initiation protocol (SIP) to communicate with networked appliances
US20020107925A1 (en) 2001-02-05 2002-08-08 Robert Goldschneider Method and system for e-mail management
US6993012B2 (en) * 2001-02-20 2006-01-31 Innomedia Pte, Ltd Method for communicating audio data in a packet switched network
ATE324736T1 (en) * 2001-02-20 2006-05-15 Eyeball Networks Inc METHOD AND DEVICE FOR ALLOWING DATA TRANSMISSION VIA FIREWALLS
US20020194006A1 (en) 2001-03-29 2002-12-19 Koninklijke Philips Electronics N.V. Text to visual speech system and method incorporating facial emotions
US7080139B1 (en) 2001-04-24 2006-07-18 Fatbubble, Inc Method and apparatus for selectively sharing and passively tracking communication device experiences
JP2002330152A (en) * 2001-04-27 2002-11-15 Fujitsu Ltd Spanning tree controller and method at the time of trouble/increase
US7171415B2 (en) 2001-05-04 2007-01-30 Sun Microsystems, Inc. Distributed information discovery through searching selected registered information providers
DK1528754T3 (en) 2001-05-11 2008-03-31 Nokia Corp Mobile instant messaging and presence service
US7480707B2 (en) * 2001-05-16 2009-01-20 International Business Machines Corporation Network communications management system and method
US6983305B2 (en) * 2001-05-30 2006-01-03 Microsoft Corporation Systems and methods for interfacing with a user in instant messaging
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7149189B2 (en) 2001-07-17 2006-12-12 Mcafee, Inc. Network data retrieval and filter systems and methods
WO2003010728A1 (en) 2001-07-24 2003-02-06 Koninklijke Kpn N.V. Method and system and data source for processing of image data
US6987991B2 (en) 2001-08-17 2006-01-17 Wildseed Ltd. Emoticon input method and apparatus
US7765484B2 (en) 2001-09-28 2010-07-27 Aol Inc. Passive personalization of lists
US7633942B2 (en) * 2001-10-15 2009-12-15 Avaya Inc. Network traffic generation and monitoring systems and methods for their use in testing frameworks for determining suitability of a network for target applications
NO315679B1 (en) 2001-10-19 2003-10-06 Dmates As Rich communication over the internet
US8095668B2 (en) * 2001-11-09 2012-01-10 Rockstar Bidco Lp Middlebox control
US6983370B2 (en) * 2001-11-27 2006-01-03 Motorola, Inc. System for providing continuity between messaging clients and method therefor
JP2003167832A (en) * 2001-11-29 2003-06-13 Minolta Co Ltd Message system and message processing device
US7127613B2 (en) * 2002-02-25 2006-10-24 Sun Microsystems, Inc. Secured peer-to-peer network data exchange
US7233979B2 (en) * 2002-03-14 2007-06-19 Microsoft Corporation Instant messaging session invite for arranging peer-to-peer communication between applications
US7203356B2 (en) * 2002-04-11 2007-04-10 Canesta, Inc. Subject segmentation and tracking using 3D sensing technology for video compression in multimedia applications
US6629793B1 (en) 2002-04-26 2003-10-07 Westie Intellectual Properties Limited Partnership Emoticon keyboard
US7689649B2 (en) 2002-05-31 2010-03-30 Aol Inc. Rendering destination instant messaging personalization items before communicating with destination
US7779076B2 (en) 2002-05-31 2010-08-17 Aol Inc. Instant messaging personalization
US20030225848A1 (en) 2002-05-31 2003-12-04 Brian Heikes Remote instant messaging personalization items
US7552204B2 (en) 2002-05-15 2009-06-23 Microsoft Corporation Method and system for supporting the communication of presence information among computing devices of a network
US20030217142A1 (en) 2002-05-15 2003-11-20 Microsoft Corporation Method and system for supporting the communication of presence information regarding one or more telephony devices
US7486611B1 (en) * 2002-05-20 2009-02-03 Cisco Technology, Inc. Standby router protocol using optimal route metric
US20030225847A1 (en) 2002-05-31 2003-12-04 Brian Heikes Sending instant messaging personalization items
CN100587681C (en) * 2002-06-26 2010-02-03 雅虎公司 System and method for communicating images between intercommunicating users
US6757722B2 (en) 2002-07-16 2004-06-29 Nokia Corporation System and method for providing partial presence notifications
US9497168B2 (en) * 2002-07-30 2016-11-15 Avaya Inc. Method and apparatus for supporting communications between a computing device within a network and an external computing device
ITTO20020724A1 (en) 2002-08-14 2004-02-15 Telecom Italia Lab Spa PROCEDURE AND SYSTEM FOR THE TRANSMISSION OF MESSAGES TO
US7657597B2 (en) 2002-09-26 2010-02-02 Sun Microsystems, Inc. Instant messaging using distributed indexes
US7353253B1 (en) 2002-10-07 2008-04-01 Webex Communicatons, Inc. Peer-to-peer messaging system
AU2003291043A1 (en) 2002-11-18 2004-06-15 America Online, Inc. Handling a multimedia object associated with an electronic message
US7289520B2 (en) 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
US7523165B2 (en) 2002-12-24 2009-04-21 Telefonaktiebolaget L M Ericsson (Publ) Transmission of application information and commands using presence technology
US7185285B2 (en) 2003-02-19 2007-02-27 Microsoft Corporation User interface and content enhancements for real-time communication
US20040249958A1 (en) * 2003-06-04 2004-12-09 Ozdemir Hasan Timucin Method and apparatus for secure internet communications
US20040260841A1 (en) * 2003-06-19 2004-12-23 Mathew Tisson K. Method, apparatus, and system for internet protocol communication over intelligent platform management bus
US7296223B2 (en) 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring
US7539727B2 (en) 2003-07-01 2009-05-26 Microsoft Corporation Instant messaging object store
EP1644840A4 (en) 2003-07-01 2007-04-25 Apple Computer Peer-to-peer content sharing
JP4046654B2 (en) 2003-07-04 2008-02-13 日本電信電話株式会社 P2P communication system
AU2003903994A0 (en) 2003-07-31 2003-08-14 Canon Kabushiki Kaisha Collaborative editing with automatic layout
US20050027839A1 (en) 2003-07-31 2005-02-03 International Business Machiness Corporation Method, system and program product for dynamic transmission in a messaging session
US7315866B2 (en) 2003-10-02 2008-01-01 Agency For Science, Technology And Research Method for incremental authentication of documents
US7437374B2 (en) 2004-02-10 2008-10-14 International Business Machines Corporation Efficient XML schema validation of XML fragments using annotated automaton encoding
US20060015560A1 (en) 2004-05-11 2006-01-19 Microsoft Corporation Multi-sensory emoticons in a communication system
US20050273472A1 (en) 2004-06-04 2005-12-08 Prakash Reddy Verifying incremental updates to hierarchicaly structured information
TWI262678B (en) 2004-06-30 2006-09-21 Inst Information Industry Peer-to-peer communication system, method and machine-readable storage medium
US7437364B1 (en) 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7302270B1 (en) 2004-08-02 2007-11-27 Cisco Technology, Inc. Time interval processing and annotation in presence systems
US7552430B2 (en) 2004-08-31 2009-06-23 Microsoft Corporation Patch sequencing

Also Published As

Publication number Publication date
CA2470013A1 (en) 2005-01-01
EP1494410B1 (en) 2013-08-14
JP2011054178A (en) 2011-03-17
US20120233339A1 (en) 2012-09-13
EP2259514A1 (en) 2010-12-08
CN1578278B (en) 2019-07-16
EP2259513A1 (en) 2010-12-08
EP1494410A3 (en) 2005-03-09
US20080209051A1 (en) 2008-08-28
JP2005027318A (en) 2005-01-27
US20050005014A1 (en) 2005-01-06
US7363378B2 (en) 2008-04-22
CA2782768A1 (en) 2005-01-01
BRPI0402437A (en) 2005-05-24
KR20050004079A (en) 2005-01-12
KR101150110B1 (en) 2012-06-08
CN1578278A (en) 2005-02-09
EP1494410A2 (en) 2005-01-05
US8185635B2 (en) 2012-05-22
JP4634077B2 (en) 2011-02-16
MXPA04006451A (en) 2005-08-19
CA2782768C (en) 2014-12-02

Similar Documents

Publication Publication Date Title
CA2470013C (en) Transport system for instant messaging
US8356103B2 (en) NAT traversal for media conferencing
US7227864B2 (en) Methods and systems for establishing communications through firewalls and network address translators
EP1892887B1 (en) Communication method between communication devices and communication apparatus
US6879593B1 (en) Connections of nodes on different networks
CN101437036B (en) Document transmission method and system capable of supporting NAT/firewall traversing
US20090043849A1 (en) Collaborative web-based computing
CN108306986B (en) Multi-type media data network address conversion traversing method, terminal and system
US20070233901A1 (en) Methods and systems for integrating network services with multiple communication protocols
US20050091301A1 (en) Systems and methods for multiparty session invite
US20120054348A1 (en) Method for the initiation of a shared computer session
US20060190992A1 (en) Facilitating Bi-directional communications between clients in heterogeneous network environments

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20220301

MKLA Lapsed

Effective date: 20200831