KR20040094309A - P2p 네트워크에서의 비상주 접속을 통한 메시지 통신 - Google Patents

P2p 네트워크에서의 비상주 접속을 통한 메시지 통신 Download PDF

Info

Publication number
KR20040094309A
KR20040094309A KR1020040022931A KR20040022931A KR20040094309A KR 20040094309 A KR20040094309 A KR 20040094309A KR 1020040022931 A KR1020040022931 A KR 1020040022931A KR 20040022931 A KR20040022931 A KR 20040022931A KR 20040094309 A KR20040094309 A KR 20040094309A
Authority
KR
South Korea
Prior art keywords
session
message
user
data
participant
Prior art date
Application number
KR1020040022931A
Other languages
English (en)
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 KR20040094309A publication Critical patent/KR20040094309A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • EFIXED CONSTRUCTIONS
    • E03WATER SUPPLY; SEWERAGE
    • E03CDOMESTIC PLUMBING INSTALLATIONS FOR FRESH WATER OR WASTE WATER; SINKS
    • E03C1/00Domestic plumbing installations for fresh water or waste water; Sinks
    • E03C1/12Plumbing installations for waste water; Basins or fountains connected thereto; Sinks
    • E03C1/122Pipe-line systems for waste water in building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • H04W4/08User group management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/40Connection management for selective distribution or broadcast
    • EFIXED CONSTRUCTIONS
    • E03WATER SUPPLY; SEWERAGE
    • E03CDOMESTIC PLUMBING INSTALLATIONS FOR FRESH WATER OR WASTE WATER; SINKS
    • E03C2201/00Details, devices or methods not otherwise provided for
    • E03C2201/60Reducing noise in plumbing systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Public Health (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Hydrology & Water Resources (AREA)
  • Health & Medical Sciences (AREA)
  • Water Supply & Treatment (AREA)
  • Environmental & Geological Engineering (AREA)
  • Structural Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

P2P(Peer-to-Peer) 네트워크를 통해, 선택적으로는 공동 작업 세션(예컨대 "전자 화이트보드 세션")의 참가자들에 대하여 비상주 접속을 통해 메시지를 통신하는 데 있어 유용한 시스템 및 방법들이 기술되어 있다. 이러한 시스템 및 방법의 예에는 데이터가 유실되거나 참가자들간의 접속이 끊어지는 일 없이, 심지어는 예컨대 접속(예컨대 무선 접속)의 비상주성으로 인해 참가자들이 세션을 나가거나 세션에 대한 접속을 잃는 경우에도, 참가자들이 용이하게 세션을 드나들 수 있도록 해 주는 데이터 전송용 세션을 설정하는 것이 포함될 수 있다. 이러한 예시 시스템 및 방법은 진행 중인 세션에서 이전에 전송되었던 데이터에 참가자들이 용이하게 액세스하여 이를 파악할 수 있도록 해 준다. 개시된 다양한 데이터 구조 또한 메시지 통신을 위한 다양한 시스템 및 방법에 있어 유용하다. 이러한 데이터 구조는 세션 내의 참가자들에 대하여 메시지 페이로드(payload)를 동보(broadcast)하는 데 사용될 수 있다. 다른 유용한 데이터 구조는, 선택적으로는 복수의 참가자가 포함된 데이터 전송 세션에 사용자가 관여된 경우에, 사용자의 식별 데이터를 전 네트워크에 걸쳐 동보하기 위한 데이터를 포함할 수 있다. 메시지 페이로드 및 사용자 식별 데이터를 전송함으로써, 네트워크 상의 다른 사용자들은 진행중인 세션에 자신들이 관여될 것인지 및 그 세션에 참여할 것인지 여부를 용이하게 결정할 수 있다. 앞서 설명한 바와 같은 시스템 및 방법을 이용함으로서, 모든 세션 참가자들이 공통의 서버에 접속될 필요 없이도 P2P 공동 작업 통신이 수행될 수 있다.

Description

P2P 네트워크에서의 비상주 접속을 통한 메시지 통신{COMMUNICATING MESSAGES OVER TRANSIENT CONNECTIONS IN A PEER-TO-PEER NETWORK}
본 발명은 일반적으로 P2P(Peer-to-Peer) 네트워크 상에서의 메시지 통신을 위한 시스템, 방법 및 데이터 구조에 관한 것이다. 이러한 시스템, 방법 및 데이터 구조는 예컨대 "전자 화이트보드(electronic whiteboard") 등과 같은 공동 작업세션(collaborative session)의 참가자들에게 비상주 접속(transient connections)을 통해 메시지를 전달하는 데에 사용될 수 있다.
상이한 작업 장소(workstation)들에 있는 사용자들이 전자 데이터 및 정보를 동시에 공유하고, 모두 동시에 동일한 정보를 보며, 실시간으로 정보를 변경하고, 변경된 정보를 볼 수 있게 해 주는 다양한 공동 작업 애플리케이션들{"전자 화이트보드" 세션, "NetMeeting"(워싱턴주 레드몬드 소재 Microsoft Corp.의 등록 상표임) 세션, 또는 "WebEx"(캘리포니아주 산호세 소재 WebEx Communication Inc. 의 등록 상표임) 세션과 유사함}이 알려져 있다. 이러한 애플리케이션들은 통상적으로 공통의 서버를 이용하며, 모든 참가자들이 공통의 서버를 통해 애플리케이션 및 전자 화이트보드 세션에 접속한다. 따라서 데이터를 추가, 삭제 및/또는 수정하는 데이터 메시지들을 다양한 세션 참가자들이 보내오면, 서버는 메시지를 처리하여 참가자들이 이용할 수 있는 결과를 내놓는다.
많은 예에서, 시스템 상의 기존 데이터에 대하여 전자 화이트보드 세션으로 유입되는, 충돌할 가능성이 있는 메시지를 둘 이상의 세션 참여자들이 전송한다. 이러한 예에서, 서버는 어느 유입 데이터 메시지를 처리할지를 결정할 뿐만 아니라, 유입 신호들의 처리 순서도 결정하며, 소정의 프로토콜에 따라(통상적으로 수신 시간에 따라) 상충 및/또는 모순되는 유입 메시지 데이터 명령어들을 해결한다.
그 대신 어떤 예에서는 공통의 서버에 접속하는 대신, 어떤 세션에 있어 한 참가자의 머신이 사실상의(de facto) "서버"로서 지정된다. 이러한 예에서, 그 특정 머신은 충돌 또는 유입 메시지 데이터를 해결한다(마찬가지로, 통상 그 머신으로의 데이터 유입 시간에 기초함).
비록 실제의 또는 사실상의 서버를 이용하는 이러한 기존의 전자 화이트보드 세션이 유용하지만, 그 유용성을 제한하는 일정한 단점에 기인한 곤란함이 생긴다. 예컨대, 전자 화이트보드의 셋업(set up) 및 잠재적 참가자에 대한 세션 참여에 필요한 정보의 통지는 시간이 걸리고 혼란스러운 프로젝트일 수 있으며, 특히 많은 참가자가 관여될 필요가 있거나 관여될 필요가 있을 수 있는 경우에 그러하다. 사용자들은 통상적으로 종전에 취득한 패스워드 및 그 밖의 접속 정보를 이용하여 세션에 로그인(log in)할 필요가 있다. 적어도 일부 실시예들의 경우, 전자 화이트보드 세션을 셋업하는 당사자에게 있어, 누가 로그인 정보를 수신하고 그에 대한 액세스를 갖는지 결정하는 것은 어려운 일일 수 있다. 민감한 통신을 위한 어떠한 상황에서는 이러한 보안이 필요할 수 있지만, 이러한 사전 계획 요건(advance-planning requirement)들은 전자 화이트보드 통신을 이용하는 것을 불편하게, 또는 종종 불가능하게 만들며, 특히 세션이 즉흥적인 방식으로 필요한 경우에 그러하다. 더욱이, 잠재적인 참가자가 필요한 로그인 정보를 수신하지 못하거나 또는 이를 찾을 수 없는 경우, 그 참가자는 그 세션에 참여하지 못하거나 또는 참여가 상당히 지연될 수 있다. 또한, 많은 사용자들은 이들 다양한 유형의 세션에 대하여 사용할 서버를 알지 못할 수 있으며, 이는 그러한 사용자들이 세션에 참여할 수 있는 가능성을 방해한다.
다수의 통신은 이러한 수준의 보안을 필요로 하지 않는다. 예컨대 기업 시설 내에 위치한 단일 기업의 직원들이 로컬 서브넷(local subnet)이나인트라넷(intranet)을 통해 통신하는 경우, 이들은 추가적인 로그인이나 통상적인 전자 화이트보드의 보안 기능을 필요로 하지 않을 수 있다.
또한, 단일 서버(실제 서버 또는 사실상의 서버)를 이용하는 것은, 데이터 전송이 어떤 이유로 인해 방해를 받는 경우에는 데이터 전송에 있어 문제를 야기할 수 있다. 전송 방해는 종종 발생하며, 특히 사용자가 무선 접속과 같은 비상주 접속을 통해 시스템에 접속되는 경우에 그러하다. 무선 접속(또는 그 밖의 접속)의 방해는 사용자가 세션에 다시 로그인해야 할 필요를 야기할 수 있으며, 이는 지연 및 통신 곤란을 낳는다. 또한, 사실상의 서버로서 작용하는 머신의 사용자가 어떤 이유로 인해 세션을 떠나는 경우, 이는 다른 나머지 사용자들에게 있어 방해 및/또는 세션 장애(session failure)를 야기할 수 있다.
따라서, 본 기술 분야에서는 복수의 사용자가 상술한 여러 단점 중 하나 이상을 방지하는 공동 작업 방식(예컨대 전자 화이트보드 세션)으로 데이터 메시지를 이용하여 다른 사용자들과 신뢰성 있게 통신할 수 있게 해 주는 애플리케이션에 대한 필요성이 존재한다. 이러한 시스템은 세션 내의 모든 참가자(늦게 및/또는 다른 참가자가 세션을 떠난 후에 도착하는 참가자를 포함함)에게 모든 메시지 데이터를 신뢰성 있게 전송할 수 있도록 하면서도, 참가자들이 그 세션에 자유로이 드나들 수 있도록 해 주어야 한다.
도 1은 본 발명의 소정의 태양이 구현될 수 있는 범용 디지털 컴퓨팅 환경을 도시하는 개략도.
도 2는 본 발명의 소정의 태양이 구현될 수 있는 펜 기반의 개인용 컴퓨팅(PC) 환경을 도시하는 도면.
도 3a 및 도 3b는 본 발명의 일부 실시예들에 따른 시스템 및 방법에서 사용될 수 있는 P2P 접속 네트워크를 일반적으로 도시하는 도면.
도 4는 본 발명의 일부 실시예들에 따른 시스템 및 방법을 이용하여 여러 개별 참가자가 유지할 수 있는 데이터 및 정보를 일반적으로 도시하는 도면.
도 5a 내지 도 6e는 본 발명의 일부 실시예들의 다양한 기능을 설명하는 데 유용한 본 발명에 따른 시스템 및 방법을 통해 전송 가능한 데이터 메시지들의 예를 도시하는 도면.
도 7은 본 발명에 따른 시스템 및 방법의 일부 실시예들에 있어 유용한, 유출되는 동보 데이터 메시지(broadcast data message)를 위한 데이터 구조의 예를 나타내는 도면.
도 8은 본 발명에 따른 소정의 방법의 예를 도시하는 흐름도.
도 9는 본 발명에 따른 시스템 및 방법의 일부 실시예들에서 유용한, 유출되는 사용자 식별자 메시지를 위한 데이터 구조의 예를 나타내는 도면.
도 10은 세션에 대한 참가자로서 새로운 사용자를 추가하는 방법의 예를 도시하는 흐름도.
도 11은 세션에 대한 참가자로서 새로운 사용자를 추가하는 다른 방법의 예를 도시하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
700 : 데이터 구조
702 : 사용자 ID
704 : 메시지 ID
706 : 세션 정보
708 : 세션 ID
710 : 참가자 ID
712 : 메시지 히스토리
본 발명의 태양은 P2P 네트워크 상에서, 선택적으로는 비상주 접속을 통하여, 공동 작업 세션(예컨대 "전자 화이트보드" 세션)의 참가자에 대하여 메시지를 통신하는 데 유용한 시스템, 방법 및 데이터 구조에 관한 것이다. 일 태양에 있어서, 본 발명은 데이터가 유실되거나 참가자간의 접속이 끊어지는 일 없이, 심지어는 예컨대 접속의 비상주성으로 인해 참가자들이 세션을 나가거나 세션에 대한 접속을 잃는 경우에도, 참가자가 용이하게 세션을 드나들 수 있도록 해 주는 데이터 전송용 세션을 설정하기 위한 방법 및 시스템에 관한 것이다. 다른 태양에 있어서, 본 발명은 진행 중인 세션에서 이전에 전송되었던 데이터에 참가자들이 용이하게 액세스하여 이를 파악할 수 있도록 해 주는 시스템 및 방법에 관한 것이다. 다양한 데이터 구조 또한 메시지 통신을 위한 다양한 시스템 및 방법에 있어 유용하다. 이러한 데이터 구조는 세션 내의 참가자들에 대하여 메시지 페이로드(payload)를 동보(broadcast)하는 데 사용될 수 있다. 다른 유용한 데이터 구조는, 선택적으로는 복수의 참가자가 포함된 데이터 전송 세션에 사용자가 관여된 경우에, 사용자의 식별 데이터를 전 네트워크에 걸쳐 동보하기 위한 데이터를 포함할 수 있다. 메시지 페이로드 및 사용자 식별 데이터를 동보함으로써, 네트워크 상의 다른 사용자들은 진행중인 세션에 자신들이 관여될 것인지 및 그 세션에 참여할 것인지 여부를 용이하게 결정할 수 있다.
본 발명의 상술한, 그리고 그 밖의 목적, 특징 및 장점은 첨부된 도면과 관련하여 이하의 상세한 설명을 참조함으로써 손쉽게 분명하고 완전히 이해된다.
앞서 설명한 바처럼, 본 발명의 태양은 무선 접속과 같은 비상주 접속을 이용하여 접속된 작업 장소간의 통신을 포함하는, P2P 네트워크 상에서의 메시지 통신을 위한 시스템, 방법 및 데이터 구조에 관한 것이다. 이하의 설명은 독자의 편의를 위해 몇 개의 소절로 나누어진다. 이하의 소절에는 용어, 본 발명의 다양한 태양에 관한 일반적인 설명, 하드웨어의 예시, 본 발명에 따른 시스템, 방법 및 데이터 구조의 예시 및 결론이 포함된다.
I. 용어
이하의 용어가 본 명세서에서 사용된다.
"메시지" 또는 "메시지 데이터", 또는 "데이터 메시지"라는 용어는 일반적으로 본 명세서에서 서로 바뀌어 사용된다. 이들 용어는 한 머신으로부터 전송되어 다른 임의의 머신에 의해 수신되는 임의의 데이터를 의미한다. "메시지 페이로드"라는 용어는 일반적으로 세션 내의 다른 사용자에게 전송될 정보를 포함하는 데이터 메시지의 일부를 지칭한다.
"사용자"는 종래의 서브넷, 인트라넷, 또는 인터넷 접속과 같은 소정의 방식으로 통신 네트워크에 접속하는 자를 의미한다. 상기 접속은 유선 접속, 무선 접속과 같은 통상적인 접속, 또는 본 기술 분야에 알려진 임의의 통상적인 접속일 수 있다.
"세션"은 통신 네트워크 상에서 서로 통신하는 복수의 네트워크 사용자의 모임을 의미한다. 세션에 관여하는 사용자들은 공통의 서브넷, 상이한 서브넷, 또는 이들 모두에 위치할 수 있다. 통신은 시각적, 청각적, 또는 이들의 조합일 수 있다.
"참가자"는 세션에 관여된 사용자를 의미한다.
"머신"은 통신 네트워크 상에서 통신하는 데 사용되는 임의의 장치를 의미한다. "머신"은 컴퓨터 터미널(computer terminal) 또는 워크스테이션(workstation), 데스크톱 PC(desktop PC), 펜 또는 스타일러스(stylus) 기반의 PC, 노트북 및/또는 랩톱 컴퓨터(laptop computer), 팜톱(palmtop), PDA, 전화 등을 포함하지만, 이에 한정되는 것은 아니다.
"컴퓨터 판독 가능 매체"는 컴퓨터 시스템 상에서 사용자가 액세스할 수 있는 임의의 가용 매체를 의미한다. 예컨대 "컴퓨터 판독 가능 매체"는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되지 않는다. "컴퓨터 저장 매체"는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동형 및 고정형 매체를 포함한다. "컴퓨터 저장 매체"는 RAM, ROM, EEPROM, 플래시 메모리 또는 그 밖의 메모리 기술에 의한 것, CD-ROM, DVD 또는 그 밖의 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 그 밖의 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터가 액세스할 수 있는 그 밖의 임의의 매체를 포함하지만, 이에 한정되는 것은 아니다. "통신 매체"는 통상적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 그 밖의 데이터를 반송파나 그 밖의 전송 메커니즘과 같은 변조된 데이터 신호 내에 수록한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하기 위한 방식으로 설정 또는 변경된 특성을 하나 이상 갖는 신호를 의미한다. 예컨대, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 그리고 음향,RF, 적외선 및 그 밖의 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 상기한 것들 중 임의의 것의 조합도 또한 "컴퓨터 판독 가능 매체"에 포함되어야 한다.
II. 본 발명의 다양한 태양에 관한 일반적인 설명
본 발명의 태양은 P2P 네트워크 상에서 메시지를 통신하는 데 유용한 시스템, 방법 및 데이터 구조에 관한 것이다. 이러한 시스템, 방법 및 데이터 구조는 예컨대 비상주 접속을 통하여 공동 작업 세션의 참가자에 대하여 P2P 방식으로 메시지를 통신하는 데 사용될 수 있다.
본 발명의 특정 태양 중 또 다른 하나는, 네트워크 상에서의 데이터 전송 방법에 관한 것이다. 본 발명의 이러한 태양의 일례는 (a) 데이터 전송을 위한 것으로서, 복수의 참가자를 포함하는 세션을 설정하는 단계와, (b) 동보되는 참가자 식별자, 메시지 식별자, 세션 정보 및 메시지 페이로드를 적어도 포함하는 메시지를 세션에 관여하는 참가자로부터 동보하는 단계와, (c) 동보되는 메시지를 수신하는 사용자가 상기 세션의 참가자인지 여부를 판정하는 단계와, (d) 사용자가 상기 세션의 참가자인 경우 그 사용자에 대한 메시지를 처리하는 단계를 포함한다. 사용자가 상기 세션의 참가자인지 여부를 판정하는 단계는, 본 발명의 적어도 일부 실시예들에 있어서, (a) 상기 세션에서 상기 사용자가 활동중인지 여부를 판정하는 단계, 또는 (b) 세션 참가자 리스트에 상기 사용자가 포함되어 있는지 여부를 판정하는 단계를 포함할 수 있다. 참가자는 다른 참가자에 대한 데이터 전송에 악영향을 미치지 않고 자유로이 세션에 들어오고/들어오거나 자유로이 나갈 수 있다.
본 발명에 따른 방법의 일부 실시예들에서, 사용자 또는 임의의 참가자에 대한 새로이 획득한 메시지를 처리하기에 앞서, 상기 방법은 상기 사용자 또는 참가자가 상기 세션에서의 이전의 메시지를 모두 수신하였는지 여부를 판정하는 단계를 더 포함한다. 수신되지 않은 임의의 메시지가 발견되는 경우, 이들 메시지는 상기 사용자 또는 참가자를 위해 획득될 수 있다. 상기 미수신 메시지는 임의의 적합한 방식으로 획득될 수 있다. 예컨대 이들 메시지는, 선택적으로는 상기 메시지(들)를 필요로 하는 사용자 또는 참가자가 누락된 메시지들에 대한 요청을 전송한 후에, 상기 세션에 있는 다른 참가자로부터의 동보를 통해 획득될 수 있다. 본 발명의 이러한 태양의 일부 실시예들에 있어, 세션 참가자들은 누락 메시지 요청이 수신된 경우에 이전의 미수신 메시지 중 하나 이상을 전송할지 여부를 무작위로 결정한다. 메시지 요청 및 누락 메시지 전송은 사용자가 메시지 히스토리(history)에 있는 모든 메시지를 수신할 때까지 반복될 수 있다.
사용자가 세션의 참가자인지 여부를 판정하는 단계는 본 발명으로부터 벗어나지 않고서도 임의의 적합한 방식에 의해 수행될 수 있다. 예컨대 사용자의 신원(예컨대 ID 번호)은 세션에 참가하도록 인가된 모든 사용자들의 마스터 목록에 대하여 체크될 수 있다. 다른 예로서, 기존의 한 명 이상의 참가자는, 선택적으로는 상기 세션에 있는 한 명 이상의 참가자에게 새로운 사용자가 세션에 추가되어야 할지 여부에 대한 문의가 이루어진 후에, 새로운 사용자가 네트워크상에 존재 또는 활동중이고, 그 사용자가 세션에 추가될 수 있다는 알림(indication)을 수신할 수 있다. 또 다른 예로서, 새로운 사용자가 네트워크 상에 존재 또는 활동중이라는알림을 수신한 후, 상기 방법은 상기 새로운 사용자가 세션에 참여하도록 초청하는 단계(선택적으로는 상기 세션에 있는 적어도 한 명의 참가자에게 상기 초청이 발행되어야 하는지 여부를 문의한 후에 이루어짐) 및 상기 초청이 수락된 경우에만 그 사용자를 추가하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 태양은 진행중인 세션에 대한 액세스를 취득하기 위한 방법에 관한 것이다. 본 발명의 이러한 태양의 일례는 (a) 메시지 데이터의 송신 및 수신이 가능한 복수의 참가자를 포함하는 세션이 이루어지는 네트워크를 액세스하는 단계(상기 네트워크는 상기 세션에서 활동중이 아닌 사용자에 의해 액세스됨)와, (b) 상기 사용자를 상기 세션에 참가자로서 추가할지 여부를 결정하는 단계와, (c) 상기 사용자가 상기 세션에 참가자로서 추가되는 경우, 상기 세션동안 이전에 전송되었던 모든 메시지들을 상기 사용자에게 전송하는 단계를 포함한다. 상기 사용자를 상기 세션에 추가시킬 지 여부를 결정하는 것은 앞서 설명한 다양한 방식들을 포함하는 임의의 적합한 방식으로 달성될 수 있다.
본 발명의 추가적인 태양은 세션의 복수의 참가자들 사이에서 메시지들을 통신하는 방법에 관한 것이다. 본 발명의 이러한 태양의 일례는 (a) P2P 방식으로 적어도 제1 참가 워크스테이션(participant workstation) 및 제2 참가 워크스테이션을 접속시키는 단계(각 참가 워크스테이션은 세션 내의 다른 참가 워크스테이션에게 P2P 방식으로 메시지 데이터를 동보하고, 세션 내의 다른 참가 워크스테이션으로부터 P2P 방식으로 동보된 메시지 데이터를 수신할 수 있음)와, (b) 상기 제1 참가 워크스테이션에 의해 제1 메시지를 동보하는 단계와, (c) 적어도 상기 제2 참가 워크스테이션에 의해 상기 제1 메시지를 수신하는 단계와, (d) 상기 제1 참가 워크스테이션으로부터 상기 제1 메시지가 동보되었을 때 이를 수신하지 않은, 세션 내의 적어도 하나의 다른 참가 워크스테이션에게 상기 제1 메시지를 상기 제2 참가 워크스테이션으로부터 동보하는 단계를 포함한다. 부가적으로, 본 발명의 이러한 태양들 중 적어도 일부 실시예들에서는, 새로운 참가 워크스테이션들이 세션에 추가될 수 있으며, 이러한 새로이 추가되는 워크스테이션들은 그 세션과 관여된 상태로 있는 참가 워크스테이션으로부터 그 세션에서의 종전의 메시지(그 세션을 떠난 워크스테이션으로부터의 메시지를 포함함)를 획득할 수 있다.
본 발명의 또 다른 태양은 네트워크 상의 복수의 참가자간의 데이터 전송과 관련된 세션 동안 네트워크를 통해 수신한 데이터를 처리하기 위한 시스템에 관한 것이다. 이러한 시스템은, 본 발명의 적어도 일부 실시예들에 있어서, (a) 동보되는 참가자 식별자, 메시지 식별자, 세션 정보 및 메시지 페이로드를 적어도 포함하는 동보된 메시지를 세션에 관여하는 참가자로부터 수신하도록 구성된 수신기와, (b) 메시지를 수신하는 네트워크 사용자가 세션의 참가자인지의 여부를 판정하고, 그 사용자가 세션의 참가자인 경우 메시지를 처리하도록 프로그래밍 및 구성된 프로세서를 포함할 수 있다. 적어도 일부 실시예들에 있어서, 상기 프로세서는 사용자가 세션의 참가자인지 여부를, (a) 사용자가 세션에서 활동중인 참가자인지 여부를 판정하는 단계, 또는 (b) 사용자가 세션에 대한 참가자 리스트에 포함되어 있는지 여부를 판정하는 단계 중 적어도 하나에 의해 판정할 수 있다. 메시지 처리에 앞서, 프로세서는 사용자가 상기 세션에서의 이전의 메시지를 모두 수신하였는지여부를 더 판정할 수 있고, 어느 메시지도 수신되지 않은 경우에는, 동보 시스템이 활성화되어 세션에서 이전에 수신되지 않은 메시지에 대한 요청을 전송할 수 있다.
본 발명의 또 다른 태양은 앞서 설명한 발명에 따른 방법을 포함하는 다양한 방법을 수행하는 데 유용한 워크스테이션과 관련된 것이다. 본 발명의 이러한 태양에 따른 워크스테이션의 일부 실시예들은 (a) 메시지 데이터의 송신 및 수신이 가능한 복수의 참가자를 포함하는 세션이 이루어지는 네트워크를 액세스하도록 구성된 접속 시스템과, (b) 워크스테이션의 사용자가 세션의 참가자인지 여부를 판정하도록 프로그래밍 및 구성된 프로세서와, (c) 사용자가 세션의 참가자인 것으로 판정된 경우 그 세션 동안 전송되는 메시지 데이터를 수신하도록 구성된 메시지 수신 시스템을 포함할 수 있다.
본 발명의 다른 실시예는 세션 내의 복수의 사용자들간의 메시지 통신을 위한 시스템에 관한 것이다. 이러한 시스템은, 본 발명의 적어도 일부 실시예들에서는, P2P 방식으로 접속된 복수의 참가 워크스테이션을 포함할 수 있고, 이 경우 상기 참가 워크스테이션들 중 적어도 일부는, 세션 내의 다른 참가 워크스테이션에게 네트워크를 통해 메시지 데이터를 동보할 수 있고, 세션 내의 다른 참가 워크스테이션으로부터 동보된 메시지를 네트워크를 통해 수신할 수 있다. 일부 실시예들에 따른 시스템에 있어서, 여러 개별 참가 워크스테이션들이 자유로이 세션을 나갈 수 있고, 나가는 참가 워크스테이션이 세션을 나가기 전에 동보한 메시지 데이터는 필요한 경우 이전에 그 메시지 데이터를 수신하였던 나머지 참가 워크스테이션으로부터 다른 참가 워크스테이션들이 획득할 수 있다. 기존 세션을 떠나는 것에 더하여, 새로운 참가 워크스테이션들이 자유로이 세션에 들어올 수 있고, 임의의 이전의 메시지 데이터(세션을 떠난 워크스테이션으로부터의 메시지 데이터를 포함)를 세션에 남아 있는 하나 이상의 워크스테이션으로부터 획득할 수 있다.
본 발명의 태양에 따른 다른 실시예에서는, 서브넷 상의 임의의 머신 및/또는 세션에 능동적으로 참가하지는 않더라도 세션으로부터 유입되는 메시지 데이터를 수신하는 임의의 머신은 유입 메시지 데이터를 수신, 기입(log) 및 유지할 수 있다. 따라서 본 발명의 적어도 일부 실시예들에서는, 특정 세션에 관여하지 않은 머신이더라도, 세션에 새로이 들어오는 참가자에 대한 데이터의 재동보(rebroadcast) 및/또는 세션에서의 누락 메시지 요청에 대한 응답을 할 수 있다.
본 발명의 태양은 또한 세션의 참가자에게 메시지 데이터를 전송하기 위한 데이터 구조를 수록한 컴퓨터 판독 가능 매체에 관한 것이다. 일부 실시예들에 있어서, 이러한 데이터 구조는 (a) 메시지 ID를 나타내는 데이터를 포함하는 제1 데이터 필드와, (b) 세션 정보를 나타내는 데이터를 포함하는 제2 데이터 필드와, (c) 메시지 페이로드를 나타내는 데이터를 포함하는 제3 데이터 필드를 포함할 수 있다. 본 발명의 적어도 일부 실시예들에 있어서, 세션 정보를 나타내는 데이터는 세션 ID, 세션 참가자 리스트 및 세션 메시지 히스토리를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버(member)를 나타내는 데이터를 포함할 수 있다. 또 다른 실시예에서, 데이터 구조는 메시지 데이터를 동보하는 참가자의 식별자를 나타내는 데이터를 포함하는 제4 데이터 필드를 포함할 수 있다.
본 발명에 따른 시스템 및 방법 중 적어도 일부에 있어 유용한 데이터 구조의 또 다른 예는, 선택적으로는 복수의 참가자를 포함하는 데이터 전송 세션에 사용자가 관여되는 경우에, 사용자의 식별 데이터를 네트워크에 전송하기 위한 데이터 구조를 포함할 수 있다. 적어도 일부 실시예에서, 이러한 데이터 구조는 (a) 사용자의 신원을 나타내는 데이터를 포함하는 제1 데이터 필드, (b) 데이터 전송 세션과 관련된 식별 정보를 나타내는 데이터를 포함하는 제2 데이터 필드 및 (c) 세션의 사용자 히스토리를 나타내는 데이터를 포함하는 제3 데이터 필드를 포함할 수 있다. 데이터 전송 세션과 관련된 식별 정보를 나타내는 데이터는 예컨대 세션 ID 및 세션 참가자 리스트를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버를 나타내는 데이터를 포함할 수 있다. 사용자의 히스토리를 나타내는 데이터는 예컨대 세션 ID, 세션에 있는 사용자의 워크스테이션에 의해 처리되는 적어도 최후의 메시지를 식별하는 메시지 ID 리스트 및 세션의 사용자에 의해 전송되는 적어도 최후의 메시지를 식별하는 메시지 ID 리스트를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버를 나타내는 데이터를 포함할 수 있다.
본 발명에 따른 다양한 시스템, 방법 및 데이터 구조는 본 발명으로부터 벗어남이 없이 임의의 메시지 데이터를 통신하는 데 사용될 수 있다. 일부 실시예들에 있어, 메시지 데이터는 전자적 잉크 데이터(electronic ink data), 텍스트 데이터(textual data), 그래픽스(graphics) 등을 포함할 수 있다. 다른 실시예에 있어서, 세션은 복수의 세션 참가자들이 메시지 데이터를 추가, 삭제, 또는 수정할 수 있는 "가상 화이트보드" 세션(예컨대 각 참가자의 개별 컴퓨터 스크린은 메시지 데이터의 렌더링을 표시할 수 있고, 참가자들은 데이터에 대한 추가, 데이터로부터의 삭제 및/또는 데이터의 수정을 할 수 있고, 한 참가자에 의한 추가, 삭제 및/또는 수정은 또한 다른 참가자의 스크린 상에 나타나게 됨)의 형태일 수 있다. 또한, 임의의 적합한 프로토콜이 여러 세션 참가자들에게 메시지 데이터를 송신하는 데 사용될 수 있으며, 본 발명의 일부 실시예들에 있어, 상기 메시지는 UDP(User Datagram Protocol) 및/또는 TCP(Transfer Control Protocol)을 이용하여 동보된다. 이하의 설명은 본 발명에 따른 시스템, 방법 및 컴퓨터 판독 가능 매체에 대하여 보다 상세히 기술하고 있다.
III. 하드웨어의 예시
도 1은 본 발명의 다양한 태양을 구현하는 데 사용될 수 있는 범용 디지털 컴퓨팅 환경의 개략도이다. 도 1에서, 컴퓨터(100)는 처리 유닛(110), 시스템 메모리(120) 및 시스템 버스(130){시스템 메모리(120)를 포함하는 여러 시스템 구성 요소를 처리 유닛(110)에 연결시킴}를 포함한다. 시스템 버스(130)는 메모리 버스 또는 메모리 제어기, 주변 버스(peripheral bus) 및 다양한 버스 아키텍처 중 임의의 것을 이용한 로컬 버스(local bus)를 포함하는 여러 유형의 버스 구조들 중 임의의 것일 수 있다. 시스템 메모리(120)는 ROM(Read Only Memory; 140) 및 RAM(Random Access Memory; 150)을 포함할 수 있다.
예컨대 시동중에 컴퓨터(100) 내의 요소들간의 정보 전송을 돕는 기본적인 루틴(routine)을 포함하는 BIOS(Basic Input/Output System; 160)가 ROM(140)에 저장된다. 컴퓨터(100)는 하드 디스크(도시되지 않음)에 대한 읽기 및 쓰기를 위한하드 디스크 드라이브(170), 이동형 자기 디스크(190)에 대한 읽기 및 쓰기를 위한 자기 디스크 드라이브(180) 및 CD-ROM이나 그 밖의 광 매체와 같은 이동형 광 디스크(192)에 대한 읽기 및 쓰기를 위한 광 디스크 드라이브(191)를 포함할 수 있다. 하드 디스크 드라이브(170), 자기 디스크 드라이브(180) 및 광 디스크 드라이브(191)는 하드 디스크 드라이브 인터페이스(192), 자기 디스크 드라이브 인터페이스(193) 및 광 디스크 드라이브 인터페이스(194)에 의해 각각 시스템 버스(130)에 접속된다. 이들 드라이브 및 이들의 관련 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 개인용 컴퓨터(100)를 위한 그 밖의 데이터에 대한 비휘발성 저장소를 제공한다. 본 기술 분야의 당업자는 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지(Bernoulli cartridge), RAM, ROM 등의 컴퓨터가 액세스할 수 있는 데이터를 저장할 수 있는 그 밖의 유형의 컴퓨터 판독 가능 매체도 예시 동작 환경에서 또한 사용될 수 있음을 알 수 있을 것이다.
운영 체제(195), 하나 이상의 애플리케이션 프로그램(196), 기타 프로그램 모듈(197) 및 프로그램 데이터(198)를 포함하는 다수의 프로그램 모듈은 하드 디스크 드라이브(170), 자기 디스크(190), 광 디스크(192), ROM(140), 또는 RAM(150)에 저장될 수 있다. 사용자는 명령어 및 정보를 키보드(101) 및 포인팅 장치(마우스 등)(102)와 같은 입력 장치를 통해 컴퓨터(100)에 입력할 수 있다. 다른 입력 장치(도시되지 않음)에는 마이크, 조이스틱, 게임 패드, 위성 접시 안테나, 스캐너 등이 포함될 수 있다. 이들 입력 장치 및 그 밖의 입력 장치들은 종종 시스템 버스(130)에 연결된 직렬 포트 인터페이스(106)를 통해 처리 유닛(110)에 접속되지만, 이들은 또한 병렬 포트, 게임 포트, 또는 USB(Universal Serial Bus) 등과 같은 다른 인터페이스에 의해서도 접속될 수 있다. 또한 이들 장치는 적합한 인터페이스(도시되지 않음)를 통해 시스템 버스(130)에 직접 연결될 수도 있다.
모니터(107) 또는 그 밖의 유형의 디스플레이 장치가 또한 비디오 어댑터(108)와 같은 인터페이스를 통해 시스템 버스(130)에 접속될 수 있다. 모니터(107)에 부가하여, 개인용 컴퓨터는 통상적으로 스피커나 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다. 일 실시예에서, 필기 입력을 디지털로 포착하기 위한 펜 디지타이저(pen digitizer; 165) 및 부속 펜 또는 스타일러스(166)가 제고된다. 비록 펜 디지타이저(165) 및 직렬 포트 인터페이스(106)간의 접속이 도 1에 도시되어 있지만, 실제로 펜 디지타이저(165)는 처리 유닛(110)에 직접 연결되거나, 또는 본 기술 분야에 알려진 바처럼 병렬 포트나 다른 인터페이스 등을 통한 임의의 적합한 방식으로 처리 유닛(110) 및 시스템 버스(130)에 연결될 수 있다. 또한, 비록 디지타이저(165)가 도 1의 모니터(107)로부터 떨어져 있는 것으로 도시되어 있지만, 디지타이저(165)의 가용 입력 영역은 모니터(107)의 디스플레이 영역과 공존할 수 있다. 또한 디지타이저(165)는 모니터(107)와 결합되거나, 또는 모니터(107)를 덮거나 또는 달리 부착되는 별개의 장치로서 존재할 수도 있다.
컴퓨터(100)는 원격 컴퓨터(109)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(109)는 서버, 라우터(router), 네트워크 PC, 피어 장치(peer device) 또는 그 밖의 일반적인 네트워크 노드(node)일 수 있으며, 통상적으로 컴퓨터(100)에 관하여 앞서 설명한 요소들 중 다수 또는 전부를 포함하지만, 도 1에는 편의상 메모리 저장 장치(111)만을 도시하였다. 도 1에 도시된 논리적 접속에는 LAN(Local Area Network; 112) 및 WAN(Wide Area Network; 113)이 포함된다. 이러한 네트워킹 환경은 유선 및 무선 접속 모두를 이용하는 사무실, 기업 차원의 컴퓨터 네트워크, 인트라넷 및 인터넷에 있어 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(100)는 네트워크 인터페이스 또는 어댑터(114)를 통해 LAN(112)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 개인용 컴퓨터(100)는 통상적으로 모뎀(115) 또는 인터넷과 같은 WAN(113) 상에서 통신 링크를 설정하기 위한 그 밖의 수단을 포함한다. 컴퓨터(100)에 내장 또는 외장될 수 있는 모뎀(115)은 직렬 포트 인터페이스(106)를 통하여 시스템 버스(130)에 접속될 수 있다. 네트워크 환경에 있어서, 개인용 컴퓨터(100)에 대하여 도시된 프로그램 모듈들 또는 이들의 일부는 원격 메모리 저장 장치에 저장될 수 있다.
도시된 네트워크 접속은 예시이며, 컴퓨터간의 통신 링크를 설정하기 위한 그 밖의 기술도 사용될 수 있음을 이해할 수 있을 것이다. TCP/IP, 이더넷, FTP, HTTP, UDP 등의 다양한 잘 알려진 임의의 프로토콜들의 존재가 전제되어, 시스템은 사용자가 웹 기반의 서버로부터 웹 페이지를 검색할 수 있도록 해 주는 사용자-서버 구성으로 동작할 수 있다. 다양한 종래의 웹 브라우저(web browser)들 중 임의의 것을 이용하여 웹 페이지상의 데이터를 디스플레이 및 조작할 수 있다.
도 1의 환경이 예시적인 환경을 도시하고 있지만, 다른 컴퓨팅 환경 또한 이용될 수 있음을 알아두어야겠다. 예컨대, 본 발명의 하나 이상의 실시예는 도 1에 도시하고 앞서 설명한 다양한 태양들 전부보다 적은 태양을 갖는 환경을 사용할 수 이으며, 이들 태양은 당업자에게 자명한 다양한 조합 또는 부조합(subcombination)에서 나타날 수 있다.
도 2는 본 발명의 다양한 태양에 따라 사용될 수 있는 펜 기반의 개인용 컴퓨터(PC)(201)를 도시하고 있다. 도 1의 시스템의 특징, 서브시스템 및 기능들 중 임의의 것 또는 전부가 도 2의 컴퓨터에 포함될 수 있다. 펜 기반의 개인용 컴퓨터 시스템(201)은 복수의 윈도우들(203)이 디스플레이되는, 예컨대 LCD 스크린과 같은 디지타이징 플랫 패널 디스플레이(digitizing flat panel display) 등의 대형 디스플레이 면(202)를 포함한다. 적합한 디지타이징 디스플레이 패널의 예에는 Mutoh Co. 또는 Wacom Technology Co.의 펜 디지타이저와 같은 전자기 펜 디지타이저가 포함된다. 다른 유형의 펜 디지타이저, 예컨대 광 디지타이저도 사용될 수 있다. 펜 기반의 컴퓨팅 시스템(201)은 데이터의 조작, 텍스트의 입력 및 통상적인 컴퓨터 애플리케이션 작업(예컨대 스프레드시트나 워드 프로세싱 프로그램 등의 생성, 편집 및 수정 등)의 실행을 위해 스타일러스(204)를 이용하여 만들어지는 제스처(gesture)를 해석한다.
스타일러스(204)에는 버튼들이 장착되거나, 또는 그 성능을 보강하기 위한 다른 기능이 장착될 수 있다. 일 실시예에서, 스타일러스(204)는 "연필" 또는 "펜"으로서 구현될 수 있으며, 이 경우 한 쪽 끝은 기록부를 구성하고 다른 한 쪽 끝은 "지우개" 부분(디스플레이를 가로질러 움직이면, 디스플레이 상에 전자 잉크의 지워질 부분을 나타냄)을 구성할 수 있다. 다른 유형의 입력 장치, 예컨대 마우스, 트랙볼, 키보드 등이 또한 사용될 수 있다. 추가적으로, 사용자의 손가락 자체도 접촉 감지(touch-sensitive) 또는 접근 감지(proximity-sensitive) 디스플레이 상에 디스플레이되는 이미지 부분을 선택 또는 지시하는 데 사용될 수 있다. 결과적으로, 본 명세서에서 사용되는 "사용자 입력 장치"라는 용어는 넓게 정의되며, 잘 알려진 입력 장치들의 여러 가지 변형을 포괄하도록 한 것이다.
본 발명의 일부 실시예들에 있어, 복수의 사용자는 P2P 네트워크를 통해 서로 통신한다. 이들 사용자는, 일부 실시예에 있어, 모든 참가자가 데이터를 보고 조작할 수 있는 방식으로 한 참가자로부터의 데이터 메시지가 다른 참가자에게 통신되는 세션(예컨대 "전자 화이트보드" 세션 또는 다른 유형의 공동 작업 세션)의 참가자들일 수 있다.
도 3a 및 도 3b는 본 발명의 일부 실시예에서 일어날 수 있는 바와 같이, 참가자 A 내지 J가 서로 통신하는 예를 나타낸 도면이다. 본 발명에 따른 시스템 및 방법의 일부 실시예들에 있어, 참가자 A 내지 J가 모두 공통의 서버에 접속되거나 또는 참가자의 워크스테이션 중 하나를 사실상의 서버로서 지정하는 대신, 참가자 A 내지 J는 예컨대 도 1에 도시된 것과 같은 범용 컴퓨터를 갖는 워크스테이션을 이용하여 P2P 네트워크를 통해 통신한다. 이러한 방식의 통신은 본 기술 분야에 알려진 다양한 종래의 방식을 포함한 임의의 적합한 방식으로 진행될 수 있다. 도시된 예에서, 각 참가자는 자신의 메시지 데이터를 P2P 네트워크를 통해 전송함으로써(예컨대 동보 또는 유도 전송에 의함) 다른 참가자들이 그 데이터를 수신하도록 한다. 도 3a는 참가자 A가 데이터 메시지를 참가자 B 내지 J에게 동보하는 예를 나타내고 있다. 그 후 도 3b에서 참가자 C가 데이터 메시지를 참가자 A, B 및 D 내지 J에게 동보하였다. 이러한 동일한 방식으로, 네트워크 상의 모든 참가자 A 내지 J(그리고 네트워크의 실제 모든 사용자)는 네트워크의 다른 참가자(및 사용자들)로부터 통신을 송수신할 수 있다.
임의의 적합한 시스템 또는 프로토콜이 본 발명으로부터 벗어남이 없이 네트워크의 참가자들 및 사용자들간의 메시지 전송에 사용될 수 있다. 예컨대, 메시지 데이터는 TCP 또는 UDP를 사용하는 네트워크를 통해 세션 내의 여러 참가자에게로 향할 수 있다. TCP는 공통의 서브넷 상의 사용자 및 상이한 서브넷 상에 위치한 사용자들에 대한 데이터 패킷의 순차적 전달(예컨대 인터넷 또는 다른 통신 네트워크 상에서의 전달)을 보증한다는 점에서 TCP 메시지 전송은 장점을 갖는다. UDP는 메시지 전달 또는 순차적 메시지 전달을 보증하지 않는다.
다른 실시예에서, 본 발명의 일부 실시예들에 따른 시스템 및 방법은 UDP의 동보 기능을 이용할 수 있고, 소정의 서브넷 상에 있는 모든 사용자에게 메시지를 동보할 수 있다(TCP는 동보 전송을 지원하지 않음). 메시지 데이터가 세션의 참가자 리스트와 함께 인코딩되는 경우, 네트워크상의 사용자들은 유입 메시지 데이터를 살펴볼 수 있고, 그들이 그 메시지 데이터를 포함하는 세션의 참가자인지 여부를 판정할 수 있으며, 그들이 참가자인 경우 세션으로의 참가 및/또는 메시지 페이로드의 처리를 할 수 있다. 이러한 방식으로 데이터 전송을 위하여 UDP 동보 메시지를 이용하는 것에 관하여는 이하 상세히 논하기로 한다.
이러한 유형의 UDP 동보는 공통의 서브넷 상에 위치한 사용자들에 대한 전송으로 한정된다. 그러나 브리징(bridging) 시스템 및 방법을 이용하여 본 명세서에서 설명된 임의의 UDP 동보 메시지를 다른 서브넷 상의 사용자에게 브리징하는 데 사용될 수 있다. 본 발명에서 벗어남이 없이 임의의 적합한 브리징 시스템 또는 방법이 사용될 수 있으나, 적합한 브리징 시스템 및 방법이 Philip Su 및 Robert Jarett의 2003년 4월 24일자 미국 특허 출원, "Bridging Subnet Broadcasts Across Subnet Boundaries"(대리인측 참조 번호 제003797.00507호)에 기술되어 있다. 상기 출원은 본 명세서에 그 전체가 참조로서 인용된다.
그러나 앞서 설명한 바처럼, UDP 동보는 UDP 프로토콜이 모든 사용자에 대한 메시지 데이터 패킷의 전달 및/또는 순차적 전달을 보증하지 않는다는 점에서 한계가 있다. 그러나 본 발명에 따른 시스템 및 방법의 일부 실시예들의 경우, 참가자가 누락한 메시지가 있는지 여부를 판정하기 위한 시스템 및 방법을 제공하고, 원래 전송되었을 때에 이를 수신하지 않은 사용자들에게 이러한 누락된 메시지가 재전송될 수 있도록 하는 방식을 제공함으로써 이러한 한계를 극복하였다. 본 발명의 이러한 태양은 또한 늦게 세션에 참여한 사용자들 또는 세션으로부터 우연히 탈락된 사용자들이, 이전에 세션 도중 전송되었던 임의의 누락된 메시지 데이터를 용이하게 파악 및 수신할 수 있도록 해 준다. 본 발명의 이러한 태양들 또한 이하 더욱 상세히 기술된다.
IV. 본 발명에 따른 시스템, 방법 및 데이터 구조의 예시
A. 일부 실시예들에서 유지되는 데이터
도 4는 본 발명에 따른 시스템 및 방법의 일부 실시예들에 있어, 사용자 워크스테이션 또는 그 밖의 적합한 저장 시스템에 의해 유지되는 정보 및 데이터(400)의 일부를 일반적으로 도시한 도면이다. 각 사용자 및/또는 컴퓨터 워크스테이션은 사용자 및/또는 워크스테이션 하드웨어를 네트워크상의 다른 사용자에게 식별해 주는 고유의 식별 번호(402)에 의해 식별된다. 이러한 사용자 식별 번호는 컴퓨터 시스템 및/또는 하드웨어 자체에 로그인한 자를 특정하게 식별할 수 있다.
각 사용자는 잠재적으로 도 4에 참조 번호 404a(세션 1) 내지 404n(세션 n)에 의해 도시된 임의의 수의 상이한 공동 작업 세션에 관여될 수 있다. 세션(404a 내지 404n) 각각은 고유 식별 번호(도 4에서 406a 내지 406n)에 의해 식별될 수 있으며, 워크스테이션 또는 다른 저장 시스템은 각 세션에 대한 개별적인 참가자 리스트(도 4의 408a 내지 408n)를 유지할 수 있다. 어떠한 세션에 대한 참가자 리스트(408a 내지 408n)는 그 세션에 관여한 각 참가자 및/또는 그 세션에 참여하도록 인가된 각 사용자에 대한 고유 사용자 ID 번호(402)를 단지 포함할 수 있다.
각 세션은 또한 세션에 관여된 메시지의 목록을 포함할 수도 있다. 도 4에서, 세션 1(404a)에 대한 메시지에는 참조 번호 410a 내지 410m이 할당되고, 세션 n(404n)에 대한 메시지에는 참조 번호 420a 내지 420k가 할당된다. 특정한 세션에 관여될 수 있는 메시지의 수에는 제한이 없다. 각 메시지(410a 내지 410m 및 420a내지 420k)는 자신의 고유 식별자{메시지(410a 내지 410m)에 대하여 각각 식별자(412a 내지 412m), 메시지(420a 내지 420k)에 대하여 각각 식별자(422a 내지 422k)}를 포함한다. 또한 각 메시지(410a 내지 410m 및 420a 내지 420k)는 자신의 관련 메시지 페이로드{메시지(410a 내지 410m)에 대하여 각각 메시지 페이로드(414a 내지 414m), 메시지(420a 내지 420k)에 대하여 각각 메시지 페이로드(424a 내지 424k)}를 포함한다. 메시지 페이로드는 전자 잉크 스트로크(electronic ink stroke), 텍스트 정보, 그래픽 정보, 잉크나 텍스트 또는 그래픽의 삭제, 이동 및/또는 수정을 위한 명령어 등의 임의의 적합한 데이터를 포함할 수 있다.
사용자 ID(402), 세션 ID(406a 내지 406n) 및 메시지 ID(412a 내지 412m 및 422a 내지 422k)에 대한 고유 식별자는 본 기술 분야에 알려진 임의의 통상적인 방법으로 할당될 수 있다. 예컨대 전역 고유 식별 번호(GUID; Globally-Unique Identifier Number)들이 이들 값 각각에 할당될 수 있다.
B. 전자 화이트보드.
1. 독립 메시지
도 5a 내지 도 5j는 가상 또는 전자 화이트보드를 통한 세션, 또는 본 발명의 적어도 일부 실시예들에 따른 그 밖의 공동 작업 세션의 복수의 참가자들 사이에서 교환될 수 있는 데이터 메시지들의 예를 나타낸 도면이다. 도 5a 내지 도 5j 각각은 예시 전자 화이트보드(500)를 메시지 데이터가 교환됨에 따라 참가자의 워크스테이션의 디스플레이 스크린 상에 나타나는 모습에 따라 도시하고 있다. 참가자들은 앞서 도 3a 및 도 3b와 관련하여 기술한 방식으로 메시지 데이터를 전송하기 위한 UDP 동보 전송을 이용하여 P2P 네트워크 상에 함께 접속될 수 있다. 참가자들은 본 발명에서 벗어남이 없이 동일한 또는 상이한 장소에 위치할 수 있다.
도 5a 내지 도 5j는 전자 화이트보드 상에 "Break"라는 단어를 기록함에 있어 참가자 A 내지 C가 공동 작업을 하는 것과 관련된 전자 잉크 스트로크를 도시하고 있다. 적어도 참가자 A 내지 C는 그 단어가 전자 화이트보드에 기록되는 동안 그 세션에 일정 시간 관여하지만, 본 발명으로부터 벗어남이 없이 다른 참가자들이 그 세션에 참가할 수도 있고/있거나 참가자 A 내지 C가 종종 세션을 떠날 수 있다. 전자 잉크 데이터는 본 기술 분야에 알려진 종래의 방식을 포함한 임의의 적합한 방식으로 수집될 수 있고, 이 전자 잉크 데이터는 예컨대 도 4의 메시지 페이로드(414a 내지 414m)로서 제공될 수 있다. 메시지 페이로드는 잉크 스트로크 동안 펜이 마주치는 전자 화이트보드의 지점(또는 펜 방향 변경의 위치 및 새로운 펜 방향), 전자 화이트보드 상의 스트로크 위치, 스트로크 색상, 그 밖의 스트로크 특성(볼드체, 이탤릭체, 하이라이트, 밑줄 등) 등을 포함(이에 반드시 한정되지는 않음)하는 전자 잉크의 다양한 특징을 나타내는 데이터를 포함할 수 있다.
도 5a 및 도 5b에 도시한 바처럼, 참가자 A는 문자 "B"를 기록하기 위해 자신의 컴퓨터 워크스테이션 상에 나타나는 대로 전자 화이트 보드(500)를 이용하였다. 이 예에서 전자 펜의 각 스트로크는 적어도 하나의 개별 데이터 메시지(메시지 A1 및 메시지 A2)를 구성하며, 이는 참가자 A의 컴퓨터로부터 예컨대 UDP 동보, TCP 전송, 또는 그 밖의 적합한 전송 프로토콜을 통해 세션 내의 다른 참가자에게송신된다. 참가자 A가 문자 "B"를 완성한 후, 유사한 방식으로 참가자 B가 두 번의 잉크 스트로크를 이용하여 자신의 컴퓨터 워크스테이션 상에 문자 "r"을 기록하고, 이들 스트로크에 대응하는 (적어도) 두 데이터 메시지들(도 5c 및 도 5d의 메시지 B1 및 B2)을 다른 참가자들에게 송신한다. 그 후 참가자 C는 문자 "e"를 1회의 스트로크를 이용하여 기록하고, 이러한 스트로크를 나타내는 (적어도) 하나의 전자 데이터 메시지(도 5e의 메시지 C1)를 다른 참가자들에게 송신한다. 다음으로, 참가자 A가 2회의 스트로크를 이용하여 문자 "a"를 기록하고, 이러한 스트로크를 나타내는 (적어도) 두 데이터 메시지(도 5f 및 도 5g의 메시지 A3 및 A4)를 다른 참가자들에게 송신하며, 참가자 B는 3회의 스트로크를 이용하여 문자 "k"를 기록하고, 이러한 스트로크를 나타내는 (적어도) 세 데이터 메시지(도 5h, 도 5i 및 도 5j의 메시지 B3, B4 및 B5)를 다른 참가자들에게 송신한다.
도 5a 내지 도 5j에 도시된 예에서, 각 잉크 스트로크는 다른 스트로크에 독립적이며, 따라서 여러 데이터 메시지들을 각 참가자의 워크스테이션에 "시간 순서"로 전달하는 것은 이 예에서 중요한 문제가 되지 않는다{여기서 주목할 것은, 이 예에서 각 스트로크에 대한 메시지 데이터는 스트로크의 위치가 다른 스트로크의 위치에 의존하지 않도록 그 스트로크의 전자 화이트보드 상의 절대적 위치를 포함(선택적으로는 다른 참가자의 하드웨어에 있는 화이트보드의 위치, 해상도 등에 맞게 적합하게 매핑되도록 하는 정보와 함께)한다는 점임}. 달리 말해서, 참가자 B가 문자 "a"(메시지 A3 및/또는 A4)로부터 하나 이상의 스트로크를 수신하고/수신하였거나 자신이 문자 "k"를 기록하기 시작한 이후에 문자 "e"를 메시지 C1으로부터 수신한 경우라도 이는 문제가 되지 않는 다는 것이다. 스트로크는 각 참가자의 전자 화이트 보드상에 임의의 순서로 나타날 수 있으며, 최종 단어는 여전히 올바르게 표시될 것이다.
또한, 비록 도 5a 내지 도 5j에 도시된 예에서 각 스트로크가 별개의 데이터 메시지를 구성하는 것으로 도시되었지만, 반드시 필요한 것은 아니다. 임의의 수의 스트로크, 또는 단일 스트로크의 일부도 본 발명에서 벗어남이 없이 단일 데이터 메시지 내에 포함될 수 있다. 예컨대 원하는 경우, 문자 "B"를 기록하는 데 관여된 스트로크들(도 5a 및 도 5b)은 본 발명에서 벗어남이 없이 단일 데이터 메시지 내에서 다른 세션 참가자들에게 송신될 수 있다. 다른 예로서, 매우 긴 및/또는 복잡한 스트로크들은 본 발명에서 벗어남이 없이 다른 참가자들에 대한 전송을 위해 둘 이상의 데이터 메시지들로 분할될 수 있다.
2. 종속 메시지
그러나 일부 실시예들에 있어, 일부 참가자들은 다른 메시지들에 대하여 동작을 취하거나 또는 그에 의존하는 메시지를 송신한다. 예컨대, 참가자는 하나 이상의 기존의 잉크 스트로크, 텍스트, 그래픽 등의 색상, 하이라이트 정보, 이탤릭체 정보, 밑줄 정보, 볼드체 정보, 삭제 정보, 확대 정보, 축소 정보, 이동 정보, 복사 정보를 변경하거나, 또는 그 내용이나 특성에 대하여 그 밖의 소정의 변경을 행할 수 있다. 도 6a 내지 도 6e는 이러한 예를 도시하고 있다. 도 6a는 도 5a 내지 도 5j에서 기록된 바처럼 "Break"라는 단어로 시작한다. 참가자 A, B 및 C는 전자 화이트보드(600)상에서의 공동 작업을 이용하여 이 단어를 "Brake"라는 단어로 바꾸기로 결정하였다. 이러한 변경의 제1 단계는 도 6a 및 도 6b를 비교하여 도시되는 바처럼, 참가자 C가 문자 "e"(즉 도 6b로부터 메시지 C2, 또는 도 5e로부터 메시지 C1)를 잘라내기 위해 "오려두기(cut)" 기능을 사용하였다. 이러한 단계는 문자 "e"를 선택하는 소정의 적합한 방식(예컨대 올가미 또는 박스 선택)을 이용하고 예컨대 종래의 방식으로 오려두기 동작을 수행함으로써 참가자 C에 의해 수행될 수 있다. 그 대신, 문자 "e"는 종래의 지우기 기능을 이용하여 화이트보드로부터 지워질 수도 있다. 메시지 C2는 이러한 변경을 위하여 세션 내의 다른 참가자들에게 송신되었다. 따라서 이 예에서 메시지 C2는 메시지 C1에 의존한다(즉 오려두기 동작을 수행하는 메시지가 수행될 수 있으려면 그에 앞서 문자 "e"를 기록하는 메시지가 수신되어야 함).
공동 작업의 다음 단계에서, 참가자 A는 문자 "ak"를 문자 "Br"에 가까워지도록 이동시킨다(도 6c 참조). 마찬가지로, 이는 예컨대 선택 동작(예컨대 올가미 또는 박스 선택 등) 및 마우스, 펜, 또는 그 밖의 적합한 사용자 입력 장치에 의한 끌기(drag) 동작을 이용하는 등의 임의의 적합한 방식으로 달성될 수 있다. 이러한 동작은 메시지 A5로서 세션 내의 다른 참가자들에게 송신된다. 메시지 A5는 적어도 메시지 A3, A4, B3, B4 및 B5가 발생할 것을 필요로 한다. 선택적으로, 특정 실시예에 따른 시스템 또는 방법이 겹침 정보를 처리할 수 있는지 여부(예컨대 레이어 구조 또는 그 밖의 적합한 방식을 이용함으로써)에 따라, 메시지 A5는 메시지 C2가 발생하는 것(앞서 기술한 바처럼 메시지 C1이 발생하는 것에 의존함)에 의존할 수 있다.
도 6d에 도시한 바처럼, 다음 단계에서는 참가자 B가 전자 잉크를 이용하여 문자 "B"에 밑줄을 긋는다. 이 정보는 다른 참가자들에게 메시지 B6으로서 송신된다. 메시지 B6은 마찬가지로 모든 다른 메시지들에 독립적이며, 이는 이 메시지가 기존의 어떤 메시지 데이터(예컨대 잉크 스트로크들)의 특성을 수정, 삭제, 또는 변경시키지 않기 때문이다. 도 6d에 도시한 바처럼 수작업으로 밑줄을 긋는 것은, 잉크, 텍스트, 또는 그래픽에 대한 변경자(modifier)로서 전자적으로 생성된 밑줄을 이용하는 것과는 구별되며, 이는 이러한 방식으로 손으로 밑줄을 긋는 것은 단지 또 다른 잉크 스트로크이며, 밑줄이 그어지는 잉크 또는 다른 텍스트의 데이터 구조를 수정하지 않는다는 점에서 그러하다.
도 6e는 "붙이기(paste)" 동작을 도시하고 있으며, 여기서 참가자 C는 메시지 C2(도 6b 참조)에서 삭제된 문자 "e"를 이미 이동된 문자 "k"의 뒤에 붙인다. 이러한 데이터 메시지는 메시지 C3로서 세션의 다른 참가자들에게 송신된다. 메시지 C3은 적어도, 그 자신이 메시지 C1이 발생하는 것에 의존하는 메시지 C2의 이전 수행 결과에 의존한다. 선택적으로, 특정 실시예에 따른 시스템 또는 방법이 겹침 정보(overlapping information)를 처리할 수 있는지 여부(예컨대 레이어 구조 또는 그 밖의 적합한 방식을 이용함으로써)에 따라, 메시지 C3은 메시지 A3, A4, A5, B3, B4 및 B5가 발생하는 것에 의존할 수 있다. 마찬가지로, 본 발명의 실시예에 따른 시스템 및 방법은 이러한 유형의 겹침 정보 및 그 디스플레이를 임의의 적합한 방식으로 본 발명에서 벗어남이 없이 처리할 수 있다.
대체 실시예로서, 도 6e의 메시지 C3로서 도시된 바처럼 붙이기 동작을 이용하는 대신, 세션의 임의의 참가자가 단지 적합한 위치에 다른 문자 "e"를 다시 기록할 수도 있다. 이러한 경우, 새로운 스트로크는 앞서 설명한 바처럼 전자 화이트보드 상의 겹침 또는 레이어 정보(layered information)를 처리하는 데에 있어 소정의 의존성(dependency)이 필요하지 않는 이상, 어떤 다른 스트로크에도 의존하지 않을 것이다.
본 발명에서 벗어남이 없이 의존성 정보를 처리하는 임의의 적합한 방법을 사용할 수 있다. 예컨대, 메시지를 송신하는 참가자의 머신은, 참가자의 유출 메시지가 필요로 하는 동작을 수행하기 위해 최소한 어느 데이터 메시지가 수행되어야 하는지를 결정함으로써, 앞서 설명한 일반적인 방식으로 의존성 정보를 추적할 수 있다. 그 후, 메시지 데이터가 다른 참가자들에게 송신(예컨대 동보)되는 경우, 이는 새로이 동보되는 메시지가 필요로 하는 기능을 수행하는 데 필요한 임의의 다른 메시지의 고유 메시지 ID를 포함하도록 인코딩될 수 있다. 수신 머신들은 그 후 의존성 정보를 살펴 모든 필요한 "부모" 메시지들이 새로이 수신된 메시지가 수행되기에 앞서 수행되었음을 확인한다. 의존성을 처리하는 다른 방식이 도 7 및 도 8과 관련하여 이하 설명된다.
C. 유출 메시지의 데이터 구조
도 7은 본 발명에 따른 시스템 및 방법의 여러 실시예에 있어 유용한, 참가자의 워크스테이션으로부터 유출되는 메시지에 대한 데이터 구조(700)를 일반적으로 도시하고 있다. 이 예에서 데이터 구조(700)는 메시지를 전송하는 참가자의 사용자 ID 번호(702)를 나타내는 데이터를 포함하는 필드를 포함한다. 이 사용자 ID는 도 4와 관련하여 앞서 설명한 고유 사용자 식별자(402)일 수 있으며, 이는 메시지를 송신하는 특정 사용자 또는 참가자를 식별할 수 있다. 부가적으로, 또는 대안으로서, 사용자 ID(702)는 또한 메시지를 송신하는 특정 하드웨어를 식별하는 정보, 하드웨어의 특성 및/또는 송신되는 데이터 등의 하드웨어 정보(예컨대 세션에 관여하는 여러 마신 상으로 정확하게 변환 및 매핑될 수 있도록 하는 디스플레이 해상도 정보 등)를 포함할 수 있다.
데이터 구조(700)의 다른 필드는 송신되는 메시지의 고유 메시지 식별자(704)를 포함한다. 이러한 메시지 식별자(704)는 도 4와 관련하여 앞서 설명한 메시지 식별자(412a 내지 412m 및 422a 내지 422k)에 대응될 수 있다.
예로 든 도 7의 데이터 구조(700)는 이러한 새로운 메시지가 향하는 세션에 관한 다양한 정보(706)를 포함하는 다른 필드를 포함한다. 다양한 유형의 정보가 본 발명에서 벗어남이 없이 이러한 데이터 필드에 포함될 수 있다. 예컨대 도 7에서 도시된 바처럼, 이러한 데이터 필드는 메시지 페이로드가 향하는 고유 세션 ID 번호(708)를 포함할 수 있다. 또한 이 데이터 필드는 세션의 참가자 리스트(710){예컨대 세션의 모든 참가자 및/또는 세션에 참가하도록 인가된 모든 사용자에 대한 사용자 ID 번호(702)의 형태로 되어 있음}를 포함할 수 있다. 데이터 구조(700) 내의 세션 정보(706)의 다른 가능한 부분에는 "메시지 히스토리"(712) 정보가 포함될 수 있다. 이러한 메시지 히스토리 정보에는 앞서 설명한 바처럼, 현재 메시지에 대한 모든 의존성 정보{예컨대 모든 필요한 부모 메시지 ID 번호(704)}를 포함할 수 있다.
마지막으로, 이 예시 데이터 구조(700)의 다른 데이터 필드는 실제 메시지 페이로드(714)를 포함하며, 이는 수신 머신에게 이러한 메시지의 결과로서 취해져야 할 동작을 알려준다. 앞서 설명한 바처럼 이러한 메시지 페이로드(714)는 전자 잉크 정보(예컨대 잉크 스트로크), 텍스트, 전자 잉크나 텍스트, 그래픽 등을 수정하는 정보 및/또는 임의의 다른 적합한 또는 원하는 정보를 포함할 수 있다.
의존성 및 부모 데이터 메시지 정보를 실제로 추적하는 것은 어떠한 메시지도 그것이 처리되어야 할 시기보다 먼저 처리되지 않았음을 확인하는 효율적인 방법이지만, 이렇게 하는 것은 적어도 일부 실시예에서 곤란(불가능하지 않다면) 및/또는 계산상 고비용일 수 있다. 따라서 본 발명의 일부 실시예들에 있어, 도 7에 도시된 바와 같은 유출 메시지는 어떤 다른 유형의 메시지 히스토리(712)를 포함할 수 있다. 예컨대, 메시지(700)를 내보내는 머신은 적어도 그 머신에서 처리된 최후의 메시지의 메시지 식별 번호(704, 412a 내지 412m, 422a 내지 422k)를 포함할 수 있다. 일부 실시예에서, 데이터 구조(700)는 그 머신 상에서 처리되는 최후의 5 내지 10개, 또는 그 이상의 메시지들의 메시지 식별 번호들(704, 412a 내지 412m, 422a 내지 422k)을 메시지 히스토리(712) 내에 포함하게 된다. 그 후, 수신 머신들이 전송된 새로운 메시지(700)를 수신하는 경우, 이들은 새로운 메시지(700)가 전송 머신상에서 처리된 최후의 메시지들 각각에 의존한다고 가정하게 된다{메시지 히스토리(712)로부터}. 수신 머신이 메시지(700)의 메시지 히스토리(712)에 있는 처리된 최후의 메시지들을 아직 다 수신하지 못한 경우, 수신 머신은 메시지 히스토리(712) 내의 모든 메시지들이 수신될 때까지 새로운 메시지(700)를 처리하지 않는다.
수신 머신이 새로운 메시지(700)의 메시지 히스토리(712) 내의 메시지들 중 하나 이상을 갖지 않는다고 가정하면, 수신 머신은 누락된 메시지(들)를 기다린다{선택적으로, 이하 상세히 설명할 바처럼 상기 메시지(들)에 대한 요청을 송신할 수 있음}. 누락된 메시지(들)가 수신되는 경우, 누락된 메시지(들)는 또한 이것(들)이 원래 송신된 시점부터 메시지 히스토리 필드(712)를 가질 것이며, 수신 머신은 그 메시지 히스토리(712)에 있는 모든 메시지들이 또한 수신되지 않았으면 모두 수신될 때까지 종전에 누락되어 새로이 수신된 이러한 메시지를 처리하지 않을 것이다. 이러한 방식으로, 메시지(700)를 수신하는 머신은 메시지들 및 메시지 히스토리들을 시간의 역순으로 계속 체크할 것이며, 메시지 히스토리(712)에 있는 모든 메시지들이 수신 및 처리된 후에만 새로이 수신된 메시지(700)를 처리할 것이다.
다른 예로서, 소정의 머신에서 처리된 최후의 메시지(들)를 송신하는 대신 또는 그에 더하여, 유출 메시지 데이터(700)는 특정 머신에 의해 송신된 최후의 메시지들 중 하나 이상의 목록을 그 메시지 히스토리(712) 내에 포함할 수 있다. 본 발명에서 벗어남이 없이, 이전에 송신된 메시지들 중 임의의 개수(예컨대 바로 이전에 송신된 메시지들 중 5 내지 10개를 포함)가 메시지 히스토리(712) 내에 포함될 수 있다. 수신 머신들은 그 후 이러한 정보를, 앞서 설명한 최후로 처리된 메시지 히스토리에 부가하여 또는 이를 대신하여, 그 머신에 의해 이전에 송신된 모든 메시지들이 처리될 때까지는 새로운 메시지(700)가 처리되지 않음을 확인하는 데 동일한 방식으로 사용할 수 있다.
선택적으로, 원하는 경우, 나중의 메시지가 이전의 메시지를 삭제하거나 오려내면, 본 발명의 일부 실시예들에 따른 시스템 및 방법에서는 다른 처리를 진행하기에 앞서 이러한 삭제된 메시지나 이를 삭제하는 메시지를 기다릴 필요가 없다. 이러한 메시지 쌍은 무시될 수 있고, 미수신 및 미처리된 상태로 있을 수 있다.
메시지들이 적합한 의존성을 유지하면서 적당한 순서로 처리되는 것을 보증하는 그 밖의 다양한 방법이 본 발명으로부터 벗어남이 없이 사용될 수 있다. 예컨대 진정하게 독립적인 메시지들은, 본 발명으로부터 벗어남이 없이, 이들 메시지가 즉시 처리될 수 있음을 본 발명의 일부 실시예들에 따른 시스템 및 방법이 알 수 있도록 표지(mark)될 수 있다. 또한, 이전의 메시지들(이전에 처리 및/또는 이전에 송신됨) 중 임의의 개수가 본 발명으로부터 벗어남이 없이 메시지 히스토리(712)에 포함될 수 있는 바, 이는 예컨대 소정의 사용자가 메시지를 수신하지 못할 가능성, 네트워크 트래픽, 네트워크 속도, 유입 메시지의 속도, 세션 참가자의 수, 접속 유형, 네트워크로부터 단속(disconnect)될 가능성 등의 다양한 요인을 고려함으로써 정해질 수 있다.
D. 유입 메시지의 처리
도 8은 본 발명의 일부 실시예들에 있어 메시지를 처리하는 다양한 태양을 기술한 흐름도이다. 이해를 돕기 위해, 도 8의 정보는 도 7에서 제공된 참조 번호와 관련하여 설명하기로 한다. 이 예에서, 메시지(700)는 P2P 네트워크를 통해, 예컨대 UDP의 동보 기능을 이용하여 동보된다. 도시된 바처럼, 프로세스는 네트워크상의 청취중(listening)인 사용자가 수신하게 되는 동보 메시지(700)를 세션의참가자가 송신하는 경우(S802)에 개시된다(S800). UDP 동보 메시지는 서브넷 상의 모든 사용자에게 송신되고 서브넷 상의 특정 사용자에게 가지 않는다는 점을 상기하면, 본 발명의 이러한 실시예에 따른 시스템 및 방법에 있어 동보 메시지(700)를 수신하는 서브넷 사용자는 다음으로 그가 이러한 세션 ID 번호를 청취하고 있는지 여부를 판정한다(S804). 이는 예컨대 메시지(700)에 포함된 세션 ID 번호(708)를 참조함으로써 이루어질 수 있다. 수신자인 사용자가 그 세션 ID 번호를 청취중인 경우(S804에서 "예"로 답하는 경우), 수신 사용자의 컴퓨터는 다음으로 메시지(700)의 메시지 히스토리(712)에 있는 이전의 모든 메시지들이 수신되었는지 여부를 체크한다(S806). "예"인 경우, 새로운 메시지(700)가 처리되고(S808), 프로시저(procedure)가 종료된다(S810)(예컨대 다음 메시지의 처리를 개시하거나 다음 메시지를 기다림).
단계(S806)에서, 수신 사용자가 새로이 수신된 메시지(700)의 메시지 히스토리(712)에 언급된 이전의 메시지를 다 수신하지 못한 경우("아니오"로 답하는 경우), 수신 사용자의 머신은 누락 메시지들에 대한 요청을 전송 또는 동보한다(S812). 그 후, 적절한 대기 시간이 지난 후, 본 발명의 이러한 실시예에 따른 시스템 및 방법은 요청된 메시지(들)가 수신되었는지 여부를 판정한다(S814). "아니오"인 경우, 메시지 히스토리의 모든 메시지들이 수신될 때까지 단계(S812) 및 단계(S814)가 반복된다(하나 이상의 누락 메시지들이 전혀 수신되지 않는 경우 적합한 타임 아웃 및/또는 오류 메시지가 제공될 수 있음). 유입 누락 메시지가 수신되는 경우(S814에서 "예"로 답하는 경우), 시스템은 단계(S804)로 돌아가고(A표시 참조), 새로이 수신된 메시지들의 메시지 히스토리들은 이들의 메시지 히스토리 내의 모든 메시지들이 수신되었는지를 확인하기 위해 체크된다. 대신, A 표시는 단계(S806)의 바로 이전 프로시저로 돌아갈 수 있다. 이러한 방식에 있어서, 프로세스는 시간의 역순으로 동작하며, 새로이 수신된 메시지들의 처리를 이들의 메시지 히스토리에 있는 모든 메시지들이 수신 및 처리된 경우에만 개시한다.
단계(S804)에서 유입 메시지 수신자가 이러한 세션 ID 번호를 청취하지 않는 경우("아니오"로 답하는 경우), 본 발명의 이러한 실시예에 따른 시스템 및 방법은 다음으로 메시지들(700) 내의 참가자 리스트(710)가 수신 사용자의 ID 번호를 포함하는지 여부를 판정하기 위한 체크를 한다(S816). "아니오"인 경우, 이러한 메시지는 수신 사용자를 위한 것이 아니며(S818), 메시지는 수신 사용자의 워크스테이션에 의해 무시되고, 프로시저는 종료된다(S810)(예컨대 수신 사용자는 새로운 동보 메시지를 계속 청취할 수 있음). 그 대신, 특정 세션에 관여되지 않은 사용자들은 이하 설명할 바와 같이, 유입 메시지들을 유지하고, 메시지들을 새로운 참가자들에게 및/또는 누락된 메시지의 요청에 응답하여 재동보할 수 있다.
단계(S816)에서 유입 메시지(700)의 참가자 리스트가 수신 사용자의 ID 번호를 포함하는 경우("예"로 답하는 경우), 수신 사용자는 세션에 추가될 수 있으며(S820), 메시지 히스토리(712) 내의 이전의 모든 메시지가 수신되었는지를 확인하는 체크가 시작될 수 있다(S806).
단계(S812)에서, 유입되는 새로운 메시지(700)의 수신자는 새로운 메시지(700)의 메시지 히스토리(700)에 있는 이전에 수신되지 않았던 메시지에 대한 요청을 동보한다. 이는 특히 UDP를 전송 프로토콜로서 사용하는 경우에 일어날 수 있는 바, 앞서 언급한 바처럼 UDP는 모든 의도된 수신자에 대한 메시지의 전달을 보장하지 않기 때문이다. 따라서, 본 발명의 일부 실시예들에 따른 시스템 및 방법은, 적어도 어떤 경우에는, 원래 송신되었을 때 메시지를 수신하지 않은 참가자들에게 메시지들을 동보할 필요가 있다. 또한, 세션에 늦게 참가하는 자는 세션에서의 이전의 모든 메시지들을 획득함으로써 최신으로 유지될 필요가 있다. 도 8에 도시된 프로시저를 이용함으로써, 세션의 모든 참가자들은 본 시스템 또는 프로시저를 부당하게 느리게 하지 않고도, 유입되는 메시지가 메시지 히스토리에 있는 데이터가 누락되었음을 알리자마자 이전에 누락되었던 임의의 메시지들을 용이하게 획득할 수 있다.
누락 메시지에 대한 요청이 동보되는 경우(S812), 본 발명의 이러한 실시예에 있어 세션의 모든 참가자들은 상기 요청을 수신할 수 있다(예컨대 UDP 동보로서). 모든 수신자가 누락된 메시지를 재동보하는 경우, 이는 반복적인 동보 메시지들로 시스템을 부당하게 정체시키게 되므로, 많은 수의 참가자가 세션에 포함되어 있는 경우에 문제가 악화된다. 따라서, 본 발명의 일부 실시예에 있어서, 세션의 각 참가자는 그러한 요청이 수신되는 경우 요청자에 의해 수신될 누락 메시지를 재동보할지 여부를 무작위로 결정하게 된다. 예컨대 세션에 6명의 참가자가 포함되는 경우, 누락 메시지 요청이 동보되면 나머지 5명의 참가자들 각각은 누락 메시지를 재동보할지 여부를 무작위로 결정한다(예컨대 1 내지 5 사이의 숫자를 무작위로 선택하여 선택된 수가 1인 경우 메시지를 전송함). 아무도 메시지를 전송하지않는 경우, 또 다른 누락 메시지 요청이 발행되며(앞서 설명한 바처럼), 또 다른 무작위 선택 프로시저가 발생한다. 이러한 프로시저는 요청 당사자가 누락 메시지를 수신할 때까지 반복될 수 있다. 누락 메시지를 공급하기 위해 이러한 유형의 프로시저(procedure)를 이용함으로써, 세션의 어떤 참가자도 다른 참가자들 또는 새로운 참가자들에게 누락된 메시지를 공급할 수 있으며, 이 경우 이전에 전송된 모든 데이터를 세션에 있는 모두가 손쉽게 이용할 수 있게 하면서도 참가자들이 세션을 자유로이 드나들 수 있다.
본 발명의 이러한 태양의 일부 실시예들에 있어, 특정 사용자가 누락 메시지를 재동보해야할 지에 관한 결정은 예컨대 특정 네트워크에서 메시지가 유실될 가능성, 네트워크 트래픽, 네트워크 속도, 세션 참가자의 수, 접속 유형 등을 포함하는 의 다양한 요인들을 고려할 수 있다. 예컨대 특정 네트워크 및/또는 세션 셋업이 통상적으로 50%의 UDP 동보 메시지를 유실하고, 소정의 사용자가 5명의 사용자 중 누락 메시지 재동보 요청을 수신하는 한 사용자인 경우, 어떤 특정한 사용자는 누락 메시지 재동보 요청에 응답하여 메시지를 재동보할 2/5의 확률을 갖도록 프로그래밍될 수 있으며, 이는 두 개의 동보 메시지 중 하나가 유실될 가능성에 대비한 것이다.
그 대신, 새로운 사용자가 임의의 시점에 세션으로 들어오는 경우, 이전에 전송된 모든 메시지들을 새로운 참가자에게 자동으로 제공하기 위한 메커니즘이 있을 수 있다(예컨대 원래 전송하였던 참가자에 의해, 하나 이상의 선택된 참가자에 의해 및/또는 그 밖의 원하는 또는 적합한 방식에 의해 각 메시지가 재전송됨).다른 대안으로서, 원래 전송하였던 참가자는 그가 세션에 남아있는 경우 임의의 요청되는 누락 메시지를 재전송할 수 있으며, 그가 세션에 더 이상 남아있지 않는 경우 다른 무작위의 당사자(또는 소정의 순서에 따름)가 요청된 누락 메시지를 재전송할 수 있다. 누락 메시지 요청에 응답하여 누락 메시지를 재전송하기 위한 임의의 참가자 결정 방식이 본 발명으로부터 벗어남이 없이 사용될 수 있다.
E. "핑(Ping)" 데이터
도 9는 본 발명의 일부 실시예들에 따른 보조 시스템 및 방법에서, 세션에 대한 잠재적인 새로운 참가자를 알아내고/내거나 기존 세션에 사용자가 참여할 수 있는지를 알아내는 데 유용할 수 있는 데이터 구조(900)를 도시하고 있다. 세션이 진행중인 경우, 세션의 참가자는 주기적으로 소정의 식별 데이터를 전송하며, 이는 예컨대 UDP 동보 기능을 이용하여 서브넷 상에 상기 데이터를 동보함으로써 이루어진다. 또한 본 명세서에서 "핑 데이터"라고 불리는 이러한 데이터는 주기적으로 네트워크상의 다른 사용자들에게 소정의 정보를 주기적으로 알린다. 이러한 유형의 핑 데이터는 통상적으로 예컨대 무선 접속 및 통신에서 사용된다.
본 발명의 이러한 태양의 예에 있어서, 데이터 구조(900)는 세션과 관련된 다양한 중요 정보를 포함할 수 있다. 우선, 핑을 보내는 사용자를 식별하는 정보{예컨대 사용자 ID 번호(902)는 앞서 설명한 바와 같이 특정 머신, 하드웨어 및 이들 모두 등을 이용하는 자를 식별할 수 있음}를 포함하는 필드가 데이터 구조(900) 내에 제공될 수 있다. 데이터 구조(900) 내의 다른 필드는 이러한 사용자 워크스테이션이 관여된 세션에 관한 정보를 포함할 수 있다. 앞서 언급한 바처럼, 각 사용자의 컴퓨터 또는 워크스테이션은 하나 이상의 세션에 관여될 수 있다. 각 세션에 대하여, 핑 데이터는 세션 ID 번호 정보(906a 및 906b), 세션 참가자 리스트(908a 및 908b)(예컨대 세션의 참가자 각각의 사용자 ID 번호를 포함함) 등과 같은 다양한 정보를 포함할 수 있다.
핑 데이터(900)는 또한 사용자가 관여된 세션 각각에 대한 메시지 히스토리와 관련된 정보를 포함할 수 있다. 이러한 데이터 필드는 도 9에서 참조 번호 910으로 도시되어 있다. 예컨대 각 세션에 대하여, 핑 데이터는 그 컴퓨터에 의해 처리된 최후의 메시지 또는 메시지들을 나타내는 데이터(필드 912a 및 912b) 및/또는 그 컴퓨터에 의해 송신된 최후의 메시지 또는 메시지들을 나타내는 데이터(필드 914a 및 914b)를 포함할 수 있다(예컨대 메시지 ID 번호 형태로). 본 발명으로부터 벗어남이 없이, 원하는 수만큼의 메시지들이 데이터 필드들(912a, 912b, 914a 및 914b)에 포함될 수 있다(예컨대 5 내지 10개의 메시지들). 이러한 방식으로 "핑 데이터"를 이용하는 것은 모든 사용자들이 최신 상태를 유지하는 것을 도와주며, 개개의 메시지들이 오랜 기간동안 "유실"되는 것을 방지해 준다. 예컨대 메시지 ID를 송신하는 데에 주기적인 "핑 데이터"를 사용하지 않았을 때, 메시지가 유실되고 다음 메시지가 송신되기 전에 오랜 시간이 흐른 경우, 유실된 메시지는 예컨대 원래의 메시지 송신자(또는 다른 참가자)가 다른 메시지를 보낼 때까지 늘어난 기간동안 유실된 상태로 있을 수 있다.
본 발명의 적어도 일부 실시예에 있어서, 이러한 핑 데이터는 사용자들을 새로운 참가자로서 세션에 용이하게 추가시키기 위해 도 10에 도시된 바와 같은 프로시저와 관련하여 사용될 수 있다. 예컨대 도 10의 프로시저는 세션이 이루어지고 있는 네트워크에 사용자가 들어왔을 때 개시된다(S1000). 새로이 진입한 사용자는 종국적으로 이러한 유형의 핑 데이터를 세션의 참가자들로부터 수신하게 된다(S1002). 사용자의 ID 번호가 자신이 세션의 적어도 한 명의 참가자로부터 수신하는 핑 데이터에 포함되어 있는 경우{예컨대 수신자 리스트(908a 또는 908b)의 일부로서}(S1004)("예"로 답하는 경우), 사용자의 시스템은 그 사용자가 상기 세션이 참여할 수 있음을 알게 된다. 사용자의 머신은 그 후 핑 데이터(900)와 함께 포함된 메시지 히스토리(910)로부터 자신이 누락하고 있는 메시지들을 요청할 수 있고, 예컨대 도 8과 관련하여 설명된 프로시저에 의해 세션 내에서 최신 상태로 될 수 있다. 원하는 경우, 사용자는 세션에 참여하기를 원하는지의 여부를 결정하는 옵션을 예컨대 질문이나 대화 상자 또는 임의의 그 밖의 적합한 방식을 통해 제공받을 수 있다. 도 10의 프로시저는 종료될 수 있고(S1008), 사용자의 시스템은 추가적인 핑 및/또는 메시지 데이터를 청취할 수 있다.
단계(S1004)에서 프로시저가 사용자의 ID 번호가 수신된 핑 데이터(900)의 참가자 리스트(908a 또는 908b)에 존재하지 않는 것으로 판정한 경우("아니오"로 답하는 경우), 그 프로시저는 단계(S1006)를 건너뛰고 종료될 수 있으며(S1008), 시스템은 추가적인 핑 및/또는 메시지 데이터를 계속 청취할 수 있다.
도 11은 사용자가 세션의 잠재적인 참가자로서 발견되어 세션으로 초청될 수 있는 다른 프로시저를 기술한 흐름도이다. 프로시저가 시작되면(S1100), 특정 세션에 관여되지 않은 사용자가 세션이 이루어지고 있는 네트워크에들어온다(S1102). 이 사실은 예컨대 새로이 진입하는 사용자의 컴퓨터가 핑 데이터(900)를 동보(예컨대 UDP 동보를 통해)하는 경우 세션의 참가자들에 의해 인식될 수 있다. 새로이 진입하는 사용자가 어떤 세션에도 관여되지 않은 경우, 핑 데이터(900)는 도 9에 도시한 바처럼 사용자 ID 번호(902)로 한정될 수 있다. 세션의 한 명 이상의 참가자가 이러한 새로이 진입하는 사용자의 핑 데이터 정보를 수신하는 경우, 이러한 실시예에 따른 시스템 및 방법은 기존의 참가자들 중 한 명 이상에게 새로이 진입하는 사용자가 세션에 참가하도록 초청되어야 하는지 여부를 프롬프트(prompt)한다(S1104). 참가자들이 새로이 진입한 사용자를 세션으로 초청하기로 결정한 경우("예"로 답하는 경우), 그 사용자의 ID 번호가 세션에 대한 참가자 리스트에 추가될 수 있다(S1106). 그 후, 새로이 진입한 사용자의 ID 번호를 필드(908a 또는 908b) 내에 포함하는 핑 데이터(900)가 송신될 수 있다(S1108). 대안으로서, 세션의 다음 데이터 메시지(700)는 또한 새로이 진입한 사용자의 ID를 참가자 리스트(710)에 포함하게 된다. 새로이 진입한 사용자가 이러한 핑 데이터(900) 및/또는 메시지 데이터(700)를 수신하는 경우, 그는 핑 데이터(900) 및/또는 메시지 데이터(700)에 있는 그의 사용자 ID 번호를 주목하게 되고, 도 8 및/또는 도 10의 프로시저가 뒤따를 수 있다. 도 11의 초청 프로시저는 그 후 종료된다(S1110). 선택적으로, 새로운 사용자는 도 10과 관련하여 앞서 설명된 바처럼 세션에 참여하도록 초청될 수 있다.
단계(S1104)에서 세션의 참가자들이 새로이 진입한 사용자를 세션에 초청하지 않기로 결정한 경우("아니오"라고 답하는 경우), 단계(S1106) 및 단계(S1108)를건너뛰고 프로시저가 종료한다(S1110). 핑 데이터(900)는 또한 특정 사용자가 세션을 떠난 시점을 다른 이들이 판정할 수 있게 하는 데 사용될 수 있다. 예컨대, 세션 참가자의 핑 데이터(900)가 소정의 시간 간격(예컨대 핑 데이터 전송 주기의 4배) 내에 수신되지 않은 경우, 다른 참가자들은 그 참가자가 세션을 떠난 것으로 판정할 수 있다. 원하는 경우, 시스템 및 방법의 일부 실시예들에 있어, 이전에 참가자였던 자의 ID는 세션 참가자 리스트로부터 제거될 수 있다. 선택적으로, 시스템은 세션의 나머지 참가자들에게 이전의 참가자가 세션의 참가자 ID 리스트로부터 제거되어야 하는지 여부를 묻도록 프롬프트할 수 있다.
F. 충돌 메시지
본 발명의 적어도 일부 실시예들에 따른 시스템 및 방법은 동시, 준 동시 및 충돌 명령어들을 처리하기 위한 프로토콜 및 프로시저를 포함한다. 불가피하게, 독립적으로 입력을 추가할 수 있는 복수의 사용자를 포함하는 이러한 유형의 공동 작업 시스템 및 방법에서는, 여러 당사자에 의해 전송되는 메시지 데이터 중 일부는 충돌하게 된다. 예컨대 어느 한 참가자는 전자 화이트보드로부터 잉크 스트로크, 스트로크들, 텍스트, 또는 그래픽을 오려두고자 하며, 이와 정확히 동시에 다른 참가자가 동일한 스트로크, 스트로크들, 텍스트, 또는 그래픽의 일부 또는 전부의 색상, 크기, 또는 다른 특성을 변경하고자 할 수가 있다.
이러한 상황은 본 발명으로부터 벗어남이 없이 임의의 적합한 방식으로 처리될 수 있다. 예컨대 세션 내의 모든 워크스테이션이 공통의 중앙 클록을 이용하는 공통의 네트워크 상에서 동작하는 경우, 각 메시지는 이러한 중앙 클록에 기초한전송 타임 스탬프(transmission time stamp)로 스탬핑될 수 있고, 메시지 처리의 순서는 이러한 타임 스탬프에 기초할 수 있다. 정확히 동시에 전송되는 둘 이상의 메시지에 대하여, 어느 메시지가 우선권을 가질지를 결정하는 데 일종의 계층적인 순서가 사용될 수 있다. 예컨대 알파벳 및/또는 숫자의 계층적 순서가 세션에 관여하는 각 사용자를 위한 사용자 ID 번호에 기초하여 사용될 수 있다. 다른 실시예에 있어서, 계층은 충돌하는 참가자들이 세션에 들어온 시간에 기초하여 설정될 수도 있다. 어떤 메시지를 다른 메시지에 우선하여 무작위로 선택하는 등의 많은 다른 가능한 방식이 본 발명으로부터 벗어남이 없이 사용될 수 있다.
본 발명의 적어도 일부 실시예들에 있어 메시지들은 P2P 네트워크를 통해 동보될 수 있기 때문에, 동시에 충돌하는 두 메시지들은 잘못된 순서로 일부 참가자들의 워크스테이션에서 수신될 수 있으며, 이에 따라 그 참가자의 워크스테이션이 더 높은 계층의 메시지가 존재함을 파악하기 전에 더 낮은 계층의 메시지를 처리하는 결과가 생긴다. 예컨대 참가자 A가 잉크 스트로크의 삭제를 지시하는 메시지 A10을, 참가자 B가 동일한 잉크 스트로크의 확대를 지시하는 메시지 B10을 보낸 순간과 정확히 동일한 순간에 보냈다고 가정하자. 이들 두 메시지는 충돌한다. 그 후, 계층적 프로토콜로 인해, 메시지 A10이 메시지 B10에 대해 우선권을 갖는다고 가정하자(예컨대 충돌하는 메시지 ID 또는 충돌하는 전송 사용자 ID의 알파벳/숫자 순서에 기초함). 참가자 A 및 B 각각은 이러한 실시예에서 P2P 방식으로 모든 다른 사용자와 통신하므로, 참가자 C는(물론 그 밖의 참가자들도) 메시지 A10에 앞서 메시지 B10을 수신할 수 있다. 메시지 B10이 수신되는 시점에, 참가자 C의 워크스테이션은 메시지 A10에 대해 전혀 모를 수 있으며, 메시지 B10의 히스토리에 있는 이전의 모든 메시지들이 참가자 C의 워크스테이션에 존재하는 경우, 그 워크스테이션은 메시지 B10을 처리할 수 있으며, 그 후 메시지 A10을 수신할 수 있다. 이러한 경우, 메시지 A10을 수신하면 참가자 C의 워크스테이션은 "취소(undo)" 기능을 수행하여 메시지 B10이 취소될 때까지 처리된 모든 메시지들을 취소할 수 있다. 그 후 메시지 A10은 참가자 C의 워크스테이션 상에서 처리되고, 메시지 B10은 폐기된다(또한 메시지 B10에 의존하는 다른 메시지들도 폐기됨). 메시지 B10에 의존하지 않는 다른 "취소된" 메시지들 또한 원래의 또는 타임 스탬핑된 순서에 따라 참가자 C의 워크스테이션에 의해 처리된다.
물론, 다른 적합한 프로시저 및 프로토콜이 본 발명을 벗어나지 않고도 충돌 메시지를 처리하는 데 사용될 수 있다.
G. 새로운 세션의 설정
본 발명으로부터 벗어남이 없이 새로운 세션이 임의의 원하는 또는 적합한 방식으로 개시될 수 있다. 예컨대 전자 화이트보드 애플리케이션 프로그램 또는 그 밖의 애플리케이션을 실행시키는 경우, 그 프로그램은 실행의 당사자에게 원하는 또는 인가된 참가자의 성명 또는 사용자 ID 번호를 입력하라는 프롬프트를 할 수 있다. 다른 예로서, 이러한 유형의 애플리케이션 프로그램이 실행되는 경우, 세션의 잠재적 참가자들이 앞서 설명한 바처럼 식별되고 이들의 핑 데이터를 통해 추가될 수 있다. 또 다른 예로서, 이러한 유형의 프로그램이 실행되면, 실행의 당사자는 활동중인 또는 잠재적 참가자의 메뉴를 액세스할 수 있고, 가능한 참가자들을 이러한 목록으로부터 선택할 수 있다. 이들 옵션은 단지 예일 뿐이다. 이러한 가능한 방식들 및/또는 그 밖의 가능한 방식들의 조합이 본 발명으로부터 벗어남이 없이 사용될 수 있다.
H. 보안
앞서 설명한 바처럼 본 발명의 다양한 실시예는 UDP 동보를 이용하여 메시지 및/또는 핑 데이터를 세션의 참가자들에게 전송한다. 앞서 언급한 바처럼, UDP 동보 데이터는 서브넷 상의 모든 사용자에게, 그들 중 일부가 세션에 관여하지 않도록 되어 있는 경우에도 무차별적으로 전송된다. 이러한 특징은 사용자들로 하여금 자유로이 세션에 참여하고 나갈 수 있도록 한다는 점에서 유리하지만, 세션 내의 메시지 데이터가 타인에게도 노출된다는 점에서 잠재적인 보안 위험이 제기된다.
이러한 사실은 본 발명으로부터 벗어남이 없이 임의의 적합한 방식으로 대처될 수 있다. 예컨대, 암호화(encryption), 스크램블링(scrambling) 및/또는 그 밖의 적합한 보안 방법이 세션 및/또는 메시지 데이터에 대한 무허가 액세스를 방지하는 데 사용될 수 있다. 다른 실시예로서, 더욱 안전하고 통제된 통신이 본 발명의 적어도 일부 실시예에서 사용되어, 메시지 및/또는 핑 데이터의 적어도 일부가 동보되는 것을 피할 수 있다. 본 기술 분야에서 통상적으로 알려진 기술을 포함하는 임의의 다른 적합한 보안 기술이 본 발명으로부터 벗어남이 없이 사용될 수 있다.
V. 결론
본 발명의 다양한 실시예들이 앞서 설명되었으며, 본 기술 분야의 당업자는본 발명이 이들 실시예들의 모든 조합 및 부조합을 그 범위 내에 포함함을 알 수 있을 것이다. 또한 이들 당업자는 상기 실시예들이 단지 본 발명의 다양한 태양들을 예시한 것임을 알 수 있을 것이다. 예컨대, 본 발명의 많은 태양들이 "전자 화이트보드 세션" 또는 그 밖의 공동 작업 세션과 관련하여 설명되었지만, 본 기술 분야의 당업자는 본 발명이 이러한 유형의 공동 작업 세션에 한정되는 것이 아님을 알 것이다. 오히려 본 발명의 태양들은 상이한 사용자들 사이의 다양한 유형의 통신에 넓게 적용될 수 있다. 또한 첨부된 청구항에서 정의된 바처럼, 다양한 변경 및 수정이 본 발명의 사상 및 범위로부터 벗어남이 없이 이루어질 수 있다.
따라서, 본 발명은 복수의 사용자가 공동 작업 방식(예컨대 전자 화이트보드 세션)으로 데이터 메시지를 이용하여 다른 사용자와 신뢰성 있게 통신할 수 있게 해 준다. 본 발명은 세션 내의 모든 참가자(늦게 및/또는 다른 참가자가 세션을 떠난 후에 도착하는 참가자를 포함함)에게 모든 메시지 데이터를 신뢰성 있게 전송할 수 있도록 하면서도, 참가자들이 그 세션에 자유로이 드나들 수 있도록 해 준다.

