KR20080003347A - 서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한애플리케이션 프로그래밍 인터페이스 - Google Patents

서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한애플리케이션 프로그래밍 인터페이스 Download PDF

Info

Publication number
KR20080003347A
KR20080003347A KR1020077023815A KR20077023815A KR20080003347A KR 20080003347 A KR20080003347 A KR 20080003347A KR 1020077023815 A KR1020077023815 A KR 1020077023815A KR 20077023815 A KR20077023815 A KR 20077023815A KR 20080003347 A KR20080003347 A KR 20080003347A
Authority
KR
South Korea
Prior art keywords
user entity
information
message
entity
endpoint
Prior art date
Application number
KR1020077023815A
Other languages
English (en)
Inventor
토머 와이즈버그
안드레 알. 클라쎈
아니루드 아니루드
케빈 알. 타오
3세 업셔 워렌 팍스
라비 라오
엘리엇 존 플라네리
로힛 굽타
데이비드 지. 탤러
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 KR20080003347A publication Critical patent/KR20080003347A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

제1 종점에서 프리젠스의 게시를 허가하는 단계, 만약 게시가 허가되면, 프리젠스 데이터 구조를 어셈블링하는 단계, 및 제1 종점으로부터 프리젠스 데이터 구조를 브로드캐스트하는 단계를 포함할 수 있는 프리젠스 게시를 용이하게 하는 방법이 기재되어 있다. 또한, 본 방법은 애칭(friendly name), 콘택트 정보 및 종점 정보를 포함하는 프리젠스 구조를 포함할 수 있다. 또한, 본 방법은 XML 포맷 또는 브이카드 포맷 중 적어도 하나인 콘택트 정보, 및 피어명 분석 프로토콜로부터 획득되는 종점 정보를 포함할 수 있다. 또한, 본 방법은 일반적인 발견 프로토콜 메시지 또는 단순 서비스 발견 프로토콜 메시지 중 적어도 하나로서 인코딩되는 프리젠스 데이터, 및 전역적 고유 식별자를 발견 프로토콜 메시지와 연관시키는 단계를 더 포함할 수 있다. 본 방법은 프리젠스 게시를 허가하는 사용자 엔터티, 및 모든 프리젠스의 게시를 허가하는 디폴트 파라미터, 일부 프리젠스의 게시를 허가하는 디폴트 파라미터, 어떠한 프리젠스의 게시도 허가하지 않는 디폴트 파라미터 중 적어도 하나를 설정하는 사용자 엔터티를 포함할 수 있다.
프리젠스 게시, 브로드캐스트, 액티비티, 유효성 검사, 콘택트 저장부

Description

