MXPA04006451A - Sistema de transporte para mensajeria instantanea. - Google Patents
Sistema de transporte para mensajeria instantanea.Info
- Publication number
- MXPA04006451A MXPA04006451A MXPA04006451A MXPA04006451A MXPA04006451A MX PA04006451 A MXPA04006451 A MX PA04006451A MX PA04006451 A MXPA04006451 A MX PA04006451A MX PA04006451 A MXPA04006451 A MX PA04006451A MX PA04006451 A MXPA04006451 A MX PA04006451A
- Authority
- MX
- Mexico
- Prior art keywords
- computer
- session
- bridge
- data
- transport
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/251—Translation of Internet protocol [IP] addresses between different IP versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/1063—Application servers providing network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1073—Registration or de-registration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/401—Support 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/4015—Support 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation 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)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Se describe un metodo ejemplar que involucra la creacion de una sesion maestra sobre una primera conexion a traves de un servidor; y crear un canal virtual sobre la conexion, el canal virtual puede funcionar para comunicar una sesion con caracteristicas especiales; el metodo puede involucrar el establecimiento de una conexion directa que evita el servidor y conmuta la comunicacion de la sesion con caracteristicas especiales a la conexion directa; un sistema para la comunicacion de red incluye una pluralidad de puentes de transporte, cada puente de transporte corresponde a una configuracion de dispositivo activo de red, y un modulo de conmutacion que puede funcionar para elegir uno de los puentes de transporte para formar una conexion entre dos dispositivos de computo con base en la configuracion del dispositivo activo de la red.
Description
SISTEMA DE TRANSPORTE PARA MENSAJERÍA INSTANTÁNEA
REFERENCIA CRUZADA CON SOLICITUDES RELACIONADAS La presente solicitud está relacionada con la patente copendiente de EE.UU. con No. de serie , No. de expediente MS1-1527, titulada "Almacenamiento de objetos de mensajería instantánea" de David ichael Miller, John Holmes y Walter vonKoch, la cual se presenta de manera adjunta con la presente, asignada al apoderado de la presente invención e incorporada a la presente por referencia por todas sus enseñanzas y descripciones. Campo de la Invención El objeto descrito se refiere a las comunicaciones por computadora. En particular, el objeto se refiere a un sistema de transporte para mensajería instantánea. Antecedentes de la Invención La mensajería instantánea se está convirtiendo en una herramienta de comunicación muy común para los usuarios de dispositivos de cómputo. Una aplicación de mensajería instantánea (IM) (por ejemplo el sistema mensajero de WINDOWS® de Microsoft Corporation de Redmond, Washington, mensajero de Yahoo!, mensajero instantáneo de AOL (AIM, y similares) permite que los usuarios establezcan una conversación en tiempo real con uno o más contactos, los cuales se identifican en la lista de contactos privada del usuario. Típicamente, las listas privadas se almacenan en un servidor y se establece una conversación a través de un panel de distribución, o un servidor de relé, el cual dirige los mensajes entrantes a los destinatarios apropiados. El enrutamiento de mensajes en tiempo real a través del panel de distribución puede ser más lento y más costoso (en términos de recursos de servidor) que la mensajería instantánea en una disposición de computadora a computadora, en donde los mensajes no pasan a través de un panel de distribución, pasan directamente desde y hacia los participantes en la conversación. De esta manera, después de establecer una conversación usando un servidor de panel de distribución, un sistema de mensajería instantánea típico puede intentar convertir la conversación en una configuración de computadora a computadora. La conversión de computadora a computadora puede realizarse de diversas manera, típicamente involucra la Identificador de una computadora mediante una dirección de protocolo de Internet (IP) y/o un número de puerto, por el que se puede enviar directamente los mensajes a una computadora. Sin embargo, la creación de una conversación computadora a computadora puede ser difícil, o imposible, en situaciones que involucran dispositivos activos de red, como barreras de protección o traductores de direcciones de red (NAT). Tales dispositivos se usan para dar seguridad al sistema, pero típicamente están diseñados para evitar el acceso directo a las computadoras que se encuentran detrás de dichos dispositivos. Por ejemplo, un NAT tiene su propia dirección de IP y las computadoras detrás del NAT tienen sus propias direcciones de IP las cuales son privadas, es decir, otras computadoras fuera del NAT no pueden determinar las direcciones de IP de las computadoras que se encuentran detrás de NAT. La dirección de IP de un mensaje que se recibe a través del NAT se traduce a la dirección de IP de la computadora destino que se encuentra protegida por el NAT. Diversas técnicas se pueden aplicar para cruzar o atravesar un dispositivo activo de red para formar una conexión directa. Con las mejoras de los sistemas de mensajería instantánea, típicamente se proveen más funcionalidades además del texto, los que hace que la conversación sea una experiencia más intensa. Por ejemplo, un sistema de mensajería instantánea puede permitir que un usuario transmita audio, video o una imagen personal del usuario (también denominada como imagen de visualízación) asociada de manera exclusiva con el usuario. Tales características comúnmente necesitan más recursos de los que requiere el texto para que sean incluidos en una conversación, por ejemplo, un ancho de banda de transmisión. De esta manera, se desea una conexión de computadora a computadora cuando se mantiene una conversación a través de la mensajería instantánea, ya que esta conexión computadora a computadora típicamente proporciona un desempeño superior a una conexión a través de un servidor de panel de distribución. Sumario de la Invención Las ¡mplementaciones que se describen y se reclaman en la presente resuelven los problemas analizados, además de otros. Un método ejemplar involucra la creación de una sesión maestra sobre una primera conexión a través de un servidor y la creación de un canal virtual sobre la conexión, el canal virtual puede operar para comunicar una sesión con características especiales. El método puede involucrar el establecimiento de una conexión directa que se desvía del servidor así como la conmutación de la comunicación de la sesión con características especiales a la conexión directa. Un sistema para una comunicación sobre una red incluye una pluralidad de puentes de transporte, cada puente de transporte corresponde a una configuración del dispositivo activo de la red y un módulo de conmutación que puede funcionar para elegir uno de los puentes de transporte para formar una conexión entre dos dispositivos de cómputo con base en la configuración del dispositivo activo de la red. Breve Descripción de los Dibujos La Figura 1 es un diagrama de bloques que ilustra los componentes en un sistema de mensajería instantánea ejemplar; la Figura 2 ¡lustra un sistema de transporte que incluye capas ejemplares para manejar la comunicación de datos en un escenario de mensajería instantánea; la Figura 3 es un diagrama de bloques que ilustra un módulo de selección de puente ejemplar que puede funcionar para seleccionar un puente de transporte preferido; la Figura 4 es un diagrama de bloques que ilustra los canales virtuales a través de una conexión física entre dos dispositivos de cómputo; la Figura 5 ilustra un flujo de operación que tiene operaciones ejemplares para establecer una sesión con características especiales dentro de una sesión maestra y crear una conexión directa si es posible; la Figura 6 ilustra un flujo de operación que tiene operaciones ejemplares para determinar un puente de transporte que se prefiere y crear una conexión directa usando el puente de transporte preferido; la Figura 7 ilustra un flujo de operación que tiene operaciones ejemplares para transportar objetos grandes binarios (BLOB) en secuencia; la Figura 8 ¡lustra un sistema ejemplar que proporciona un entorno operativo para seleccionar de manera transparente un puente de transporte que se prefiere y comunicar datos característicos en un escenario de mensajería instantánea. Descripción Detallada de la Invención Haciendo referencia a las figuras, en donde los numerales de referencia similares se refieren a elementos similares, se ilustran diversos métodos implementados en un entorno de cómputo adecuado. Aunque no se requiere, diversos métodos ejemplares serán descritos dentro de un contexto general de instrucciones realizables a través de una computadora, por ejemplo módulos de programa, ejecutados en una computadora personal y/u otros dispositivos de cómputo. En general, los módulos de programas incluyen rutinas, programas, objetos, componentes, estructuras de datos, que realizan tareas particulares o que implementan tipos de datos abstractos particulares. Adicionalmente, los expertos en la técnica podrán apreciar que diversos métodos ejemplares pueden practicarse con sistemas de cómputo que tengan otras configuraciones, incluyendo dispositivos de mano, sistemas de procesadores múltiples, aparatos electrónicos programables o basados en microprocesadores, PC en red, mini computadoras, computadoras principales, y similares. Diversos métodos ejemplares también se pueden practicar en entornos de cómputo distribuidos en donde las tareas se realizan a través de dispositivos de procesamiento remoto que están enlazados a través de una red de comunicaciones. En un entorno de cómputo distribuido, los módulos de programa se pueden ubicar en dispositivos de almacenamiento de memoria tanto locales como remotos. En la presente, en algunos diagramas se resumen varios actos algorítmicos en "bloques" individuales. Dichos bloques describen acciones o decisiones específicas que se toman o desarrollan de conformidad con un proceso. Cuando se emplea un microcontrolador (o algún equivalente), los diagramas de flujo que se presentan en la presente proveen una base para un "programa de control" o programa de cómputo/ programación en firme que puede usarse a través de dicho microcontrolador (o equivalente) para efectuar el control deseado. De esta manera, se implementan los procesos como instrucciones que pueden ser leídas a través de una máquina y que pueden ser almacenadas en la memoria que, al ejecutarlas a través de un procesador, realizan los diversos actos que se ilustran en los bloques. Los expertos en la técnica pueden escribir fácilmente un programa de control con base en los diagramas de flujo y otras descripciones que se presentan en este documento. Debe comprenderse y apreciarse que el objeto descrito en la presente no sólo incluye dispositivos y/o sistemas cuando se programan para realizar los actos que se describen a continuación, sino los programas de cómputo que están configurados para programar los microcontroladores y, adicionalmente cualquiera y todos los medios que pueden ser leídos a través de una computadora en la que se pueda expresar dichos programas de cómputo. Ejemplos de tales medios que pueden ser leídos a través de una computadora incluyen, sin limitarse a estos, discos flexibles, discos rígidos, CD, RAM, ROM, memoria instantánea y similares. Entorno de Red Ejemplar Para Mensajería Instantánea La Figura 1 ilustra un entorno de red 100 ejemplar para una conversación de mensajería instantánea. En general, dos clientes 102 y 104 pueden comunicarse entre sí a través de una red 106. Los dispositivos activos de red 108 y 110 pueden o no estar presentes en el entorno de red 100. Un servidor de eco 112 y un servidor de panel de distribución 114 pueden conectarse a través de la red 106 para facilitar la comunicación entre los clientes 102 y 104. Una plataforma 116 de mensajería instantánea (IM) habilita al cliente (1) 102 y al cliente (2) 104 para que inicien una conversación de mensajería instantánea. Un usuario de la plataforma IM 116 interactúa con la plataforma IM 116 a través de una interfaz de usuario (no se muestra) para enviar y recibir mensajes hacia y desde el cliente (2) 104. La plataforma IM 116 incluye características 118 (también denominadas características de usuario final (EUF)) y una pila de protocolo de transporte 122 que facilita la comunicación de datos entre el cliente (1) 102 y el cliente (2) 104. Específicamente, la pila de protocolo de transporte 122 establece de manera transparente una sesión de mensajería instantánea basada en características del entorno de red 100. En general, la sesión que se establece puede ser a través de un servidor de panel de distribución (SB) 114 o, de manera alternativa, mediante una conexión de computadora a computadora 124, en donde los datos no se envían a través del servidor SB 114.
Los clientes 102 y 104 pueden acceder a la red 106 a través de un proveedor de servicio de Internet (no se muestra), o de otra manera. En una modalidad, los clientes 102 y 104 cada uno cuenta con direcciones de red, puertos y/o identificadores únicos, sobre los que se puede establecer la comunicación entre los clientes 102 y 104. Por ejemplo, el servidor SB 114 puede enviar datos a la computadora del cliente (2) 104 usando la dirección de red de la computadora del cliente (2) 104, el puerto y/o identificador del mismo. Sobre una conexión de computadora a computadora 124, la computadora cliente (1) 102 puede enviar datos directamente a la computadora cliente (2) 104, usando la dirección de red, el puerto y/o el identificador de la computadora cliente (2) 104. Como se analizó, el dispositivo activo de red (1) 106 y el dispositivo activo de red (2) 110 puede o no estar presente. Ejemplos de dispositivos activos de red son los cortafuegos y traductores de direcciones de red, los cuales proporcionan seguridad al sistema para sus dispositivos clientes respectivos. De esta manera, el dispositivo activo de red (2) 110 puede proveer seguridad para la computadora cliente (2) 104 y el dispositivo activo de red (1) 108 puede proveer seguridad para la computadora cliente (2) 102. Por lo tanto, son posibles diversas configuraciones de red. En una configuración de red, el dispositivo activo de red (1) 108 está presente, pero el dispositivo activo de red (2) 110 no los está. En otra configuración de red, el dispositivo activo de red (2) 110 está presente, pero el dispositivo activo de red (1) 108 no lo está. En otra configuración de red, no están presentes ninguno de los dispositivos activos de red, ni el dispositivo (1) 108, ni el dispositivo (2) 110. En una cuarta configuración de red, están presentes tanto el dispositivo activo de red (1) 108 como el dispositivo activo de red (2) 110. Los dispositivos activos de red 108 y 110 pueden tener direcciones únicas de red, como direcciones de protocolo de Internet (IP), en donde los dispositivos activos de red 108 y 110 reciben datos anexos para sus clientes respectivos 102 y 104. Los dispositivos activos de red 108 y 110 reciben datos en sus direcciones de red y traducen las direcciones de red a las direcciones de red asociadas con sus clientes 102 y 104 respectivos. El cliente (1) 102 puede usar el servidor de eco 112 para obtener la dirección de red asociada con el dispositivo activo de red (1) 108. El cliente (1) puede enviar al servidor de eco 112 un mensaje. Cuando el servidor de eco 112 recibe el mensaje desde el cliente (1) 102, el mensaje incluirá la dirección de red del dispositivo activo de red 108. Como respuesta, el servidor de eco 112 envía la dirección de red del dispositivo activo de red 108 de nuevo al cliente 102. El cliente (2) 104 puede obtener de manera similar la dirección de red de dispositivo activo de red (2) 110. Usando las direcciones de red de los dispositivos activos de red 108 y 110, los clientes 102 y 104 pueden establecer una conexión de computadora a computadora 124. Aunque el entorno 100 ejemplar de la Figura 1 ilustra sólo dos clientes 102 y 104 en una conversación, debe comprenderse que más de dos clientes pueden involucrarse en una conversación.
Dos o más clientes pueden comunicarse de manera de puntos múltiples, en donde cada cliente puede tener una conexión de computadora a computadora con todos los otros clientes. De manera alternativa, los dos o más clientes pueden incorporarse a la conversación a través del servidor de panel de distribución 114. Además, cualquier combinación de conexiones de computadora a computadora y conexiones a través del panel de distribución se pueden implementar en una conversación. A continuación se proporcionan descripciones más detalladas de operaciones ejemplares, así como sistemas, que se pueden usar en el entorno de red 100. Sistemas Ejemplares para Transportar Mensajes Instantáneos entre Clientes La Figura 2 ilustra un sistema de transporte 200 que incluye capas ejemplares para administrar la comunicación de datos en un escenario de mensajería instantánea. En general, cada una de las capas proporciona funcionalidad y/o datos para transportar diversas tareas asociadas con la capa. Los expertos en la técnica comprenderán la descripción de los protocolos de transporte y los sistemas en términos de capas. El sistema de transporte 200 incluye características 202. Las características 202 son funciones que se encuentran o se ejecutan a través o dentro de una aplicación de mensajero (por ejemplo, la plataforma de mensajería instantánea 116 de la Figura 1) para presentar los datos asociados con las características. Una característica puede estar determinada por el tipo de datos q ue presenta la característica, la manera de presentar los datos, las operaciones q ue puede real izar la característica en los datos y/o las opciones interactivas q ue proporciona la característica al usuario para i nteractuar con los datos. Por ejemplo, una característica de la imagen personal del usuario presenta datos de i magen en una pequeña pantalla en la interfaz del usuario , u na característica de transferencia de archivos habi lita a un usuario para q ue seleccione un archivo y los envíe a un contacto al q ue envía mensajes instantáneos. A manera de ejemplo , pero sin limitarse a esto, la capa de características 202 puede inclui r iconos de emociones, tinta , i mágenes incrustadas, entre otros. Las características 202 usan capas en una pila de protocolo de transporte 206 para comu nicar datos en un escenario de mensajería instantánea. La pila de protocolo de transporte 206 administra de manera transparente los detal les de la recepción y tra nsmisión de los datos desde y hacia los cl ientes en u na conversación . La pi la de protocolo de transporte 206 proporciona una interfaz de programa de aplicación (API ) 208 de transporte a las características 202 , en donde las características 202 pueden enviar y recibir datos. Las capas inferiores de la pila de protocolo de transporte 206 usan datos de configuración de red e información sobre los datos de las características 202 para establecer sesiones de mensajes instantáneos . De esta manera , la pila de protocolo de transporte 206 hace que los detalles de los niveles inferiores de los datos de comunicación sean transparentes a las características 202. Los términos "BLOB" (objeto grande binario) y "trozo" se usan en la presente para referirse a porciones de datos que pueden ser enviados o recibidos dentro de un entorno de red, sin importar el tipo o tamaño de los datos. Por ejemplo, una imagen digital puede estar compuesta de uno o más BLOB de datos. Un BLOB está compuesto de uno o más trozos de datos. Como se mencionó anteriormente, la API 208 de transporte ejemplar proporciona métodos o funciones que exponen la funcionalidad de la pila de protocolo de transporte a las características 202. Una implementación particular de la API 208 incluye los siguientes métodos: SendData(); // Envía un blob de datos a otro cliente; OnDataReceivedQ; // Vuelve a llamar a una característica cuando la sesión asociada recibe un blob de datos; RegisterFeatureHandler(); // Invocado por las características para registrar a los manipuladores. Los manipuladores son invocados cuando otro cliente envía una invitación para la característica. RegisterDataChannelCallBacks(); //Invocado por las características para registrar a los manipuladores que son i nvocados cuando suceden eventos de canal o los estados del canal cambian . CreateDataChannel(); //Crea un canal de datos (sesión) para u na característica . GetTransportCapabilities(); //Devuelve las capacidades de la conversación, por ejemplo Direct (di recta), I ndirect (indirecta), Store (al macenar) y Forward (enviar). GetParticipants(); //Obtiene la lista de participantes en una conversación . Para ¡l ustrar la API 208 ejemplar, una funcional idad en la capa de fu ncionalidades 202 puede crear una sesión usando la función CreateDataChannel() (Crear canal de datosQ). La característica puede invocar el registro RegisterFeatureHand ler() (Man i pulador de característica de registro()) para registrar al manipulador que será invocado al recibir una invitación para esta característica . La característica puede invocar RegisterDataChannelCalIBacksO (Registrar llamadas de canal de datos()) para reg istrar un manipulador que será invocado cuando se produzca un evento de canal . La característica puede invocar Send Data() (Enviar datos()) para enviar datos al cl iente. La función On DataReceived () (En datos recibidosQ) se i nvoca por otra capa de protocolo de transporte, como la capa de sesión 21 0 , cuando se reciben datos para la característica. Una capa de sesión 210 ejemplar incluye la lógica para proveer servicios de sesión a las características 102. Una conversación de mensajes instantáneos incluye al menos una sesión, denominada una sesión de mensajes instantáneos para desarrollarse en la conversación. Una implementación de SLP también incluye una sesión maestra, la cual tiene control lógico para establecer otras sesiones para las características, denominadas sesiones con características especiales. La capa de sesión 210 es el protocolo mediante el cual se inician las sesiones. En una implementación, la capa de sesión 210 inicia una sesión negociando el establecimiento de sesiones entre dos computadoras con base en las capacidades respectivas de cada computadora. En una implementación particular de la capa de sesión 210, se emplea un subconjunto del protocolo de iniciación de sesión (SIP). En esta implementación, los mensajes se pueden enviar en un formato que puede ser leído por un humano (por ejemplo, un lenguaje marcado extensible (XML), valor separado por comas (CSV), etc.). Los mensajes de administración de sesión ejemplares son "INVITE" (INVITAR), "BYE" (ADIOS), "CANCEL" (CANCELAR) y "ACK" (RESPONDER). Una capa de transporte ejemplar 212 incluye los elementos lógicos para manejar un protocolo de capa de transporte del estándar de interconexión de sistema abierto (OSI). El TLP es un protocolo binario para enviar y recibir objetos grandes binarios (BLOB) de tamaño arbitrario a través de canales de red. La capa de transporte 212 realiza diversas tareas de administración de datos. Por ejemplo, como se analiza con mayor detalle a continuación, la capa de transporte 212 puede funcionar para transmitir de manera simultánea datos a través de una conexión de red y crear de esta manera canales virtuales dentro de una sola conexión de red. Como se analiza con mayor detalle a continuación, la capa de transporte 212 hace interfaz con uno o más puentes de transporte, como un puente TCP o un puente SB, los cuales residen en la capa de puente de transporte 214. La capa de transporte 212 puede incluir un programador y pone en cola para programar datos de las características 202 que serán transportados a través de los puentes en la capa de puente 214. En una implementación particular, la capa de transporte 212 anexa un encabezado TLP a cada trozo de cada BLOB que se transporta. El encabezado proporciona información sobre el BLOB y el trozo. Al recibir un trozo, la capa de transporte 212 puede analizar sintácticamente el encabezado para determinar cómo deben volver a unirse los trozos y cómo los BLOB deben volver a ordenarse, en caso de ser necesario. En una implementación ejemplar, el encabezado de TLP es como se indica a continuación: DWORD Sessld; // Identificador de sesión secundaria a la que pertenece este blob DWORD Blobld; // Identificador para este blob UINT64 Offset; // Desvío de estos datos del trozo dentro de los datos del blob UINT64 BlobSize; // Tamaño total de todos los trozos sin incluir los encabezados DWORD ChunkSize; // Tamaño de los datos en este trozo (sin incluir el encabezado) DWORD Flags; // Unidos juntos TLP_CONTROL_FLAGS (Indicadores de control de TLP) El campo "Sessld" (Identificador de sesión) identifica la sesión asociada con un trozo de los datos que se están enviando o recibiendo. El campo "Sessld" (identificador del campo) lo usa la capa de transporte 212 para asociar un trozo de datos con una sesión particular, y de esta manera transmitir de manera simultánea y/o desmultiplexar el trozo de datos. La transmisión de manera simultánea de datos que emplea la pila de protocolo de transporte 206 se describe a continuación detalladamente. El campo "Blobld"(ldentificador de Blob) identifica el objeto grande binario (BLOB) que corresponde a los datos que se están enviando o recibiendo. El campo "Blobld (Identificador de Blob) se puede usar mediante la pila de protocolo de transporte 206 para ensamblar o volver a ensamblar los trozos en un BLOB correspondiente. El campo "Offset" (Desviación) representa el lugar en donde se ubica un trozo en el BLOB correspondiente. El campo "Blobld" (Identificador de BLOB) también se puede usar para organizar los BLOB en el orden adecuado antes de entregarlos o después de recibirlos. El campo "BlobSize" (Tamaño BLOB) representa el tamaño de BLOB. El campo "ChunkSize" (Tamaño del trozo) representa el tamaño del trozo de datos, sin incluir el encabezado. El campo "Flags" (Indicadores) proporciona un número de indicadores que usa la capa de transporte 212 para administrar el proceso de enviar y recibir datos entre los clientes. Los "Indicadores" ejemplares se muestran y describen a continuación:
enum TLP_CONTROL_FLAGS (Indicadores de control de TLP) { TLP_NAK =0x01 , //Establecer en un paquete sin respuesta (solicitud para retransmitir) TLP_ACK=0x02, //Establecer en un paquete de respuesta TLP_RAK=0x04, //Establecer en una solicitud de un paquete de respuesta TLP_RST=0x08, //Establecer en un paquete de Reset (restablecimiento), cierra la sesión del otro lado TLP_BIG- = 0x10, //Establecer cuando este trozo es parte de un blob que debe guardarse como un archivo TLP_CAL=0x20, //Establecer en un blob para el cual se solicitan las llamadas de avance };
La capa de puente de transporte 214 incluye los datos lógicos para transportar datos sobre una red. Por ejemplo, la capa de puente de transporte 214 puede realizar la codificación y/o decodificación de datos. En una implementación, la capa del puente de transporte 214 incluye uno o más puentes de transporte en donde cada uno tiene la funcionalidad que corresponde a una configuración de red y datos característicos para comunicarse sobre la red. Los puentes de transporte ejemplares, así como los sistemas y operaciones para seleccionar entre los puentes se describen detalladamente a continuación. En una implementación, la capa de transporte 214 puede usar la capa de puente de transporte 214 para la transición entre dos tipos de puente en medio de una sesión. De esta manera, una sesión puede comenzar sobre un puente de panel de distribución (SB), en donde los datos de la sesión se comunican a través del servidor de panel de distribución, sin embargo, más tarde, la sesión puede cambiar a una conexión directa o de computadora a computadora. Además, sí la conexión de computadora a computadora se interrumpe, la capa de transporte 212 puede nuevamente conectarse al puente SB o a algún otro puente disponible en la capa de puente 214. La capa de transporte 212 maneja la conmutación a un tipo de conexión diferente de manera que es transparente a las capas superiores de la pila de protocolo de transporte 206. La capa de transporte 212 funciona con la capa de puente 214 para asegurar que los BLOB se entregan y/o reciben en un orden adecuado. Debido a que el tipo de conexión puede cambiar de una conexión más lenta a una conexión más rápida en medio de una sesión, los BLOB que se transmiten sobre la conexión más lenta pueden llegar a su destino después de que se transmiten los BLOB sobre la conexión más rápida, a menos que la capa de transporte 212 realice acciones para asegurar un orden adecuado. A continuación se describen operaciones ejemplares que aseguran que se mantiene un orden adecuado en secuencia de la entrega. Una capa de red 218 representa una funcionalidad de comunicaciones a nivel inferior que realiza las funciones de comunicaciones de red estándar. La capa de red 218 puede incluir, sin limitarse a esto, una funcionalidad de protocolo de control de transmisión/ protocolo de internet (TCP/IP), una funcionalidad de protocolo de datagramas universales (UDP), una funcionalidad de protocolo de transporte de hipertexto (HTTP), un protocolo de acceso de objeto simple (SOAP). La capa de puente 214 puede usar la funcionalidad de capa de red 218 para comunicar datos a través de una red. Como se analiza en la presente, se proporcionan diversos puentes de transporte para manejar diferentes configuraciones de red y tipos de red de datos, así como formatos y/o tamaños de estos. La Tabla 1 ilustra puentes de transporte ejemplares y configuraciones de red asociados en los que se pueden usar los puentes. TABLA 1
Una marca de verificación (X) en una intersección de una fila y una columna de la Tabla 1 indica que el puente en la fila de intersección se puede usar en la configuración de red en la columna que se cruza. El puente SB envía tráfico a través de un servidor de panel de distribución (por ejemplo, el servidor de panel de distribución 114 de la Figura 1). En una implementación, cuando se establece inicialmente una sesión de mensajes instantáneos, el puente SB es ei puente que se usa para transportar los datos de la sesión de mensajes instantáneos. Posteriormente, el puente SB sigue siendo usado sólo si no puede establecerse una conexión directa (computadora a computadora). Se puede usar el puente de protocolo de control de transporte (TCP) activado por torsión (también denominado el TCP de Protocolo de Internet versión 5 (IPv6)) para atravesar un NAT de Protocolo de Internet versión 4 (IPv4). En una implementación, el puente IPv6 utiliza una técnica de conexión Teredo para establecer una conexión de computadora a computadora. Teredo es una tecnología de transición IPv6/IPv4 que proporciona una asignación de dirección y una conexión automática de hospedero a hospedero para una conectividad IPv6 única unicast cuando los anfitriones IPv6/IPv4 se encuentran detrás de uno o varios NAT IPv4. Para cruzar los NAT IPv4, los paquetes de IPv6 se envían como mensajes de protocolo de datagramas de usuario (UDP) basados en IPv4. El puente de TCP activado por torsión puede operarse para establecer una conexión de TCP-IP de computadora a computadora, incluso si un traductor de dirección de red (NAT) está configurado en la red. Por ejemplo, si un primer cliente está detrás de un NAT, un segundo cliente no está detrás de un NAT o cortafuego, el puente TCP activado por torsión del primer cliente inicia una conexión saliente TCP con el segundo cliente. El primer cliente puede usar un servidor de eco (por ejemplo, el servidor de eco 112 de la Figura 1) para detectar que el primer cliente esta detrás del NAT) y de esta manera determinar la dirección en la que se forma la conexión; es decir, el primer cliente inicia la conexión de TCP. Puede aplicarse una técnica similar cuando alguno de los clientes se encuentra detrás de un NAT de conexión directa universal (UPnP). El Puente de protocolo de datagrama universal fiable ((RUDP) comunica datos a través de UDP pero emula una conexión de TCP reconociendo la recepción de la transmisión de datos de una mera similar como un "paquete" sería reconocido bajo TCP. De esta manera, el puente RUDP proporciona una conexión más fiable que una conexión UDP tradicional, ya que el protocolo puede detectar cuando se pierden datos (es decir no se reciben) y deben volver a enviarse. El puente RUDP puede usar un servidor de eco para obtener direcciones de red de NAT, de manera que los NAT se puedan atravesar. El puente RUDP anexa un encabezado a los datos transmitidos. Un encabezado ejemplar se muestra a continuación:
unsigned_int64 qwSeqNum; // número de secuencia del primer byte en este paquete unsigned_int64 qwAckNum; // número de reconocimiento del siguiente byte que el remitente de este paquete espera DWORD dwOtherFields; //Desvío de 4 bits en palabras cuádruple, 5 bits reservados, 5 bits de control, 16 reservados, desde el más significativo DWORD dwWindow; //tamaño de ventana que destinatario aceptará DWORD dwSendTime; //indicador de tiempo momento en que el paquete haya sido enviado DWORD dwEchoTime //el último indicador de tiempo que el remitente grabó en un paquete del destinatario Un protocolo de puente RUDP ejemplar involucra enviar un mensaje "SYN" (Sincronizar) a un puente RUDP que escucha, y responde con "SYN ACK" (sincronizar respuesta), y responde al mensaje "SYN ACK" (sincronizar respuesta) con "ACK" (Respuesta). Posteriormente, un temporizador de retransmisión continuará retransmitiendo uno o más conjuntos de datos hasta que se reciba una respuesta desde el puente RUDP que responde a los conjuntos de datos transmitidos (o retransmitidos). La Figura 3 es un diagrama de bloques que ilustra un módulo de selección 302 ejemplar que puede funcionar para seleccionar un puente de transporte que se prefiere entre un conjunto de puentes de transporte 304. La aplicación de mensajería instantánea puede tener más de una característica 308, y una característica 308 se comunica con una sesión maestra 306 y un registro de sesión 310 para establecer una sesión con características especiales asociada 312. Los datos de mensajería instantánea, incluyendo los datos de característica, se transportan a través de un puente seleccionado. La sesión maestra 306 se ejecuta en la capa de sesión 210
(Figura 2) en la pila de protocolo 206 (Figura 2). La sesión maestra 306 se crea cuando una conversación inicia en una aplicación de mensajería instantánea. La sesión maestra 306 se asocia con una ventana de conversación y es el objeto a través del cual las características 308 solicitan una sesión secundaria o característica 312. La sesión maestra 306 también puede exponer un método estático que habilita las características 308 para iniciar una sesión maestra fuera del contexto de una ventana de conversación, en donde se creará una conversación de mensajería instantánea. Una característica 308 se registra el registro de sesión 310, el cual mantiene información sobre las características que se ejecutan durante una conversación. El registro de sesión 310 también puede mantener información sobre las características "de auto inicio". Las características de auto inicio son características que deben existir predeterminadas y sus manipuladores invitados serán invocados en ambos clientes en la conversación con identificadores de llamada e identificadores de sesión predefinidos una vez que se ha establecido una conexión de panel de distribución subyacente. Cuando la característica 308 se registra con el registro de sesión 310, la característica 308 proporciona una función de manipulador de invitación y un identificador único global (GUID) asociado con la característica 308. La sesión maestra 306 puede usar la información de registro de característica para establecer la sesión con características especiales 312, a través de la cual la función 308 se puede transportar en una sesión con una característica personal. Por ejemplo, una invitación de una computadora puede ser recibida por la sesión maestra 306, invitando a la característica 308 para que entre en una sesión. La invitación especifica el GUID asociado con la característica 308. La sesión maestra 306 busca el GUID en el registro de sesión 310, para encontrar la función del manipulador de invitación asociada con la característica 308. Si la invitación es aceptada por la característica 308, la sesión maestra 306 crea la nueva cesión característica 312. La característica 308 puede invitar una característica de computadora para que entre en una sesión. Para hacerlo, la característica 308 solicita una nueva sesión de la sesión maestra 306 (por ejemplo, al invocar CreateDataChannel() (Crear Canal de DatosQ) en la API de transporte 208 de la Figura 2)). La solicitud, de una nueva sesión de la característica 308 puede incluir una solicitud para un tipo de conexión (por ejemplo, directa o no directa). La sesión maestra 306 invocará el selector de puente 302 con información como la conexión directa solicitada, el tamaño de los datos y/o la configuración de red. El selector de puente 302 usa la información para identificar u n puente de transporte preferido para usarse para la sesión con ca racterísticas especiales solicitada. En una implementación, el selector de puente 302 ejecuta en la capa de transporte 21 2 (Figu ra 2) e im plementa las reglas de selección de puente de transporte para seleccionar el puente que se prefiere. En una i mplementación , el objetivo de d iseño es enviar tanto tráfico de computadora a computadora di rectamente como sea posible , de esta manera evitando las demoras y los costos que se pueden asociar con un servidor de panel de distri bución. En esta im plementación , se analizan los siguientes factores para seleccionar el puente de transporte: la conexión directa solicitada , el ancho de banda soportado por el puente de transporte, el ta maño de los datos que serán enviados, y cualesquiera limitantes del puente de transporte, así como el puente asociado con un puente de transporte particu lar (por ejemplo, costos de relé) y/o las especificaciones de privacidad (por ejemplo , revelar o no revela r la dirección de I P). Cada puente de transporte calcula una puntuación con base en los factores mencionados. Proporciona su pu ntuación al selector de puente 302, el cual elige el puente de transporte q ue se prefiere con base en las puntuaciones. Antes de analizar las puntuaciones sin precisar, el selector de puente 302 toma las solicitudes especificadas en cuenta . Por ejemplo, si la característica 308 selecciona una conexión di recta , entonces el selector de puente 302 puede eliminar todos los puentes no directos del conjunto de puentes candidatos. Los puentes que no funcionarán en una configuración de red particular también se eliminan del conjunto de puentes candidatos. Por ejemplo, el puente de TCP activado por torsión no se considera si la configuración de red incluye dos NAT de herencia simétrica. La información obtenida de una prueba de servidor de eco durante la inicialización de la conversación se puede usar para decir cuáles son los puentes que no pueden funcionar. De esta manera, una implementación del selector de puente
302 emplea las siguientes normas de selección del puente dé transporte: 1. Elimina puentes que no pueden funcionar con base en los resultados de la prueba de eco. 2. Elimina puentes que no satisfacen la solicitud específica que invoca el que llama. 3. Usa el puente remanente con la puntuación más alta. 4. Si el puente anterior falla, usa el puente remanente con la segunda puntuación superior. 5. Si el puente anterior falla, usa el puente remanente con la siguiente puntuación superior, etc.. El selector de puente 302 notifica a la sesión maestra 306 sobre el puente preferido basado en las normas. Como respuesta, la sesión maestra 306 crea la sesión con características especiales 312 y crea un ejemplo concreto del puente preferido que será usado. Después de que la sesión con características especiales 31 2 se crea, la sesión con características especiales 312 será la sesión a través de la cual la característica 308 se com unica con otras características de computadora . La sesión con características especiales 312 maneja el envío de datos, así como las llamadas de control de la sesión, por ejem plo AcceptSession (Aceptar sesión ) y AcceptDirect (Aceptar conexión directa). La Figura 4 es un d iag rama de bloq ues que i lustra los canales vi rtuales 412 a través de u na conexión física 404 entre un primer dispositivo cliente 406 y un segundo dispositivo cl iente 408. La conexión 404 y los canales 402 se usan mediante los dispositivos cl iente 406 y 408 para acoplarse en una conversación de mensajería instantánea , en donde se comunican datos de diversos tipos . Aunque los dispositivos 406 y 408 se denominan "dispositivos cliente" debe entenderse que la conexión 404 entre los d ispositivos 406 y 408 no necesita establecerse a través de un servidor, puede ser una conexión d irecta o de computadora a computadora. Como se muestra , el canal de datos 0 se usa para comunicar mensajes de texto en la conversación ; el canal de datos 1 se usa para transferir archivos entre los dispositivos cliente 406 y 408; el canal de datos 2 se usa para transferir imágenes incrustadas entre los dispositivos 406 y 408; y el canal de datos 3 se usa para comunicar información del i ndicador de escritu ra q ue ind ica si un usuario está tecleando un mensaje en el momento en u no de los dispositivos 406 ó 408. El número de canal virtual corresponde a un identificador de sesión . Como se anal izó anteriormente, se anexa u n encabezado (véase el encabezado TLP en párrafos anteriores) a los datos que se comu nican sobre la conexión 404. El encabezado incl uye un "Sess ld" (Identificador de Sesión) que indica a q ué sesión y a qué canal (por ejemplo, si es característica o maestra) corresponden los datos. Al usar el identificador de sesión, se pueden transmitir de manera simultánea datos para múlti ples sesiones sobre la conexión 404. De esta manera , los canales 402 se consideran canales "vi rtuales". El identificador de sesión se extrae de los datos recibidos en los dispositivos cliente 406 y 408 y los datos se envían a la sesión apropiada asociada con el identificador de sesión . En otra i m plementación , se establece más de una conexión entre el dispositivo cl iente 406 y el dispositivo cliente 408, y cada una de las conexiones puede i nclu ir varios canales vi rtuales. Por ejem plo, cuando se crea inicial mente una conversación entre el dispositivo cliente 406 y el dispositivo cliente 408 , se creará una sesión maestra a través de una conexión a través de un servidor de panel de distribución . Posteriormente, puede establecerse una conexión com putadora a computadora entre los dispositivos cliente 406 y 408. En esta situación , las características en los dispositivos 406 y 408 pueden establecer canales virtuales sobre una conexión de panel de distribución o sobre la conexión de computadora a computadora. Operaciones Ejemplares que Emplean una Pila de Protocolo de Transporte La Figura 5 ilustra un flujo de operación 500 que tiene operaciones ejemplares para establecer una sesión con características especiales dentro de una sesión maestra y crear una conexión directa si es posible. El flujo de la operación 500 puede llevarse a cabo a través de un dispositivo cliente, como la computadora cliente (1) 102, que se muestra en la Figura 1, para acoplarse en una conversación de mensajería instantánea con otro dispositivo cliente. Una operación de establecimiento 502 establece una sesión maestra. La sesión maestra se establece cuando un usuario lanza inicialmente la aplicación del mensajero e intenta conectar a otro usuario. Establecer la sesión maestra involucra invitar a otro cliente para que entre a la conversación. Después de que otro cliente acepta la invitación, las sesiones maestras se crean tanto en el cliente que invita como en el cliente que acepta. La sesión maestra se establece a través de un puente de panel de distribución, a través de una conexión SB. La sesión maestra puede usarse posteriormente para establecer sesiones con características especiales. Si no se ha realizado una prueba del servidor de eco antes de la operación de establecimiento 502, la operación de establecimiento 502 puede realizar una prueba de servidor de eco, para detectar cortafuegos (NAT u otros dispositivos activos de red que pud ieran estar presentes. La prueba de servidor de eco i nvol ucra consiste en un mensaje de prueba a un servidor de eco (por ejemplo, el servidor de eco 1 1 2, de la Figura 1 ) y el servidor de eco responde con la información de dirección de red q ue corresponde a cualquier dispositivo activo de red q ue puede esta r config urado. El usuario puede desear comunicar datos característicos además de los datos de texto. Dichos datos característicos que i ncluyen , si n limitarse a esto, archivos, imágenes, iconos de emociones personalizados, imágenes persona les del usuario y similares . Además, la aplicación del mensajero puede crear una sesión con características especiales para transferir datos característicos. De esta manera, en otra operación de establecimiento 504, se establece una sesión con características especiales . La operación de establecimiento 504 i nvolucra la sesión maestra que crea una sesión con ca racterísticas especiales en un cliente q ue invita y envía u na i nvitación característica a u n cl iente que la recibe. Cuando la invitación característica llega al cliente que la reci be, la invitación puede ser aceptada o rechazada . Al conti nuar con la operación de establecimiento 504, si la invitación característica es aceptada , la sesión maestra en el cl iente que recibe crea una sesión con características especiales en el cliente que recibe. La sesión con características especiales en el cliente que recibe tiene el GUID que corresponde a la característica de invitación. La sesión maestra en el cliente que recibe también invoca una función del manipulador de invitación que se registra para el GUID. Si se acepta la invitación característica, la característica asociada almacena la sesión con características especiales, de manera que la sesión con características especiales se pueda usar para interactuar con la API de transporte para la sesión. Cuando la característica acepta, se envían mensajes de retorno de llamada tanto a la característica que invita como a la característica que acepta, haciéndole saber que la sesión está lista para usarse y enviar y recibir datos. Si se rechaza la invitación característica, la sesión maestra elimina la sesión con características especiales que fue creada. La operación de establecimiento 504 establece la sesión con características especiales a través de una conexión ya existente, como una conexión SB establecida. En particular, los datos de la sesión con características especiales se transmiten simultáneamente con los datos de la sesión maestra, como se muestra en la figura 4, para transportar la sesión con características especiales y la sesión maestra de manera simultánea. Ya que una conexión a través de un panel de distribución puede ser más lenta que una conexión de computadora a computadora, una operación de creación 506 intenta crear una conexión directa (computadora a computadora) sobre la cual se desarrolla la sesión con características especiales. Una modalidad ejemplar de la operación de creación 506 se ilustra en la Figura 6, como se describe a continuación. Si se puede crear una conexión directa, la sesión con características especiales se desarrollará usando la conexión directa. El flujo de operación 500 termina en una operación de término 508. La Figura 6 ilustra un flujo de operación que tiene operaciones ejemplares para crear una conexión directa. Se asume que un usuario indica a una característica en un cliente de inicio que el usuario desea cambiar la sesión con características especiales a una conexión directa en lugar del servidor de panel de distribución (SB). El usuario puede preferir la conexión directa ya que puede desear evitar los límites que se establecen en un límite de tamaño de mensaje o desea enviar más mensajes que los que permite un servidor SB, o tal vez desea mantener sus mensajes dentro de su cortafuegos corporativo. Cuando la característica recibe la indicación de moverse a una conexión directa, se ejecuta un operación de solicitud 602, en donde la característica invoca un método sobre la sesión secundaria de la característica. La operación de solicitud 602 solicita una conexión directa. La sesión secundaria pasa la solicitud de la sesión maestra. Como respuesta, la sesión maestra envía un mensaje "reINVITE" (Volver a invitar) a la característica de la computadora en un cliente que recibe solicitando una conexión directa. Al continuar con la operación de solicitud 602, el mensaje de volver a invitar contiene información que identifica todos los tipos de puente de transporte soportados por el cliente q ue hace la i nvitación . La sesión con características especiales en el cliente que recibe invoca la función del mani pulador de i nvitación asociada con la característica . El mensaje de volver a invitar puede ser aceptado de muchas manera. En una implementación , la característica puede tener establecida u na configuración de aceptación automática en el man ipulador de i nvitación de la característica. Una config uración de aceptación automática i ndica que todas las solicitudes para u na conexión d i recta se aceptarán de manera automática . En otra implementación, puede establecerse una configuración de rechazo automático en el manipu lador de invitaciones, lo que indica que la solicitud de conexión directa será rechazada de manera automática. Si no se establece ning una de las configuraciones de aceptación automática o rechazo automático, el transporte buscará un valor predeterm inado global . Si el valor predeterminado global se establece para aceptar o rechazar, se genera u na respuesta al mensaje "reI NVITE" (Volver a invitar). Si esto no se establece, la característica a la que se hace la i nvitación puede responder a ésta , por ejemplo el usuario puede hacer una em isión ya sea para aceptar o rechazar el mensaje "reI NVITE" (volver a invitar). Al asumir que el mensaje "reI NVITE" (Volver a invitar) ha sido aceptado, se identifica un puente de transporte preferido en una operación de selección 606.
La operación de selección 606 selecciona un puente de transporte que se prefiere usando los factores de preferencia como se analizó anteriormente con respecto a la Figura 3. Una operación de aceptación 608 envía un mensaje de aceptación al cliente que hace la invitación. El mensaje de aceptación contiene un puente preferido. La aceptación también incluye las direcciones IPv4 interna y externa del cliente que acepta, así como una dirección global IPv6, si el cliente cuenta con una. El transporte en el otro extremo intentará conectarse a la dirección de IP recibida y el puerto usando el puente preferido que se enumera en el mensaje de aceptación. Después de que el cliente que invita se conecta, el transporte envía un mensaje "RAK" (volver a responder) y el cliente que acepta responde con un "ACK" (responder). Si falla la conexión, el cliente que hace la invitación será interrumpida enviando el "RAK" (Volver a responder). En una implementación, la sesión maestra que hace la invitación entonces envía otro "reINVITE" (mensaje de volver a invitar), en esta ocasión excluye el tipo de puente de transporte que falló. El flujo de la operación termina en una operación final 610. La Figura 7 ilustra un flujo de operación 700 que tiene operaciones ejemplares para transportar objetos grandes binarios (BLOB) en un secuencia. En general, antes de que se transmita un último trozo de un BLOB sobre una nueva conexión directa, el transporte espera para recibir todos los reconocimientos asociados con los trozos de BLOB q ue se transmitieron anteriormente sobre una conexión no directa. De esta manera se produce la espera dé los reconoci mientos, sin importar q ué tipo de puente de transporte de conexión se esté usando (es decir, U DP, TCP, u otra) . U na operación de transmisión 702 comienza a transmitir un
BLOB usando una conexión que no es directa. U na operación de consu lta 704 determina si el ti po de puente de transporte se ha conectado a una conexión di recta. Si el tipo de puente de transporte no se ha conectado la operación de consu lta 704 ramifica el "NO" a una operación de transm isión 706. La operación de transm isión 706 transmite un trozo del BLOB a través de una conexión no di recta . Después de que se transmite el trozo en la operación de transmisión 706, la operación de consulta 704 nuevamente determina si el ti po de puente de transporte cam bió . Si el tipo de puente de transporte cambió, la operación de consulta 704 ramifica el "S I" a otra operación de consulta 708. La operación de consulta 708 determ ina si un identificador de BLOB actual es mayor que el últi mo valor para BLOB I D (identificador de BLOB). Si el identificador actual de BLOB no es mayor que el último identificador de BLOB, la operación de consulta 708 ramificará el "NO" hacia la operación de transm isión 706 , la cual transmite un trozo del BLOB actual . Si la operación de consu lta 708 determina que el identificador BLOB actual es mayor que el último identificador de BLOB, entonces la operación de consulta 708 ramifica el "SI" a otra operación de consulta 710. La operación de consulta 710 determina si el trozo actual que será transmitido es el último trozo en el BLOB. Si el trozo actual no es el último trozo en el BLOB, la operación de consulta 710 ramificará el "NO" hacia la operación de transmisión 710, la cual transmite el trozo actual. Sí la operación de consulta 710 determina que el trozo actual es el último trozo en el BLOB, la operación de consulta 710 ramifica hacia una operación de espera 712. La operación de espera 712 espera hasta que todos los reconocimientos se reciban para los BLOB que se transmitieron a través de la conexión original que no es directa. Sistema de Cómputo Ejemplar que puede usarse en un Entorno de Red para Mensajería Instantánea La Figura 8 y su análisis correspondiente se crearon para proveer una descripción general de un entorno de cómputo adecuado en el que se pueda implementar las disposiciones y los procedimientos descritos para transportar datos de cómputo. El entorno de cómputo 820 ejemplar sólo muestra un entorno de cómputo adecuado y no tiene la intención de sugerir limitación alguna del alcance de uso o funcionalidad del asunto descrito. Tampoco el entorno de cómputo 820 debe interpretarse con ninguna dependencia o requerimiento con relación a ninguna de las combinaciones o alguno de los componentes que se ilustran en el entorno de cómputo 820 ejemplar. Las disposiciones y procedimientos ejemplares para transportar datos de cóm puto entre los dispositivos i nterconectados operan con numerosos objetivos generales o entornos de sistemas de cóm puto de objetivos especiales así como config u raciones. Los ejemplos de sistemas de cómputo ya conocidos , entornos y/o config uraciones que pueden ser adecuados para usarse con el objeto descrito i ncl uyen , sin limitarse a esto, computadoras personales , computadoras de servidor, clientes delgados, cliente gruesos, dispositivos de mano o portátiles, sistemas de multiprocesadores, sistemas basados en microprocesadores , computadoras principales, entornos de cómputo distri buido así como un grupo de servidores además de redes i nternas corporativas y sim ilares, que incluyen cualq uiera de los sistemas o dispositivos mencionados. El entorno de cómputo 820 incluye u n dispositivo de cómputo de uso general en forma de una computadora 830. La computadora 830 puede incluir y/o fu ncionar como una implementación ejemplar de un sistema de transporte para los emiti r mensajes i nstantáneos descritos anteriormente con respecto a las Figuras de la 1 a la 7. Los componentes de la computadora 830 pueden incluir, pero no están limitados a uno o más procesadores o unidades de procesamiento 832, u na memoria de sistema 834 y una barra de distri bución 836 q ue acopla va rios componentes del sistema i ncluyendo la memoria del sistema 834 al procesador 832. La barra de d istribución 836 representa uno o más de algu nos de los diversos tipos de estructuras de barras de distribución, incluyendo una barra de distribución de memoria o un controlador de memoria, una barra de distribución periférica, un puerto de gráficos acelerado y una barra de distribución local o procesador usando cualquiera de una variedad de arquitecturas de barras de distribución. A manera de ejemplo, y no así como limitante, dichas arquitecturas incluyen Una barra de distribución de arquitectura estándar industrial (ISA), una barra de distribución de micro canal (VESA), una barra de distribución ISA mejorada (EISA), una barra de distribución local de asociación de estándares electrónicos (VESA), y una barra de distribución de interconexión de componentes periféricos (PCI) también conocido como barra de distribución Mezzanine. La computadora 830 típicamente incluye una variedad de medios que pueden ser leídos a través de una computadora, dichos medios pueden ser cualesquiera medios disponibles a los que puede tener acceso una computadora 830 e incluye memoria permanente y no permanente, memoria extraíble y no extraíble. La memoria del sistema incluye medios que pueden ser leídos a través de una computadora en forma de memoria no permanente, así como una memoria de acceso aleatorio "RAM" 840, y/o una memoria permanente, como una memoria de sólo lectura (ROM) 838. Un sistema básico de entradas/salidas (BIOS) 842, que contiene las rutinas básicas que ayudan a comunicar información entre elementos dentro de la computadora 830, como en el arranque, se almacenan en ROM 838. La RAM 840 típicamente contiene datos y/o módulos de programas a los que se puede tener acceso de inmediato y/o pueden funcionar en el momento a través del procesador 832. La computadora 830 además puede incluir otros medios de almacenamiento de cómputo extraíbles/ no extraíbles, permanentes/ no permanentes. Únicamente a manera de ejemplo, la Figura 8 ilustra una unidad de disco duro 844 para leer y escribir en un medio magnético no removible, permanente (no se muestra y típicamente se denomina "unidad de disco duro"), una unidad de disco magnético 846 para leer y escribir en un disco magnético extraíble, y permanente 848 (por ejemplo, un "disco flexible"), y una unidad de disco óptico 850 para leer y escribir en un disco óptico permanente, extraíble 852 como CD-ROM, DVD-ROM u otros medios ópticos. La unidad de disco duro 844, la unidad de disco magnético 846 y la unidad de disco óptico 850 cada uno se conecta a la barra de distribución 836 a través de una o más interfaces 854. Las unidades y sus medios que pueden ser leídos a través de una computadora asociada proporcionan almacenamiento permanente de las instrucciones que pueden ser leídas a través de la computadora, estructuras de datos, módulos de programa y otros datos para la computadora 830. Aunque el entorno ejemplar descrito en la presente emplea un disco duro, un disco magnético extraíble 848 y un disco óptico extraíble 852, debe ser evidente para los expertos en la técnica que otros tipos de medios flexibles por computadora que puedan almacenar datos a los que se pueda tener acceso a través de una computadora, como casetes magnéticos, tarjetas de memoria instantánea, discos de video digital, memorias de acceso aleatorio (RAM), memorias de sólo lectura (ROM) y similares, también pueden usarse en el entorno operativo de ejemplo. Diversos módulos de programa pueden almacenarse en el disco duro, en el disco magnético 848, en el disco óptico 852, en ROM 838 o RAM 540, incluyendo, a manera de ejemplo y sin limitarse a esto, un sistema operativo 858, uno o más programas de aplicación 860, otros módulos de programa 862 y datos de programa 864. Los programas de aplicación 860 pueden incluir una aplicación de mensajería instantánea, usando características y una pila de protocolo de transporte, como se analizó en la presente. Un usuario puede introducir comandos e información en la computadora 860 a través de dispositivos de entrada opcional, como un teclado 866 y un dispositivo puntero 868 (como un "ratón"). Otros dispositivos de entrada (no se muestra) pueden incluir un micrófono, un control de palanca de mando, una almohadilla de juego, una antena parabólica, un puerto en serie, explorador y similares. Estos y otros dispositivos de entrada se conectan a la unidad de procesamiento 832 a través de una interfaz de entrada 870 del usuario que se acopla a la barra de distribución 836, pero puede conectarse mediante otras estructuras de interfaz y de red de distribución, como un puerto paralelo, un puerto de juego o u na barra de distribución en serie un iversal (USB). Un monitor 872 opcional u otro ti po de dispositivo de visualización se conecta a la barra de distribución 836 a través de una interfaz, como u n adaptador de video 874. Además del monitor, las computadoras personales típicamente incluyen otros dispositivos periféricos de sal ida (no se muestran ), como altavoces e impresoras, las cuales se pueden conectar a través de la i nterfaz periférica de salida 875. La computadora 830 puede funcionar en u n entorno conectado en red usando conexiones lógicas a una o más computadoras remotas, como una computadora remota 882. La computadora remota 882 puede incl uir muchos o algunos elementos y características descritos en la presente con relación a la computadora 830. Las conexiones lógicas que se muestran en la Figura 8 son una red de área local (LAN) 877 y una red de área extensa (WAN ) general 879. La LAN 877 y/o la WAN 879 pueden ser redes cableadas, redes i nalámbricas o cua lqu ier combinación de redes cableadas o inalámbricas . Tales entornos de red son com unes en oficinas, redes de cómputo de empresas, redes internas e I nternet. Cuando se usa en un entorno de red LAN , la computadora 830 se conecta a la LAN 877 a través de u na i nterfaz de red o un adaptador 886. Cuando se usa en un entorno de red WAN , la computadora 830 típicamente incluye u n módem 878 u otros medios para establecer comunicaciones sobre la WAN 879. El módem 878, el cual puede ser interno o externo, puede conectarse a la barra de distribución del sistema 836 a través de la interfaz de entrada de usuario 870 u otro mecanismo adecuado. Como se ilustra en la Figura 8, una implementación específica de una WAN a través de Internet. La computadora 830, típicamente incluye un módem 878 u otro medio para establecer comunicaciones en Internet 870. El módem 878 se conecta a la barra de distribución 836 a través de la interfaz 870. En un entorno conectado en red, los módulos de programa que se ilustran con relación a la computadora personal 830, o porciones de ésta, se pueden almacenar en un dispositivo de almacenamiento de memoria remota. A manera de ejemplo, y no como limitante, la Figura 8 ilustra programas de aplicación remota 889 como residentes en un dispositivo de memoria de la computadora remota 882. Será evidente que las conexiones en red que se muestran o describen son ejemplares y pueden usarse otros medios para establecer un enlace de comunicación entre las computadoras. Conclusión Aunque las disposiciones y procedimientos descritos se han descrito con un lenguaje específico respecto a las características estructuras y/o operaciones metodológicas, debe comprenderse que el objeto definido en las reivindicaciones anexas no necesariamente está limitado a las características u operaciones específicas descritas. En su lugar, las características y operaciones específicas se describen como formas preferidas de implementar el objeto que se reclama en la presente.
Claims (22)
1. - Un medio que puede ser leído a través de una computadora que tiene almacenado en éste instrucciones que pueden ser ejecutadas mediante una computadora para desarrollar un método que comprende: crear una sesión maestra sobre una primera conexión a través de un servidor; y crear un canal virtual sobre la conexión, el canal virtual puede funcionar para comunicar una sesión con características especiales.
2. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 1, caracterizado además porque el método también comprende: establecer una conexión directa que evita al servidor; y conmutar la comunicación de la sesión con características especiales a la conexión directa.
3. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 2, caracterizado además porque el establecimiento de una conexión directa comprende elegir un puente de transporte con base en una configuración de red.
4. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 1, caracterizado además porque la creación de un canal virtual comprende la transmisión de manera simultánea de la sesión con características especiales y la sesión maestra sobre la primera conexión.
5. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 4, caracterizado además porque la transmisión de manera simultánea comprende anexar un identificador de sesión con características especiales a los datos de la sesión con características especiales de un identificador de la sesión maestra a los datos de la sesión maestra.
6. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 1, caracterizado además porque la creación de una sesión maestra comprende inicializar la sesión maestra usando un protocolo de capa de sesión (SIP), en donde el SIP usa una dirección de correo electrónico para inicializar la sesión maestra.
7. - Un sistema para comunicación en red, el sistema comprende: una pluralidad de puentes de transporte, cada puente de transporte corresponde a una configuración de dispositivo activo de red; y un módulo de conmutación que puede funcionar para elegir uno de los puentes de transporte para formar una conexión entre dos dispositivos de cómputo con base en la configuración del dispositivo activo de red. 8.- El sistema tal y como se describe en la reivindicación 7, caracterizado además porque la configuración del dispositivo activo de red comprende al menos un cortafuegos entre el primer dispositivo de cómputo y el segundo dispositivo de cómputo. 9.- El sistema tal y como se describe en la reivindicación 7, caracterizado además porque la configuración del dispositivo activo de red comprende al menos un traductor de dirección de red entre el primer dispositivo de cómputo y el segundo dispositivo de cómputo. 10.- El sistema tal y como se describe en la reivindicación 7, caracterizado además porque la pluralidad de puentes comprende al menos uno de: un puente de protocolo de datagrama del usuario fiable; un puente de protocolo de control de transmisión/ protocolo de Internet (TCP/IP); y un puente de panel de distribución. 11. - El sistema tal y como se describe en la reivindicación 7, caracterizado además porque comprende; una característica y una sesión maestra que puede funcionar para crear una sesión con características especiales asociada con la característica. 12. - Un sistema tal y como se describe en la reivindicación 11, caracterizado además porque comprende una capa de transporte que puede funcionar para transmitir de manera simultánea datos característicos y datos de sesión maestra a través y comunicar los datos que se envían de manera simultánea a través del puente de transporte seleccionado. 13. - Una pila de protocolo de transporte para que sea usada por una aplicación de mensajería instantánea, la pila de protocolo de transporte comprende: una capa de puente que comprende una pluralidad de módulos de puente, cada módulo de puente corresponde a una configuración de dispositivo activo de red; y un módulo de conmutación que puede funcionar para seleccionar de manera dinámica uno de los módulos de puente con base en la configuración de dispositivo activo de la red. 14. - Una pila de protocolo de transporte tal y como se describe en la reivindicación 13, caracterizado además porque comprende un módulo de detección que puede funcionar para detectar la configuración del dispositivo activo de la red. 15. - Una pila de protocolo de transporte tal y como se describe en la reivindicación 13, caracterizado además porque el módulo de detección comprende un servidor de eco. 16. - Una pila de protocolo de transporte tal y como se describe en la reivindicación 13, caracterizado además porque comprende una capa de transporte que puede funcionar para transmitir de manera simultánea datos desde una pluralidad de sesiones a través del módulo de puente seleccionado. 17. - Una pila de protocolo de transporte tal y como se describe en la reivindicación 13, caracterizado además porque comprende una sesión maestra que puede funcionar para crear una o más sesiones con características especiales que corresponden a las características de la aplicación de mensajería instantánea. 1
8. - Un medio que puede ser leído a través de una computadora que tiene almacenado en ésta instrucciones que pueden ser ejecutadas a través de una computadora para realizar un método que comprende: establecer una sesión de mensajería instantánea entre una primera computadora cliente y una segunda computadora cliente a través de un servidor de panel de distribución; establecer de manera automática una conexión de computadora a computadora; transmitir los primeros datos asociados con la sesión de mensajería instantánea a través del servidor del panel de distribución; y transmitir los segundos datos asociados con la sesión de mensajería instantánea a través de la conexión de computadora a computadora. 1
9. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 18, el método además comprende: determinar una configuración de dispositivo activo de red asociado con la primera computadora cliente y la segunda computadora cliente; y seleccionar un puente de computadora a computadora que corresponde a la configuración de red activa. 20. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 18, caracterizado además porque el puente de computadora a computadora comprende un puente de RUDP. 21. - Un medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 19, caracterizado además porque el puente de computadora a computadora comprende un puente de TCP/IP. 22.- El medio que puede ser leído a través de una computadora tal y como se describe en la reivindicación 18, caracterizado además porque comprende: transmitir una primera porción de un BLOB de los primeros datos a través del servidor del panel de distribución; y transmitir una porción posterior del blob de los primeros datos a través de la conexión de computadora a computadora.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/611,575 US7363378B2 (en) | 2003-07-01 | 2003-07-01 | Transport system for instant messaging |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA04006451A true MXPA04006451A (es) | 2005-08-19 |
Family
ID=33435436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA04006451A MXPA04006451A (es) | 2003-07-01 | 2004-06-30 | Sistema de transporte para mensajeria instantanea. |
Country Status (8)
Country | Link |
---|---|
US (3) | US7363378B2 (es) |
EP (3) | EP2259513A1 (es) |
JP (2) | JP4634077B2 (es) |
KR (1) | KR101150110B1 (es) |
CN (1) | CN1578278B (es) |
BR (1) | BRPI0402437A (es) |
CA (2) | CA2782768C (es) |
MX (1) | MXPA04006451A (es) |
Families Citing this family (78)
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 |
US7672255B2 (en) | 2004-04-05 | 2010-03-02 | Oomble, Inc. | Mobile instant messaging conferencing method and system |
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 |
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 |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
WO2006012610A2 (en) * | 2004-07-23 | 2006-02-02 | Citrix Systems, Inc. | Systems and methods for optimizing communications between network nodes |
AU2005266945A1 (en) * | 2004-07-23 | 2006-02-02 | Citrix Systems, Inc. | A method and systems for securing remote access to private networks |
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 |
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 |
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 |
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 (ko) * | 2005-03-08 | 2007-01-10 | 삼성전자주식회사 | 네트워크에서의 미디어 전송 장치 및 방법 |
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 |
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 |
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 |
US8676899B2 (en) * | 2006-01-26 | 2014-03-18 | International Business Machines Corporation | Offline IM chat to avoid server connections |
CN100518114C (zh) * | 2006-05-29 | 2009-07-22 | 腾讯科技(深圳)有限公司 | 一种基于点对点的数据传输方法及系统 |
DE102006030613A1 (de) * | 2006-07-03 | 2008-01-10 | Combots Product Gmbh & Co. Kg | Verfahren und Kommunikationssystem zur Steuerung des Datenflusses über Netzwerkknoten |
US20090132712A1 (en) * | 2007-11-19 | 2009-05-21 | General Instrument Corporation | Method and system for session mobility between end user communication devices |
JP4703576B2 (ja) | 2007-01-15 | 2011-06-15 | 株式会社東芝 | コネクションを維持する装置、方法およびプログラム |
US7715386B2 (en) * | 2007-03-15 | 2010-05-11 | Microsoft Corporation | Reducing network traffic to teredo server |
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 |
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 (zh) * | 2007-06-19 | 2011-04-06 | 阿里巴巴集团控股有限公司 | 一种即时信息存储方法和系统 |
US8631155B2 (en) * | 2007-06-29 | 2014-01-14 | Microsoft Corporation | Network address translation traversals for peer-to-peer networks |
TWI407727B (zh) * | 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 |
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 |
US10826718B2 (en) | 2009-05-19 | 2020-11-03 | Xerox Corporation | System and method for coupling a digital appliance to a monitoring service |
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 (zh) * | 2009-08-06 | 2010-01-20 | 中兴通讯股份有限公司 | 文件传输方法及客户端 |
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 |
US9838223B2 (en) | 2010-05-11 | 2017-12-05 | Chepro Corporation | 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 (zh) * | 2013-09-10 | 2016-06-08 | 小米科技有限责任公司 | 一种消息展示的方法、装置及终端设备 |
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 |
US20210092103A1 (en) * | 2018-10-02 | 2021-03-25 | Arista Networks, Inc. | In-line encryption of network data |
US11240318B1 (en) * | 2021-05-11 | 2022-02-01 | Integrity Security Services Llc | Systems and methods for virtual multiplexed connections |
CN114679354A (zh) * | 2022-04-06 | 2022-06-28 | 北京小米移动软件有限公司 | 网关设备、桥接方法及装置、存储介质 |
Family Cites Families (112)
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 (ja) * | 1990-07-26 | 1992-03-17 | Nec Corp | 前置通信処理装置 |
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 (ja) | 1994-05-19 | 1995-11-28 | Fujitsu Ltd | ディレクトリシステム |
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 |
US6003088A (en) * | 1997-08-29 | 1999-12-14 | International Business Machines Corporation | Blocking IP datagrams in a multi-path channel point-to-point environment |
US5987515A (en) * | 1997-08-29 | 1999-11-16 | International Business Machines Corporation | Internet protocol assists using multi-path channel protocol |
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 |
JP2002525763A (ja) * | 1998-09-23 | 2002-08-13 | シーメンス アクチエンゲゼルシヤフト | アクションに基づいて2つの状態の間の状態遷移が行われる、状態を有するシステムに対するアクションのシーケンスをもとめるための方法及び装置 |
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 |
MXPA01010798A (es) | 1999-04-26 | 2003-09-04 | Nokia Mobile Phones Ltd | Terminal de radio para examinar "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 |
ATE357025T1 (de) * | 1999-10-18 | 2007-04-15 | Eighting Kk | Informationsverteilungssystem, -verfahren und durch rechner lesbares mediumspeicherverteilungssystem |
DE69935339T2 (de) * | 1999-12-02 | 2007-11-15 | Sony Deutschland Gmbh | Protokoll für sofortige Nachrichtenübermittlung |
JP2001175550A (ja) | 1999-12-07 | 2001-06-29 | Kizna.Com Inc | クライアントサーバシステム及びクライアントサーバシステムのデータ伝送方法並びにそのプログラムを記録した媒体 |
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 |
US20030014477A1 (en) | 2000-03-22 | 2003-01-16 | Oppenheimer David Mig | Integrated system and method of providing online access to files |
US6941344B2 (en) * | 2000-04-07 | 2005-09-06 | Andrew J. Prell | Method for managing the simultaneous utilization of diverse real-time collaborative software applications |
JP3855595B2 (ja) * | 2000-04-25 | 2006-12-13 | 株式会社日立製作所 | 通信システム、通信方法及び通信装置 |
WO2001093503A2 (en) * | 2000-05-31 | 2001-12-06 | Snip, Llc | Method and system for instant messaging |
US6453294B1 (en) * | 2000-05-31 | 2002-09-17 | International Business Machines Corporation | Dynamic destination-determined multimedia avatars for interactive on-line communications |
US6807178B1 (en) * | 2000-05-31 | 2004-10-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Session dispatcher at a wireless multiplexer interface |
WO2002003217A1 (en) * | 2000-06-30 | 2002-01-10 | Net2Phone | System, method, and computer program product for resolving addressing in a network including a network address translator |
ATE502477T1 (de) | 2000-07-25 | 2011-04-15 | America Online Inc | Videonachrichtenübermittlung |
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 (ko) | 2000-12-16 | 2003-03-29 | 삼성전자주식회사 | 이동통신 단말기의 감정 아이콘 입력방법 |
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 |
CA2761983C (en) * | 2001-02-20 | 2012-11-27 | Eyeball Networks Inc. | Method and apparatus to permit data transmission to traverse 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 (ja) * | 2001-04-27 | 2002-11-15 | Fujitsu Ltd | 障害時/増設時におけるスパニングツリー制御装置及び方法 |
US7171415B2 (en) | 2001-05-04 | 2007-01-30 | Sun Microsystems, Inc. | Distributed information discovery through searching selected registered information providers |
DE60224455D1 (de) | 2001-05-11 | 2008-02-14 | Nokia Corp | Mobiler "Instant Messaging"- und Präsenzdienst |
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 (no) | 2001-10-19 | 2003-10-06 | Dmates As | Rik kommunikasjon over internett |
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 (ja) * | 2001-11-29 | 2003-06-13 | Minolta Co Ltd | メッセージ処理システムおよびメッセージ処理装置 |
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 |
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 |
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 |
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 |
EP1556956B1 (en) * | 2002-06-26 | 2018-03-07 | Yahoo Holdings, Inc. | 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 (it) | 2002-08-14 | 2004-02-15 | Telecom Italia Lab Spa | Procedimento e sistema per la trasmissione di messaggi su |
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 |
US7774410B2 (en) | 2002-11-18 | 2010-08-10 | Aol 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 |
WO2005017660A2 (en) | 2003-07-01 | 2005-02-24 | Apple Computer, Inc. | Peer-to-peer content sharing |
US7539727B2 (en) | 2003-07-01 | 2009-05-26 | Microsoft Corporation | Instant messaging object store |
JP4046654B2 (ja) | 2003-07-04 | 2008-02-13 | 日本電信電話株式会社 | P2p通信システム |
US20050027839A1 (en) | 2003-07-31 | 2005-02-03 | International Business Machiness Corporation | Method, system and program product for dynamic transmission in a messaging session |
AU2003903994A0 (en) | 2003-07-31 | 2003-08-14 | Canon Kabushiki Kaisha | Collaborative editing with automatic layout |
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 |
US7437364B1 (en) | 2004-06-30 | 2008-10-14 | Google Inc. | System and method of accessing a document efficiently through multi-tier web caching |
TWI262678B (en) | 2004-06-30 | 2006-09-21 | Inst Information Industry | Peer-to-peer communication system, method and machine-readable storage medium |
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 |
-
2003
- 2003-07-01 US US10/611,575 patent/US7363378B2/en not_active Expired - Fee Related
-
2004
- 2004-06-01 CA CA2782768A patent/CA2782768C/en not_active Expired - Fee Related
- 2004-06-01 CA CA2470013A patent/CA2470013C/en not_active Expired - Fee Related
- 2004-06-08 EP EP10011292A patent/EP2259513A1/en not_active Withdrawn
- 2004-06-08 EP EP04102579.2A patent/EP1494410B1/en not_active Expired - Lifetime
- 2004-06-08 EP EP10011293A patent/EP2259514A1/en not_active Withdrawn
- 2004-06-25 BR BR0402437-0A patent/BRPI0402437A/pt not_active IP Right Cessation
- 2004-06-30 MX MXPA04006451A patent/MXPA04006451A/es active IP Right Grant
- 2004-06-30 CN CN200410063277.5A patent/CN1578278B/zh not_active Expired - Fee Related
- 2004-07-01 JP JP2004195945A patent/JP4634077B2/ja not_active Expired - Fee Related
- 2004-07-01 KR KR1020040051224A patent/KR101150110B1/ko active IP Right Grant
-
2008
- 2008-04-21 US US12/106,900 patent/US8185635B2/en not_active Expired - Fee Related
-
2010
- 2010-09-13 JP JP2010204455A patent/JP2011054178A/ja active Pending
-
2012
- 2012-05-18 US US13/475,742 patent/US20120233339A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080209051A1 (en) | 2008-08-28 |
US20050005014A1 (en) | 2005-01-06 |
US20120233339A1 (en) | 2012-09-13 |
EP1494410B1 (en) | 2013-08-14 |
CA2470013C (en) | 2012-09-11 |
KR101150110B1 (ko) | 2012-06-08 |
BRPI0402437A (pt) | 2005-05-24 |
EP1494410A3 (en) | 2005-03-09 |
CN1578278B (zh) | 2019-07-16 |
CA2782768C (en) | 2014-12-02 |
US8185635B2 (en) | 2012-05-22 |
CA2782768A1 (en) | 2005-01-01 |
EP2259514A1 (en) | 2010-12-08 |
US7363378B2 (en) | 2008-04-22 |
KR20050004079A (ko) | 2005-01-12 |
JP2005027318A (ja) | 2005-01-27 |
JP4634077B2 (ja) | 2011-02-16 |
CA2470013A1 (en) | 2005-01-01 |
JP2011054178A (ja) | 2011-03-17 |
CN1578278A (zh) | 2005-02-09 |
EP1494410A2 (en) | 2005-01-05 |
EP2259513A1 (en) | 2010-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA04006451A (es) | Sistema de transporte para mensajeria instantanea. | |
US7860921B2 (en) | Uniform network access | |
US20120042027A1 (en) | NAT Traversal for Media Conferencing | |
US20040190549A1 (en) | Allowing IPv4 clients to communicate over an IPv6 network when behind a network address translator with reduced server workload | |
US6879593B1 (en) | Connections of nodes on different networks | |
KR20020042805A (ko) | 통신 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치 | |
EP1504360A1 (en) | Instant messaging architecture and system for interoperability and presence management | |
US20060161680A1 (en) | Communications Interchange System | |
US7730192B2 (en) | Managing parallel requests in a communications environment supporting serial and parallel request handlers | |
US8601094B2 (en) | Method and computer program product utilizing multiple UDP data packets to transfer a quantity of data otherwise in excess of a single UDP packet | |
US7680112B2 (en) | Peer-to-peer communication system | |
MXPA06001530A (es) | Sugerencias de enrutamiento. | |
WO2000070478A1 (en) | Uniform network access | |
US6760771B1 (en) | Method and system for optimally dispatching internetwork traffic | |
Christ | Tcp/ip enabled legos | |
Pauly et al. | TAPS Working Group B. Trammell Internet-Draft ETH Zurich Intended status: Informational C. Perkins Expires: March 12, 2018 University of Glasgow | |
CN112448966A (zh) | 基于tcp/ip的网络聊天程序 | |
WO2001099361A1 (en) | Method and system for selecting transmission means | |
Jia et al. | Interprocess Communication Using Message Passing | |
Pouffary | RFC1859: ISO Transport Class 2 Non-use of Explicit Flow Control over TCP RFC1006 extension |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |