KR101150110B1 - 인스턴트 메시징을 위한 트랜스포트 시스템 - Google Patents

인스턴트 메시징을 위한 트랜스포트 시스템 Download PDF

Info

Publication number
KR101150110B1
KR101150110B1 KR1020040051224A KR20040051224A KR101150110B1 KR 101150110 B1 KR101150110 B1 KR 101150110B1 KR 1020040051224 A KR1020040051224 A KR 1020040051224A KR 20040051224 A KR20040051224 A KR 20040051224A KR 101150110 B1 KR101150110 B1 KR 101150110B1
Authority
KR
South Korea
Prior art keywords
peer
feature
session
connection
delete delete
Prior art date
Application number
KR1020040051224A
Other languages
English (en)
Other versions
KR20050004079A (ko
Inventor
홈스존
밀러데이비드마이클
본코치월터
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050004079A publication Critical patent/KR20050004079A/ko
Application granted granted Critical
Publication of KR101150110B1 publication Critical patent/KR101150110B1/ko

Links

Images

Classifications

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

Landscapes

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

Abstract

예시적인 방법은 제1 접속을 통한 마스터 세션을 서버를 통해 생성하고, 상기 접속을 통해 가상 채널을 생성하는 것을 포함하고, 상기 가상 채널은 피쳐(feature) 세션을 통신하도록 동작가능하다. 방법은 서버를 바이패스하는 직접 접속을 확립하고, 피쳐 세션의 통신을 직접 접속으로 스위칭하는 것을 포함한다.
네트워크 통신을 위한 시스템은 각각이 액티브 네트워크 디바이스 구성에 대응하는 복수의 트랜스포트 브리지, 및 액티브 네트워크 디바이스 구성에 기초하여 두 컴퓨팅 디바이스간의 접속을 형성하도록 트랜스포트 브리지들 중 하나를 선택하도록 동작가능한 스위칭 모듈을 포함한다.
Figure R1020040051224
인스턴트 메시징 어플리케이션, 트랜스포트 시스템, 직접 접속, 피어-투-피어, 스위치보드 서버

Description

인스턴트 메시징을 위한 트랜스포트 시스템{TRANSPORT SYSTEM FOR INSTANT MESSAGING}
도 1은 예시적인 인스턴트 메시징 시스템의 컴포넌트를 도시한 블록 다이어그램.
도 2는 인스턴트 메시징 시나리오에서 데이터의 통신을 관리하기 위한 레이어 들의 예를 포함하는 트랜스포트 시스템을 예시한 도면.
도 3은 바람직한 트랜스포트 브리지를 선택하도록 동작가능한 브리지 선택 모듈의 예를 예시하는 블록 다이어그램.
도 4는 두 피어 디바이스들간 물리적 접속을 통한 가상 채널을 예시한 블록 다이어그램.
도 5는 마스터 세션내에서 피쳐 세션을 확립하고 가능하다면 직접 접속을 생성하기 위한 동작의 예를 포함하는 동작 플로우를 예시한 도면.
도 6은 바람직한 트랜스포트 브리지를 결정하고 바람직한 트랜스포트 브리지를 이용하여 직접 접속을 생성하기 위한 동작의 예를 가지는 동작 플로우를 예시한 도면.
도 7은 이진 대형 오브젝트(BLOB, Binary large object)를 순차적인 순서로 트랜스포팅하기 위한 동작의 예를 가지는 동작 플로우를 예시한 도면.
도 8은 바람직한 트랜스포트 브리지를 명백하게 선택하고 인스턴트 메시징 시나리오에서 피쳐 데이터를 통신하는 적합한 오퍼레이팅 환경을 제공하는 시스템 예를 예시한 도면.
<도면의 주요 부호에 대한 간단한 설명>
102, 104 : 클라이언트 컴퓨터
106 : 네트워크
108, 110 : 액티브 네트워크 디바이스
112 : 에코 서버
114 : 스위치보드 서버
116 : 인스턴트 메시징 플랫폼
118 : 피쳐
122 : 트랜스포트 프로토콜 스택
<관련 출원>
본 출원은 David Michael Miller, John Homes, Walter vonKoch의, 제목이 "Inststant Messaging Object Store"인, 본 출원의 출원인에게 양도되고 동시에 출원된, 동시 계류중인 미국 특허 출원 번호 제---호, 참조 번호 MS1-1527과 관련된 것이고, 거기에 개시된 모든 사항들은 본 명세서에 참조로 포함된다.
기재된 본 발명은 컴퓨터 통신에 관한 것이다. 특히, 본 발명은 인스턴트 메시징을 위한 트랜스포트 시스템에 관한 것이다.
인스턴트 메시징은 컴퓨터 디바이스의 사용자들에게 매우 인기있는 통신 툴이 되고 있다. 인스턴트 메시징(IM) 어플리케이션(예를 들면, 워싱톤주 레드먼드시 소재의 마이크로소프트사의 윈도우즈 메신저 시스템, 야후 메신저, AOL 인스턴트 메신저(AIM), 등)은 사용자가 사용자의 개인적인 지인 리스트에서 식별되는 하나 이상의 지인들과 실시간으로 대화할 수 있도록 한다. 통상적으로, 개인적인 리스트는 서버에 저장되고, 대화는 인바운드 메시지를 적절한 수신자에게 가게 하는 스위치보드 또는 릴레이 서버를 통해 확립된다.
스위치보드를 통해 실시간 메시지를 라우팅하는 것은 메시지가 스위치보드를 통과하지 않고 대화의 참여자에게 바로 전달되는 피어-투-피어 구성의 인스턴트 메시징보다 더 느리고 더 많은 비용(서버 자원의 측면에서)이 든다. 그러므로, 스위치보드 서버를 이용하여 대화가 확립된 후, 전형적인 인스턴트 메시징 시스템은 대화를 피어-투-피어 구성으로 변환하려고 시도할 수 있다. 피어-투-피어로 변환하는 것은 다수의 방식으로 수행될 수 있고, 통상은 인터넷 프로토콜(IP) 어드레스 및/또는 포트 번호에 의해 피어를 식별하여 메시지가 피어에 곧바로 전송되는 것을 포함한다.
그러나, 피어-투-피어 대화를 생성하는 것은 방화벽이나 네트워크 어드레스 변환기(NAT)와 같은 액티브 네트워크 디바이스를 포함하는 상황에서는 불가능하지 않더라도 어려울 수 있다. 그러한 디바이스들은 시스템 보안에 이용되지만, 통상 그러한 디바이스 뒤에서 컴퓨터로의 직접적인 액세스를 방지하도록 설계된다. 예를 들면, NAT는 그 자신의 IP 어드레스를 가지고 있고, NAT 뒤의 컴퓨터들은 그 자신의 개인적(private)인 IP 어드레스들을 가지고 있는데, 즉 NAT 외부의 다른 컴퓨터들은 NAT 뒤의 컴퓨터의 IP 어드레스를 결정할 수 없다. NAT에 의해 수신된 메시지의 IP 어드레스는 NAT 뒤의 수신 컴퓨터의 IP 어드레스로 변환된다. 다양한 기술들이 액티브 네트워크 디바이스를 터널링하거나 트래버싱하도록 적용되어 직접 접속을 형성한다.
인스턴트 메시징 시스템이 개선됨에 따라, 이들은 텍스트 이외에도 대화를 더 풍부한 경험이 되게 하는 더 많은 피쳐(feature)들을 제공한다. 예를 들면, 인스턴트 메시징 시스템은 사용자가 오디오, 비디오 또는 사용자와 고유하게 연관되는 커스텀 사용자 타일(custom user tile)(또는 표시 화상(Display Picture)으로도 지칭됨)을 송신할 수 있도록 한다. 그러한 피쳐들은 통상 대화에 포함하는 텍스트보다, 송신 대역폭과 같은 더 많은 자원을 필요로 한다. 그러므로, 피어-투-피어는 통상 스위치보드 서버를 통한 접속보다 더 높은 성능을 제공하므로, 인스턴트 메시징 대화를 수행할 때, 피어-투-피어 접속이 바람직하다.
여기에 기재되고 청구되는 구현들은 상기 설명된 문제 및 다른 문제들을 해결한다.
예시적인 방법은 제1 접속을 통한 마스터 세션을 서버를 통해 생성하고, 상기 접속을 통해 가상 채널을 생성하는 것을 포함하고, 상기 가상 채널은 피쳐 세션 을 통신하도록 동작가능하다. 이 방법은 서버를 바이패스하는 직접 접속을 확립하고, 피쳐 세션의 통신을 직접 접속으로 스위칭하는 것을 포함한다.
네트워크 통신을 위한 시스템은 각각이 액티브 네트워크 디바이스 구성에 대응하는 복수의 트랜스포트 브리지, 및 액티브 네트워크 디바이스 구성에 기초하여 두 컴퓨팅 디바이스간의 접속을 형성하도록 트랜스포트 브리지들 중 하나를 선택하도록 동작가능한 스위칭 모듈을 포함한다.
유사한 참조 부호는 유사한 구성요소를 지칭하는 도면들을 참조하여, 적합한 컴퓨팅 환경에서 구현되는 다양한 방법들이 예시된다. 반드시 요구되지는 않지만, 다양한 방법 예들은 퍼스널 컴퓨터 및/또는 다른 컴퓨팅 디바이스에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령어의 일반적인 컨텍스트로 기재된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다.
더구나, 본 기술분야의 숙련자라면, 다양한 예적인 방법들이 핸드헬드 디바이스, 멀티-프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 소비자 전자장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 잘 알고 있을 것이다. 다양한 방법 예들은 통신 네트워크를 통해 링크된 원격 처리 디바이스에 의해 태스크들이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 양쪽에 배치될 수 있다.
본 명세서의 일부 도면에서, 다양한 알고리즘 액트는 개별적인 "블록들"로 요약된다. 그러한 블록들은 프로세스가 진행됨에 따라 수행되거나 실행되는 특정 액션 또는 결정을 기술한다. 마이크로 컨트롤러(또는 등가물)가 채용되는 경우, 본 명세서에 제공되는 플로우 차트는 원하는 제어를 실효시키는 그러한 마이크로 컨트롤러(또는 등가물)에 의해 이용되는 "제어 프로그램" 또는 소프트웨어/펌웨어에 대한 기초를 제공한다. 그럼으로써, 프로세서에 의해 실행될 때, 프로세스들은 블록들로서 예시된 다양한 액트들을 수행하는 메모리에 저장가능한 기계 판독가능한 명령으로서 구현된다.
본 기술분야의 숙련자는 본 명세서에 제공된 플로우 차트 및 다른 설명에 기초하여 그러한 제어 프로그램을 용이하게 기록할 수 있다. 본 명세서에 기재된 발명은 프로그래밍되었을 때 이하에 설명된 액트들을 수행하는 디바이스 및/또는 시스템뿐만 아니라 마이크로 컨트롤러를 프로그래밍하도록 구성된 소프트웨어, 및 추가적으로 그러한 소프트웨어가 실시되는 임의의 및 모든 컴퓨터 판독가능한 매체를 포함한다는 것은 자명하다. 그러한 컴퓨터 판독가능한 매체의 예들은 플로피 디스크, 하드 디스크, CD, RAM, ROM, 플래시 메모리 등을 포함하고, 이들로 제한되지 않는다.
인스턴트 메시징을 위한 네트워크 환경의 예
도 1은 인스턴트 메시징 대화를 위한 네트워크 환경의 예(100)를 도시하고 있다. 일반적으로, 두 클라이언트(102, 104)가 네트워크(106)를 통해 서로 통신할 수 있다. 액티브 네트워크 디바이스(108, 110)는 네트워크 환경(100) 내에 존재하 거나 존재하지 않을 수 있다. 에코 서버(112) 및 스위치보드 서버(114)는 네트워크(106)를 통해 접속되어 클라이언트들(102, 104)간의 통신을 용이하게 한다.
인스턴트 메시징(IM) 플랫폼(116)은 클라이언트 (1)(102) 및 클라이언트 (2)(104)가 인스턴트 메시징 대화에 참여할 수 있도록 한다. IM 플랫폼(116)의 사용자는 사용자 인터페이스(도시되지 않음)를 통해 IM 플랫폼(116)과 상호작용하여, 클라이언트(2)(104)와 메시지를 전송 및 수신한다. IM 플랫폼(116)은 클라이언트 (1)(102) 및 클라이언트 (2)(104) 간의 데이터 통신을 용이하게 하는 피쳐(feature)(118, 또는 엔드 사용자 피쳐(EUF)이라 지칭되기도 함) 및 트랜스포트 프로토콜 스택(122)을 포함한다.
더 구체적으로는, 트랜스포트 프로토콜 스택(122)은 네트워크 환경(100)의 특성에 기초하여 인스턴스 메시징 세션을 명백하게 확립한다. 일반적으로, 확립된 세션은 스위치보드(SB) 서버(114)를 통하거나, 다르게는 피어-투-피어 접속(124)을 통함으로써 데이터가 SB 서버(114)를 통해 라우팅되지 않는다.
클라이언트(102, 104)는 인터넷 서비스 제공자(도시되지 않음)를 통해 네트워크(106)에 액세스할 수 있다. 하나의 실시예에서, 클라이언트(102, 104) 각각은 고유 네트워크 어드레스, 포트 및/또는 식별자를 가지고 있고, 따라서 통신이 클라이언트(102, 104) 사이에 확립될 수 있다. 예를 들면, SB 서버(114)는 클라이언트 컴퓨터 (2)(104)의 네트워크 어드레스, 포트 및/또는 식별자를 이용하여 클라이언트 컴퓨터(2)(104)에 데이터를 라우팅할 수 있다. 피어-투-피어 접속(124)를 통해, 클라이언트 컴퓨터(1)(102)는 클라이언트 컴퓨터(2)(104)의 네트워크 어드레 스, 포트, 및/또는 식별자를 이용하여 데이터를 클라이언트 컴퓨터(2)(104)에 직접 전송할 수 있다.
설명된 바와 같이, 액티브 네트워크 디바이스(1)(106) 및 액티브 네트워크 디바이스(2)(110)는 존재할 수도 그렇지 않을 수도 있다. 액티브 네트워크 디바이스의 예는 각각의 클라이언트 디바이스에 시스템 보안을 제공하는 방화벽 및 네트워크 어드레스 변환기이다. 그러므로, 액티브 네트워크 디바이스(2)(110)는 클라이언트 컴퓨터(2)(104)에 대한 보안을 제공하고, 액티브 네트워크 디바이스(1)(108)는 클라이언트 컴퓨터(1)(102)에 대한 보안을 제공한다.
그러므로, 다양한 네트워크 구성이 가능하다. 하나의 네트워크 구성에서, 액티브 네트워크 디바이스(1)(108)는 존재하지만, 액티브 네트워크 디바이스(2)(110)는 존재하지 않는다. 다른 네트워크 구성에서, 액티브 네트워크 디바이스(2)(110)는 존재하지만, 액티브 네트워크 디바이스(1)(108)는 존재하지 않는다. 또 다른 네트워크 구성에서, 액티브 네트워크 디바이스(1)(108)도, 액티브 네트워크 디바이스(2)(110)도 존재하지 않는다. 제4의 네트워크 구성에서, 액티브 네트워크 디바이스(1)(108) 및 액티브 네트워크 디바이스(2)(110) 모두가 존재한다.
액티브 네트워크 디바이스(108 및 110)는 인터넷 프로토콜(IP) 어드레스와 같은 고유 네트워크 어드레스를 가지고 있고, 따라서 액티브 네트워크 디바이스(108, 110)는 각각의 클라이언트(102, 104)로 향하는 데이터를 수신한다. 액티브 네트워크 디바이스(108 또는 110)는 그 네트워크 어드레스 상의 데이터를 수신하고, 그 네트워크 어드레스를 그 각각의 클라이언트(102, 104)에 연관된 네트워크 어드레스로 변환한다.
클라이언트(1)(102)는 에코 서버(112)를 이용하여 액티브 네트워크 디바이스(1)(108)와 연관된 네트워크 어드레스를 얻을 수 있다. 클라이언트(1)는 에코 서버(112)에 메시지를 전송할 수 있다. 에코 서버(112)가 클라이언트(1)(102)로부터 메시지를 수신한 경우, 메시지는 액티브 네트워크 디바이스(108)의 네트워크 어드레스를 포함할 것이다. 이에 응답하여, 에코 서버(112)는 액티브 네트워크 디바이스(108)의 네트워크 어드레스를 클라이언트(102)에 다시 전송한다. 클라이언트(2)(104)는 액티브 네트워크 디바이스(2)(110)의 네트워크 어드레스를 유사하게 얻을 수 있다. 액티브 네트워크 디바이스(108, 110)의 네트워크 어드레스를 이용하여, 클라이언트(102, 104)는 피어-투-피어 접속(124)을 확립할 수 있다.
도 1의 예시적인 환경(100)은 대화 중인 두 클라이언트(102, 104)만을 도시하고 있지만, 둘 이상의 클라이언트들이 대화에 참여될 수 있다는 것은 자명하다. 둘 이상의 클라이언트들은 다중 포인트 형태로 통신할 수 있고, 여기서 각 클라이언트는 각각의 다른 클라이언트로의 피어-투-피어 접속을 가진다. 다르게는, 둘 이상의 클라이언트들은 스위치보드 서버(114)를 통해 대화에 참여한다. 뿐만 아니라, 피어-투-피어 접속 및 스위치보드를 통한 접속의 조합이 대화에서 구현될 수 있다. 네트워크 환경(100)에 채용될 수 있는 동작 및 시스템 예의 보다 상세한 설명이 이하에 제공된다.
클라이언트들 사이에서 인스턴트 메시지들을 트랜스포트하기 위한 시스템의 예
도 2는 인스턴트 메시징 시나리오에서 데이터의 통신을 관리하기 위한 레이어의 예를 포함하는 트랜스포트 시스템(200)을 예시하고 있다. 일반적으로, 각 레이어는 그 레이어와 연관된 다양한 태스크를 수행하기 위한 기능 및/또는 데이터를 제공한다. 트랜스포트 프로토콜 및 시스템을 레이어의 측면에서 기술하는 것은 본 기술분야의 숙련자들에 의해 이해된다.
트랜스포트 시스템(200)은 피쳐(202)를 포함한다. 피쳐(202)는 피쳐와 연관된 데이터를 제공하도록 메신저 어플리케이션(예를 들면, 도 1의 인스턴트 메시징 플랫폼(116))에 의해 호스팅되거나 그 내부에서 실행되는 함수이다. 피쳐는 피쳐가 제공하는 데이터 타입, 데이터를 제공하는 방식, 피쳐가 데이터에 대해 수행하는 동작, 및/또는 피쳐가 데이터와 상호작용하도록 사용자에게 제공하는 상호작용 옵션에 의해 특징지어진다. 예를 들면, 커스텀 사용자 타일 피쳐는 사용자 인터페이스 상의 스크린 타일에 그림 데이터를 나타내고, 파일 전송 피쳐는 사용자가 파일을 선택하여 그 파일을 인스턴트 메시징 접속자에게 전송할 수 있게 한다. 예를 들면, 피쳐 레이어(202)는 이모티콘(emoticon), 잉크, 내장된 그림, 등을 포함할 수 있고, 이들로 제한되지 않는다.
피쳐(202)는 트랜스포트 프로토콜 스택(206)의 레이어들을 이용하여 인스턴트 메시징 시나리오에서 데이터를 통신한다. 트랜스포트 프로토콜 스택(206)은 대화중인 클라이언트에 데이터를 전송하고 수신하는 세부 사항들을 명백하게 관리한다. 트랜스포트 프로토콜 스택(206)은 트랜스포트 어플리케이션 프로그램 인터페 이스(API, 208)를 피쳐(202)에 제공하여, 피쳐(202)가 데이터를 전송하고 수신할 수 있다. 트랜스포트 프로토콜 스택(206)의 하위 레이어들은 네트워크 구성 데이터, 및 피쳐(202)로부터의 데이터에 관한 정보를 이용하여 인스턴트 메시징 세션을 확립한다. 그러므로, 트랜스포트 프로토콜 스택(206)은 데이터를 통신하는 하위 레벨 세부사항이 피쳐(202)에 명백하게 한다.
용어 "BLOB"(binary large object; 이진 대형 오브젝트) 및 "청크(chunk)"는 데이터의 타입 또는 크기와 관계없이, 네트워크 환경에서 전송 및/또는 수신되는 데이터의 일부를 지칭하는 것으로서 본 명세서에서 이용된다. 예를 들면, 디지털 이미지는 하나 이상의 데이터 BOLB로 구성될 수 있다. 하나의 BLOB는 하나 이상의 데이터 청크로 구성된다.
상기 언급된 바와 같이, 예로 든 트랜스포트 API(208)는 트랜스포트 프로토콜 스택의 기능을 피쳐(202)에 노출시키는 메소드 또는 함수를 제공한다. API(208)의 특정 구현은 이하의 메소드들을 포함한다.
SendData(); // 데이터의 blob를 다른 클라이언트에 전송한다.
OnDataReceived(); //연관된 세션이 데이터의 blob를 수신한 경우에 피쳐에
//콜백한다.
RegisterFeatureHandler(); //핸들러를 등록하기 위해 피쳐에 의해 호출됨.
//이 핸들러는 다른 클라이언트가 피쳐에 대한
//초대를 전송할 때 호출된다.
RegisterDataChannelCallBacks(); //채널 이벤트가 발생하거나 채널 상태가
//변경될 때 호출되는 핸들러를 등록하도록
//피쳐에 의해 호출된다.
CreateDataChannel(); //피쳐에 대한 데이터 채널(세션)을 생성한다.
GetTransportCapabilities(); //대화의 성능을 리턴한다. 예를 들면,
//직접, 간접, 저장 및 포워드.
GetParticipants(); //대화의 참여자 리스트를 얻는다.
예시적인 API(208)를 예시하면, 피쳐 레이어(202)내의 피쳐는 CreateDataChannel() 함수를 이용하여 세션을 생성할 수 있다. 피쳐는 레지스터 RegisterFeatureHandler()를 호출하여, 피쳐에 대해 초대가 수신될 때 호출되는 핸들러를 등록한다. 피쳐는 RegisterDataChannelCallBacks()를 호출하여 채널 이벤트가 발생할 때 호출되는 핸들러를 등록한다. 피쳐는 SendData()를 호출하여 데이터를 클라이언트에 전송한다. 함수 OnDataReceived()는 데이터가 피쳐에 대해 수신될 때 세션 레이어(210)와 같은 다른 트랜스포트 프로토콜 레이어에 의해 호출된다.
예시적인 세션 레이어(210)는 피쳐(202)에 세션 서비스를 제공하기 위한 로직을 포함한다. 인스턴트 메시징 대화는 대화를 수행하기 위한 인스턴트 메시징 세션이라 불리는 적어도 하나의 세션을 포함한다. SLP의 구현은 피쳐 세션이라 불리는 피쳐에 대한 다른 세션을 확립하기 위한 제어 로직을 구비하는 마스터 세션을 포함한다. 세션 레이어(210)는 세션들이 개시되는 프로토콜이다. 하나의 구현에서, 세션 레이어(210)는 피어의 각각의 성능에 기초하여 두 피어들간의 세션 확립 을 중재함으로써 세션을 개시한다.
세션 레이어(210)의 특정한 구현에서, 세션 개시 프로토콜(SIP)의 서브세트가 채용된다. 본 구현에서, 메시지들은 사람에 의해 판독가능한 포맷(예를 들면, 확장가능한 마크업 언어(XML), 콤마 분리된 값(CSV), 등)으로 전송될 수 있다. 세션 관리 메시지의 예는 "INVITE", "BYE", "CANCEL", 및 "ACK" 이다.
예시적인 트랜스포트 레이어(212)는 개방 시스템 상호접속(OSI) 표준의 트랜스포트 레이어 프로토콜을(Transport Layer Protocol) 핸들링하기 위한 로직을 포함한다. TLP는 네트워크 채널을 통해 임의의 크기의 이진 대형 오브젝트(BLOB)를 전송하고 수신하기 위한 이진 프로토콜이다. 트랜스포트 레이어(212)는 다양한 데이터 관리 태스크를 수행한다. 예를 들면, 이하에 더 상세하게 설명되는 바와 같이, 트랜스포트 레이어(212)는 네트워크 접속을 통해 데이터를 멀티플렉싱하도록 동작가능함으로써, 단일 네트워크 접속내에서 가상 채널을 생성한다. 이하에 더 상세하게 설명되는 바와 같이, 트랜스포트 레이어(212)는 트랜스포트 브리지 레이어(214)에 상주하는 TCP 브리지 또는 SB-브리지와 같은 하나 이상의 트랜스포트 브리지와 인터페이스한다. 트랜스포트 레이어(212)는 브리지 레이어(214)의 브리지들을 통해 트랜스포팅되도록 피쳐(202)로부터의 데이터를 스케줄링하기 위한 스케줄러 및 큐를 포함한다.
특정 구현에서, 트랜스포트 레이어(212)는 트랜스포트되는 각 BLOB의 각 청크에 TLP 헤더를 첨부한다. 이 헤더는 BLOB 및 청크에 관한 정보를 제공한다. 청크 수신시, 트랜스포트 레이어(212)는 헤더를 분석하여, 청크들이 재조립되는 방법 및 필요하다면 BLOB가 재순서화되는 방법을 결정한다. 하나의 구현예에서, TLP 헤더는 이하와 같다.
DWORD SessId; //이 blob가 속하는 슬레이브 세션 id
DWORD BlobId; //이 blob에 대한 id
UINT64 Offset; //이 청크 데이터의 blob 데이터로의 오프셋
UINT64 BlobSize; //헤더를 포함하지 않는 모든 청크의 전체 크기
DWORD ChunckSize; //이 청크(헤더를 포함하지 않음)에서 데이터의 크기
DWORD Flags; //TLP_CONTROL_FLAGS와 함께 OR 연산됨
필드 "SessId"는 전송되거나 수신되고 있는 데이터 청크와 연관된 세션을 식별한다. "SessId" 필드는 트랜스포트 레이어(212)에 의해 데이터의 청크를 특정 세션과 연관시키는데 이용되어, 데이터의 청크를 멀티플렉싱하거나 디멀티플렉싱한다. 트랜스포트 프로토콜 스택(206)에 의해 채용되는 데이터 멀티플렉싱은 이하에 더 상세하게 설명된다.
필드 "BlobId"는 전송되거나 수신되고 있는 데이터에 대응하는 이진 대형 오브젝트(BLOB)를 식별한다. 필드 "BlobId"는 트랜스포트 프로토콜 스택(206)에 의해 청크를 대응하는 BLOB로 조립하거나 재조립하는데 이용된다. "Offset"필드는 청크가 대응하는 BLOB에 위치하고 있는 곳을 나타낸다. BlobId는 전달 이전 또는 수신 이후에 BLOB를 적절한 순서로 조직화하는데 이용될 수 있다. "BlobISize"필드는 BLOB의 크기를 나타낸다. "ChunckSize"필드는 헤더를 포함하지 않는, 데이터의 청크의 크기를 나타낸다.
"Flags"필드는 트랜스포트 레이어(212)에 의해 클라이언트들 사이에서 데이터를 전송하고 수신하는 프로세스를 관리하는데 이용되는 다수의 플래그들을 제공한다. 예를 들어 "Flags"가 이하에 제시되고, 설명된다.
enum TLP_CONTROL_FLAGS
{
TLP_NAK = 0x01, //미승인 패킷에서의 설정(재송신에 대한 요청)
TLP_ACK = 0x02, //승인 패킷에서의 설정
TLP_RAK = 0x04, //승인 패킷에 대한 요청에서의 설정
TLP_RST = 0x08, //리셋 패킷에서의 설정, 나머지 측의 세션은 닫음
TLP_BIG = 0x10, //이러한 청크가 파일로서 저장되는 blob의 일부인
//경우에 설정됨
TLP_CAL = 0x20, //진척 콜백이 요청되는 blob에서의 설정
};
트랜스포트 브리지 레이어(214)는 네트워크를 통해 데이터를 트랜스포트하기 위한 로직을 포함한다. 예를 들면, 트랜스포트 브리지 레이어(214)는 데이터 인코딩 및/또는 디코딩을 수행한다. 하나의 구현에서, 트랜스포트 브리지 레이어(214)는 각각이 네트워크 구성에 대응하는 기능을 가지는 하나 이상의 트랜스포트 브리지, 및 네트워크 상에서 통신하기 위한 데이터 특성을 포함한다. 브리지들 중에서 선택하기 위한 시스템 및 동작뿐만 아니라 예시적인 트랜스포트 브리지들도 이하에 상세하게 설명된다.
하나의 구현에서, 트랜스포트 레이어(214)는 트랜스포트 브리지 레이어(214)를 이용하여, 세션 중에 두 브리지 타입들 사이에서 천이한다. 그러므로, 세션은 스위치보드(SB) 브리지를 통해 시작하여, 세션 데이터가 스위치보드 서버를 통해 통신되지만, 나중에는 세션은 직접, 또는 피어-투-피어 접속으로 스위칭할 수 있다. 뿐만 아니라, 피어-투-피어 접속이 끊어지면, 트랜스포트 레이어(212)는 대응하여 브리지 레이어(214)의 SB 브리지 또는 일부 다른 가용한 브리지로 다시 스위칭할 수 있다. 트랜스포트 레이어(212)는 트랜스포트 프로토콜 스택(206)의 상위 레이어에 명백한 방식으로 스위치를 다른 접속 타입으로 핸들링한다.
트랜스포트 레이어(212)는 브리지 레이어(214)와 작용하여, BLOB가 적절한 순서로 전달되거나 수신되는 것을 보장한다. 접속 타입이 세션 중에 더 느린 접속에서 더 빠른 접속으로 변경되므로, 트랜스포트 레이어(212)가 적절한 순서를 보장하는 조처를 취하지 않는다면, 더 느린 접속을 통해 송신되었던 BLOB는 더 빠른 접속을 통해 송신된 BLOB 이후에 그 목적지에 도달할 수 있다. 적절한 순차적 전달 순서가 유지되는 것을 보장하는 동작 예들이 이하에 설명된다.
네트워크 레이어(218)는 표준 네트워크 통신 함수를 수행하는 하위 레벨 통신 기능을 표현한다. 네트워크 레이어(218)는 송신 제어 프로토톨/인터넷 프로토콜(TCP/IP) 기능, 범용 데이터그램 프로토콜(UDP: Universal Datagram Protocol) 기능, 하이퍼텍스트 트랜스포트 프로토콜(HTTP) 기능, 단순 오브젝트 액세스 프로토콜(SOAP: Simple Object Acess Protocol)을 포함하고, 이들로 제한되지 않는다. 브리지 레이어(214)는 네트워크 레이어(218) 기능을 이용하여 네트워크를 통해 데 이터를 통신할 수 있다.
본 명세서에 설명된 바와 같이, 다른 네트워크 구성, 및 데이터 타입, 포맷 및/또는 크기를 핸들링하는데 다수의 트랜스포트 브리지가 제공된다. 표 1은 브리지가 채용될 수 있는 트랜스포트 브리지 및 연관된 네트워크 구성 예를 예시하고 있다.
브리지 NAT 없음 1 NAT 2 NAT(비대칭) 1 UPnP 1 UPnP & 1 NAT 2 UPnP 방화벽 다중포인트
SB
트위스터(IPv6) TCP
RUDP
표 1의 행 및 열이 교차하는 곳의 체크 마크(∨)는 교차하는 행의 브리지가 교차하는 열에서 네트워크 구성에 이용될 수 있다는 것을 나타낸다.
SB 브리지는 스위치보드 서버(예를 들면, 스위치보드 서버(114, 도1))를 통해 트래픽을 전송한다. 하나의 구현에서, 인스턴트 메시징 세션이 처음으로 확립된 경우에, SB 브리지는 인스턴트 메시징 세션 데이터를 트랜스포트하는데 이용되는 브리지이다. 이어서, SB 브리지는 직접(피어-투-피어) 접속이 확립될 수 없는 경우에만 계속해서 이용된다.
트위스터 트랜스포트 제어 프로토콜(TCP, 또한 인터넷 프로토콜 버전 5(IPv6) TCP) 브리지는 인터넷 프로토콜 버전 4(IPv4) NAT를 트래버스(traverse)하는데 이용된다. 하나의 구현에서, IPv6 브리지는 테레도(Teredo) 터널링 기술을 이용하여 피어-투-피어 접속을 확립한다. 테레도는 IPv6/IPv4 호스트들이 하나 또는 다수의 IPv4 NAT 뒤에 위치된 경우에, 유니캐스트 IPv6 접속에 대한 어드레스 할당 및 호스트-투-호스트 자동 터널링을 제공하는 IPv6/IPv4 변이 기술이다. IPv4 NAT를 트래버스하기 위해서는, IPv6 패킷은 IPv4-기반 사용자 데이터그램 프로토콜(UDP) 메시지로서 전송된다.
트위스터 TCP 브리지는 네트워크 상에서 네트워크 어드레스 번환기(NAT)가 구성되더라도 피어-투-피어 TCP/IP 접속을 확립하도록 동작가능하다. 예를 들면, 제1 클라이언트가 NAT 뒤에 있고 제2 클라이언트가 NAT 또는 방화벽 뒤에 있지 않다면, 제1 클라이언트의 트위스터 TCP 브리지는 제2 클라이언트와 아웃고잉 TCP 접속을 개시한다. 제1 클라이언트는 에코 서버(예를 들면, 도 1의 에코 서버(112))를 이용하여, 제1 클라이언트가 NAT 뒤에 있는 것을 검출하고, 따라서 접속을 형성할, 즉 제1 클라이언트가 TCP 접속을 개시할 방향을 결정한다. 유사한 기술들이 클라이언트들 중 하나가 범용 플러그 앤 플레이(UPnP) NAT 뒤에 있는 경우에 적용될 수 있다.
신뢰성있는 범용 데이터그램 프로토콜(RUDP: Reliable Universal Datagram Protocol) 브리지는 UDP를 통해 통신하지만, "패킷"이 TCP 하에서 승인되는 양만큼의 데이터의 송신의 수신을 승인함으로써 TCP 접속을 에뮬레이션한다. 이러한 방식으로, 프로토콜은 데이터가 드롭되는(즉, 수신되지 않는) 때와 재전송되어야 하는 때를 검출할 수 있으므로, RUDP 브리지는 전통적인 UDP 접속보다 더 신뢰할 만한 접속을 제공한다. RUDG 브리지는 에코 서버를 이용하여 NAT 네트워크 어드레스 를 얻을 수 있으므로, NAT가 트래버스될 수 있다.
RUDP 브리지는 헤더를 송신된 데이터에 첨부한다. 헤더의 예는 이하와 같다.
unsigned_int64 qwSeqNum; //이 패킷에서 제1 바이트의 시퀀스 번호
unsigned_int64 qwAckNum; //이 패킷의 전송자가 기대하는 다음 바이트의
//ack 번호
DWORD dwOtherFields; //가장 중요한 것부터 4개 워드에서 4비트 오프셋, 5비
//트 예비, 5 제어비트, 16 예비
DWORD dwWindow; //수신자가 수락하는 윈도우 크기
DWORD dwSendTime; //패킷이 전송된 때의 시간 스탬프
DWORD dwEchoTime; //전송자가 수신자로부터 패킷에 기록된 최종 시간스탬프
예시적인 RUDP 브리지 프로토콜은 청취 RUDP 브리지에 "SYN"메시지를 전송하고, "SYN ACK"로 응답하며, "ACK"로 "SYN ACK"메시지에 응답하는 것에 관련된다. 이어서, 재송신 타이머는 송신된(또는 재송신된) 데이터 세트에 대한 대응하는 RUDE 브리지로부터 ACK가 수신될 때까지 하나 이상의 데이터 세트를 재송신하기를 계속한다.
도 3은 트랜스포트 브리지 세트(340) 중에서 바람직한 트랜스포트 브리지를 선택하도록 동작가능한 선택 모듈의 예(302)를 예시하는 블록 다이어그램이다. 인스턴트 메시징 어플리케이션은 하나 이상의 피쳐(308)를 가질 수 있고, 각 피쳐(308)는 마스터 세션(306) 및 세션 레지스트라(310)와 통신하여, 연관된 피쳐 세션(312)을 설정한다. 피쳐 데이터를 포함하는 인스턴트 메시징 데이터는 선택된 브리지를 통해 트랜스포트된다.
마스터 세션(306)은 트랜스포트 프로토콜 스택(206, 도 2)의 세션 레이어(210, 도 2)에서 실행한다. 마스터 세션(306)은 인스턴트 메시징 어플리케이션에서 대화가 시작된 경우에 생성된다. 마스터 세션(306)은 대화 윈도우와 연관되고, 피쳐(308)가 슬레이브, 또는 피쳐 세션(312)을 요청하는 오브젝트이다. 마스터 세션(306)은 또한 피쳐(308)가 대화 윈도우의 컨텍스트 외부에서 마스터 세션을 시작할 수 있도록 하는 정적 메소드를 노출시킴으로써, 인스턴트 메시징 대화가 생성될 것이다.
피쳐(308)는 대화 중에 운용되는 피쳐에 관한 정보를 유지하는 세션 레지스트라(310)로 등록한다. 세션 레지스트라(session registra)(310)는 또한 "자동-시작"피쳐에 관한 정보를 유지한다. 자동-시작 피쳐는 디폴트로 존재해야 하며, 일단 기저 스위치보드 접속이 확립되면 그 초대 핸들러가 선정된 호출 ID 및 세션 ID를 가지는 대화중인 양쪽 클라이언트에 유발되는 피쳐다.
피쳐(308)가 세션 레지스트라(310)로 등록한 경우, 피쳐(308)는 초대 핸들러 함수 및 피쳐(308)와 연관된 글로벌 고유 식별자(GUID)를 제공한다. 마스터 세션(306)은 피쳐 레지스트라 정보를 이용하여 피쳐 세션(312)을 확립하고, 이를 통해 피쳐(308)는 피어 피쳐와의 세션 상에서 운반할 수 있다.
예를 들면, 피어로부터의 초대는 마스터 세션(306)에 의해 수신되어, 피쳐(308)를 초대하여 세션에 들어간다. 초대는 피쳐(308)와 연관된 GUID를 지정한다. 마스터 세션(306)은 세션 레지스트라(310)에서 GUID를 찾아, 피쳐(308)와 연관된 초대 핸들러 함수를 찾아낸다. 초대가 피쳐(308)에 의해 수락된다면, 마스터 세션(306)은 새로운 피쳐 세션(312)을 생성한다.
피쳐(308)는 피어 피쳐를 초대하여 세션에 들어간다. 그렇게 하기 위해, 피쳐(308)는 마스터 세션(306)으로부터 새로운 세션을 요청한다(예를 들면, 트랜스포트 API(208, 도 2)에서 CreateDataChannel()을 호출함으로써). 피쳐(308)로부터 새로운 세션에 대한 요청은 접속 타입(예를 들면, 직접, 간접)에 대한 요청을 포함할 수 있다. 마스터 세션(306)은 요청되는 직접 접속, 데이터 크기 및/또는 네트워크 구성과 같은 정보로 브리지 선택기(302)를 호출할 것이다. 브리지 선택기(302)는 정보를 이용하여 요청된 피쳐 세션에 이용할 바람직한 트랜스포트 브리지를 식별한다.
하나의 구현에서, 브리지 선택기(302)는 트랜스포트 레이어(212, 도 2)에서 실행하고, 트랜스포트 브리지 선택 규칙을 구현하여 바람직한 브리지를 선택한다. 하나의 구현에서, 설계 목적은 가능한 많은 양의 트래픽을 피어-투-피어로 직접 전송하는 것으로, 스위치보드 서버와 연관된 지연과 비용을 피하는 것이다. 본 구현에서, 이하의 인자들, 즉 요청되는 직접 접속, 트랜스포트 브리지에 의해 지원되는 대역폭, 전송될 데이터의 크기, 트랜스포트 브리지의 임의의 한계, 특정 트랜스포트 브리지와 연관된 비용(예를 들면, 릴레이 비용), 및/또는 프라이버시 명세(예를 들면, IP 어드레스의 노출 또는 숨김)가 분석되어 트랜스포트 브리지를 선택한다.
각 트랜스포트 브리지는 상기 인자들에 기초하여 스코어를 계산한다. 브리지는 그 스코어를 브리지 선택기(302)에 제공하고, 브리지 선택기(302)는 스코어에 기초하여 바람직한 트랜스포트 브리지를 선택한다. 미처리 스코어를 분석하기에 앞서, 브리지 선택기(302)는 특별 요청을 고려한다. 예를 들면, 피쳐(308)가 직접 접속을 요청한다면, 브리지 선택기(302)는 추천 브리지들의 세트로부터 모든 간접 브리지를 제거한다. 특정 네트워크 구성에서 동작하지 않는 브리지들도 또한 추천 브리지 세트로부터 제거된다. 예를 들면, 트위스터 TCP 브리지는 네트워크 구성이 두 대칭 레거시 NAT를 포함하는 경우에는 고려되지 않는다. 대화 초기화 동안에 에코 서버 테스트로부터 얻어진 정보는 어느 브리지가 작동할 수 없는 지를 결정하는데 이용된다.
그러므로, 브리지 선택기(302)의 하나의 구현은 이하의 트랜스포트 브리지 선택 규칙을 채용한다.
1. 에코 테스트 결과에 기초하여 작동할 수 없는 브리지를 제거한다.
2. 호출자에 의한 특정 요청을 만족하지 않는 브리지를 제거한다.
3. 최고 스코어를 가지는 잔여 브리지를 이용한다.
4. 이전 브리지가 실패하면, 제2 최고 스코어를 가지는 나머지 브리지를 이용한다.
5. 이전 브리지가 실패하면, 그 다음 높은 스코어를 가지는 나머지 브리지를 이용하고, 그 다음 다음 높은 스코어를 이용하다.
브리지 선택기(302)는 상기 규칙에 기초하여 마스터 세션(306)에 바람직한 브리지를 통지한다. 이에 응답하여, 마스터 세션(306)은 피쳐 세션(312)을 생성하고, 이용될 바람직한 브리지를 실증한다. 피쳐 세션(312)이 생성된 후, 피쳐 세션(312)은 피쳐(308)가 다른 피어 피쳐와 통신할 세션이 될 것이다. 피쳐 세션(312)은 AcceptSession 및 AcceptDirect와 같은 세션 제어 호출뿐만 아니라 데이터를 전송하는 것을 핸들링한다.
도 4는 제1 클라이언트 디바이스(406) 및 제2 클라이언트 디바이스(408)간의 물리적 접속(404)을 통한 가상 채널(402)을 예시하는 블록 다이어그램이다. 접속(404) 및 채널(402)이 클라이언트 디바이스(406, 408)에 의해 이용되어 인스턴트 메시징 통화에 참여하고, 다양한 타입의 데이터가 통신된다. 디바이스(406, 408)가 "클라이언트 디바이스"로서 지칭되지만, 디바이스(406, 408)간의 접속(404)이 서버를 통할 필요는 없지만 직접, 또는 피어-투-피어 접속이 될 수 있다는 것이 자명하다.
도시된 바와 같이, 데이터 채널 0은 대화 중에 텍스트 메시지를 통신하는데 이용된다. 데이터 채널 1은 클라이언트 디바이스(406, 408)간의 파일을 전달하는데 이용된다. 데이터 채널 2는 디바이스(406, 408)간에 내장된 그림을 전달하는데 이용된다. 데이터 채널 3은 사용자가 디바이스(406 또는 408)의 하나에서 현재 메시지를 타이핑하고 있는지 여부를 나타내는 타이핑 지시자 정보를 통신하는데 이용된다.
가상 채널 번호는 세션 식별자에 대응한다. 상기 설명된 바와 같이, 헤더(상기 TLP 헤더를 참조)는 접속(404)을 통해 통신되는 데이터에 첨부된다. 헤더는 데이터가 어느 세션 및 어느 채널(예를 들면, 피쳐 또는 마스터)에 대응하는 지를 나타내는 "SessId"를 포함한다. SessId를 이용하여, 다중 세션으로부터의 데이터가 접속(404)을 통해 멀티플렉싱될 수 있다. 그러므로, 채널(402)은 "가상"채널로 간주된다. SessId는 클라이언트 디바이스(406, 408)에서 스트립 오프된(stripped off) 수신 데이터이고, 데이터는 SessId와 연관된 적절한 세션에 라우팅된다.
또 하나의 구현에서, 클라이언트 디바이스(406) 및 클라이언트 디바이스(408) 사이에서 하나 이상의 접속이 확립되고, 각 접속은 다중 가상 채널을 포함할 수 있다. 예를 들면, 클라이언트 디바이스(406) 및 클라이언트 디바이스(408) 사이에 대화가 처음으로 생성될 대, 마스터 세션은 스위치보드 서버를 통한 접속을 통해 생성될 것이다. 나중에, 클라이언트 디바이스(406, 408) 사이에 피어-투-피어 접속이 확립된다. 이러한 상황에서, 디바이스(406, 408) 상의 피쳐들은 스위치보드 접속 또는 피어-투-피어 접속 중 하나 상에서 가상 채널을 확립할 수 있다.
트랜스포트 프로토콜 스택을 채용하는 동작의 예
도 5는 마스터 세션 내에서 피쳐 세션을 확립하고 가능하다면 직접 접속을 생성하기 위한 동작 예를 가지는 동작 플로우(500)를 예시하고 있다. 동작 플로우(500)는 다른 클라이언트 디바이스와 인스턴트 메시징 대화를 하기 위해, 도 1에 도시된 클라이언트 컴퓨터(1)(102)와 같은 클라이언트 디바이스에 의해 실행될 수 있다.
확립 동작(502)은 마스터 세션을 확립한다. 마스터 세션은 사용자가 처음으 로 메신저 어플리케이션을 개시하고 다른 사용자와 접촉하려고 시도할 때 확립된다. 마스터 세션을 확립하는 것은 다른 클라이언트를 초대하여 대화에 들어가는 것과 관련된다. 다른 클라이언트가 초대를 수락한 후, 초대하는 클라이언트 및 수락 클라이언트 양쪽에서 마스터 세션이 생성된다. 마스터 세션은 SB 접속을 경유하여 스위치보드 브리지를 통해 확립된다. 마스터 세션은 나중에 피쳐 세션을 확립하는데 이용된다.
에코 서버 테스트가 확립 동작(502) 이전에 수행되지 않았다면, 확립 동작(502)은 에코 서버 테스트를 수행하여, 방화벽, NAT 또는 존재할 수 있는 다른 액티브 네트워크 디바이스를 검출한다. 에코 서버 테스트는 테스트 메시지를 에코 서버(예를 들면, 도 1의 에코 서버(112))에 전송하고, 에코 서버는 구성되는 임의의 액티브 네트워크 디바이스에 대응하는 네트워크 어드레스 정보로 응답하는 것을 포함한다.
사용자는 텍스트 데이터뿐만 아니라 피쳐 데이터를 통신하기를 원한다. 이러한 피쳐 데이타는 파일, 그림, 커스텀 이모티콘, 커스텀 사용자 타일 등을 포함하고, 이들로 제한되지 않는다. 뿐만 아니라, 메신저 어플리케이션은 피쳐 세션을 생성하여 피쳐 데이터를 전달한다. 그러므로, 또 다른 확립 동작(504)에서, 피쳐 세션이 확립된다. 확립 동작(504)은 마스터 세션이 초대하는 클라이언트에서 피쳐 세션을 생성하고 피쳐 초대를 수신하는 클라이언트에 전송하는 것을 포함한다. 피쳐 초대가 수신하는 클라이언트에 도달하는 경우, 초대가 수락되거나 거절된다.
확립 동작(504)에 이어서, 피쳐 초대가 수락되면, 수신하는 클라이언트 상의 마스터 세션을 수신하는 클라이언트 상의 피쳐 세션을 생성한다. 수신 클라이언트 상의 피쳐 세션은 초대 피쳐에 대응하는 GUID를 가지고 있다. 수신 클라이언트 상의 마스터 세션은 GUID에 대해 등록된 초대 핸들러 함수를 호출한다. 피쳐 초대가 수락되면, 연관된 피쳐는 피쳐 세션을 저장하고, 따라서 피쳐 세션은 세션에 대한 트랜스포트 API와 상호작용하는데 이용될 수 있다. 피쳐가 수락된 경우, 콜백 메시지가 초대 피쳐 및 수락 피쳐 모두에 전송되어, 이들로 하여금 데이터를 전송하고 수신하는데 이용할 준비가 되어 있다는 것을 알린다. 피쳐 초대가 거절된다면, 마스터 세션은 생성된 피쳐 세션을 삭제한다.
확립 동작(504)은 확립된 SB 접속과 같은, 존재하는 접속을 통해 피쳐 세션을 확립한다. 더 구체적으로는, 피쳐 세션 데이터는 도 4에 도시된 바와 같이 마스터 세션 데이터로 멀티플렉싱되어, 피쳐 세션 및 마스터 세션 상에서 동시에 운반된다. 스위치보드를 통한 접속이 피어-투-피어 접속보다 더 느리므로, 생성 동작(506)은 피쳐 세션을 수행할 직접(피어-투-피어) 접속을 생성하는 것을 시도한다. 생성 동작(506)의 실시예가 도 6에 예시되고, 이하에 설명된다. 직접 접속이 생성될 수 있다면, 피쳐 세션이 직접 접속을 이용하여 수행될 것이다. 동작 플로우(500)는 종료 동작(508)에서 종료한다.
도 6은 직접 접속을 생성하기 위한 동작 예를 가지는 동작 플로우를 예시하고 있다. 사용자는 개시 클라이언트에서 피쳐에 사용자가 피쳐 세션을 스위치보드(SB) 서버보다는 직접 접속으로 변경하기를 원한다는 것을 나타낸다고 가정한다. 사용자는 메시지 크기 한계로 제한되는 것을 피하거나 SB 서버에 의해 허용되는 것보다 더 많은 메시지를 전송하기를 원하거나, 그 메시지들을 그 회사 방화벽 내부에 보관하기를 원하기 때문에, 직접 접속을 더 선호한다.
피쳐가 직접 접속으로 이동하려는 표시를 수신한 경우, 요청 동작(62)이 실행되어, 피쳐는 피쳐 슬레이브 세션 상의 메소드를 호출한다. 요청 동작(602)은 직접 접속을 요청한다. 슬레이브 세션은 요청을 마스터 세션에 패싱한다. 이에 응답하여, 마스터 세션은 직접 접속을 요청하는 수신 클라이언트 상의 피어 피쳐에 "reINVITE" 메시지를 전송한다.
요청 동작(602)에 계속하여, "reINVITE"메시지는 초대 클라이언트에 의해 지원되는 모든 트랜스포트 브리지 타입을 식별하는 정보를 포함한다. 수신 클라이언트 상의 피쳐 세션은 피쳐와 연관된 초대 핸들러 함수를 호출한다. "reINVITE"는 임의의 다수 방식으로 수락될 수 있다. 하나의 구현에서, 피쳐는 피쳐의 초대 핸들러에 자동-수락 설정을 설정할 수 있다. 자동-수락 설정은 직접 접속에 대한 모든 요청들이 자동으로 수락되어야 한다는 것을 나타낸다. 또 다른 구현에서, 자동-거절 설정은 초대 핸들러에 설정되어, 직접 접속 요청이 자동으로 거절될 것이라는 것을 나타낸다.
자동-수락 또는 자동-거절 설정이 모두 설정되지 않은 경우, 트랜스포트는 글로벌 디폴트 값을 확인한다. 글로벌 디폴트 값이 수락 또는 거절하도록 설정되면, "reINVITE"에 적절한 응답이 만들어진다. 설정되지 않는다면, 초대된 피쳐는 예를 들면 "reINVITE"를 수락할지 또는 거절할지 여부에 관해 사용자에게 프롬프팅함으로써 초대 정보에 응답할 수 있다. "reINVITE"가 수락된다고 가정하면, 바람 직한 트랜스포트 브리지가 선택 동작(606)에서 식별된다.
선택 동작(606)은 도 3을 참조하여 상기 설명한 선호도 인자를 이용하여 바람직한 트랜스포트 브리지를 선택한다. 수락 동작(608)은 수락 메시지를 다시 초대 클라이언트에 전송한다. 수락 메시지는 바람직한 브리지를 포함한다. 수락은 수락 클라이언트의 내부 및 외부 IPv4 어드레스, 및 클라이언트가 하나를 가지고 있다면 IPv6 글로벌 어드레스를 포함한다.
다른 단 쪽의 트랜스포트는 수락 메시지에 리스트된 바람직한 브리지를 이용하여 수신된 IP 어드레스 및 포트에 접속하려고 시도한다. 초대 클라이언트가 접속된 후, 트랜스포트는 "RAK"를 전송하고 수락 클라이언트는 "ACK"로 응답한다. 접속이 실패하면, 초대 클라이언트는 "RAK"를 전송한 후 타임 아웃된다. 하나의 구현에서, 초대 마스터 세션은 또 하나의 "reINVITE"를 전송하고, 이번에는 실패한 트랜스포트 브리지 타입을 제외한다. 동작 플로우는 종료 동작(610)에서 종료한다.
도 7은 이진 대형 오브젝트(BLOB)를 순차적 순서로 트랜스포트하기 위한 동작 예를 가지는 동작 플로우(700)를 예시하고 있다. 일반적으로, BLOB의 최종 청크가 새로운 직접 접속을 통해 송신되기 이전에, 트랜스포트는 이전에 간접 접속을 통해 송신되었던 BLOB의 청크와 연관된 모든 "ACK"를 수신하기를 기다린다. 이와 같이 "ACK"를 기다리는 것은 트랜스포트 브리지 또는 접속(즉, UDP, TCP 또는 기타)의 어느 타입이 이용되는 것에 무관하게 발생한다.
송신 동작(702)은 간접 접속을 이용하여 BLOB를 송신하기 시작한다. 질의 동작(704)은 트랜스포트 브리지 타입이 직접 접속으로 스위칭되었는지 여부를 결정한다. 트랜스포트 브리지 타입이 스위칭되지 않았다면, 질의 동작(704)은 "NO"로서 송신 동작(706)으로 분기한다. 송신 동작(706)은 간접 접속을 통해 BLOB의 청크를 송신한다.
송신 동작(706)에서 청크가 송신된 후, 질의 동작(704)은 다시 트랜스포트 브리지 타입이 변경되었는지 여부를 결정한다. 트랜스포트 브리지 타입이 변경되었다면, 질의 동작(704)은 "YES"로서 다른 질의 동작(708)으로 분기한다. 질의 동작(708)이 현재 BLOB 식별자(ID)가 최종 BLOB ID보다 더 큰지를 결정한다. 현재 BLOB ID가 최종 BLOB ID보다 크지 않은 경우, 질의 동작(708)은 "NO"로서 송신 동작(706)으로 분기하여, 현재 BLOB의 청크를 송신한다.
질의 동작(708)이 현재의 BLOB ID가 최종 BLOB ID보다 크다고 결정하면, 질의 동작(708)은 "YES"로서 다른 질의 동작(710)으로 분기한다. 질의 동작(710)은 송신될 현재 청크가 BLOB의 최종 청크인 지 여부를 결정한다. 현재 청크가 BLOB에서 최종 청크가 아니라면, 질의 동작(710)은 "NO"로서 송신 동작(706)으로 분기하여, 현재 청크를 송신한다. 질의 동작(710)이 현재 청크가 BLOB의 최종 청크크라고 결정하면, 질의 동작(710)은 대기 동작(712)으로 분기한다. 대기 동작(712)은 원래의 간접 접속을 통해 송신된 BLOB에 대한 모든 ACK가 수신될 때까지 대기한다.
인스턴트 메시징을 위한 네트워크 환경에 이용될 수 있는 컴퓨터 시스템의 예
도 8 및 대응하는 설명은 컴퓨터 데이터를 트랜스포트하기 위해 상기 기재된 구성 및 절차가 구현되는 적합한 컴퓨팅 환경의 일반적인 설명을 제공하려는 것 이다. 예시적인 컴퓨팅 환경(820)은 단지 적절한 컴퓨팅 환경의 하나의 예에 불과하고 기재된 발명의 이용이나 기능의 범주에 관해 어떠한 제한을 암시하려고 하는 것이 아니다. 또한, 컴퓨팅 환경(820)은 예시적인 오퍼레이팅 환경(820)에 예시된 컴포넌트의 임의의 하나 또는 조합에 관련하여 어떠한 의존성 또는 요청조건을 가지고 있는 것으로서 해석되어서는 안 된다.
상호접속된 디바이스들 사이에서 컴퓨터 데이터를 트랜스포트하는 구성 및 절차의 예는 다수의 다른 일반 목적 또는 특별 목적 컴퓨팅 시스템 환경 또는 구성과 동작가능하다. 기재된 발명에 이용하기 적합한 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예들은 퍼스널 컴퓨터, 서버 컴퓨터, 씬(thin) 클라이언트, 씩(thick) 클라이언트, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 메인 프레임 컴퓨터, 상기 시스템 또는 디바이스의 임의의 것을 포함하는 서버 팜(server farm) 및 기업 인트라넷과 같은 분산 컴퓨팅 환경 등을 포함하고, 이들로 제한되지 않는다.
컴퓨팅 환경(820)은 컴퓨터(830) 형태의 일반 목적 컴퓨팅 디바이스를 포함한다. 컴퓨터(830)는 도 1-7을 참조하여 상기 설명한 인스턴트 메시징을 위한 트랜스포트 시스템의 구현 예로서 포함하거나 지원한다. 컴퓨터(830)의 컴포넌트는 하나 이상의 프로세서 또는 처리 유닛(832), 시스템 메모리(834), 및 시스템 메모리(834)를 포함하는 다양한 시스템 컴포넌트를 프로세서(832)에 결합시키는 버스(836)를 포함하고, 이들로 제한되지는 않는다.
버스(836)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 가속 그 래픽 포트, 및 다양한 버스 아키텍쳐들 중 임의의 것을 이용하는 프로세서 또는 로컬 버스를 포함하는 수개의 타입의 버스 구조 중 하나를 나타낸다. 예를 들어, 그러한 아키텍쳐는 ISA 버스, MCA 버스, EISA 버스, VESA 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 PCI 버스를 포함하고, 이들로 제한되지는 않는다.
컴퓨터(830)는 통상 다양한 컴퓨터 판독가능한 매체를 포함한다. 그러한 매체는 컴퓨터(830)에 의해 액세스될 수 있는 임의의 가용한 매체가 될 수 있고, 휘발성 및 불휘발성 매체, 제거가능 및 제거 불가능한 매체를 모두 포함한다.
시스템 메모리는 랜덤 액세스 메모리(RAM, 840)와 같은 휘발성 메모리, 및/또는 판독 전용 메모리(ROM, 838)와 같은 불휘발성 메모리 형태의 컴퓨터 판독가능한 매체를 포함한다. 기동 동안과 같이 컴퓨터(830) 내의 소자들 사이에서 정보를 통신하는 것을 도와주는 기본 루틴을 포함하는 기본 입출력 시스템(842, BIOS)은 ROM(838)에 저장된다. RAM(840)은 통상 프로세서(832)에 즉시 액세스 가능하거나 이것에 의해 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다.
컴퓨터(830)는 다른 제거가능/제거불가능, 휘발성/불휘발성 컴퓨터 저장 매체를 더 포함할 수 있다. 단지 예로서, 도 8은 제거불가능, 불휘발성 자기 매체(도시되지 않고, 통상 "하드 디스크"라고 지칭됨)에 기록하거나 판독하는 하드 디스크 드라이브(844), 제거가능, 불휘발성 자기 디스크(848, 예를 들면, 플로피 디스크)에 기록하거나 판독하는 자기 디스크 드라이브(846), 및 CD-ROM, DVD-ROM 또는 다른 광학 매체와 같은 제거가능, 불휘발성 광 디스크(852)에 기록하거나 판독하는 광 디스크 드라이브(850)를 예시한다. 하드 디스크 드라이브(844), 자기 디스크 드라이브(846) 및 광 디스크 드라이브(850)는 하나 이상의 인터페이스(854)에 의해 버스(836)에 각각 접속된다.
드라이브 및 그 연관 컴퓨터 저장 매체는 컴퓨터(830)에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 불휘발성 저장을 제공한다. 여기에 설명된 예시적인 환경이 하드 디스크, 제거가능한 자기 디스크(848), 및 제거가능한 광 디스크(852)를 채용하고 있지만, 본 기술분야의 숙련자라면, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 랜덤 액세스 메모리, 판독 전용 메모리, 등과 같이 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 다른 타입의 컴퓨터 판독가능한 매체가 예시적인 오퍼레이팅 환경에 이용될 수도 있다는 것은 자명하다.
예를 들어 오퍼레이팅 시스템(858), 하나 이상의 어플리케이션 프로그램(860), 다른 프로그램 모듈(862), 및 프로그램 데이터(864)를 포함하고 이들로 제한되지 않는 다수의 프로그램 모듈들이 하드 디스크, 자기 디스크(848), 광 디스크(852), ROM(838), 또는 RAM(540)에 저장될 수 있다. 어플리케이션 프로그램(860)은 여기에 설명된 바와 같은 피쳐 및 트랜스포트 프로토콜 스택을 활용하는 인스턴트 메시징 어플리케이션을 포함한다.
사용자는 키보드(866) 및 포인팅 디바이스(868, 예를 들면, 마우스)와 같은 선택적 입력 디바이스를 통해 컴퓨터(830)에 명령과 정보를 입력한다. 다른 입 력 디바이스(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 디시(dish), 직렬 포트, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 버스(836)에 결합되는 사용자 입력 인터페이스(870)를 통해 처리 유닛(832)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 병렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다.
선택적 모니터(842) 또는 다른 타입의 디스플레이 디바이스는 비디오 어댑터(874)와 같은 인터페이스를 통해 버스(836)에 접속된다. 모니터뿐만 아니라, 퍼스널 컴퓨터는 출력 주변장치 인터페이스(875)를 통해 접속될 수 있는 스피커 및 프린터와 같은 다른 주변장치 출력 디바이스(도시되지 않음)를 포함할 수 있다.
컴퓨터(830)는 원격 컴퓨터(882)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(882)는 컴퓨터(830)와 관련하여 여기에 설명된 구성요소 및 특징의 다수 또는 모두를 포함할 수 있다. 도 8에 도시된 논리적 접속은 로컬 영역 네트워크(LAN, 877) 및 일반적인 와이드 영역 네트워크(WAN, 879)를 포함한다. LAN(877) 및/또는 WAN(879)은 유선 네트워크, 무선 네트워크 또는 유선 또는 무선 네트워크의 임의의 조합일 수 있다. 그러한 네트워킹 환경은 홈, 사무실, 범기업 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(830)는 네트워크 인터페이스 또는 어댑터(866)를 통해 LAN(877)에 접속된다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(830)는 통상 모뎀(878) 또는 WAN(879)을 통한 통신을 확립하기 위 한 다른 수단을 포함한다. 내장형 또는 외장형 모뎀(878)은 사용자 입력 인터페이스(870) 또는 다른 적절한 메커니즘을 통해 시스템 버스(836)에 접속될 수 있다. 도 8에 도시되어 있는 것은 인터넷을 통한 WAN의 특정 구현이다. 컴퓨터(830)는 통상 모뎀(878) 또는 인터넷(880)을 통해 통신을 확립하기 위한 다른 수단을 포함한다. 모뎀(878)은 인터페이스(870)를 통해 버스(836)에 접속된다.
네트워킹된 환경에서, 퍼스널 컴퓨터(830)에 관련하여 도시된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 디바이스에 저장될 수 있다. 예를 들면, 도 8은 원격 컴퓨터(882)의 메모리 디바이스에 상주하는 원격 어플리케이션 프로그램(889)을 예시하고 있고, 이것으로 제한되는 것은 아니다. 도시되고 기재된 네트워크 접속은 예로서 제공되고 컴퓨터 사이에서 통신 링크를 확립하는 다른 수단이 이용될 수 있다는 것은 자명하다.
결론
설명된 구성 및 절차가 구조적 특징 및/또는 방법론적 동작에 특정된 언어로 설명되었지만, 첨부된 특허청구범위에 정의된 발명은 설명된 특정한 특징들 또는 동작들로 반드시 제한될 필요는 없다는 것은 자명하다. 오히려, 이 특정한 특징들 및 동작들은 청구된 본 발명을 구현하는 바람직한 형태로서 개시된다.
예시적인 방법은 제1 접속을 통한 마스터 세션을 서버를 통해 생성하고, 상기 접속을 통해 가상 채널을 생성하는 것을 포함하고, 상기 가상 채널은 피쳐 세션을 통신하도록 동작가능하다. 방법은 서버를 바이패스하는 직접 접속을 확립하고, 피쳐 세션의 통신을 직접 접속으로 스위칭하는 것을 포함한다.
네트워크 통신을 위한 시스템은 각각이 액티브 네트워크 디바이스 구성에 대응하는 복수의 트랜스포트 브리지, 및 액티브 네트워크 디바이스 구성에 기초하여 두 컴퓨팅 디바이스간의 접속을 형성하도록 트랜스포트 브리지들 중 하나를 선택하도록 동작가능한 스위칭 모듈을 포함한다.

Claims (22)

  1. 컴퓨터 프로그램을 저장한 컴퓨터 판독가능 기록매체로서, 상기 컴퓨터 프로그램은 컴퓨터가,
    스위치보드 서버(switchboard server)를 통한 제1 접속을 통해 제1 클라이언트 컴퓨터와 제2 클라이언트 컴퓨터 간에 인스턴트 메시징 세션(instant messeging session)을 확립하는 단계;
    피어-투-피어 접속(peer-to-peer connection)을 확립하는 단계 - 상기 피어-투-피어 접속을 확립하는 단계는,
    상기 제1 클라이언트 컴퓨터에서, 상기 제1 클라이언트 컴퓨터와 상기 제2 클라이언트 컴퓨터 간의 하나 이상의 피쳐 세션(feature session)을 확립하기 위해, 상기 제1 접속을 통해 상기 제2 클라이언트 컴퓨터로 초대(invitation)를 개시하는 단계 - 상기 초대는 상기 제1 클라이언트 컴퓨터에 의해 지원되는 모든 트랜스포트 브리지(transport bridge) 타입을 식별하고, 각각의 피쳐 세션은 인스턴트 메시징 플랫폼의 피쳐를 위한 세션이고, 상기 피쳐는 상기 인스턴트 메시징 플랫폼을 통해 다른 피어 피쳐들과 통신함 -;
    상기 제1 클라이언트 컴퓨터에서, 상기 초대에 응답하여 상기 제2 클라이언트 컴퓨터에서 선호되는 적어도 하나 이상의 트랜스포트 브리지 타입을 식별하는 수락을 상기 제1 접속을 통해 상기 제2 클라이언트 컴퓨터로부터 수신하는 단계; 및
    상기 수신된 수락에 기초하여, 상기 하나 이상의 선호되는 트랜스포트 브리지들을 통한 피어-투-피어 접속인 제2 접속을 통해, 상기 제1 클라이언트 컴퓨터와 상기 제2 클라이언트 컴퓨터 간에 상기 하나 이상의 피쳐 세션을 생성하는 단계를 포함함 -;
    상기 인스턴트 메시징 세션에 대한 제1 데이터의 이진 대형 오브젝트(BLOB: Binary Large Object)의 제1 영역을 상기 스위치보드 서버를 통한 상기 제1 접속을 통해 전송하는 단계; 및
    상기 제2 접속의 확립 시, 상기 인스턴트 메시징 세션에 대한 상기 제1 데이터의 이진 대형 오브젝트의 후속 영역을 상기 피어-투-피어 접속을 통해 전송하는 단계
    를 포함하는 방법을 수행하도록 하는, 컴퓨터 판독가능 기록매체.
  2. 제1항에 있어서,
    상기 피어-투-피어 접속을 확립하는 단계는,
    상기 제1 클라이언트 컴퓨터 및 상기 제2 클라이언트 컴퓨터에 대한 액티브 네트워크 디바이스 구성(active network device configuration)을 결정하는 단계; 및
    상기 액티브 네트워크 구성에 대응하는 피어-투-피어 브리지를 선택하는 단계
    를 포함하는 컴퓨터 판독가능 기록매체.
  3. 제2항에 있어서,
    상기 피어-투-피어 브리지는, 신뢰성 있는 범용 데이터그램 프로토콜(RUDP: Reliable Universal Datagram Protocol) 브리지를 포함하는, 컴퓨터 판독가능 기록매체.
  4. 제2항에 있어서,
    상기 피어-투-피어 브리지는, TCP/IP 브리지를 포함하는, 컴퓨터 판독가능 기록매체.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020040051224A 2003-07-01 2004-07-01 인스턴트 메시징을 위한 트랜스포트 시스템 KR101150110B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20050004079A KR20050004079A (ko) 2005-01-12
KR101150110B1 true KR101150110B1 (ko) 2012-06-08

Family

ID=33435436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040051224A KR101150110B1 (ko) 2003-07-01 2004-07-01 인스턴트 메시징을 위한 트랜스포트 시스템

Country Status (8)

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

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546337B1 (en) 2000-05-18 2009-06-09 Aol Llc, A Delaware Limited Liability Company Transferring files
US7366779B1 (en) 2000-06-19 2008-04-29 Aol Llc, A Delaware Limited Liability Company Direct file transfer between subscribers of a communications system
US8266677B2 (en) * 2000-12-20 2012-09-11 Intellisync Corporation UDP communication with a programmer interface over wireless networks
US20030235538A1 (en) * 2002-04-09 2003-12-25 Boehringer Ingelheim Pharma Gmbh & Co. Kg Method for the administration of an anticholinergic by inhalation
US7978716B2 (en) * 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7493371B1 (en) * 2004-03-31 2009-02-17 Network Appliance, Inc. Using a client-server connection protocol to establish a peer-to-peer connection
US7773550B2 (en) * 2004-04-05 2010-08-10 Daniel J. LIN Peer-to-peer mobile data transfer method and device
US7961663B2 (en) * 2004-04-05 2011-06-14 Daniel J. LIN Peer-to-peer mobile instant messaging method and device
US7672255B2 (en) 2004-04-05 2010-03-02 Oomble, Inc. Mobile instant messaging conferencing method and system
US7764637B2 (en) * 2004-04-05 2010-07-27 Daniel J. LIN Peer-to-peer mobile instant messaging method and device
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
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
US7978714B2 (en) * 2004-07-23 2011-07-12 Citrix Systems, Inc. Methods and systems for securing access to private networks using encryption and authentication technology built in to peripheral devices
AU2005266943C1 (en) * 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US20060053485A1 (en) * 2004-09-08 2006-03-09 Chia-Hsin Li Network connection through NAT routers and firewall devices
US7805517B2 (en) * 2004-09-15 2010-09-28 Cisco Technology, Inc. System and method for load balancing a communications network
US8838795B2 (en) * 2004-12-03 2014-09-16 At&T Intellectual Property I, L.P. System, method, apparatus, and product for resource sharing
US7558862B1 (en) * 2004-12-09 2009-07-07 LogMeln, Inc. Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer
US20060253605A1 (en) * 2004-12-30 2006-11-09 Prabakar Sundarrajan Systems and methods for providing integrated client-side acceleration techniques to access remote applications
US8954595B2 (en) * 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
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
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
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 株式会社東芝 コネクションを維持する装置、方法およびプログラム
US7764691B2 (en) * 2007-03-15 2010-07-27 Microsoft Corporation Allowing IPv4 clients to communicate using teredo addresses when both clients are behind a NAT
US7715386B2 (en) * 2007-03-15 2010-05-11 Microsoft Corporation Reducing network traffic to teredo server
US7693091B2 (en) * 2007-03-30 2010-04-06 Microsoft Corporation Teredo connectivity between clients behind symmetric NATs
US8194683B2 (en) * 2007-03-30 2012-06-05 Microsoft Corporation Teredo connectivity between clients behind symmetric NATs
EP1988696B1 (en) * 2007-05-01 2010-09-29 Research In Motion Limited Method and system for communicating and displaying data with a voice call
CN101330431B (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
US10826718B2 (en) 2009-05-19 2020-11-03 Xerox Corporation System and method for coupling a digital appliance to a monitoring service
US10135630B2 (en) 2009-05-19 2018-11-20 Xerox Corporation System and method for coupling a wireless device to social networking services and a mobile communication device
US10740745B2 (en) 2009-05-19 2020-08-11 Zipit Wireless, Inc. System and method for coupling a wireless device to social networking services and a mobile communication device
CN101631127A (zh) * 2009-08-06 2010-01-20 中兴通讯股份有限公司 文件传输方法及客户端
EP2586269B1 (en) 2010-04-22 2019-05-15 Zipit Wireless, Inc. System and method for administration and operation of one or more mobile electronic communications devices
JP5326045B2 (ja) 2010-05-11 2013-10-30 株式会社チェプロ 双方向通信システムおよびこれに用いるサーバ装置
US8627411B2 (en) 2010-06-17 2014-01-07 Microsoft Corporation Techniques to share binary content
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
US9436685B2 (en) 2010-12-23 2016-09-06 Microsoft Technology Licensing, Llc 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
CA2899103A1 (en) * 2014-08-01 2016-02-01 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 北京小米移动软件有限公司 网关设备、桥接方法及装置、存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001093503A2 (en) * 2000-05-31 2001-12-06 Snip, Llc Method and system for instant messaging

Family Cites Families (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278955A (en) * 1990-06-18 1994-01-11 International Business Machines Corporation Open systems mail handling capability in a multi-user environment
JPH0484248A (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
US20010055299A1 (en) * 1996-08-16 2001-12-27 Keith C. Kelly Method and apparatus for establishing communications between packet-switched and circuit-switched networks
US5943478A (en) * 1997-04-04 1999-08-24 Flash Communications, Inc. System for immediate popup messaging across the internet
US5940390A (en) * 1997-04-10 1999-08-17 Cisco Technology, Inc. Mechanism for conveying data prioritization information among heterogeneous nodes of a computer network
US5987515A (en) * 1997-08-29 1999-11-16 International Business Machines Corporation Internet protocol assists using multi-path channel protocol
US6003088A (en) * 1997-08-29 1999-12-14 International Business Machines Corporation Blocking IP datagrams in a multi-path channel point-to-point environment
US6065062A (en) * 1997-12-10 2000-05-16 Cisco Systems, Inc. Backup peer pool for a routed computer network
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6252588B1 (en) 1998-06-16 2001-06-26 Zentek Technology, Inc. Method and apparatus for providing an audio visual e-mail system
US6463078B1 (en) * 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6262977B1 (en) * 1998-08-28 2001-07-17 3Com Corporation High availability spanning tree with rapid reconfiguration
US7047224B1 (en) * 1998-09-23 2006-05-16 Siemens Aktiengesellschaft Method and configuration for determining a sequence of actions for a system which comprises statuses, whereby a status transition ensues between two statuses as a result of an action
US6490615B1 (en) * 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
US6873616B1 (en) * 1998-12-28 2005-03-29 Nortel Networks Limited Quasi-deterministic gateway selection algorithm for multi-domain source routed networks
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
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
DE60033958T2 (de) * 1999-10-18 2007-12-06 Kabushiki Kaisha Eighting Informationsverteilungssystem, -verfahren und durch rechner lesbares mediumspeicherverteilungssystem
EP1104965B1 (en) * 1999-12-02 2007-02-28 Sony Deutschland GmbH Protocol for instant messaging
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
DE60020518T2 (de) * 2000-03-01 2006-06-29 Sony International (Europe) Gmbh Verwaltung von Benutzerprofilen
AU2001245930A1 (en) 2000-03-22 2001-10-03 Omnipod, Inc. Integrated system and method of providing online access to files and information
WO2001077824A1 (en) * 2000-04-07 2001-10-18 Agora Interactive, Inc. Method for managing the simultaneous utilization of diverse real-time collaborative software applications
JP3855595B2 (ja) * 2000-04-25 2006-12-13 株式会社日立製作所 通信システム、通信方法及び通信装置
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 삼성전자주식회사 이동통신 단말기의 감정 아이콘 입력방법
WO2002057917A2 (en) 2001-01-22 2002-07-25 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
CN1327679C (zh) * 2001-02-20 2007-07-18 艾波网络公司 允许数据传输穿越防火墙的方法和设备
US6993012B2 (en) * 2001-02-20 2006-01-31 Innomedia Pte, Ltd Method for communicating audio data in a packet switched network
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
PT1528754E (pt) 2001-05-11 2008-02-08 Nokia Corp Serviço móvel de troca de mensagens instantâneas e de presença
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
US20030225848A1 (en) 2002-05-31 2003-12-04 Brian Heikes Remote instant messaging personalization items
US7779076B2 (en) 2002-05-31 2010-08-17 Aol Inc. Instant messaging personalization
US7689649B2 (en) 2002-05-31 2010-03-30 Aol Inc. Rendering destination instant messaging personalization items before communicating with destination
US7552204B2 (en) 2002-05-15 2009-06-23 Microsoft Corporation Method and system for supporting the communication of presence information among computing devices of a network
US20030217142A1 (en) 2002-05-15 2003-11-20 Microsoft Corporation Method and system for supporting the communication of presence information regarding one or more telephony devices
US7486611B1 (en) * 2002-05-20 2009-02-03 Cisco Technology, Inc. Standby router protocol using optimal route metric
US20030225847A1 (en) 2002-05-31 2003-12-04 Brian Heikes Sending instant messaging personalization items
AU2003280467A1 (en) * 2002-06-26 2004-01-19 Yahoo 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
WO2004046949A1 (en) 2002-11-18 2004-06-03 America Online, Inc. Handling a multimedia object associated with an electronic message
US7289520B2 (en) 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
US7523165B2 (en) 2002-12-24 2009-04-21 Telefonaktiebolaget L M Ericsson (Publ) Transmission of application information and commands using presence technology
US7185285B2 (en) 2003-02-19 2007-02-27 Microsoft Corporation User interface and content enhancements for real-time communication
US20040249958A1 (en) * 2003-06-04 2004-12-09 Ozdemir Hasan Timucin Method and apparatus for secure internet communications
US20040260841A1 (en) * 2003-06-19 2004-12-23 Mathew Tisson K. Method, apparatus, and system for internet protocol communication over intelligent platform management bus
US7296223B2 (en) 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring
US7539727B2 (en) 2003-07-01 2009-05-26 Microsoft Corporation Instant messaging object store
EP1644840A4 (en) 2003-07-01 2007-04-25 Apple Computer PEER-TO-PEER CONTENT SHARING
JP4046654B2 (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
TWI262678B (en) 2004-06-30 2006-09-21 Inst Information Industry Peer-to-peer communication system, method and machine-readable storage medium
US7437364B1 (en) 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7302270B1 (en) 2004-08-02 2007-11-27 Cisco Technology, Inc. Time interval processing and annotation in presence systems
US7552430B2 (en) 2004-08-31 2009-06-23 Microsoft Corporation Patch sequencing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001093503A2 (en) * 2000-05-31 2001-12-06 Snip, Llc Method and system for instant messaging

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101150110B1 (ko) 인스턴트 메시징을 위한 트랜스포트 시스템
US8356103B2 (en) NAT traversal for media conferencing
US8732236B2 (en) Managing network communications between network nodes and stream transport protocol
KR101278861B1 (ko) 다수의 노드들이 대화형 세션에 참여하는 시스템 및 그에관련된 장치-판독 가능 매체
US7996543B2 (en) Client-to-client direct RTP exchange in a managed client-server network
EP1892887B1 (en) Communication method between communication devices and communication apparatus
US20050030959A1 (en) Connections of nodes on different networks
CN1917512B (zh) 一种建立对等直连通道的方法
US20070233901A1 (en) Methods and systems for integrating network services with multiple communication protocols
US20140337478A1 (en) Peer-to-peer network communications
EP1659761A1 (en) Address translation method for unicast stream and device implementing the method
US20090052446A1 (en) Communications Interface

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8