서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한 애플리케이션 프로그래밍 인터페이스{AN APPLICATION PROGRAMMING INTERFACE FOR DISCOVERING ENDPOINTS IN A SERVERLESS PEER TO PEER NETWORK}
MSN® 통신 서비스에 의해 제공되는 메신저 서비스와 같은 서버 기반의 통신 서비스는 사용자가 서버 기반 네트워크에 로그인하게 한 후, 네트워크의 서비스(예컨대, 이메일, 텍스트 메시징 등)를 사용하게 한다. 서버는 사용자를 위한 콘택트 리스트를 저장할 수 있고, 사용자는 그 콘택트 리스트로부터 사람들을 추가할 수도 있고 삭제할 수도 있다. 사용자가 로그인하면, 서버 또는 서버들은 사용자가 "온라인" 상태임을 사용자의 콘택트 리스트에 있는 사람들에게 통지할 수 있다. 마찬가지로, 서버 또는 서버들은 "온라인" 상태인 사용자의 콘택트 리스트의 사람들을 사용자에게 통지할 수 있다.
또한, 마이크로소프트® 코포레이션은 그 윈도우즈® 운영 체제와 함께 사용하기 위한 피어 투 피어 네트워킹 소프트웨어를 제공한다. 이 시스템에 의하면, 중앙 서버에 로그인하지 않고도, 사용자가 피어 컴퓨터의 네트워크를 생성할 수 있고, 서로 통신할 수 있다. 예컨대, 사용자는 피어 투 피어 그룹을 생성할 수 있어, 그룹의 모든 멤버가 메시지를 게시할 수 있고 그룹내의 다른 멤버에 의해 게시 된 메시지를 볼 수 있는 채팅룸을 생성할 수 있다. 또한, 시스템은 피어가 주변의 다른 피어들을 발견할 수 있도록 한다. 채팅룸은 중앙 서버의 필요 없이, 피어 컴퓨터를 사용하여 유지된다.
제1 종점(end point)에서 프리젠스(presence)의 게시(publication)를 허가하는 단계, 만약 게시가 허가되면, 프리젠스 데이터 구조를 어셈블링하는 단계, 및 제1 종점으로부터 프리젠스 데이터 구조를 브로드캐스트하는 단계를 포함할 수 있는, 프리젠스 게시를 용이하게 하는 방법이 기재되어 있다. 또한, 본 방법은 애칭(friendly name), 콘택트 정보, 및 종점 정보를 포함하는 프리젠스 구조를 포함할 수 있다. 또한, 본 방법은 XML 포맷 또는 브이카드(vCard) 포맷 중 적어도 하나의 포맷의 콘택트 정보, 및 피어명 분석 프로토콜(peer name resolution protocol)로부터 획득되는 종점 정보를 포함할 수 있다. 또한, 본 방법은 일반적인 발견 프로토콜 메시지(generic discovery protocol message) 또는 단순 서비스 발견 프로토콜 메시지(simple service discovery protocol message) 중 적어도 하나로서 인코딩되는 프리젠스 데이터 구조, 및 전역적 고유 식별자(globally unique identifier)를 발견 프로토콜 메시지와 연관시키는 단계를 더 포함할 수 있다. 본 방법은 프리젠스 게시를 허가하는 사용자 엔터티, 및 모든 프리젠스의 게시를 허가하는 디폴트 파라미터, 일부 프리젠스의 게시를 허가하는 디폴트 파라미터, 어떠한 프리젠스의 게시도 허가하지 않는 디폴트 파라미터 중 적어도 하나를 설정하는 사용자 엔터티를 포함할 수 있다.
제1 종점에서 제1 사용자 엔터티를 등록하는 단계, 제2 사용자 엔터티를 식별하는 메시지를 수신하는 단계, 수신된 메시지의 유효성을 검사하는 단계, 및 발견 캐시(discovery cache)에 유효성 검사의 결과를 저장하는 단계를 포함하는, 사용자 엔터티의 발견을 용이하게 하는 방법이 기재되어 있다. 또한, 본 방법은 단순 서비스 발견 프로토콜 메시지를 게시하는 단계를 포함하는 등록 단계, 발견 캐시의 결과를 열거하는 단계, 및 제2 사용자 엔터티에 대해 쿼리(query)하는 단계를 포함할 수 있다. 또한, 본 방법은 XML 포맷의 수신 메시지, 프리젠스 정보를 포함하는 수신 메시지, 및 제2 사용자 엔터티의 제2 종점의 상태, 제2 사용자 엔터티의 접촉 ID 정보 및 제2 사용자 엔터티의 접촉 메타데이터를 더 포함하는 프리젠스 정보를 포함할 수 있다. 본 방법은 이용 가능한 사용자 엔터티 또는 이용 불가능한 사용자 엔터티 중 적어도 하나를 나타내는 식별 메지지를 포함하는 유효성 검사, 발견 캐시에 이용 가능한 사용자 엔터티를 추가하고, 발견 캐시로부터 이용 불가능한 사용자 엔터티를 제거하는 단계를 더 포함할 수 있다. 본 방법은 단순 서비스 발견 프로토콜 메시지로서 인코딩되는 메시지, 전역적 고유 식별자를 단순 서비스 발견 프로토콜 메시지와 연관시키는 단계, 및 제1 사용자 엔터티가 메시지 수신에 참여하는 것을 허용하는 단계를 포함하는 등록 단계를 포함할 수 있다.
도 1은 청구항에 따라 동작될 수 있는 컴퓨팅 시스템의 블록도.
도 2는 피어 투 피어의 서버리스 공동 작업 및/또는 통신을 용이하게 할 수 있는 예시적인 시스템의 블록도.
도 3은 서버리스 피어 투 피어 네트워크에서의 이용 가능성을 게시하는 것에 관련된 예시적인 방법의 플로우챠트.
도 4는 서버리스 피어 투 피어 네트워크에서 본인 주변의 사람들을 발견하는 것에 관련된 예시적인 방법의 플로우챠트.
이하에서는 다수의 상이한 실시예에 대한 상세한 설명을 개시하지만, 이러한 설명의 법률적 범위는 본 명세서의 끝 부분에 개시되는 특허청구범위의 용어들에 의해 제한된다는 점이 이해되어야 한다. 상세한 설명은 단지 예시적인 것으로 고려되어야 하고, 모든 가능한 실시예들을 설명하는 것은 아니며, 이는 비록 불가능하지 않더라도 모든 가능한 실시예들을 설명한다는 것은 실용적이지 않기 때문이다. 현재의 기술 또는 본 특허의 출원일 이후에 개발된 기술들을 사용하여 다수의 대안적인 실시예들이 구현될 수 있지만, 이러한 것들도 역시 본 발명의 특허청구범위의 범위에 포함되는 것이다.
"본 명세서에서 사용될 때, 용어 '____'는 ...을 의미하도록 여기에서 정의된다"라는 문장 또는 이와 유사한 문장을 사용하여 본 명세서에서 명시적으로 정의되지 않는 한, 이러한 용어는 명시적으로든 또는 암시적으로든, 그것의 일반적인 의미 또는 보통의 의미 이상으로, 그 용어의 의미를 제한하려는 의도는 아니며, 이러한 용어가 본 명세서의 임의의 섹션에 있는 임의의 문장(청구항의 언어가 아니라)에 기초하여 범위가 제한되도록 해석되어서는 안 된다는 것 또한 이해할 것이다. 본 명세서의 끝 부분에 있는 청구범위에 언급된 임의의 용어가 단일 의미로 일관된 방식으로 본 명세서에서 지칭되는 점에서, 이는 단지 독자들을 혼동시키지 않도록 단순 명료하게 기술한 것으로, 이러한 청구범위의 용어가 암시적으로든 또는 다르게든, 그 단일 의미로 제한되는 것은 아니다. 마지막으로, 임의의 구조의 언급 없이 "수단"이라는 단어와 기능을 언급함으로써 청구항의 구성요소가 정의되지 않는다면, 임의의 청구항의 구성요소의 범위가 U.S.C.§112, 6번째 항의 적용에 기초하여 해석되어야 하는 것은 아니다.
도 1은 청구되는 방법의 단계를 위한 시스템 및 장치가 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 청구항의 장치의 방법의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
청구되는 방법의 단계 및 장치는 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 청구항의 방법 또는 장치에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
청구되는 방법의 단계 및 장치는 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 방법 및 장치는 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1과 관련하여, 청구되는 방법의 단계 및 장치를 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standard Association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(Peripheral Component Interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한 다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통 해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)를 위해, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162) 및 마우스, 트랙볼(trackball) 또는 터치 패드와 같은 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페 이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 비록 도 1에는 메모리 저장 장치(181)만이 도시되어 있지만, 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 원격 컴퓨터(180)에 있는 것으로 도시하고 있 지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
도 2는 여기서 설명되는 예시적인 방법을 구현하기 위하여 사용될 수 있는 예시적인 시스템(200)의 블록도이다. 시스템(200)은 피어 투 피어의 서버리스 공동 작업 및/또는 통신 네트워크(202)를 통한 통신을 용이하게 할 수 있고, 도 1의 컴퓨팅 시스템(100)과 같은 컴퓨팅 시스템을 사용하여 구현될 수 있다. 통신 네트워크는 LAN 및/또는 WAN, 또는 예컨대 소켓 통신, 또는 지정 파이프(named pipe)를 지원하는 통신 매체를 포함할 수 있지만, 이에 제한되는 것은 아니다.
시스템(200)은 통신 네트워크 상에서 다른 엔터티의 프리젠스를 모니터하는 프리젠스 시스템(204)을 포함할 수 있다. 예컨대, 엔터티는 특정한 사람, 장치(예컨대, 프린터, 복사기, 컴퓨터, 스캐너 등), 조직내의 지위(예컨대, "매니저", "고객 서비스 대표" 등), 조직 등일 수 있다. 네트워크 상의 프리젠스는 일반적으로 네트워크를 통해 통신하는 능력 또는 그들의 의지에 관한 엔터티의 현재 상태를 말할 수 있지만, 엔터티의 현재 액티비티와 같은 엔터티에 관한 추가 또는 대체 정보를 말할 수도 있다. 네트워크 상의 프리젠스는 프리젠스 정보에 의해 표시될 수 있다. 프리젠스 정보의 예에는 엔터티가 "온라인"에 있다는 표시, 엔터티가 "점심 식사 중"이라는 표시, 엔터티가 "외출중"이라는 표시, 엔터티가 "잠시 자리 비움"이라는 표시, 엔터티가 "휴식중(idle)"이라는 표시, 엔터티가 "지금 바쁨"이라는 표시, 엔터티가 "통화중"이라는 표시, 엔터티가 "영화 감상중"이라는 표시, 엔터티 가 "헤일로(Halo)® 하는 중"이라는 표시, 엔터티가 "다른 고객을 돕는 중"이라는 표시, 장치 상태(예컨대, "작업 중", "휴식 중" 등의 상태에 있는 프린터의 상태)의 표시 중 하나 이상의 표시가 포함될 수 있지만, 이에 제한되지 않는다. 프리젠스 정보는 하나 이상의 열거 문자열 및/또는 풍부한 프리젠스(예컨대, 사용자 엔터티에 의해 생성되는 사용자 지정 문자열)를 포함할 수 있다. 예컨대, 사용자 엔터티는 "저는 사무실 밖에 있습니다. 내일 돌아올 예정입니다"와 같은 사용자 지정 프리젠스 상태를 규정할 수 있다. 프리젠스 시스템(204)에 의해 획득되는 프리젠스 정보는 프리젠스 저장부(208)에서 저장될 수 있다.
프리젠스 시스템(204)은 사용자 엔터티가 다른 엔터티의 프리젠스 정보를 모니터(또는 "구독")하는 것을 용이하게 할 수 있다. 이는 예컨대 프리젠스 시스템(204)이 다른 컴퓨팅 시스템을 주기적으로 폴링(polling)하는 것을 포함할 수 있다. 추가적으로 또는 이와 달리, 다른 사용자 엔터티에 대응하는 다른 컴퓨팅 시스템은 프리젠스 상태의 변화와 같은 이벤트를 프리젠스 시스템(204)에 통지하는 이벤트 표시를 시스템(200)으로 전송할 수 있다. 예컨대, 사용자의 프리젠스가 "오프라인"에서 "온라인"으로 바뀔 때, 이벤트가 발생할 수 있고, 프리젠스 시스템(204)은 이 이벤트를 감지할 수 있다. 그러면, 프리젠스 시스템(204)은 다른 애플리케이션 또는 소프트웨어 모듈(예컨대, 애플리케이션(280)과 같은 것)에 이벤트가 발생하였음을 통지할 수 있다.
또한, 프리젠스 시스템(204)은 네트워크(202) 상에 게시되는 다른 엔터티의 능력을 모니터할 수 있다. 엔터티의 능력은, 예컨대, 엔터티의 컴퓨팅 시스템이 특정 소프트웨어 애플리케이션을 실행하도록 구성되었는지의 여부, 엔터티의 컴퓨팅 시스템이 특정 하드웨어 장치를 가졌는지의 여부 등과 같은 정적 능력을 포함할 수 있다. 또한, 엔터티의 능력은, 예컨대, 엔터티의 컴퓨팅 시스템에서 현재 실행되고 있는 게임 소프트웨어 애플리케이션에 관한 엔터티의 실시간 능력 등과 같은 동적 능력을 포함할 수 있다. 네트워크 상의 엔터티 게시 능력은 다른 엔터티가 네트워크(202)를 통해 능력들을 모니터할 수 있게 하는 것을 말한다. 프리젠스 시스템(204)에 의해 획득되는 능력 정보는 능력 저장부(212)에 저장될 수 있다.
또한, 프리젠스 시스템(204)은 네트워크(202) 상에 게시되는 다른 엔터티의 객체를 모니터할 수 있다. 엔터티의 객체는, 예컨대, 파일, 구조, 사진, 음성, 메타 데이터와 같은 설명, 이름값 쌍 등과 같은 데이터 객체를 포함할 수 있다. 엔터티가 네트워크 상에서 객체를 게시한다는 것은, 다른 엔터티가 네트워크(202)를 통해 객체를 모니터할 수 있게 한다는 것을 의미할 수 있다. 단지 하나의 예로서, 객체의 게시는 엔터티가 엔터티의 컴퓨팅 시스템에 의해 실행되는 애플리케이션에 특정한 정보 및/또는 실시간 정보를 다른 엔터티에게 제공하는 것을 허용할 수 있다. 예컨대, 게임 애플리케이션에 관하여, 게시되는 객체는 플레이어의 현재 점수, 플레이어가 현재 소유한 무기 등에 관한 정보를 포함할 수 있다. 프리젠스 시스템(204)에 의해 획득되는 객체 정보는 객체 저장부(216)에 저장될 수 있다.
또한, 프리젠스 시스템(204)은 사용자 엔터티(즉, 시스템(200)과 연관된 엔터티)와 연관된 프리젠스 정보를 네트워크(202) 상의 다른 엔터티에 제공(또는 "게 시")할 수 있다. 사용자 엔터티와 연관된 프리젠스 정보는 프리젠스 저장부(208) 또는 다른 저장 장치에 저장될 수 있다. 마찬가지로, 프리젠스 시스템(204)은 사용자 엔터티의 능력에 관한 정보를 네트워크(202) 상의 다른 엔터티에 제공(또는 "게시")할 수도 있다. 사용자 엔터티와 연관된 능력 정보는 능력 저장부(208)에 저장될 수 있다. 또한, 프리젠스 시스템(204)은 사용자 엔터티의 객체에 관한 정보를 네트워크 상의 다른 엔터티에게 제공(또는 "게시")할 수도 있다. 사용자 엔터티와 연관된 객체 정보는 객체 저장부(216) 또는 소정의 다른 저장 장치에 저장될 수 있다. 마찬가지로, 프리젠스 시스템(204)은 사용자 엔터티가 프리젠스 정보를 모니터(또는 "구독")하는 능력을 용이하게 할 수 있다.
이와 같이, 프리젠스 정보가 사용자 엔터티에 의해 모니터되면, 이어지는 변화들은 사용자 엔터티가 통지받는 이벤트를 유도할 수 있다. 예컨대, 모니터되는 프리젠스 정보가 "외출중"으로부터 "헤일로® 하기"로 변화되는 경우, 이벤트가 트리거됨으로써 사용자 엔터티에게 변화가 통지될 수 있다.
프리젠스 시스템(204)은 다른 엔터티에 관한 정보를 저장하는 콘택트 저장부(240)와 인터페이스로 연결될 수 있다. 콘택트 저장부(240)는 보안 식별자, 인간이 판독 가능한 애칭, 이 엔터티에 대한 프리젠스 정보가 모니터되는지 여부를 나타내는 표시기, 및 이 엔터티가 사용자 엔터티에 관한 프리젠스 정보를 획득하도록 허용되는지 여부를 나타내는 표시기 중 하나 이상과 같은 엔터티에 대한 정보를 저장할 수 있다. 콘택트 저장부(240)에 표시되는 엔터티는 콘택트로서 참조될 수 있다.
각 사용자 엔터티는 자신에 연관된 하나 이상의 통신 종점을 포함할 수 있다. 일반적으로, 사용자 엔터티와 연관된 상이한 통신 종점들은 그 엔터티와 연관된 상이한 컴퓨팅 시스템들과 같은 상이한 통신 종료점들을 포함할 수 있다. 일례로서, 특정 엔터티에 대한 종점은 사무실용 데스크톱 컴퓨터, 가정용 데스크톱 컴퓨터, PDA(personal digital assistant) 등을 포함할 수 있다. 선택적으로, 사용자 엔터티와 연관된 상이한 통신 종점들은 단일 컴퓨팅 시스템에 의해 실행되는 상이한 소프트웨어 애플리케이션들을 포함할 수도 있다. 종점 정보는 몇 개의 이름을 들자면, 피어명(peer name), 기계명 또는 장치 유형을 포함할 수 있다.
또한, 프리젠스 시스템(204)은 통신 네트워크(202)에 연결되는 통신 시스템(260)과 인터페이스로 연결될 수 있다. 통신 시스템(260)은 시스템(200)과, 다른 엔터티와 연관된 다른 피어 컴퓨팅 시스템 간의 접속을 구축할 수 있다. 접속 구축은 예컨대, 엔터티와 연관된 종점을 판정하는 단계, 종점의 어드레스를 분석하는 단계, 통신을 인증하는 단계, 통신을 암호화 및 암호 해독하는 단계 등 중 하나 이상을 포함할 수 있다. 하나의 구현에서, 통신 시스템(260)은 PNRP(Peer Name Resolution Protocol) 또는 이와 유사한 것을 포함할 수 있다. PNRP는 서버 컴퓨터에 의해 공통적으로 사용되는 DNS(Domain Name System)에 의존하지 않고도, 그 IP 어드레스를 유도하기 위하여 콘택트에 대한 이름(예컨대, 피어명)을 분석할 수 있다. 다른 구현에서는, 콘택트 저장부(240)에 그 자체가 연결되는 인증 시스템(270)과 통신 시스템(260)이 인터페이스로 연결될 수 있다. 다른 컴퓨팅 시스템 과의 접속을 구축하기 위한 시도에서, 통신 시스템(260)은 엔터티와 연관된 식별자 표시를 다른 컴퓨팅 시스템으로부터 수신할 수 있다. 그러면, 인증 시스템(270)은 표시되는 보안 식별자를 갖는 엔터티에 대한 정보가 콘택트 저장부(240)에 저장되었는지 여부를 체크할 수 있다. 식별자가 콘택트 저장부(240)에서 발견되지 않으면, 접속이 거절될 수 있다.
접속은 보안될 수 있다. 접속을 구축하고 접속을 통해 통신하는 것은 예컨대, 보안 채널의 사용, SSL(secure socket layer) 기술의 사용, TLS(transport layer security) 기술의 사용, 공개키/개인키 쌍의 사용, 인증 기술(예컨대, X.509 인증서, PGP(pretty good privacy) 프로그램을 사용한 암호화된 서명 등)의 사용, PNRP(peer name resolution protocol), TCP(transmission control protocol), IP(internet protocol), IPv6(internet protocol version six) 등의 사용 중 하나 이상을 포함할 수 있다. 종점의 어드레스를 분석하는 것은 예컨대, PNRP 식별자를 분석하여 IP 어드레스 및 포트를 알아내는 것을 포함할 수 있다.
소프트웨어 애플리케이션(280) 또는 일부 다른 소프트웨어 모듈은 통신 네트워크(202) 상의 다른 사용자 엔터티와 연관된 프리젠스 정보, 능력 정보, 및/또는 객체 정보를 획득하기 위하여 프리젠스 시스템(204)과 통신할 수 있다. 예컨대, 프리젠스 시스템(204)은 소프트웨어 애플리케이션이 다른 사용자 엔터티와 연관된 프리젠스, 능력 및/또는 객체에 관한 정보를 요청하고 수신하는 것을 허용하는 API(application programming interface)의 세트를 제공할 수 있다. 프리젠스 시스템(204)은 프리젠스 저장부(208), 능력 저장부(212) 및/또는 객체 저장부(216)로 부터 요청된 정보를 검색할 수 있다. 이에 더하여 또는 이와 달리, 프리젠스 시스템(204)은 통신 시스템(260)과 통신 네트워크(202)를 통해 다른 사용자 엔터티로부터 요청된 정보를 획득할 수 있다. 일반적으로, "이용 가능성"은 프리젠스 정보, 능력 및 객체를 말한다. 사용자 엔터티는 이 정보의 전부를 게시할 수 있거나, 일부를 게시할 수 있거나, 또는 이 정보 중 아무것도 게시할 수 없을 수 있다.
초대 API(282)는 사용자 엔터티에 의해 사용된 애플리케이션(280)이 다른 콘택트를 초대하거나 또는 서버리스 네트워크의 사용자 엔터티가 공동 작업 액티비티에 참가하는 것을 허용할 수 있다. 초대 API(282)는 콘택트 저장부(240)로부터 콘택트를 결정하기 위하여 프리젠스 시스템(204)을 사용할 수 있다. 또한, 프리젠스 시스템(204)은 능력 저장부(212)에 위치된 능력 정보를 검색할 수 있다. 콘택트 저장부(240)의 특정 콘택트가 연관된 능력 정보를 갖고 있지 않다면, 초대 API(282) 또는 이와 달리 애플리케이션(280)은 다른 사용자 엔터티의 종점의 능력을 판정하기 위하여 능력 API(284)를 사용할 수 있다. 능력은 복수의 종점에 있는 애플리케이션에 의해 지원되는 임의의 액티비티를 포함한 공동 작업 액티비티일 수 있다. 예컨대, 콘택트의 종점은 헤일로® 게임 애플리케이션이 설치되어 있기 때문에, 콘택트가 헤일로® 게임하기의 액티비티를 지원할 수 있다. 초대 API는 콘택트 소유자가, 헤일로® 게임하기의 액티비티를 지원할 수 있는 서버리스 네트워크 상의 다른 콘택트를 결정하는 것을 허용할 수 있다.
PNM(People Near Me) API(286)는 사용자 엔터티에 의해 사용된 애플리케이 션(280)이 다른 사용자 엔터티, 장치, 또는 인접한 종점을 판정하게 할 수 있다. 즉, 어떤 콘택트, 친구 또는 종점이 특정한 근접도(proximity) 파라미터와 일치하는 지를 판정하는 것이다. 근접도는 특정한 회의실, 빌딩 또는 지역의 콘택트와 같은 공간 기준을 포함할 수 있다. 또한, 근접도는 특정한 네트워크 서브네트와 연관된 콘택트와 같은 네트워크 기준을 포함할 수도 있다. 또한, 근접도는 예컨대, "건축가"라는 이름의 콘택트명을 갖는 콘택트와 같은 명칭 기준을 포함할 수 있다. 그러나, 광의의 측면에서는, PNM 근접도가 서브네트의 모든 사람들을 의미할 수 있다. PNM API(286)는 PNM 캐시(288)의 특정한 근접도 규정과 일치하는 콘택트에 관한 논리 구조를 저장할 수 있다.
도 3은 청구항에 따른 방법(300)의 도면이다. 본 방법은 블록(302)에서 시작하여, 블록(304)에서 PNM 서비스의 초기화로 진행된다. 사용자 엔터티가 이용 가능성을 게시하는 것에 대한 허가는 블록(306)에서 판정되고, 만약 허가가 승인되지 않으면 블록(308)으로 진행된다. 후술되는 바와 같이, 이용 가능성을 게시하지 않는다는 사용자 엔터티의 선택은 다른 사용자 엔터티가 그 사용자 엔터티를 발견하지 못하게 한다. 그러나, 게시하지 않는다고 선택한 사용자 엔터티는 다른 사용자 엔터티 또는 종점이 인접해 있는지 여부를 여전히 판정할 수 있다. 허가는 이용 가능성 정보의 게시를 "허용" 또는 "거부"하는 포괄 정책(blanket policy)을 포함할 수 있다. 이와 달리, 허가가 사용자 엔터티에 의해 사용자 지정되어, 다양한 정도의 게시가 허용될 수 있다. 예컨대, 사용자 엔터티는 임의의 이용 가능성 정보의 게시를 허가할 수 있지만, 임의의 객체(예컨대, 파일, 파일 공유 등)에 대해 게시의 허가를 부정할 수 있다. 사용자 엔터티는 (프리젠스에 더하여) 능력, 사용자 타이틀, 랜덤 노트 등을 게시할 수 있다. 게시 허가가 블록(306)에서 승인되면, 방법(300)은 블록(310)에서 PNM 논리 구조가 이용 가능한지를 판정할 수 있다. 이와 달리, 본 방법은 우선 사용자 엔터티가 이용 가능성을 게시하기로 결정했는지를 판정한 후, PNM 서비스를 초기화(로그인)할 수 있다. PNM 논리 구조는 애칭, XML (또는 다른 적절한) 포맷의 피어 ID 정보, 및 서버리스 네트워크 종점(예컨대, IP 어드레스 및 포트)을 포함할 수 있다. 필요하다면, 통신 모듈(260)의 PNRP 이름 분석 모듈은 IP 어드레스 및 포트를 획득할 수 있다. 애칭은 사용자 엔터티에 대한 프리젠테이션용의 인간 판독 가능 문자열일 수 있다. 피어 ID 정보는 사용자 ID의 개인 콘택트 정보로부터 획득되거나, 또는 사용자 엔터티가 그 임의의 부분의 게시를 선택할 수 있다. 서버리스 네트워크의 다른 사용자들은 그들의 콘택트 저장부에 있는 이 피어 ID 정보를 사용할 수 있다. 논리 구조가 이용 가능하지 않다면, 블록(312)에서 논리 구조가 생성될 수 있고, 여기서 본 방법은 피어 ID 정보를 검색하기 위하여 함수를 호출할 수 있다. 또한, 본 방법은 XML 및 브이카드를 포함한 다양한 포맷으로 피어 ID 정보를 "패키지"하기 위하여 함수를 호출할 수 있다.
논리 구조는 블록(314)에서, 일반적인 발견 프로토콜 메시지, PNRP, 다이너믹 DNS, 또는 SSDP(Simple Service Discovery Protocol) 메시지로서 인코딩될 수 있다. 예로서, SSDP가 상술될 것이지만, 이에 제한되지 않는다. SSDP는 네트워크를 통해 메시지를 브로드캐스트하고 발견하기 위한 간단한 멀티캐스트 프로토콜이 며, 통상적으로 UPNP(Universal Plug and Play)의 일부로서 구현된다. SSDP는 네트워크의 종점이 정적 구성을 거의 또는 전혀 가지고 있지 않을 때 특히 유용하다. 또한, SSDP 프로토콜은 발견 프로세스에서 임의의 서버의 도움을 필요로 하지 않는다. SSDP 메시지는 MTU(Network Maximum Transmission Unit)에 따른 패킷 사이즈 요구 사항을 수용하기 위하여 단편화될 수 있다. 또한, SSDP 메시지는 블록(316)에서 다른 애플리케이션이 SSDP 유형으로서 메시지를 식별할 수 있도록 GUID와 연관될 수 있다. 단편화 후에, 블록(318)에서 SSDP 레지스트리 함수는 메시지를 네트워크로 브로드캐스트할 수 있다.
도 4는 청구항에 따른 방법의 도면이다. 본 방법은 (도 3의) 블록(308)부터 계속되고, 사용자 엔터티가 블록(402)에서 "내 주변 사람들(people near me)"을 발견하고 싶은지 여부를 결정할 수 있다. 앞서 논의된 바와 같이, 사용자 엔터티가 PNM 서비스에 아직 로그인하지 않았다면(블록(304)), 사용자 엔터티는 블록(402)에서 이러한 선택을 행할 수 있다. 만약 아니라면, 본 방법은 블록(404)에서, PNM 서비스로부터 로그아웃하고, SSDP 브로드캐스트 서비스를 등록해제할 수 있다. 이와 달리, 본 방법은 블록(406)에서 (메시지 GUID에 의해 식별되는 것과 같이) SSDP 유형의 모든 메시지를 수신하기 위하여 통지 함수를 사용할 수 있다. 이와 같이, 본 방법은 서버리스 네트워크상의 다른 사용자가 SSDP 레지스트리 함수를 브로드캐스트할 때, 사용자 엔터티에게 통지한다. 마찬가지로, 본 방법은 SSDP 검색 함수를 사용할 수 있으며, 이 함수를 통해 블록(408)에서 SSDP 유형의 저장된 메시지를 찾기 위해 다른 사용자 엔터티의 종점의 캐시가 검색된다. 이러한 탐색은 서브네 트 상의 모든 사람들, 서브네트 상의 사람들의 특정한 서브그룹 및 서브네트의 특정한 이름 일치를 포함한, 이전에 언급된 근접도의 설명들 중 어느 하나를 사용할 수 있지만, 이에 제한되지 않는다. 또한, 근접도는 가까운 무선 근접도에 있는 사람들의 위치를 찾음으로써 지리학적 설명을 포함할 수도 있다. 블록(410)에서의 SSDP 메시지 유효성 검사는 다른 사용자 엔터티의 존재를 표시하기 위하여 메시지 유형의 체크를 포함한다. 예컨대, 다른 사용자 엔터티의 캐시에 있는 SSDP 메시지가 "활성화(alive)" 유형이면, 블록(412)에서, 호출한 사용자 엔터티의 캐시(288)가 업데이트되어, "내 주변 사람들"로서 그 다른 사용자 엔터티를 포함한다. 호출한 사용자 엔터티의 캐시는 지속될 수도 있다. 그러나, 본 방법은 "개인(person)"에 제한되지 않고, 종점에 있는 임의의 엔터티를 포함할 수 있다. 사용자 엔터티의 종점이 제어된 방식으로 서버리스 네트워크를 떠나면, 그 종점은 "안녕(bye-bye)"이라는 유형의 SSDP 메시지를 브로드캐스트할 수 있다. 그러면, 서버리스 네트워크를 통해 남아있는 종점이 SSDP 메시지를 식별할 수 있고, (블록(410 및 412)에서도 각각) 그것이 "안녕" 유형인지를 확인하고, 그 종점을 제거함으로써 캐시를 업데이트한다. 그러나, 때때로는, "안녕"이라는 유형의 SSDP 메시지를 브로드캐스트할 기회도 없이, 종점이 네트워크를 갑자기 떠나는 경우도 있다. 이와 같이, 사용자 엔터티의 캐시가 "활성화" 종점의 SSDP 메시지를 포함하지만, SSDP 검색 함수가 그 종점을 찾는 데에 실패하면, 블록(412)에서, 호출한 사용자의 캐시가 업데이트되어 그 종점을 제거한다. 사용자/종점의 캐시가 업데이트된 후에는, 블록(414)에서 본 방법은 사용자에게 새로운 종점 또는 삭제된 종점을 통지하기 위하여 변화 된 이벤트를 플래그할 수 있다.
비록 상기한 본문이 다수의 상이한 실시예에 대한 상세한 설명을 개시하였지만, 본 특허의 범위는 본 명세서의 끝 부분에 개시되는 특허청구범위의 용어들에 의해 제한된다는 점이 이해되어야 한다. 상세한 설명은 단지 예시적인 것으로 고려되어야 하고, 모든 가능한 실시예들을 설명하는 것은 아니며, 이는 비록 불가능하지 않더라도 모든 가능한 실시예들을 설명한다는 것은 실용적이지 않기 때문이다. 현재의 기술 또는 본 특허의 출원일 이후에 개발된 기술들을 사용하여 다수의 대안적인 실시예들이 구현될 수 있지만, 이러한 것들도 역시 본 발명의 특허청구범위의 범위에 포함되는 것이다.
따라서, 현재 특허청구범위의 정신 및 그 범위를 벗어나지 않고도, 여기서 설명되고 도시된 기술 및 구성에 많은 변경 및 변화가 행해질 수 있다. 따라서, 여기서 기재되는 방법 및 장치는 예시적일 뿐이며, 본 특허청구범위에 제한되는 것은 아님을 이해하여야 할 것이다.