Claims (73)

  1. 네트워크상에서 데이터를 전송하는 방법에 있어서,
    복수의 참가자를 포함하는, 데이터 전송을 위한 세션을 설정하는 단계와,
    동보(broadcast)되는 참가자 식별자, 메시지 식별자, 세션 정보 및 메시지 페이로드를 적어도 포함하는 메시지를 상기 세션에 관여하는 참가자로부터 동보하는 단계와,
    상기 동보되는 메시지를 수신하는 사용자가 상기 세션의 참가자인지 여부를 판정하는 단계와,
    상기 사용자가 상기 세션의 참가자인 경우 상기 사용자에 대한 상기 메시지를 처리하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 사용자가 상기 세션의 참가자인지 여부를 판정하는 상기 단계는,
    (a) 상기 세션에서 상기 사용자가 활동중인지 여부를 판정하는 단계, 또는
    (b) 세션 참가자 리스트에 상기 사용자가 포함되어 있는지 여부를 판정하는 단계
    중 적어도 하나를 포함하는 방법.
  3. 제2항에 있어서, 상기 사용자가 상기 세션 참가자 리스트에 포함되어 있지만 상기 세션에서 활동중이 아닌 것으로 판정되는 경우, 상기 사용자를 상기 세션에 추가하는 방법.
  4. 제1항에 있어서, 상기 사용자에 대한 상기 메시지를 처리하기에 앞서, 상기 방법은
    상기 사용자가 상기 세션의 이전의 메시지들을 모두 수신하였는지 여부를 판정하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 사용자가 이전에 수신하지 않은, 상기 세션의 임의의 이전의 메시지들을 획득하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서, 상기 수신되지 않은 이전의 메시지들은 상기 세션의 적어도 한 명의 참가자로부터의 동보를 통해 획득되는 방법.
  7. 제6항에 있어서, 상기 세션 참가자들은 상기 수신되지 않은 이전의 메시지들 중 하나 이상을 동보할지 여부를 무작위로 판정하는 방법.
  8. 제4항에 있어서, 상기 사용자가 상기 세션의 이전의 메시지들을 모두 수신하지는 않은 것으로 판정된 경우, 상기 방법은
    (a) 적어도 하나의 미수신 메시지에 대한 요청을 상기 사용자가 송신하는 단계와,
    (b) 상기 세션의 적어도 한 명의 참가자가 상기 적어도 하나의 미수신 메시지를 상기 사용자에게 동보하는 단계와,
    (c) 상기 사용자가 상기 세션의 모든 메시지들을 수신할 때까지 단계 (a) 및 단계 (b)를 반복하는 단계
    를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 세션의 참가자 각각은 상기 사용자에 의해 요청된 상기 미수신 메시지들 중 하나 이상을 동보할지 여부를 무작위로 결정하는 방법.
  10. 제1항에 있어서, 상기 세션은 P2P(Peer-to-Peer) 통신을 수반하는 방법.
  11. 제1항에 있어서, 상기 세션의 상기 참가자들은 공통의 서버에 동작적으로 접속되어 있지 않은 방법.
  12. 제1항에 있어서, 상기 세션 참가자들 또는 상기 사용자 중 적어도 한 명은 무선 접속을 통해 상기 네트워크에 접속되는 방법.
  13. 제1항에 있어서, 상기 사용자가 상기 세션의 참가자인지 여부를 판정하는 상기 단계는,
    상기 사용자가 상기 네트워크 상에 존재한다는 알림을 수신하는 단계와,
    상기 사용자를 상기 세션에 추가하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서, 상기 세션에 대한 참가자 리스트에 상기 사용자를 추가하는 단계를 더 포함하는 방법.
  15. 제13항에 있어서, 상기 알림의 수신에 응답하여, 상기 방법은
    상기 사용자를 상기 세션에 추가시킬지 여부를 적어도 한 명의 세션 참가자에게 질의(query)하는 단계
    를 더 포함하는 방법.
  16. 제13항에 있어서, 상기 알림의 수신에 응답하여, 상기 방법은
    상기 사용자를 상기 세션에 참여하도록 초청하는 단계
    를 더 포함하는 방법.
  17. 제1항에 있어서, 상기 사용자가 상기 세션의 참가자인지 여부를 판정하는 상기 단계는,
    상기 사용자를 상기 세션에 추가시킬지 여부를 적어도 한 명의 세션 참가자에게 질의하는 단계
    를 포함하는 방법.
  18. 제1항에 있어서, 상기 메시지 페이로드는 전자 잉크(electronic ink) 데이터를 포함하는 방법.
  19. 제1항에 있어서, 상기 세션은 복수의 세션 참가자가 새로운 메시지들을 추가하거나, 기존의 메시지들을 삭제하거나, 또는 기존의 메시지들을 수정할 수 있는 가상 화이트보드(virtual whiteboard)를 포함하는 방법.
  20. 제1항에 있어서, 상기 사용자가 상기 세션의 참가자인지 여부를 판정하는 상기 단계는,
    상기 사용자를 상기 세션에 참여하도록 초청하는 단계와,
    상기 초청이 수락된 경우 상기 세션에 대한 참가자 리스트에 상기 사용자를 추가하는 단계
    를 포함하는 방법.
  21. 제1항에 있어서, 상기 메시지는 UDP(User Datagram Protocol)을 이용하여 동보되는 방법.
  22. 메시지 데이터를 포함하는 메시지들의 송신 및 수신이 가능한 복수의 참가자를 포함하는 세션이 이루어지는 네트워크를 액세스하는 단계 - 상기 네트워크는 상기 세션에서 활동중이 아닌 사용자에 의해 액세스됨 - 와,
    상기 사용자를 상기 세션에 참가자로서 추가할지 여부를 결정하는 단계와,
    상기 사용자가 상기 세션에 참가자로서 추가되는 경우, 상기 세션동안 이전에 전송되었던 모든 메시지들을 상기 사용자에게 전송하는 단계
    를 포함하는 방법.
  23. 제22항에 있어서, 상기 사용자를 상기 세션에 참가자로서 추가할지 여부를 결정하는 상기 단계는,
    상기 사용자가 상기 세션에 대한 참가자 리스트에 포함되어 있는지 여부를 판정하는 단계와,
    상기 사용자가 상기 참가자 리스트에 포함되어 있는 경우, 상기 사용자를 상기 세션에 참가자로서 추가하는 단계
    를 포함하는 방법.
  24. 제23항에 있어서, 상기 사용자가 상기 참가자 리스트에 포함되어 있지 않은 경우, 상기 사용자를 상기 세션에 추가할지 여부를 적어도 한 명의 세션 참가자에게 질의하는 방법.
  25. 제22항에 있어서, 상기 사용자를 상기 세션에 참가자로서 추가할지 여부를 결정하는 상기 단계는,
    상기 사용자가 상기 세션에 대한 참가자 리스트에 포함되어 있는지 여부를 판정하는 단계와,
    상기 사용자가 상기 참가자 리스트에 포함되어 있는 경우, 상기 사용자를 상기 세션에 추가할지 여부를 적어도 한 명의 세션 참가자에게 질의하는 단계
    를 포함하는 방법.
  26. 제22항에 있어서, 상기 사용자를 상기 세션에 참가자로서 추가할지 여부를 결정하는 상기 단계는,
    상기 사용자를 상기 세션에 참여하도록 초청하는 단계와,
    상기 초청이 수락된 경우 상기 세션에 상기 사용자를 추가하는 단계
    를 포함하는 방법.
  27. 제22항에 있어서, 상기 세션동안 이전에 전송되었던 모든 메시지들을 전송하는 상기 단계는,
    (a) 적어도 하나의 미수신 메시지에 대한 요청을 상기 사용자가 전송하는 단계와,
    (b) 상기 세션의 적어도 한 명의 참가자가 상기 적어도 하나의 미수신 메시지를 상기 사용자에게 전송하는 단계와,
    (c) 상기 사용자가 상기 세션동안 이전에 전송되었던 모든 메시지들을 수신할 때까지 단계 (a) 및 단계 (b)를 반복하는 단계
    를 포함하는 방법.
  28. 제22항에 있어서, 상기 세션은 P2P 통신을 수반하는 방법.
  29. 제22항에 있어서, 상기 세션의 상기 참가자들은 공통의 서버에 동작적으로 접속되어 있지 않은 방법.
  30. 제22항에 있어서, 상기 세션 참가자들 또는 상기 사용자 중 적어도 한 명은 무선 접속을 통해 상기 네트워크에 접속되는 방법.
  31. 제22항에 있어서, 상기 메시지들 중 적어도 일부는 UDP를 이용하여 동보되는 방법.
  32. 제22항에 있어서, 상기 메시지들 중 적어도 일부는 전자 잉크 데이터를 포함하는 방법.
  33. 세션의 복수의 참가자들 사이에서 메시지들을 통신하는 방법에 있어서,
    P2P 방식으로 적어도 제1 참가 워크스테이션 및 제2 참가 워크스테이션을 접속시키는 단계 - 각 참가 워크스테이션은 상기 세션의 다른 참가 워크스테이션들에게 P2P 방식으로 메시지 데이터를 동보할 수 있고, 상기 세션 내의 다른 참가 워크스테이션들로부터 P2P 방식으로 동보된 메시지 데이터를 수신할 수 있음 - 와,
    상기 제1 참가 워크스테이션에 의해 제1 메시지를 동보하는 단계와,
    적어도 상기 제2 참가 워크스테이션에 의해 상기 제1 메시지를 수신하는 단계와,
    상기 제1 참가 워크스테이션으로부터 상기 제1 메시지가 동보되었을 때 이를 수신하지 않은, 상기 세션의 적어도 하나의 다른 참가 워크스테이션에게 상기 제1 메시지를 상기 제2 참가 워크스테이션으로부터 동보하는 단계
    를 포함하는 방법.
  34. 제33항에 있어서,
    새로운 참가 워크스테이션을 상기 세션에 추가하는 단계와,
    상기 제2 참가 워크스테이션으로부터, 또는 상기 제1 참가 워크스테이션 이외에 상기 세션에 존재하는 참가 워크스테이션으로부터, 상기 새로운 참가 워크스테이션을 위해 상기 제1 메시지를 획득하는 단계
    를 더 포함하는 방법.
  35. 제33항에 있어서, 상기 제1 메시지는 UDP를 이용하여 동보되는 방법.
  36. 제33항에 있어서, 상기 제1 메시지는 전자 잉크 데이터를 포함하는 방법.
  37. 제33항에 있어서, 상기 제1 참가 워크스테이션은 상기 제1 메시지가 상기 제2 참가 워크스테이션에 의해 동보되기 전에 상기 세션을 떠나는 방법.
  38. 제33항에 있어서, 상기 참가 워크스테이션들은 공통의 서버에 동작적으로 접속되어 있지 않은 방법.
  39. 복수의 참가자들 사이의 데이터 전송을 수반하는 세션이 이루어지는 네트워크를 통해 수신된 데이터를 처리하기 위한 시스템에 있어서,
    동보되는 참가자 식별자, 메시지 식별자, 세션 정보 및 메시지 페이로드(message payload)를 적어도 포함하는 동보된 메시지를, 상기 세션에 관여하는 참가자로부터 수신하도록 구성된 수신기와,
    상기 메시지를 수신하는 사용자가 상기 세션의 참가자인지의 여부를 판정하고, 상기 사용자가 상기 세션의 참가자인 경우 상기 메시지를 처리하도록 프로그래밍 및 구성된 프로세서
    를 포함하는 시스템.
  40. 제39항에 있어서, 상기 프로세서는 상기 사용자가 상기 세션의 참가자인지여부를,
    (a) 상기 사용자가 상기 세션에서 활동중인 참가자인지 여부를 판정하는 단계, 또는
    (b) 상기 사용자가 상기 세션에 대한 참가자 리스트에 포함되어 있는지 여부를 판정하는 단계
    중 적어도 하나에 의해 판정하는 시스템.
  41. 제39항에 있어서, 상기 메시지를 처리하기에 앞서, 상기 프로세서는 상기 사용자가 상기 세션의 이전의 메시지들을 모두 수신하였는지 여부를 더 판정하는 시스템.
  42. 제41항에 있어서,
    상기 사용자가 이전에 수신하지 않은, 상기 세션의 적어도 하나의 이전의 메시지에 대한 요청을 전송하도록 구성된 동보 시스템
    을 더 포함하는 시스템.
  43. 제39항에 있어서, 상기 세션은 P2P 통신을 수반하는 시스템.
  44. 제39항에 있어서, 상기 세션에서의 데이터 전송은 공통의 서버를 이용하지 않는 시스템.
  45. 제39항에 있어서, 상기 수신기는 무선 접속을 통해 상기 네트워크 상에서 상기 메시지 페이로드를 수신하는 시스템.
  46. 제39항에 있어서, 상기 메시지 페이로드는 전자 잉크 데이터를 포함하는 방법.
  47. 제39항에 있어서, 상기 세션은 복수의 세션 참가자들이 새로운 메시지들을 추가하거나, 기존의 메시지들을 삭제하거나, 또는 기존의 메시지들을 수정할 수 있는 가상 화이트보드를 구성하는 시스템.
  48. 제39항에 있어서, 상기 메시지는 UDP를 이용하여 동보되는 시스템.
  49. 워크스테이션에 있어서,
    메시지 데이터의 송신 및 수신이 가능한 복수의 참가자들을 포함하는 세션이 이루어지는 네트워크를 액세스하도록 구성된 접속 시스템과,
    상기 워크스테이션의 사용자가 상기 세션의 참가자인지 여부를 판정하도록 프로그래밍 및 구성된 프로세서와,
    상기 사용자가 상기 세션의 참가자인 것으로 판정된 경우, 상기 세션 동안 전송되는 메시지 데이터를 수신하도록 구성된 메시지 수신 시스템
    을 포함하는 워크스테이션.
  50. 제49항에 있어서, 상기 프로세서는 상기 사용자가 상기 세션에 대한 참가자 리스트에 포함되어 있는지 여부를 판정함으로써 상기 사용자가 상기 세션의 참가자인지의 여부를 판정하는 워크스테이션.
  51. 제49항에 있어서,
    적어도 하나의 이전에 수신되지 않은 메시지에 대한 요청을 동보하도록 구성된 동보 시스템
    을 더 포함하는 워크스테이션.
  52. 제49항에 있어서, 상기 세션은 P2P 통신을 수반하는 워크스테이션.
  53. 제49항에 있어서, 상기 메시지 데이터는 상기 세션의 모든 참가자들에게 공통의 서버를 통해 전송되지 않는 워크스테이션.
  54. 제49항에 있어서, 상기 접속 시스템은 상기 네트워크에 무선 접속을 통하여 접속되는 워크스테이션.
  55. 제49항에 있어서, 상기 메시지 수신 시스템은 UDP를 이용하여 동보된 메시지들을 수신하도록 구성된 워크스테이션.
  56. 제49항에 있어서, 상기 메시지 데이터 중 적어도 일부는 전자 잉크 데이터를 포함하는 워크스테이션.
  57. 세션의 복수의 참가자 사이에서 메시지들을 통신하기 위한 시스템에 있어서,
    P2P 방식으로 접속된 복수의 참가 워크스테이션 - 상기 참가 워크스테이션들 중 적어도 일부는, 상기 세션의 다른 참가 워크스테이션들에게 상기 네트워크를 통해 메시지 데이터를 동보할 수 있고, 상기 세션의 다른 참가 워크스테이션들로부터 동보된 메시지 데이터를 상기 네트워크를 통해 수신할 수 있음 -
    를 포함하고,
    상기 참가 워크스테이션들 중 하나는 상기 세션을 자유로이 나갈 수 있고, 상기 나가는 참가 워크스테이션이 상기 세션을 나가기 전에 동보한 메시지 데이터는 필요한 경우 상기 나가는 참가 워크스테이션이 동보한 상기 메시지 데이터를 이전에 수신하였던 나머지 참가 워크스테이션으로부터 다른 참가 워크스테이션들이 획득할 수 있는 시스템.
  58. 제57항에 있어서, 새로운 참가 워크스테이션이 자유로이 상기 세션에 들어올 수 있고, 하나 이상의 참가 워크스테이션으로부터 이전의 메시지 데이터를 획득할 수 있는 시스템.
  59. 제57항에 있어서, 상기 메시지 데이터는 UDP를 이용하여 동보되는 시스템.
  60. 제57항에 있어서, 상기 메시지 데이터 중 적어도 일부는 전자 잉크 데이터를 포함하는 시스템.
  61. 제57항에 있어서, 상기 복수의 참가 워크스테이션은 메시지 데이터 전송을 위해 공통의 서버에 접속되지 않는 시스템.
  62. 세션의 참가자들에게 메시지 데이터를 전송하기 위한 데이터 구조를 수록한 컴퓨터 판독 가능 매체에 있어서, 상기 데이터 구조는
    (a) 메시지 ID를 나타내는 데이터를 포함하는 제1 데이터 필드와,
    (b) 세션 정보를 나타내는 데이터를 포함하는 제2 데이터 필드와,
    (c) 메시지 페이로드를 나타내는 데이터를 포함하는 제3 데이터 필드
    를 포함하는 컴퓨터 판독 가능 매체.
  63. 제62항에 있어서, 상기 세션 정보를 나타내는 상기 데이터는, 세션 ID, 세션 참가자 리스트 및 세션 메시지 히스토리(history)를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버를 나타내는 데이터를 포함하는 컴퓨터 판독 가능 매체.
  64. 제62항에 있어서, 상기 세션 정보를 나타내는 상기 데이터는, (a) 세션 ID, (b) 세션 참가자 리스트 및 (c) 세션 메시지 히스토리를 나타내는 데이터를 적어도 포함하는 컴퓨터 판독 가능 매체.
  65. 제62항에 있어서, 상기 데이터 구조는
    상기 메시지 데이터를 동보하는 참가자의 식별자를 나타내는 데이터를 포함하는 제4 데이터 필드
    를 더 포함하는 컴퓨터 판독 가능 매체.
  66. 제62항에 있어서, 상기 데이터 구조는 UDP를 이용한 동보를 위한 형식으로 되어 있는 컴퓨터 판독 가능 매체.
  67. 제62항에 있어서, 상기 메시지 페이로드는 전자 잉크 데이터를 포함하는 컴퓨터 판독 가능 매체.
  68. 사용자가 복수의 참가자들을 포함하는 데이터 전송 세션에 관여되는 경우 상기 사용자의 식별 데이터를 네트워크에 전송하기 위한 데이터 구조를 수록한 컴퓨터 판독 가능 매체에 있어서, 상기 데이터 구조는
    상기 사용자의 신원을 나타내는 데이터를 포함하는 제1 데이터 필드와,
    상기 데이터 전송 세션과 관련된 식별 정보를 나타내는 데이터를 포함하는제2 데이터 필드와,
    상기 세션에서의 상기 사용자의 히스토리를 나타내는 데이터를 포함하는 제3 데이터 필드
    를 포함하는 컴퓨터 판독 가능 매체.
  69. 제68항에 있어서, 상기 데이터 전송 세션과 관련된 식별 정보를 나타내는 상기 데이터는, 세션 ID 및 세션 참가자 리스트를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버를 나타내는 데이터를 포함하는 컴퓨터 판독 가능 매체.
  70. 제68항에 있어서, 상기 데이터 전송 세션과 관련된 식별 정보를 나타내는 상기 데이터는, 세션 ID 및 세션 참가자 리스트를 적어도 나타내는 데이터를 포함하는 컴퓨터 판독 가능 매체.
  71. 제68항에 있어서, 상기 사용자의 히스토리를 나타내는 상기 데이터는, 세션 ID, 상기 세션의 상기 사용자에 의해 처리되는 적어도 최후의 메시지를 식별하는 메시지 ID 리스트 및 상기 세션의 상기 사용자에 의해 전송되는 적어도 최후의 메시지를 식별하는 메시지 ID 리스트를 포함하는 그룹으로부터 선택된 적어도 하나의 멤버를 나타내는 데이터를 포함하는 컴퓨터 판독 가능 매체.
  72. 제68항에 있어서, 상기 사용자의 히스토리를 나타내는 상기 데이터는, 세션ID 및 상기 세션의 상기 사용자에 의해 처리되는 적어도 최후의 메시지를 식별하는 메시지 ID 리스트를 적어도 나타내는 데이터를 포함하는 컴퓨터 판독 가능 매체.
  73. 제68항에 있어서, 상기 데이터 구조는 UDP를 이용한 동보를 위한 형식으로 되어 있는 컴퓨터 판독 가능 매체.