Claims (20)

  1. 프리젠스(presence)를 게시(publication)하는 방법으로서,
    제1 종점(end point)에서 프리젠스의 게시를 허가하는 단계;
    만약 상기 게시가 허가되면, 프리젠스 데이터 구조를 어셈블링하는 단계; 및
    상기 제1 종점으로부터 상기 프리젠스 데이터 구조를 브로드캐스트하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 프리젠스 데이터 구조는 애칭(friendly name), 콘택트 정보 및 종점 정보를 포함하는 방법.
  3. 제2항에 있어서,
    상기 콘택트 정보는 XML 포맷 또는 브이카드(vCard) 포맷 중 적어도 하나인 방법.
  4. 제2항에 있어서,
    상기 종점 정보는 피어명 분석 프로토콜(peer name resolution protocol)로부터 획득되는 방법.
  5. 제1항에 있어서,
    상기 프리젠스 데이터 구조는 일반적인 발견 프로토콜 메시지(generic discovery protocol message) 또는 단순 서비스 발견 프로토콜 메시지(simple service discovery protocol message) 중 적어도 하나로서 인코딩되는 방법.
  6. 제5항에 있어서,
    전역적 고유 식별자(globally unique identifier)를 상기 발견 프로토콜 메시지와 연관시키는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    사용자 엔터티가 프리젠스 게시를 허가하는 방법.
  8. 제7항에 있어서,
    상기 사용자 엔터티는 모든 프리젠스의 게시를 허가하는 디폴트 파라미터, 일부 프리젠스의 게시를 허가하는 디폴트 파라미터, 어떠한 프리젠스의 게시도 허가하지 않는 디폴트 파라미터 중 적어도 하나를 설정하는 방법.
  9. 사용자 엔터티를 발견하는 방법으로서,
    제1 종점에서 제1 사용자 엔터티를 등록하는 단계;
    제2 사용자 엔터티를 식별하는 메시지를 수신하는 단계;
    상기 수신된 메시지의 유효성을 검사하는 단계; 및
    발견 캐시에 상기 유효성 검사의 결과를 저장하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 등록하는 단계는 단순 서비스 발견 프로토콜 메시지를 게시하는 단계를 포함하는 방법.
  11. 제9항에 있어서,
    상기 발견 캐시의 결과를 열거하는 단계를 더 포함하는 방법.
  12. 제9항에 있어서,
    제2 사용자 엔터티에 대하여 쿼리(query)하는 단계를 더 포함하는 방법.
  13. 제9항에 있어서,
    상기 수신된 메시지는 XML 포맷인 방법.
  14. 제9항에 있어서,
    상기 수신된 메시지는 프리젠스 정보를 포함하는 방법.
  15. 제14항에 있어서,
    상기 프리젠스 정보는 상기 제2 사용자 엔터티의 제2 종점의 상태, 상기 제2 사용자 엔터티의 콘택트 ID 정보, 및 상기 제2 사용자 엔터티의 콘택트 메타데이터를 포함하는 방법.
  16. 제9항에 있어서,
    상기 유효성 검사는 이용 가능한 사용자 엔터티 또는 이용 불가능한 사용자 엔터티 중 적어도 하나를 나타내는 메시지를 식별하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 발견 캐시에 이용 가능한 사용자 엔터티를 추가하고, 상기 발견 캐시로부터 이용 불가능한 사용자 엔터티를 제거하는 단계를 더 포함하는 방법.
  18. 제9항에 있어서,
    상기 메시지는 단순 서비스 발견 프로토콜 메시지로서 인코딩되는 방법.
  19. 제18항에 있어서,
    전역적 고유 식별자를 상기 단순 서비스 발견 프로토콜 메시지와 연관시키는 단계를 더 포함하는 방법.
  20. 제9항에 있어서,
    상기 등록하는 단계는 상기 제1 사용자 엔터티가 메시지 수신에 참여하는 것을 허용하는 단계를 포함하는 방법.
KR1020077023815A 2005-04-22 2006-04-20 서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한애플리케이션 프로그래밍 인터페이스 KR20080003347A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/112,133 US20060239234A1 (en) 2005-04-22 2005-04-22 Application programming interface for discovering endpoints in a serverless peer to peer network
US11/112,133 2005-04-22

Publications (1)

Publication Number Publication Date
KR20080003347A true KR20080003347A (ko) 2008-01-07

Family

ID=37186779

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077023815A KR20080003347A (ko) 2005-04-22 2006-04-20 서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한애플리케이션 프로그래밍 인터페이스

Country Status (6)

Country Link
US (1) US20060239234A1 (ko)
KR (1) KR20080003347A (ko)
CN (1) CN101371599A (ko)
CA (1) CA2605679A1 (ko)
NO (1) NO20075110L (ko)
WO (1) WO2006116056A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645474B2 (en) 2008-02-29 2014-02-04 Microsoft Corporation Self-described rendering of data
US10182147B2 (en) * 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
CN103326923B (zh) 2012-03-21 2014-12-03 腾讯科技(深圳)有限公司 一种信息共享的方法及装置
FR3003975A1 (fr) * 2013-03-29 2014-10-03 France Telecom Procede de traitement de donnees d'utilisateur d'un reseau social
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9658836B2 (en) 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
US11360798B2 (en) * 2019-11-25 2022-06-14 Nutanix, Inc. System and method for internal scalable load service in distributed object storage system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010035976A1 (en) * 2000-02-15 2001-11-01 Andrew Poon Method and system for online presentations of writings and line drawings
US6944662B2 (en) * 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
EP1397923B1 (en) * 2001-05-11 2005-04-20 Nokia Corporation Mobile instant messaging and presence service
JP2003271531A (ja) * 2002-03-18 2003-09-26 Nec Corp メッセージサーバ、メッセージシステム、プレゼンス情報管理方法及びプログラム
US7277404B2 (en) * 2002-05-20 2007-10-02 Airdefense, Inc. System and method for sensing wireless LAN activity
EP1543690B1 (en) * 2002-09-19 2007-08-15 Research In Motion Limited Apparatus and method of wireless instant messaging
US8037202B2 (en) * 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
US7437440B2 (en) * 2003-01-27 2008-10-14 Microsoft Corporation Peer-to-peer networking framework application programming interfaces
US20040205127A1 (en) * 2003-03-26 2004-10-14 Roy Ben-Yoseph Identifying and using identities deemed to be known to a user
US7216147B2 (en) * 2003-03-27 2007-05-08 Microsoft Corporation Controlling publication of presence information
US20050004968A1 (en) * 2003-07-02 2005-01-06 Jari Mononen System, apparatus, and method for a mobile information server
JP2005123970A (ja) * 2003-10-17 2005-05-12 Vodafone Kk プレゼンス表示システムにおけるサーバー装置及びクライアント装置
US7933290B2 (en) * 2004-03-30 2011-04-26 Nokia Corporation System and method for comprehensive service translation
US7451186B2 (en) * 2004-08-10 2008-11-11 Microsoft Corporation Method and system of integrating instant messaging with other computer programs
US20070239869A1 (en) * 2006-03-28 2007-10-11 Microsoft Corporation User interface for user presence aggregated across multiple endpoints
US7945612B2 (en) * 2006-03-28 2011-05-17 Microsoft Corporation Aggregating user presence across multiple endpoints
US20080005325A1 (en) * 2006-06-28 2008-01-03 Microsoft Corporation User communication restrictions