KR1020040022931A 2003-05-02 2004-04-02 P2p 네트워크에서의 비상주 접속을 통한 메시지 통신 KR20040094309A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/427,941 US7966368B2 (en) 2003-05-02 2003-05-02 Communicating messages over transient connections in a peer-to-peer network
US10/427,941 2003-05-02

Publications (1)

Publication Number Publication Date
KR20040094309A true KR20040094309A (ko) 2004-11-09

Family

ID=32990461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040022931A KR20040094309A (ko) 2003-05-02 2004-04-02 P2p 네트워크에서의 비상주 접속을 통한 메시지 통신

Country Status (7)

Country Link
US (1) US7966368B2 (ko)
EP (2) EP1496646B1 (ko)
JP (1) JP4658509B2 (ko)
KR (1) KR20040094309A (ko)
CN (1) CN100461681C (ko)
AT (2) ATE431656T1 (ko)
DE (2) DE602004021068D1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788851B1 (ko) * 2005-01-21 2007-12-27 리서치 인 모션 리미티드 컴퓨팅 장치의 구성요소 사이의 지정된 접속을 결정하는 시스템 및 방법
KR100792809B1 (ko) * 2005-08-22 2008-01-14 인피니언 테크놀로지스 아게 회의 세션 초대 메시지의 컴퓨터 지원 구성 방법, 회의세션의 컴퓨터 지원 생성 방법, 회의 세션에서 메시지의컴퓨터 지원 처리 방법, 회의 세션 초대 메시지 생성 유닛,회의 세션 생성 유닛 및 통신 단말 장치
KR101499963B1 (ko) * 2008-08-25 2015-03-06 엘지전자 주식회사 휴대 단말기 및 휴대 단말기를 이용한 정보 제공 방법

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021737A1 (en) * 2003-05-01 2005-01-27 Ellison Carl M. Liveness protocol
US7316027B2 (en) * 2004-02-03 2008-01-01 Novell, Inc. Techniques for dynamically establishing and managing trust relationships
US7299493B1 (en) * 2003-09-30 2007-11-20 Novell, Inc. Techniques for dynamically establishing and managing authentication and trust relationships
US7467415B2 (en) * 2003-09-30 2008-12-16 Novell, Inc. Distributed dynamic security for document collaboration
US7581097B2 (en) * 2003-12-23 2009-08-25 Lenovo Pte Ltd Apparatus, system, and method for secure communications from a human interface device
US7454465B2 (en) * 2004-03-26 2008-11-18 Microsoft Corporation Real-time collaboration and communication in a peer-to-peer networking infrastructure
US8688803B2 (en) 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
US7865734B2 (en) 2005-05-12 2011-01-04 The Invention Science Fund I, Llc Write accessibility for electronic paper
US8281142B2 (en) 2005-01-20 2012-10-02 The Invention Science Fund I, Llc Notarizable electronic paper
US7774606B2 (en) 2005-01-20 2010-08-10 The Invention Science Fund I, Inc Write accessibility for electronic paper
US7739510B2 (en) 2005-05-12 2010-06-15 The Invention Science Fund I, Inc Alert options for electronic-paper verification
US8063878B2 (en) 2005-01-20 2011-11-22 The Invention Science Fund I, Llc Permanent electronic paper
US7669245B2 (en) * 2005-06-08 2010-02-23 Searete, Llc User accessibility to electronic paper
US7856555B2 (en) 2005-01-20 2010-12-21 The Invention Science Fund I, Llc Write accessibility for electronic paper
US8640259B2 (en) 2005-01-20 2014-01-28 The Invention Science Fund I, Llc Notarizable electronic paper
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US7469149B2 (en) * 2005-06-03 2008-12-23 Motorola, Inc. Method and apparatus for serially establishing a group call session
US7774827B2 (en) * 2005-06-06 2010-08-10 Novell, Inc. Techniques for providing role-based security with instance-level granularity
US7634551B2 (en) * 2005-12-07 2009-12-15 Xerox Corporation System and method for forming a cluster of networked devices
US8195747B2 (en) * 2005-12-20 2012-06-05 International Business Machines Corporation User identity based instant messaging session monitoring
US7680044B2 (en) * 2005-12-29 2010-03-16 Panasonic Electric Works Co., Ltd. Systems and methods for managing traffic within a peer-to-peer network
US20070175785A1 (en) * 2006-01-28 2007-08-02 Darren Sharp Accessory bit caddie base marketing cover
US8639605B2 (en) * 2006-04-21 2014-01-28 Thomson Reuters Global Resources Systems and methods for the identification and messaging of trading parties
FI20065479A0 (fi) * 2006-07-05 2006-07-05 Nokia Corp Ryhmäkommunikaatio
WO2008039860A1 (en) 2006-09-26 2008-04-03 Experian Information Solutions, Inc. System and method for linking mutliple entities in a business database
WO2008048167A1 (en) * 2006-10-17 2008-04-24 Anoto Ab Data transfer from multiple electronic pens
US8243022B2 (en) * 2006-11-27 2012-08-14 Microsoft Corporation Federated virtual graffiti
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US20100100866A1 (en) * 2008-10-21 2010-04-22 International Business Machines Corporation Intelligent Shared Virtual Whiteboard For Use With Representational Modeling Languages
JP5206532B2 (ja) * 2009-03-25 2013-06-12 日本電気株式会社 システム及びメッセージ中継サーバ及び端末装置
US8086734B2 (en) 2009-08-26 2011-12-27 International Business Machines Corporation Method of autonomic representative selection in local area networks
CN102065062B (zh) * 2009-11-12 2013-08-28 华为终端有限公司 建立联合会话的方法和应用服务器
CN103457935A (zh) * 2009-11-12 2013-12-18 华为终端有限公司 建立联合会话的方法和应用服务器
US9372728B2 (en) * 2009-12-03 2016-06-21 Ol Security Limited Liability Company System and method for agent networks
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US10108386B2 (en) * 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US9130763B2 (en) * 2011-06-20 2015-09-08 Microsoft Technology Licensing, Llc Automatic sharing of event content by linking devices
KR101909031B1 (ko) * 2012-07-26 2018-10-17 엘지전자 주식회사 이동 단말기 및 이의 제어 방법
WO2014061715A1 (ja) 2012-10-19 2014-04-24 グリー株式会社 画像配信方法、画像配信サーバ装置及びチャットシステム
FR2998995A1 (fr) * 2012-12-03 2014-06-06 France Telecom Procede de communication entre plusieurs utilisateurs munis de terminaux de communication, par l'intermediaire d'une espace virtuel de communication
JP6155635B2 (ja) * 2012-12-26 2017-07-05 株式会社リコー 情報処理システム、サーバー機器及び情報処理装置
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
US10126927B1 (en) 2013-03-15 2018-11-13 Study Social, Inc. Collaborative, social online education and whiteboard techniques
US9706267B2 (en) * 2013-04-22 2017-07-11 Aginova Inc. iCelsius wireless: wireless monitoring with smart phones and tablets
EP2811796A1 (en) * 2013-06-07 2014-12-10 Stichting Vu-Vumuc Position-based broadcast protocol and time slot schedule for a wireless mesh network
US9489114B2 (en) * 2013-06-24 2016-11-08 Microsoft Technology Licensing, Llc Showing interactions as they occur on a whiteboard
JP2015080075A (ja) * 2013-10-16 2015-04-23 ソニー株式会社 映像表示システム、外部装置および映像表示方法
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
BR112016009938B1 (pt) * 2013-11-19 2022-01-25 Wacom Co., Ltd Métodos de geração de dados de tinta e de desenho para renderização de dados de imagem
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
JP6294487B2 (ja) * 2014-09-30 2018-03-14 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd 飛行ミッション処理方法、装置及びシステム
CN107851073A (zh) * 2015-07-24 2018-03-27 索尼公司 信息处理设备、信息处理方法以及程序
JP2017076207A (ja) * 2015-10-14 2017-04-20 株式会社リコー 画像処理装置及び画像処理システム
US10375194B2 (en) * 2015-10-30 2019-08-06 The Nielsen Company (Us), Llc Methods and apparatus to prevent illicit proxy communications from affecting a monitoring result
CN106685600B (zh) * 2015-11-05 2019-09-20 北京中广上洋科技股份有限公司 局域网内工作站之间的消息传递方法
AU2018215082B2 (en) 2017-01-31 2022-06-30 Experian Information Solutions, Inc. Massive scale heterogeneous data ingestion and user resolution
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
WO2020212611A1 (en) * 2019-04-18 2020-10-22 Medicus Ai Gmbh Method and system for transmitting combined parts of distributed data
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution
US20220345855A1 (en) * 2021-04-22 2022-10-27 Amdocs Development Limited System, method, and computer program for unified messaging platform deployed on ephemeral mesh network

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5216675A (en) * 1990-05-23 1993-06-01 The United States Of America As Represented By The Secretary Of The Air Force Reliable broadcast protocol
US5805825A (en) * 1995-07-26 1998-09-08 Intel Corporation Method for semi-reliable, unidirectional broadcast information services
US6016505A (en) * 1996-04-30 2000-01-18 International Business Machines Corporation Program product to effect barrier synchronization in a distributed computing environment
US6295550B1 (en) * 1996-10-23 2001-09-25 Ncr Corporation Session creation mechanism for collaborative network navigation
US5940082A (en) * 1997-02-14 1999-08-17 Brinegar; David System and method for distributed collaborative drawing
US5987376A (en) * 1997-07-16 1999-11-16 Microsoft Corporation System and method for the distribution and synchronization of data and state information between clients in a distributed processing system
JPH11272534A (ja) 1998-01-20 1999-10-08 Fujitsu Ltd ドキュメント分散処理方法,ドキュメント分散処理システムのサーバ管理方法およびサーバプログラムの記録媒体
US6484196B1 (en) * 1998-03-20 2002-11-19 Advanced Web Solutions Internet messaging system and method for use in computer networks
US6363421B2 (en) * 1998-05-31 2002-03-26 Lucent Technologies, Inc. Method for computer internet remote management of a telecommunication network element
US6505253B1 (en) * 1998-06-30 2003-01-07 Sun Microsystems Multiple ACK windows providing congestion control in reliable multicast protocol
US6212548B1 (en) * 1998-07-30 2001-04-03 At & T Corp System and method for multiple asynchronous text chat conversations
US6604129B2 (en) * 1999-03-25 2003-08-05 At&T Corp. Method and apparatus for a conference call mediation service
US6763373B2 (en) * 1999-10-13 2004-07-13 Datahouse Labs, Inc. Method and system for creating and sending handwritten or handdrawn messages
US6564249B2 (en) * 1999-10-13 2003-05-13 Dh Labs, Inc. Method and system for creating and sending handwritten or handdrawn messages
US6304898B1 (en) * 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
US6606644B1 (en) * 2000-02-24 2003-08-12 International Business Machines Corporation System and technique for dynamic information gathering and targeted advertising in a web based model using a live information selection and analysis tool
JP3571616B2 (ja) 2000-05-23 2004-09-29 エヌ・ティ・ティ・コムウェア株式会社 データの共有方法、端末装置および記録媒体
US6980518B1 (en) * 2000-06-23 2005-12-27 International Business Machines Corporation Gossip-based reliable multicast message recovery system and method
US6910069B1 (en) * 2000-07-31 2005-06-21 The Boeing Company Joining a broadcast channel
US6920497B1 (en) * 2000-07-31 2005-07-19 The Boeing Company Contacting a broadcast channel
AU784512B2 (en) * 2000-10-19 2006-04-13 International Business Machines Corporation Method and system for persistent chat sessions
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US20020129106A1 (en) * 2001-03-12 2002-09-12 Surgency, Inc. User-extensible system for manipulating information in a collaborative environment
US6981223B2 (en) * 2001-03-19 2005-12-27 Ecrio, Inc. Method, apparatus and computer readable medium for multiple messaging session management with a graphical user interface
US6636745B2 (en) * 2001-08-10 2003-10-21 Motorola, Inc. Method and apparatus to shorten call-setup time
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
JP4446368B2 (ja) * 2001-09-14 2010-04-07 富士通株式会社 コラボレーション方法、システム、プログラム及び記録媒体
US20030135565A1 (en) * 2002-01-14 2003-07-17 Julio Estrada Electronic mail application with integrated collaborative space management
US20030135552A1 (en) * 2002-01-14 2003-07-17 Blackstock Michael A. Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US20030163525A1 (en) * 2002-02-22 2003-08-28 International Business Machines Corporation Ink instant messaging with active message annotation
US7421736B2 (en) * 2002-07-02 2008-09-02 Lucent Technologies Inc. Method and apparatus for enabling peer-to-peer virtual private network (P2P-VPN) services in VPN-enabled network
US7362349B2 (en) * 2002-07-10 2008-04-22 Seiko Epson Corporation Multi-participant conference system with controllable content delivery using a client monitor back-channel
US7613772B2 (en) * 2002-07-25 2009-11-03 Colligo Networks, Inc. Method for context based discovery and filtering of portable collaborative networks
US7069438B2 (en) * 2002-08-19 2006-06-27 Sowl Associates, Inc. Establishing authenticated network connections
JP2004110573A (ja) * 2002-09-19 2004-04-08 Ricoh Co Ltd データ通信方法、データ通信装置、データ通信システム及びデータ通信プログラム
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US20040215784A1 (en) * 2003-04-28 2004-10-28 Yan Qi Distributed management of collaboration sessions including local and remote servers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788851B1 (ko) * 2005-01-21 2007-12-27 리서치 인 모션 리미티드 컴퓨팅 장치의 구성요소 사이의 지정된 접속을 결정하는 시스템 및 방법
KR100792809B1 (ko) * 2005-08-22 2008-01-14 인피니언 테크놀로지스 아게 회의 세션 초대 메시지의 컴퓨터 지원 구성 방법, 회의세션의 컴퓨터 지원 생성 방법, 회의 세션에서 메시지의컴퓨터 지원 처리 방법, 회의 세션 초대 메시지 생성 유닛,회의 세션 생성 유닛 및 통신 단말 장치
KR101499963B1 (ko) * 2008-08-25 2015-03-06 엘지전자 주식회사 휴대 단말기 및 휴대 단말기를 이용한 정보 제공 방법

Also Published As

Publication number Publication date
JP4658509B2 (ja) 2011-03-23
US7966368B2 (en) 2011-06-21
EP1496646B1 (en) 2009-05-13
CN100461681C (zh) 2009-02-11
US20040221043A1 (en) 2004-11-04
EP1473871A2 (en) 2004-11-03
DE602004006798D1 (de) 2007-07-19
ATE431656T1 (de) 2009-05-15
ATE364273T1 (de) 2007-06-15
DE602004021068D1 (de) 2009-06-25
DE602004006798T2 (de) 2007-10-11
JP2004334847A (ja) 2004-11-25
EP1473871B1 (en) 2007-06-06
CN1543124A (zh) 2004-11-03
EP1496646A2 (en) 2005-01-12
EP1496646A3 (en) 2005-05-25
EP1473871A3 (en) 2004-12-22

Similar Documents

Publication Publication Date Title
EP1473871B1 (en) Communicating messages over transient connections in a peer-to-peer network
EP1471683B1 (en) Bridging subnet broadcasts across subnet boundaries
US9826022B2 (en) Sound wave-based content sharing
US7865563B2 (en) Persisting a group in an instant messaging application
US7454465B2 (en) Real-time collaboration and communication in a peer-to-peer networking infrastructure
US6728784B1 (en) Collaborative multimedia architecture for packet-switched data networks
US11847250B2 (en) Controlling disclosure of identities in communication sessions
US7822859B2 (en) Conference server redundancy
US20040249953A1 (en) Peer-to-peer instant messaging
US7533185B2 (en) Data communication method, system and program using unicast and multicast communications
AU7942201A (en) Method and system for persistent chat sessions
US20090119368A1 (en) System and method for gathering conversation information
US8515992B2 (en) Method and system for creating executable document and repository links within virtual workplace environments
US11233797B2 (en) Seamless guest access to spaces and meetings
US20040098494A1 (en) Method and system for telecommuting enviroment
Chawathe et al. A Coordination Architecture for MBone Conferences
Nichols et al. Host a Virtual Meeting
Hansson Fredrik Kilander (fk@ dsv. su. se) Patrik Werle (werle@ dsv. su. se) Karin Hansson (karin-ha@ dsv. su. se) K2LAB Dpt. of Computing and Systems Sciences

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application