Also Published As

Publication number Publication date
US20060239234A1 (en) 2006-10-26
NO20075110L (no) 2007-11-19
WO2006116056A3 (en) 2008-01-03
CA2605679A1 (en) 2006-11-02
CN101371599A (zh) 2009-02-18
WO2006116056A2 (en) 2006-11-02

Similar Documents

Publication Publication Date Title
KR20080003347A (ko) 서버리스 피어 투 피어 네트워크에서 종점을 발견하기 위한애플리케이션 프로그래밍 인터페이스
KR101251689B1 (ko) 서버리스 피어 투 피어 네트워크에서 참가자를 초대하기위한 애플리케이션 프로그래밍 인터페이스
US7814214B2 (en) Contact management in a serverless peer-to-peer system
US20060242235A1 (en) Presence monitoring in a serverless peer-to-peer system
US7437440B2 (en) Peer-to-peer networking framework application programming interfaces
US7596625B2 (en) Peer-to-peer grouping interfaces and methods
US7788378B2 (en) Apparatus and method for community relay node discovery
US7673330B2 (en) Ad-hoc creation of group based on contextual information
US20070008987A1 (en) Capturing contacts via people near me
US20040064512A1 (en) Instant messaging using distributed indexes
US20040064693A1 (en) Distributed indexing of identity information in a peer-to-peer network
JP2008539506A (ja) サーバレスプレゼンスとのコラボレーションのためのシステム及び方法
KR20090080051A (ko) P2p 네트워크에서 가상 피어를 호스팅하는 스폰서 노드, 및 방법
JP2009534939A (ja) アクティブなデバイスのリストなど動的データの発見および取出しのためのアドホックプロキシ
MX2008013324A (es) Solicitud y respuesta de contacto par a par.
US20080120412A1 (en) System and method for providing a hypertext transfer protocol service multiplexer
US9298509B2 (en) Resource reservation from two or more resources effective to process a reservation request
Meinel et al. Application Layer and Internet Applications
Bengtsson Growing secure P2P networks

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid