KR101374906B1 - 피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색 - Google Patents

피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색 Download PDF

Info

Publication number
KR101374906B1
KR101374906B1 KR1020127009029A KR20127009029A KR101374906B1 KR 101374906 B1 KR101374906 B1 KR 101374906B1 KR 1020127009029 A KR1020127009029 A KR 1020127009029A KR 20127009029 A KR20127009029 A KR 20127009029A KR 101374906 B1 KR101374906 B1 KR 101374906B1
Authority
KR
South Korea
Prior art keywords
service
key
bitmask
remote device
wireless
Prior art date
Application number
KR1020127009029A
Other languages
English (en)
Other versions
KR20120049402A (ko
Inventor
로리 엘.피. 맥과이어
마이클 반 밀리건
스튜어트 체셔
제이슨 콘
조슈아 그레슬리
오귀스땡 프라
브라이언 터커
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120049402A publication Critical patent/KR20120049402A/ko
Application granted granted Critical
Publication of KR101374906B1 publication Critical patent/KR101374906B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W48/00Access restriction; Network selection; Access point selection
    • H04W48/16Discovering, processing access restriction or access information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W92/00Interfaces specially adapted for wireless communication networks
    • H04W92/16Interfaces between hierarchically similar devices
    • H04W92/18Interfaces between hierarchically similar devices between terminal devices

Abstract

서비스를 검색 및/또는 광고하는 기술이 여기에서 설명된다. 제1 비트마스크가 원격 디바이스로부터 무선 네트워크를 통해 수신되는데, 제1 비트마스크는 미리 정해진 논리값을 갖는 하나 이상의 비트를 갖는다. 각각의 비트는 원격 디바이스에 의해 제공되는 특정 서비스를 표현한다. 제1 비트마스크와 로컬 디바이스 내에서 국지적으로 생성된 제2 비트마스크 사이에서 논리 연산이 수행되는데, 이 경우 제2 비트마스크는 로컬 디바이스에 의해 검색되는 서비스를 표현한다. 논리 연산의 결과에 기초하여 원격 디바이스가 로컬 디바이스에 의해 검색되는 서비스를 잠재적으로 제공할 수 있는지의 여부가 판정된다.

Description

피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색{EFFICIENT SERVICE DISCOVERY FOR PEER-TO-PEER NETWORKING DEVICES}
이 출원은 2009년 9월 8일에 출원된 미국 가특허출원 61/240,509호 및 2009년 10월 7일에 출원된 미국 가특허출원 61/249,582호의 이익을 주장한다.
또한, 이 출원은, 계류 중인, 2009년 6월 5일에 출원된 미국 특허출원 12/479,745호 및 2009년 6월 5일에 출원된 미국 특허출원 12/479,586호와도 관련이 있다. 앞서 확인된 출원의 명세서는 그 전체가 참고문헌으로써 포함되어 있다.
본 발명은 일반적으로 피어 투 피어 네트워킹에 관한 것이다. 좀더 구체적으로, 이 발명은 피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색(service discovery)에 관한 것이다.
블루투스(BT) 무선 기술은, 많은 무선 디바이스들이 커넥터, 와이어, 또는 케이블없이 서로 통신할 수 있는 방식을 제공한다. 블루투스 기술에 대한 현재의 일반적인 용도로는 헤드셋, 핸드폰 자동차 키트(cellular car kits), 및 어댑터에 대한 것을 들 수 있다. 더 나아가, 블루투스 기술은 프린터, 키보드, 또는 마우스를 케이블없이 퍼스널 컴퓨터에 접속시키는데 널리 사용된다. 또한, 블루투스 기술은 대용량 데이터의 전달을 용이하게 할 수 있으므로, 컴퓨터가 인터넷 접속에 블루투스를 사용할 수 있다. 핸드폰과 같은 이동 통신 디바이스가 그들 사이에서 사진, 비디오, 또는 벨소리를 전송할 수 있다. 추가 기능이 계속해서 확장할 것이 예상된다.
2개의 블루투스 가능한 디바이스(Bluetooth enabled devices)가 통신할 수 있기 이전에, 디바이스는 페어링(pairing)되어야 한다. 블루투스 페어링은 2개의 블루투스 가능한 디바이스가 신뢰 가능한 한 쌍(a trusted pair)이 되었을 때 생성한다. 신뢰 가능한 한 쌍이 되기 위해, 2개의 블루투스 디바이스는 먼저 특정한 검색 및 인증 프로세스를 완료해야 한다. 제1 블루투스 디바이스가 제2 블루투스 디바이스를 인식하고 그들이 특정한 검색 및 인증 프로세스를 완료했을 때, 각각의 디바이스는 자동적으로 그들 사이의 통신을 수락할 수 있다.
디바이스 검색은, 블루투스 무선 디바이스가 함께 통신하고자 하는 인근 블루투스 무선 디바이스를 찾기 위해 사용하는 절차이다. 검색 가능한 디바이스의 블루투스 어드레스, 그들의 사용하기 쉬운 네임(their friendly names), 및 다른 관련 정보를 인근에 있는 각각의 디바이스와 단기 접속을 확립하는 것을 통해 교환하는 것은 시간 소모적인 절차일 수 있다. 그 절차는 하나의 블루투스 무선 디바이스가 조회 요청(inquiry requests)을 스캐닝 중인 다른 블루투스 무선 디바이스에 조회 요청을 전송하게 하는 것을 수반할 수 있다. 조회 요청을 전송하는 디바이스(잠재적 마스터)는 디바이스를 검색 중이라고 할 수 있는 한편 조회 요청을 스캐닝 중인 디바이스는 검색 가능하다고 할 수 있다.
서비스 검색은, 하나의 블루투스 디바이스가 하나 이상의 원격 블루투스 디바이스에 의해 제공될 수 있는 서비스 또는 애플리케이션을 검색하는 다른 절차이다. 디바이스 검색 절차와 마찬가지로, 발원의 블루투스 디바이스(originated Bluetooth device;이 상황에서는 클라이언트 디바이스)는 다른 블루투스 디바이스(이 상황에서는 서버 디바이스)가 이용 가능한 것으로 검색되는 서비스 또는 애플리케이션을 가지고 있는지의 여부를 판정하기 위해 해당 블루투스 디바이스에 조회를 송신해야 한다. 이 절차는 대체로 비교적 긴 시간이 걸리고 좀더 많은 전력을 소비할 수 있다. WiFi 표준(예를 들어, IEEE 802.11n 또는 다른 IEEE 802.11 표준)하에서 또는 다른 무선 통신 시스템하에서 작동하는 라디오와 같은, 다른 통신 시스템을 갖춘 디바이스 또한 서로를 그리고 그들의 개개 서비스를 검색하는데 비교적 긴 시간이 걸릴 수 있다. 지금까지는 서비스 검색 절차를 수행하기 위한 효율적인 방법이 없었다.
본 명세서에서는 서비스를 검색 및/또는 광고하는 기술이 설명된다. 발명의 일 양태에 따르면, 원격 디바이스로부터 무선 네트워크를 통해 제1 비트마스크가 수신되는데, 제1 비트마스크는 미리 정해진 논리값(predetermined logical value)을 갖는 하나 이상의 비트를 갖는다. 각각의 비트는 원격 디바이스에 의해 제공되는 특정 서비스를 표현한다. 제1 비트마스크와 로컬 디바이스 내에서 국지적으로 생성된 제2 비트마스크 사이에서 논리 연산이 수행되는데, 이 경우 제2 비트마스크는 로컬 디바이스에 의해 검색 중인 서비스를 표현한다. 논리 연산의 결과에 기초하여 원격 디바이스가 로컬 디바이스에 의해 검색 중인 서비스를 잠재적으로 제공할 수 있는지의 여부가 판정된다.
발명의 다른 양태에 따르면, 로컬 디바이스에 의해 광고되는 서비스의 식별자에 기초하여 키/값 쌍이 생성된다. 키/값 쌍의 키에 대해 해시 연산(hash operation)이 수행되어, 미리 정해진 논리값을 갖는 비트를 포함하는 비트마스크를 생성한다. 서비스를 검색하기 위한 원격 디바이스로부터의 무선 네트워크를 통한 조회 메시지에 응답하여, 비트마스크가 무선 네트워크를 통해 원격 디바이스에 전송되어 원격 디바이스가 비트마스크에 기초하여 로컬 디바이스가 검색되는 서비스를 잠재적으로 제공할 수 있는지의 여부를 판정할 수 있게 한다.
발명의 또 다른 양태에 따르면, 네트워크에서 액세스 가능한 서비스를 식별하는 하나 이상의 DNS(domain name system) 리소스 레코드가 수신된다. 응답으로, DNS 리소스 레코드에 기초하여 DNS 패킷이 생성된다. 이 DNS 패킷은 참조된 전체 도메인 네임(들)을 인용하지 않고 DNS 패킷에 앞서 출현하는 다른 도메인 네임(들)으로 참조되는 포인터를 갖는 도메인 네임을 포함한다. 각각의 리소스 레코드로부터 키/값 쌍이 생성되는데, 각각의 키/값 쌍은 네트워크에서 액세스 가능한 서비스를 표현하는 데 사용된다.
여기에서 설명된 하나 이상의 실시예는, 예를 들어, 블루투스 호환 통신 시스템(Bluetooth compliant communication systems), WiFi 호환 통신 시스템(예를 들어, 802.11g 표준 또는 IEEE 802.11n 표준과 같은 IEEE 802.11 표준 중 어떤 하나에 따라 작동 중인 라디오), WiMax 호환 통신 시스템, 셀룰러 전화 통신 표준에 따라 작동 중인 라디오, PAN(personal area network) 표준에 따라 작동 중인 라디오 등과 같은, 다양한 무선 통신 시스템 중 어떤 하나를 사용할 수 있다.
여기에서 설명되는 서비스는 멀티-플레이어 게임(예를 들어, 수개 디바이스 각각에서의 카드 게임 등), 공동 작업 애플리케이션(collaborative applications;예를 들어, 복수개 디바이스 각각에 하나씩의 음악 만들기 애플리케이션 또는 복수개 디바이스 각각에 하나씩의 문서 작성 또는 작성 애플리케이션 등), 소셜 네트워킹 애플리케이션(예를 들어, 복수개 디바이스 각각에서의 Facebook 애플리케이션, 복수개 디바이스 각각에서의 LinkedIn 애플리케이션, 복수개 디바이스 각각에서의 MySpace 애플리케이션 등), 음성 채팅 애플리케이션, 텍스트 채팅 애플리케이션, 인스턴트 메시징 애플리케이션 등과 같은 다양한 애플리케이션 또는 기타 시설 중 임의의 하나일 수 있다. 네트워킹에 사용되는 서비스 및 디바이스의 실례는 2009년 6월 5일에 출원된 미국 특허출원 12/479,745호 및 미국 특허출원 12/479,586호에서도 설명되고, 이 출원 모두는 여기에 참고문헌으로서 포함되어 있다.
본 발명의 하나 이상의 실시예를 포함하거나 사용하는 데이터 처리 시스템, 머신 판독 가능 저장 매체, 및 방법도 설명된다. 본 발명의 다른 특징은 첨부 도면으로부터 그리고 다음의 상세한 설명으로부터 명백할 것이다.
본 발명은 제한이 아닌 실례의 방법으로써 유사한 참조 부호가 유사한 요소를 나타내는 첨부 도면의 형태로 예시된다.
도 1은, 일 실시예에 따른, 무선 환경의 네트워크 구성을 예시하는 블록도이다.
도 2는, 본 발명의 일 실시예에 따른, 2개의 피어 투 피어 네트워킹 디바이스 사이의 트랜잭션(transaction)을 예시하는 트랜잭션 다이어그램이다.
도 3은, 일 실시예에 따른, 컴퓨팅 디바이스의 서비스를 광고하는 방법을 예시하는 흐름도이다.
도 4는, 일 실시예에 따른, 피어 디바이스에 의해 제공되는 서비스를 검색하는 방법을 예시하는 흐름도이다.
도 5a는 전형적인 비압축 DNS 패킷을 예시하는 블록도이다.
도 5b는 일 실시예에 따른 압축 DNS 패킷을 예시하는 블록도이다.
도 5c는, 일 실시예에 따른, DNS 패킷으로부터 생성되는 키/값 쌍을 예시하는 블록도이다.
도 6은, 일 실시예에 따른, 키/값 쌍을 생성하는 방법을 예시하는 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 사용될 수 있는 데이터 처리 시스템의 블록도이다.
본 발명의 다양한 실시예 및 양태가 다음에서 논의되는 세부 사항을 참조하여 설명될 것이고, 첨부 도면은 다양한 실시예를 예시할 것이다. 다음 설명 및 도면은 본 발명을 예시하는 것이고 본 발명을 제한하는 것으로 해석되어서는 안된다. 본 발명의 다양한 실시예에 대한 완전한 이해를 제공하기 위해 다수의 구체적 세부 사항이 설명된다. 그러나, 특정 경우에서는, 본 발명의 실시예에 대한 간결한 논의를 제공하기 위해 공지 또는 종래 세부 사항은 설명되지 않는다.
명세서에서의 "일 실시예" 또는 "실시예"에 대한 언급은 실시예와 관련하여 설명되는 특정 기능, 구조, 또는 특징이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서의 다양한 위치에서의 "일 실시예에서"라는 구조회 등장이 반드시 동일한 실시예를 언급할 필요는 없다. 다음의 도면에서 묘사되는 프로세스는 하드웨어(예를 들어, 회로, 전용 로직 등), 소프트웨어, 또는 양자의 조합을 구비하는 처리 로직에 의해 수행된다. 그 프로세스가 다음에서는 어떤 순차적 연산의 관점에서 설명되지만, 설명되는 연산 중 일부는 다른 순서로 수행될 수도 있다는 것을 알 수 있어야 한다. 더 나아가, 일부 연산은 순차적으로가 아닌 병렬로 수행될 수도 있다.
일부 실시예에 따르면, 키/값 쌍은 블루투스 디바이스 또는 다른 유형의 무선 디바이스와 같은 무선 컴퓨팅 디바이스에 의해 광고되는 특정 서비스를 표현하는 데 사용된다. 무선 디바이스가 무선 네트워크에서 광고될 하나 이상의 서비스를 가질 경우, 광고될 각각의 서비스에 대해, 하나 이상의 키/값 쌍이 생성된다. 키/값 쌍은 개개 서비스와 연관된 DNS 정보에 기초하여 생성될 수 있다. 키는 무선 디바이스가 잠재적으로 특정 서비스(예를 들어, 게임)를 제공할 수 있는지의 여부를 나타내는 데 사용되고, 값은 제공될 서비스에 관한 좀더 상세한 정보를 포함한다. 모든 키/값 쌍은 해시 함수(예를 들어, SHA-1 또는 MD5)를 사용하여 해시되어 비트마스크를 생성한다. 미리 정해진 논리값(예를 들어, 참(TRUE)의 논리값)을 갖는 비트마스크의 각 비트는 해당 서비스가 무선 디바이스에 의해 지원된다는 것을 나타낸다. 이 상황에서, 하나 이상의 서비스를 광고하는 무선 디바이스는 광고된 서비스를 클라이언트 디바이스라고 하는 하나 이상의 다른 무선 디바이스에 제공하는 서버로서 기능한다. 무선 디바이스는, 소정 상황에 따라, 서버 디바이스와 클라이언트 디바이스 양자일 수 있다.
다른 무선 디바이스가, 클라이언트 디바이스로서, 네트워크에서 특정 서비스를 검색할 때, 예를 들어, 서비스와 연관된 DNS 정보와 같은, 검색되는 서비스의 식별자에 기초하여 키가 생성된다. 또한, 예를 들어, 키를 해시하는 것에 의해 키로부터 비트마스크가 생성된다. 그 다음, 클라이언트 디바이스에 의해 조회 메시지(예를 들어, EI(extended inquiry) 메시지)가 네트워크에서 브로드캐스트된다. 조회 메시지는 통신 범위의 다른 모든 무선 디바이스에 의해 수신된다.
조회에 응답하여, 다른 디바이스에 서비스를 제공할 수 있는 각각의 서버 디바이스는 앞서 명시된 바와 같이 개개 디바이스에 의해 지원되는 서비스를 표현하는 비트마스크를 반환하는 것에 의해 조회에 응답할 수 있다. 클라이언트 디바이스가 서버 디바이스로부터 비트마스크를 수신하는 경우, 수신된 각각의 비트마스크에 대해, 클라이언트 디바이스는 검색되는 서비스를 표현하는 국지적으로 생성된 비트마스크 및 원격 서버 디바이스로부터 수신된 비트마스크에 대해 미리 정해진 연산(예를 들어, 논리적 AND 연산)을 수행한다. 연산의 결과는 특정 서버 디바이스가 검색되는 서비스를 잠재적으로 지원하는지의 여부를 나타내는 데 사용된다.
결과가 서버 디바이스가 검색되는 서비스를 잠재적으로 제공할 수 있다는 것을 나타내는 경우, 클라이언트 디바이스는 연관된 서버 디바이스와 접속(예를 들어, SDP 접속)을 확립하고 서비스에 관한 좀더 상세한 정보를 위한 요청을 송신할 수 있다. 응답으로, 서비스에 해당하는 키/값 쌍이 서버 디바이스로부터 수신된다. 결과적으로, 상기 프로토콜은, 비교적 긴 시간이 걸릴 수 있는, 서버 디바이스로부터 서비스의 상세한 정보(예를 들어, 키/값 쌍)를 획득하기 위한 접속을 확립하기 이전에, 조회에 응답하는 서버 디바이스 중 어떤 것이 검색되는 서비스를 지원하는지를 신속하게 식별할 수 있다.
일 실시예에 따르면, 키/값 쌍은 검색 및/또는 광고되는 서비스와 연관된 DNS 정보에 기초하여 생성된다. 예를 들어, DNS 패킷(예를 들어, DNS 쿼리 패킷)의 리소스 레코드(RR)에 대한 네임 필드 및 형식 필드(type field)가 키/값 쌍의 키를 생성하는 데 사용될 수 있는 한편, DNS 패킷의 데이터 필드(예를 들어, RData 필드)가 키/값 쌍의 값을 생성하는 데 사용될 수 있다. DNS 패킷은 다수 RR을 포함할 수 있다. 일 실시예에서, RR의 네임 필드는 전체 문자열을 네임 필드에 중복하지 않으면서 DNS 패킷의 다른 RR 또는 Question에 앞서 등장했던 문자열을 포인팅하는 CP(compression pointer)를 포함할 수 있다. 마찬가지로, 데이터 필드(예를 들어, RData 필드) 또한 전체 문자열을 중복하지 않으면서 다른 RR이나 Question에 또는 다른 방법으로는 현재 RR의 네임 필드에 등장하는 문자열을 포인팅하는 CP를 포함할 수 있다. 따라서, 키/값 쌍의 값은 키/값 쌍의 키를 포인팅하는 포인터를 포함할 수 있는 한편 키/값 쌍의 키는 DNS 패킷의 다른 RR 또는 Question을 포인팅하는 포인터를 포함한다. 결과적으로, 키/값 쌍의 크기가 서비스 검색의 목적을 위해 좀더 감소될 수 있다.
도 1은 일 실시예에 따른 무선 환경의 네트워크 구성을 예시하는 블록도이다. 예를 들어, 네트워크 구성(100)은 블루투스 무선 환경 또는 WiFi 무선 환경 또는 다른 무선 환경일 수 있다. 도 1을 참조하면, 네트워크 구성(100)은 블루투스 호환 가능 네트워크 또는 WiFi 호환 가능 네트워크와 같은 다양한 무선 네트워크일 수 있는 네트워크(103)를 통해 서로에게 통신 가능하게 결합되는 제1 컴퓨팅 디바이스(101) 및 제2 컴퓨팅 디바이스(102)를 포함한다. 설명의 목적을 위해, 이 출원 전체에 걸쳐, 블루투스 호환 가능 네트워크 및 디바이스가 무선 네트워크 및 디바이스의 실례로서 사용될 수 있다. 그러나, 그렇게 제한적이지 않으며; 무선 네트워크 및 디바이스의 다른 유형도 여기에 적용될 수 있다.
디바이스(101-102)는 모든 종류의 무선 통신 또는 컴퓨팅 디바이스일 수 있다. 디바이스(101-102)는 휴대 전화 디바이스, 메시징 디바이스, PDA(personal digital assistants), 노트북 또는 랩탑 컴퓨터, 모바일 데이터 터미널, 무선 통신 인터페이스를 갖춘 게이밍 디바이스, 미디어 플레이어(예를 들어, 오디오 및/또는 비디오 플레이어) 등일 수 있다. 예를 들어, 디바이스(101-102)는 California주 Cupertino의 Apple Inc.로부터 구입할 수 있는 iPhoneTM 또는 iPodTM 디바이스이거나 다른 소비자 전자 디바이스일 수 있다.
일 실시예에서, 디바이스(102)는 서비스 검색 계층 또는 유닛(104) 및 무선 계층 또는 유닛(105)을 포함하지만 그것으로 제한되는 것은 아닌 다수 처리 계층을 갖춘 처리 프로토콜 스택을 포함한다. 예를 들어, 서비스 검색 계층(104)은 Bonjour 호환 가능 처리 또는 프로토콜 계층일 수 있고 무선 계층(105)은 블루투스 호환 가능 처리 또는 프로토콜 계층일 수 있다. 본 설명은, 실례로써, 블루투스 호환 또는 호환 가능 통신 시스템하에서 작동하는 라디오를 참조하지만, 예를 들어, WiFi 호환 또는 호환 가능 통신 시스템(예를 들어, IEEE 802.11n 표준과 같은 IEEE 802.11 표준 중 하나와 호환 가능하게 작동하는 라디오), WiMax 호환 또는 호환 가능 통신 시스템, 휴대 전화 표준에 따라 작동하는 라디오 등과 같은 다른 무선 통신 시스템이 사용될 수 있다는 것을 이해할 수 있을 것이다. 또한, 디바이스(102)는 데이터를 저장하기 위한 스토리지(106) 및 디바이스(101)와 같은 다른 디바이스와 통신하기 위한 무선 통신 인터페이스(107)를 포함한다. 스토리지(106)는 디스크와 같은 비휘발성 메모리, RAM(random access memory)과 같은 휘발성 메모리, 또는 그것에 관한 조합일 수 있다.
일 실시예에서, 서비스 검색 계층(104)은 서비스 광고 유닛(108), 서비스 마스크 생성기(109), 및 키/값 쌍 생성기(110)를 포함하지만, 그것으로 제한되지 않는다. 서비스 광고 유닛(108)은 디바이스(102)가 제공할 수 있는 애플리케이션 또는 서비스(111)와 같은 하나 이상의 서비스를 광고하는 데 사용되는데, 이 경우 디바이스(102)는 서버 디바이스(예를 들어, 서비스 제공자)로 기능한다. 하나 이상의 서비스가 광고되는 경우, 키/값 쌍 생성기(110)가 호출되어 키 및 값을 생성하는데, 이 경우 키/값 쌍은 특정 서비스를 표현하는 데 사용된다. 키는 무선 디바이스가 잠재적으로 특정 서비스(예를 들어, 게임)를 지원하는지의 여부를 나타내는 데 사용되고 값은, 디바이스가 특정 서비스를 실제로 지원하는지의 여부를 판정하는 데 사용될 수 있는, 제공될 서비스에 관한 좀더 상세한 정보를 포함한다. 그 다음, 키/값 쌍은 스토리지(106)에 키/값 쌍(112)으로서 저장된다.
또한, 디바이스(102)에 의해 광고되는 모든 서비스를 표현하는 모든 키/값 쌍은 서비스 마스크 생성기(109)에 의해 비트마스크를 생성하는 데 사용된다. 일 실시예에서, 키/값 쌍은 해시 함수(예를 들어, SHA-1 또는 MD5 등)를 사용하여 해시되어 스토리지(106)에 서비스 마스크(113)로서 저장되는 비트마스크를 생성한다. 미리 정해진 논리값(예를 들어, 참 또는 1의 논리값)을 갖는 비트마스크의 각 비트는 해당 서비스가 디바이스(102)에 의해 지원된다는 것을 나타낸다. 이 상황에서, 하나 이상의 서비스를 광고하는 디바이스(102)는 광고된 서비스를 하나 이상의 다른 무선 디바이스(예를 들어, 클라이언트 디바이스로 지칭되는 디바이스(101))에 서빙하는 서버 디바이스로 기능한다. 무선 디바이스는, 소정 상황에 따라, 서버 디바이스 및 클라이언트 디바이스 양자일 수 있다는 것에 주목해야 한다.
마찬가지로, 일 실시예에 따르면, 디바이스(101)는 서비스 검색 계층 또는 유닛(114) 및 무선 계층 또는 유닛(115)을 포함하지만 그것으로 제한되는 것은 처리 프로토콜 스택을 포함한다. 서비스 검색 계층(114)은 Bonjour 호환 가능 처리 또는 프로토콜 계층일 수 있고 무선 계층(115)은 블루투스 호환 가능 처리 또는 프로토콜 계층일 수 있다. 본 설명은, 실례로써, 블루투스 호환 또는 호환 가능 통신 시스템하에서 작동하는 라디오를 참조하지만, 예를 들어, WiFi 호환 또는 호환 가능 통신 시스템(예를 들어, IEEE 802.11n 표준과 같은 IEEE 802.11 표준 중 하나와 호환 가능하게 작동하는 라디오), WiMax 호환 또는 호환 가능 통신 시스템, 휴대 전화 표준에 따라 작동하는 라디오 등과 같은 다른 무선 통신 시스템이 사용될 수 있다는 것을 이해할 수 있을 것이다. 일 실시예에서, 서비스 검색 계층(114)은 DNS 처리 유닛(118) 및 키 생성기(119)를 포함한다.
브라우저 애플리케이션과 같은, 애플리케이션(117)이 네트워크에서 특정 서비스를 검색할 때, DNS 패킷(예를 들어, DNS 쿼리 패킷)이 DNS 처리 유닛(118)에 의해 생성된다. 또한, 키 생성기(119)는 DNS 패킷에 기초하여 키를 생성한다. 무선 계층(115)은, 예를 들어, 다양한 해시 함수(예를 들어, SHA-1 또는 MD5 등)를 사용하여 키에 대해 해시 연산을 수행하는 것에 의해 키에 기초한 비트마스크를 생성하고 키 및 비트마스크를 디바이스(101)의 (표시되지 않은) 로컬 메모리에 저장한다. 그 다음, 무선 계층(115)은, 무선 인터페이스 로직 또는 회로(116)를 통해, 네트워크에서 조회 메시지(예를 들어, EI(extended inquiry) 메시지)를 브로드캐스트한다. 조회 메시지는, 디바이스(102)를 포함하는, 통신 범위의 다른 모든 무선 디바이스에 의해 수신된다.
조회에 응답하여, 잠재적으로 다른 디바이스에 서비스를 제공할 수 있는 각각의 서버 디바이스는 개개 디바이스에 의해 지원되는 서비스를 표현하는 비트마스크를 반환하는 것에 의해 조회에 응답할 수 있다. 이 실례에서는, 조회 메시지가 디바이스(102)에 의해 수신된다. 조회 메시지에 응답하여, 무선 계층(105)은 스토리지(106)로부터 서비스 비트마스크(113)를 검색하도록 구성되고 서비스 비트마스크(113)를 표현하는 데이터를 무선 인터페이스 로직 또는 회로(107)를 통해 디바이스(101)에 반환한다.
디바이스(101)가 디바이스(102)로부터 비트마스크를 수신하는 경우, 무선 계층(115)은 디바이스(102)로부터 수신된 비트마스크를 로컬 메모리에 저장된 비트마스크와 비교하여 양자의 비트마스크에 동일한 논리값을 갖는 어떤 해당 비트가 존재하는지의 여부를 판정하는데, 이는 연관된 서비스가 디바이스(102)에 의해 지원된다는 것을 나타낸다. 예를 들어, 무선 계층(115)은 2개의 비트마스크 사이에서 논리적 AND 연산을 수행할 수 있다.
그 결과가 애플리케이션(117)에 의해 검색되는 서비스가 디바이스(102)에 의해 잠재적으로 지원된다는 것을 나타낸다면, 무선 계층(115)은 디바이스(102)와 세션 접속(예를 들어, SDP(session description protocol) 접속)을 확립하여 서비스에 관한 좀더 상세한 정보를 위한 요청을 송신할 수 있다. 일 실시예에서, 디바이스(101)는, 검색되는 서비스에 해당하는 키/값 쌍을 포함하는, 디바이스(102)로부터의 비트마스크에 의해 지원되는 모든 키/값 쌍을 요청할 수 있다. 무선 처리 유닛(115)은 디바이스(102)로부터 수신되는 모든 키/값 쌍을 "워크스루(walk through)"할 수 있다. 예를 들어, 각각의 키/값 쌍에 대해, 무선 처리 유닛(115)은 각각의 키/값 쌍의 키를 검색되는 서비스에 해당하는 국지적으로 저장된 키와 비교 또는 매칭하여 검색되는 서비스에 해당하는 키/값 쌍을 식별할 수 있다.
일단 검색되는 서비스에 해당하는 키/값 쌍이 수신되고 식별되고 나면, 무선 계층(115)은 그러한 키/값 쌍을 서비스 검색 계층(118)으로 전달한다. 서비스 검색 계층(118)은 키/값 쌍을 평가하여 검색되는 서비스가 디바이스(102)에 의해 실제로 지원되는지의 여부를 애플리케이션(117)에 통지한다. 결과적으로, 상기 프로토콜은, 비교적 긴 시간이 걸릴 수 있는, 서버 디바이스가 검색되는 서비스를 실제로 지원하는지의 여부를 판정하기 위해 서버 디바이스로부터 서비스에 대한 상세한 정보를 획득하기 위한 접속을 확립하기 이전에, 조회에 응답하는 서버 디바이스 중 어떤 것이 검색되는 서비스를 잠재적으로 지원하는지를 신속하게 식별할 수 있다.
앞서 설명된 바와 같이, 디바이스(101-102)의 아키텍처는 유사하거나 동일할 수 있다는 것에 주목해야 한다. 구체적인 상황에 따라, 디바이스(101-102)는 클라이언트 디바이스 및/또는 서버 디바이스로 동작할 수 있다. 따라서, 소정 기능 유닛은 디바이스가 클라이언트 디바이스, 서버 디바이스, 또는 클라이언트 및 서버 디바이스 모두로 동작할 때와 유사하거나 동일한 일부 연산을 수행할 수 있다. 예를 들어, 서비스 검색 계층(114)은 서비스 검색 계층(104)과 마찬가지로 구현될 수 있는 한편, 무선 계층(115)은 무선 계층(105)과 마찬가지로 구현될 수 있다. 표시되지는 않았지만, 서비스 검색 계층(114)은 서비스 광고 유닛(108), 서비스 마스크 생성기(109), 및/또는 키/값 쌍 생성기(110) 등과 유사한 다른 기능 유닛을 포함할 수 있다. 마찬가지로, 서비스 검색 계층(104)은 DNS 처리 유닛(118) 및/또는 키 생성기(119) 등과 유사한 다른 기능 유닛을 포함할 수 있다. 예를 들어, 서비스 검색 유닛(114)에 의해 생성되는 키는 동일 서비스를 위해 서비스 검색 유닛(104)에 의해 생성되는 키와 유사하거나 동일할 수 있다. 도 1의 디바이스(101-102)에 대한 구성 요소의 일부 또는 전부가 소프트웨어, 하드웨어, 또는 양자의 조합으로 구현될 수 있다.
도 2는 본 발명의 일 실시예에 따른 2개의 피어 투 피어 네트워킹 디바이스 사이의 트랜잭션을 예시하는 트랜잭션 다이어그램이다. 도 2를 참조하면, 예를 들어, 디바이스(210)는 도 1의 디바이스(101)의 일부로서 구현될 수 있고 디바이스(220)는 도 1의 디바이스(102)의 일부로서 구현될 수 있다. 디바이스(210)의 애플리케이션(예를 들어, 브라우저)이 서비스(예를 들어, 게임)를 검색할 때, 서비스와 연관된 DNS 정보에 기초하여 키 및 비트마스크가 생성된다. 트랜잭션 201에서는, 조회(예를 들어, EI 메시지)가 네트워크에서 브로드캐스트되고, 이 실례에서는, 디바이스(220)에 의해 수신된다. 응답으로, 트랜잭션 202 동안에, 디바이스(202)는 하나 이상의 비트가 디바이스(220)가 제공할 수 있는 하나 이상의 서비스를 나타내는 미리 정해진 논리값을 갖는 서비스 비트마스크를 전송한다. 디바이스(210)는 디바이스(220)로부터 수신된 서비스 비트마스크를 검색되는 서비스를 위한 비트마스크의 관점에서 검사하여 검색되는 서비스가 디바이스(220)에 의해 잠재적으로 지원되는지의 여부를 신속하게 식별한다.
검색되는 서비스가 디바이스(220)에 의해 지원된다고 판정되면, 트랜잭션 203에서, 디바이스(210)는 세션 접속(예를 들어, SDP 접속)을 확립하기 위한 요청을 송신하고, 트랜잭션 204에서, 디바이스(220)는 요청을 승인하여 세션 접속의 확립을 완료한다.
일단 접속이 확립되고 나면, 트랜잭션 205 동안, 디바이스(210)는 디바이스(220)로부터 하나 이상의 키/값 쌍을 요청하고, 트랜잭션 206 동안 디바이스(220)로부터 그러한 키/값 쌍을 수신한다. 디바이스(220)는 비트마스크의 동일 비트에 해당하는 다수의 서비스를 가질 수 있다는 것에 주목해야 한다. 비트마스크에 기초하여, 디바이스(210)는 디바이스(220)가 검색되는 서비스를 "아마도" 또는 "잠재적으로" 제공할 수 있는지를 판정할 수 있을 뿐이다. 이 출원 전체에 걸쳐 설명되는 기술은, 비교적 긴 시간이 걸릴 수 있는, 피어 디바이스와의 접속을 반드시 확립할 필요없이, 피어 디바이스가 특정 서비스를 "아마도" 또는 "잠재적으로" 제공할 수 있는지의 여부를 디바이스가 신속하게 판정할 수 있게 한다. 피어 디바이스가 특정 서비스를 잠재적으로 제공할 수 있다고 판정되는 경우에만, 피어 디바이스가 그러한 서비스를 "실제로" 제공할 수 있는지의 여부를 판정하기 위해 피어 디바이스에 의해 제공되는 서비스의 좀더 상세한 정보를 획득하기 위한 세션 접속이 확립된다. 결과적으로, 비트마스크 및 키/값 쌍을 사용하는 것에 의해, 특정 서비스를 제공할 수 없는 소정 피어 디바이스는 재빨리 제거될 수 있다.
도 3은 일 실시예에 따른 컴퓨팅 디바이스의 서비스를 광고하는 방법을 예시하는 흐름도이다. 방법(300)은 소프트웨어, 하드웨어, 또는 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다는 것에 주목해야 한다. 예를 들어, 방법(300)은 도 2의 디바이스(220)에 의해 또는 다른 방법으로는 도 1에서의 디바이스(102)의 서비스 검색 계층(104) 및/또는 무선 계층(105)에 의해 수행될 수 있다. 도 3을 참조하면, 블록 301에서는, 게이밍 애플리케이션과 같은 서비스를 광고하기 위한 요청이 수신된다. 요청에 응답하여, 블록 302에서는, 광고될 서비스를 위한 키/값 쌍이 생성된다. 키/값 쌍은 광고되는 서비스와 연관된 DNS 정보에 기초하여 생성된다.
블록 303에서는, 키/값이 로컬 스토리지에 저장되고, 예를 들어, 해시 연산을 통해 키에 기초하여 비트마스크가 생성된다. 비트마스크는 키에 해당하는 소정 비트 위치에 단일 비트를 포함하여 서비스가 로컬 컴퓨팅 디바이스에 의해 지원된다는 것을 나타낸다. 그러한 비트마스크를 서비스 비트마스크라고도 한다. 디바이스에 의해 다수의 서비스가 지원된다면, 비트마스크에 미리 정해진 논리값(예를 들어, 참의 논리값)을 갖는 다수 비트가 존재할 수 있고, 각각의 비트는 디바이스에 의해 지원되는 특정 서비스를 나타낸다. 다음으로, 블록 304에서는, 하나 이상의 서비스를 조회 중인 원격 디바이스로부터 조회(예를 들어, EI 조회)가 수신된다. 응답으로, 블록 305에서는, 특정 서비스가 로컬 디바이스에 의해 지원되는지의 여부를 원격 디바이스에 의해 판정하는 데 사용되는 서비스 비트마스크가 원격 디바이스에 반환된다.
도 4는 일 실시예에 따른 피어 디바이스에 의해 제공되는 서비스를 검색하는 방법을 예시하는 흐름도이다. 방법(400)은 소프트웨어, 하드웨어, 또는 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다는 것에 주목해야 한다. 예를 들어, 방법(400)은 도 2의 디바이스(210)에 의해 또는 다른 방법으로는 도 1에서의 디바이스(101)의 서비스 검색 계층(114) 및/또는 무선 계층(115)에 의해 수행될 수 있다. 도 4를 참조하면, 블록 401에서는, 브라우저와 같은 애플리케이션으로부터 서비스(예를 들어, 게임)를 검색하기 위한 요청이 수신된다. 요청에 응답하여, DNS 패킷(예를 들어, DNS 쿼리 패킷)이 생성되는데, 이 경우 DNS 패킷은 검색되는 서비스를 식별하는 소정 정보(예를 들어, 네임)를 포함한다. 블록 402에서는, DNS 패킷에 기초하여 키가 생성된다. 또한, 블록 403에서는, 키에 기초하여 비트마스크가 생성된다. 예를 들어, 비트마스크는 키에 대해 해시 연산을 수행하는 것에 의해 생성되는데, 이는 미리 정해진 논리값(예를 들어, 참의 논리값)을 갖는 단일 비트 비트마스크를 생성시킬 수 있다.
블록 404에서는, 네트워크의 하나 이상의 피어 디바이스로부터 이용 가능할 수 있는 서비스를 검색하는 조회(예를 들어, EI 메시지)가 네트워크에서 브로드캐스트된다. 블록 405에서는, 조회를 수신하는 네트워크의 피어 디바이스 각각이 각각의 피어 디바이스가 제공할 수 있는 서비스 또는 서비스들을 표현하는 서비스 비트마스크로써 응답할 수 있다. 블록 406에서는, 수신된 각각의 비트마스크에 대해, 원격 피어 디바이스로부터 수신된 비트마스크와 국지적으로 생성된 비트마스크 사이에서 논리 연산(예를 들어, 논리적 AND 연산)이 수행된다. 논리 연산의 결과는 검색되는 서비스가 특정 피어 디바이스로부터 이용 가능한지의 여부를 판정하는 데 사용된다.
예를 들어, 국지적으로 생성된 비트마스크가 0x04인(예를 들어, 비트 2가 참의 논리값을 갖는) 한편 원격 피어 디바이스로부터 수신된 비트마스크가 0x07이라면(예를 들어, 비트 0-2가 참의 논리값을 갖는다면), 2개 비트마스크 사이의 논리적 AND 연산은 0x04의 결과를 산출한다. 여기에서, 결과의 비트 2에서의 0이 아닌 값은 검색되는 서비스가 원격 피어 디바이스에 의해 지원될 수 있다는 것을 나타낸다. 피어 디바이스는 비트마스크의 동일 비트에 해당하는 다수의 서비스를 가질 수 있다는 것에 주목해야 한다. 이 시점에서, 클라이언트 디바이스는, 비트마스크에 기초하여, 원격 디바이스가 검색되는 서비스를 "아마도" 제공할 수 있다는 것을 판정할 수 있을 뿐이다. 원격 디바이스가 검색되는 서비스를 제공할 수 있다는 것을 확실히 판정하기 위해, 로컬 디바이스는 원격 디바이스와의 접속을 확립하여 시의 적절한 키/값 쌍을 획득해야 하고 피어 디바이스가 검색되는 서비스를 "실제로" 지원하는지의 여부를 판정하기 위해 그것을 조사해야 하는데, 이것은 좀더 긴 시간이 걸릴 수 있다. 그러나, 비트마스크를 사용하는 것에 의해, 로컬 디바이스는 검색되는 서비스를 제공할 수 없는 피어 디바이스를 신속하게 제거할 수 있고 검색되는 서비스를 제공할 수 있는 피어 디바이스에 집중할 수 있다. 결과적으로, 서비스를 검색하는 효율성이 크게 개선될 수 있다.
일 실시예에 따르면, 키/값 쌍은 검색 및/또는 광고되는 서비스와 연관된 DNS 정보에 기초하여 생성된다. 예를 들어, DNS 패킷의 리소스 레코드(RR)의 네임 필드 및 형식 필드가 키/값 쌍의 키를 생성하는 데 사용될 수 있는 한편, RR의 데이터 필드(예를 들어, RData 필드)가 키/값 쌍의 값을 생성하는 데 사용될 수 있다. 일 실시예에서, RR의 네임 필드는 전체 문자열을 네임 필드에 중복하지 않으면서 DNS 패킷의 다른 RR 또는 Question에 앞서 등장했던 문자열을 포인팅하는 CP(compression pointer)와 같은 포인터를 포함할 수 있다. 마찬가지로, 데이터 필드(예를 들어, RData 필드) 또한 전체 문자열을 중복하지 않으면서 다른 RR 또는 Question에 또는 다른 방법으로는 현재 RR의 네임 필드에 등장하는 문자열을 포인팅하는 CP를 포함할 수 있다. 따라서, 키/값 쌍의 값은 키/값 쌍의 키를 포인팅하는 포인터를 포함하는 한편 키/값 쌍의 키는 다른 RR을 포인팅하는 포인터를 포함한다. 결과적으로, 키/값 쌍의 크기가 서비스 검색의 목적을 위해 좀더 감소될 수 있다.
도 5a는 전형적인 비압축 DNS 패킷을 예시하는 블록도이다. 도 5a에 표시된 바와 같이, DNS 패킷(500)은 Question(501) 및 RR(502)과 같은 다수 Question 및 RR을 갖는 비압축 DNS 패킷이다. Question(501)은 네임(503)을 포함하는 DNS question의 소정의 표준 필드 뿐만 아니라 (표시되지 않은) 형식 및 클래스 필드와 같은 다른 필드도 포함할 수 있다. 마찬가지로, RR(502)은 네임(504) 및 데이터 필드(505) 뿐만 아니라 다른 필드(예를 들어, 형식, 클래스)도 포함한다. 통상적으로, 다수 필드에 등장할 수 있는 하나 이상의 도메인 네임이 존재한다. 이 실례에서는, "_tcp" 및 "local"의 문자열이 네임 필드(503) 및 네임 필드(504) 모두에 등장하고, 어쩌면 (표시되지 않은) 일부 다른 필드에 등장할 수 있다. 문자열의 그러한 중복으로 인해 DNS 패킷이 불필요하게 커질 수 있다.
DNS 패킷의 크기를 감소시키기 위해, 도 5b에 표시된 바와 같이, CP(compression pointer)가 사용되어 전체 문자열을 필드에 다시 인용하지 않으면서 문자열의 선행 등장을 참조하는 것에 의해 이후에 등장하는 문자열을 교체한다. 도 5b를 참조하면, RR(502)의 네임 필드(504)에서 "_tcp" 및 "local"의 전체 문자열을 다시 인용하는 대신에, 압축 포인터 <ptr0>가 사용되어 Question(501)의 네임 필드(503)에 앞서 등장했던 동일한 문자열을 참조한다. 예를 들어, 포인터 <ptr0>는 DNS 패킷의 시작 부분으로부터 도메인 네임 "[4]_tcp[5]local[0]"를 인코딩하는 바이트까지의 오프셋을 표현한다. 결과적으로, 21 바이트를 사용하여 "[8]_example[4]_tcp[5]local[0]"를 인코딩하는 대신 여기에서는 11 바이트만이 사용된다.
마찬가지로, RData 필드(505) 또한 포인터 <ptr1>를 사용하여, 전체 문자열을 반복하지 않으면서, DNS 패킷에 앞서 등장했던 문자열을 참조할 수 있다. 예를 들어, RData 필드(505)는 문자열 "[8]_example[4]_tcp[5]local[0]"로 종료한다고 가정한다. 그러한 문자열은 네임 필드(503)로 참조되는 포인터 <ptr0>를 포함하는 네임 필드(504)를 포인팅하는 포인터 <ptr1>로 교체될 수 있다.
일 실시예에 따르면, 키(506)는 DNS 패킷의 question 또는 리소스 레코드로부터, 이 실례에서는, 리소스 레코드(502)로부터 생성되는 네임 필드(508) 및 형식 필드(509)로 이루어진다. 네임 필드(508)는, 도 5c에 표시된 바와 같이, 전체 문자열을 다시 인용하지 않으면서 DNS 패킷에 앞서 등장했던 문자열로 참조되는 포인터를 포함한다. DNS 패킷에 사용되는 DNS 클래스는 (널리 사용되는 유일한 DNS 클래스인) 인터넷 클래스를 참조하는 "IN"인 것으로 가정된다는 것에 주목해야 한다. DNS 패킷의 2-바이트 DNS 클래스는 키(506)에서 네임 필드(508)의 도메인 네임에 대해 압축이 수행되는 방법을 식별하는 버전 식별자(510)로 교체된다. 예를 들어, 버전 식별자(510)는 (압축 사전(compression dictionary)이라고도 하는) 어떤 인-메모리(in-memory) DNS 패킷이 이 키를 생성하는 데 사용되었는지를 나타내고, 그에 따라 키의 수신기는 키를 완전한 DNS 네임으로 다시 압축 해제할 수 있다. 키(506)는 단지 예시의 목적을 위해 설명된다는 것에 주목해야 하고; 다른 포맷도 적용될 수 있다. 더 나아가, 키/값 쌍의 값(507)은 리소스 레코드의 네임 필드를 포인팅하는 포인터를 갖는 레코드의 레코드 데이터 필드(이 실례에서는, RData 필드(505))로부터 생성된다. 다시 말해, 키/값 쌍의 값은 키/값 쌍의 키로 참조되는 포인터를 포함하고, 키 자체는 DNS 패킷의 키에 사용되는 정보에 선행하는 다른 도메인 네임(예를 들어, 네임 필드(503))을 포인팅하는 포인터를 포함한다. 이로 인해 키/값 쌍의 크기는 훨씬 작아질 수 있다.
도 6은 일 실시예에 따른 서비스 검색 절차에 사용되는 키/값 쌍을 생성하는 방법을 예시하는 흐름도이다. 방법(600)은 소프트웨어, 하드웨어, 또는 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다는 것에 주목해야 한다. 예를 들어, 방법(600)은 도 1의 디바이스(101-102)에 대한 서비스 검색 계층 및/또는 무선 계층에 의해 수행될 수 있다. 도 6을 참조하면, 블록 601에서는, 서비스를 조회하거나 서비스를 광고하기 위한 DNS 정보가 수신되는데, 이 경우 DNS 정보는 하나 이상의 question 또는 리소스 레코드를 포함한다. 블록 602에서는, DNS 정보에 기초하여 인-메모리 DNS 패킷이 생성된다. 인-메모리 DNS 패킷에서, 문자열의 후속 등장은 전체 문자열을 반복하지 않으면서 문자열의 선행 등장쪽으로 참조되는 포인터로 교체된다. 예를 들어, 포인터는 DNS 패킷의 시작 부분으로부터 문자열을 인코딩하는 바이트까지의 오프셋을 표현한다. 블록 603에서는, 인-메모리 DNS 패킷으로부터 레코드의 네임, 형식, 및 데이터 필드가 추출된다. 블록 604에서는, 추출된 네임 및 형식에 기초하여, 전체 문자열을 다시 인용하지 않으면서 DNS 패킷에서 앞서 등장했던 문자열쪽으로 참조되는 포인터를 포함하는, 키가 생성된다. 블록 605에서는, DNS 패킷의 추출된 데이터 필드에 기초하여, 전체 데이터를 다시 인용하지 않으면서 키의 데이터 또는 선행 도메인 네임을 참조하는 포인터를 포함하는, 값이 생성된다. 블록 606에서는, 키 및 값이 서비스를 검색하거나 광고하는 데 사용된다.
도 7은 본 발명의 일 실시예와 함께 사용될 수 있는 데이터 처리 시스템의 블록도이다. 예를 들어, 시스템(900)은 도 1의 디바이스(101-102)와 같은 어떤 컴퓨팅 디바이스도 표현할 수 있다. 도 7은 컴퓨터 시스템의 다양한 구성 요소를 예시하지만, 구성 요소를 상호 접속하는 어떠한 특정 아키텍처 또는 방식을 표현하려는 의도는 아니라는 것에 주목해야 하는데; 그러한 세부 사항은 본 발명과 밀접한 관련이 없기 때문이다. 좀더 적은 구성 요소 또는 어쩌면 좀더 많은 구성 요소를 갖는 네트워크 컴퓨터, 핸드헬드 컴퓨터, 휴대폰, 및 다른 데이터 처리 시스템 또한 본 발명에 사용될 수 있다는 것을 알 수 있을 것이다. 도 7의 컴퓨터 시스템은, 예를 들어, Apple Macintosh 컴퓨터 또는 MacBook, 또는 IBM 호환 가능 PC일 수 있다.
도 7에 표시된 바와 같이, 데이터 처리 시스템의 형태인 컴퓨터 시스템(900)은 하나 이상의 마이크로프로세서(903), ROM(907), 휘발성 RAM(905), 및 비휘발성 메모리(906)에 결합되는 버스 또는 인터커넥트(902)를 포함한다. 마이크로프로세서(903)는 캐시 메모리(904)에 결합된다. 버스(902)는 다양한 이들 구성 요소를 다같이 상호 연결하고 또한 이들 구성 요소(903, 907, 905, 및 906)를 디스플레이 컨트롤러 및 디스플레이 디바이스(908) 뿐만 아니라, 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터, 및 업계에 널리 공지된 다른 디바이스일 수 있는 입/출력(I/O) 디바이스(910)에도 상호 연결한다.
통상적으로, 입/출력 디바이스(910)는 입/출력 컨트롤러(909)를 통해 시스템에 결합된다. 휘발성 RAM(905)은 통상적으로 메모리의 데이터를 리프레시하거나 유지하기 위해 지속적으로 전력을 요구하는 동적 RAM(DRAM)으로 구현된다. 비휘발성 메모리(906)는 통상적으로 마그네틱 하드 드라이브, 자기 광학 드라이브, 광학 드라이브, 또는 DVD RAM이거나 시스템으로부터 전력이 제거된 이후에도 데이터를 유지하는 메모리 시스템의 다른 형식이다. 필수 사항은 아니지만, 통상적으로, 비휘발성 메모리 또한 RAM(random access memory)일 것이다.
도 7은 비휘발성 메모리가 데이터 처리 시스템의 나머지 구성 요소에 직접적으로 결합된 로컬 디바이스인 것으로 표시하지만, 본 발명은, 모뎀 또는 이더넷 인터페이스와 같은 네트워크 인터페이스를 통해 데이터 처리 시스템에 결합되는 네트워크 스토리지 디바이스와 같은, 시스템으로부터 원격인 비휘발성 메모리를 이용할 수도 있다. 버스(902)는, 업계에 널리 주지되어 있는 바와 같이, 다양한 브릿지, 컨트롤러, 및/또는 어댑터를 통해 서로 접속되는 하나 이상의 버스를 포함할 수 있다. 일 실시예에서, I/O 컨트롤러(909)는 USB(Universal Serial Bus) 주변 디바이스를 제어하기 위한 USB 어댑터를 포함한다. 다른 방법으로, I/O 컨트롤러(909)는 Fire Wire 디바이스를 제어하기 위한, Fire Wire 어댑터로도 공지된, 블루투스 어댑터 또는 WiFi 인터페이스 또는 IEEE-1394 어댑터와 같은 무선 어댑터를 포함할 수 있다.
선행하는 상세한 설명 중 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 기호적 표현의 관점으로 제시되었다. 이들 알고리즘 설명 및 표현은 데이터 처리 업계의 당업자들에 의해 그들의 작업에 대한 본질을 업계의 다른 당업자들에게 가장 효과적으로 전달하는 데 사용되는 방법이다. 알고리즘은, 여기에서 그리고 일반적으로, 소망되는 결과로 이어지는 연산의 논리 정연한 순서인 것으로 생각된다. 연산은 물리량에 대한 물리적 조작을 요구하는 것이다. 반드시 그래야 하는 것은 아니지만, 일반적으로, 이들 양은 저장, 전송, 조합, 비교, 및 다른 방식으로 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용의 이유로, 때때로 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 언급하는 것이 편리하다는 것이 입증되었다.
그러나, 이들 및 유사한 용어 모두는 적합한 물리량과 연관되어야 하며 이들 양에 적용되는 편리한 라벨일 뿐이라는 것을 명심해야 한다. 상기 논의로부터 명백히 알 수 있는 바와 구체적으로 다르게 언급되지 않는 한, 설명 전체에 걸쳐, "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "판정" 또는 "디스플레이" 등과 같은 용어를 이용하는 논의는, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로서 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 그와 같은 다른 정보 스토리지, 전송 또는 디스플레이 디바이스 내의 물리량으로서 마찬가지로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 언급한다는 것을 알 수 있을 것이다.
본 발명의 실시예는 여기에서의 연산을 수행하기 위한 장치와도 관련된다. 이 장치는 요구되는 목적을 위해 특별히 구성될 수 있거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 구비할 수 있다. 그러한 컴퓨터 프로그램은 컴퓨터 판독 가능 매체에 저장될 수 있다. 머신 판독 가능 매체는 정보를 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 저장하기 위한 모든 매체를 포함한다. 예를 들어, 머신 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 머신(예를 들어, 컴퓨터) 판독 가능 저장 매체(예를 들어, ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등) 등을 포함한다.
여기에서 제시된 알고리즘 및 디스플레이가 본질적으로 어떠한 특정 컴퓨터 또는 다른 장치와 관련되지는 않는다. 다양한 범용 시스템이 여기에서의 교수에 따라 프로그램과 함께 사용될 수 있거나, 요구되는 방법 연산을 수행하는 좀더 전문화된 장치를 구성하는 것이 편리할 수도 있다. 다양한 이들 시스템을 위해 요구되는 구조는 상기 설명으로부터 알 수 있을 것이다. 또한, 본 발명의 실시예가 어떠한 특정 프로그래밍 언어에 관하여 설명되지 않는다. 다양한 프로그래밍 언어가 여기에서 설명된 바와 같은 본 발명의 실시예에 대한 교수를 구현하는 데 사용될 수 있다는 것을 알 수 있을 것이다.
상기 명세서에서, 본 발명의 실시예는 그것에 관한 구체적인 예시적 실시예를 참조하여 설명되었다. 다음 청구항에서 규정되는 본 발명의 좀더 광범위한 정신 및 범위를 벗어나지 않으면서 다양한 변경이 이루어질 수 있다는 것을 분명히 알 수 있을 것이다. 따라서, 명세서 및 도면은 한정적인 의미가 아니라 예시적 의미로 간주되어야 한다.

Claims (28)

  1. 무선 환경에서 서비스를 검색(discovering)하는 머신-구현 방법(machine-implementd method)으로서,
    원격 디바이스로부터 무선 네트워크를 통해 제1 비트마스크(bitmask)를 수신하는 단계 - 상기 제1 비트마스크는 미리 정해진 논리값을 갖는 하나 이상의 비트를 가지며, 상기 비트 각각은 상기 원격 디바이스에 의해 제공되는 특정 서비스를 나타냄 - ;
    상기 제1 비트마스크와 로컬 디바이스 내에서 국지적으로 생성된 제2 비트마스크 간에 논리 연산을 수행하는 단계 - 상기 제2 비트마스크는 상기 로컬 디바이스에 의해 검색 중인 서비스를 나타냄 - ; 및
    상기 논리 연산의 결과에 기초하여 상기 로컬 디바이스에 의해 검색 중인 서비스를 상기 원격 디바이스가 잠재적으로 제공할 수 있는지의 여부를 판정하는 단계
    를 포함하는 머신-구현 방법.
  2. 제1항에 있어서,
    상기 무선 네트워크에 결합된 하나 이상의 원격 디바이스에 의해 잠재적으로 제공되는 서비스를 검색하기 위한 조회 메시지(inquiry message)를 상기 무선 네트워크에서 브로드캐스트하는 단계를 더 포함하며, 상기 제1 비트마스크는 상기 조회 메시지에 응답하여 상기 원격 디바이스로부터 수신되고, 상기 무선 환경은 IEEE 802.11 표준과 호환 가능한 디바이스들 간에 통신을 제공하는 머신-구현 방법.
  3. 제1항에 있어서,
    상기 제2 비트마스크는 상기 미리 정해진 논리값을 갖는 단일 비트를 갖고, 상기 논리 연산은 논리적 AND 연산이며, 상기 논리 연산의 결과에서 유지되는 상기 미리 정해진 논리값을 갖는 임의의 비트는 상기 검색 중인 서비스를 상기 원격 디바이스가 잠재적으로 제공할 수 있음을 나타내는 머신-구현 방법.
  4. 제1항에 있어서,
    상기 검색 중인 서비스를 상기 원격 디바이스가 잠재적으로 제공할 수 있는 것으로 판정되는 경우, 상기 무선 네트워크를 통해 상기 원격 디바이스와의 세션 접속을 확립하는 단계; 및
    상기 세션 접속을 통해 상기 원격 디바이스로부터 하나 이상의 키/값 쌍을 수신하는 단계를 더 포함하고,
    각각의 키/값 쌍은 상기 미리 정해진 논리값을 갖는 상기 제1 비트마스크의 비트에 대응하는 머신-구현 방법.
  5. 제4항에 있어서,
    특정 키/값 쌍의 값은 상기 특정 키/값 쌍의 키에 의해 식별되는 서비스와 연관된 추가적인 상세 정보를 포함하는 머신-구현 방법.
  6. 제5항에 있어서,
    수신된 각각의 키/값 쌍을 조사하여 상기 검색 중인 서비스를 상기 원격 디바이스가 실제로 제공할 수 있는지의 여부를 판정하는 단계를 더 포함하는 머신-구현 방법.
  7. 제5항에 있어서,
    상기 제2 비트마스크에 관련된 제1 키를 갖는 제1 키/값 쌍을 식별하는 단계; 및
    상기 제1 키/값 쌍의 제1 값을 조사하여 상기 검색 중인 서비스를 상기 원격 디바이스가 실제로 제공할 수 있는지의 여부를 판정하는 단계를 더 포함하는 머신-구현 방법.
  8. 제7항에 있어서,
    상기 검색 중인 서비스의 식별자에 기초하여 제2 키를 생성하는 단계; 및
    상기 제2 키에 대해 해시 연산을 수행하여 상기 제2 비트마스크를 생성하는 단계를 더 포함하고,
    상기 제1 키/값 쌍은 상기 제1 키와 제2 키가 매칭되는 경우에 식별되는 머신-구현 방법.
  9. 무선 환경에서 서비스를 검색하기 위한 장치로서,
    원격 디바이스로부터 무선 네트워크를 통해 제1 비트마스크를 수신하는 무선 통신 인터페이스 - 상기 제1 비트마스크는 미리 정해진 논리값을 갖는 하나 이상의 비트를 가지며, 상기 비트 각각은 상기 원격 디바이스에 의해 제공되는 특정 서비스를 나타냄 - ; 및
    상기 제1 비트마스크와 로컬 디바이스 내에서 국지적으로 생성된 제2 비트마스크 간에 논리 연산을 수행하기 위해 상기 무선 통신 인터페이스와 결합되는 무선 처리 유닛 - 상기 제2 비트마스크는 상기 로컬 디바이스에 의해 검색 중인 서비스를 나타내며, 상기 무선 처리 유닛은, 상기 논리 연산의 결과에 기초하여 상기 로컬 디바이스에 의해 검색 중인 서비스를 상기 원격 디바이스가 잠재적으로 제공할 수 있는지의 여부를 판정하도록 구성됨 -
    을 포함하는 장치.
  10. 제9항에 있어서,
    애플리케이션으로부터 상기 서비스를 검색하기 위한 요청을 수신하는 API(application programming interface) - 상기 요청은 상기 검색 중인 서비스를 식별하는 식별자를 포함함 - ; 및
    상기 검색 중인 서비스를 식별하는 식별자에 기초하여 상기 제2 비트마스크를 생성하고, 상기 제2 비트마스크를 상기 무선 처리 유닛에 전달하기 위한, 상기 API에 결합된 서비스 검색 유닛을 더 포함하며,
    상기 무선 환경은 IEEE 802.11 표준과 호환 가능한 디바이스들 간의 통신을 제공하는 장치.
  11. 제10항에 있어서,
    상기 무선 처리 유닛은,
    상기 검색 중인 서비스를 상기 원격 디바이스가 잠재적으로 제공할 수 있는 것으로 판정되는 경우, 상기 무선 네트워크를 통해 상기 원격 디바이스와의 세션 접속을 확립하고,
    상기 세션 접속을 통해 상기 원격 디바이스로부터 하나 이상의 키/값 쌍을 수신하도록 더 구성되며,
    각각의 키/값 쌍은 상기 미리 정해진 논리값을 갖는 상기 제1 비트마스크의 비트에 대응하는 장치.
  12. 무선 환경에서 서비스를 광고하기 위한 머신-구현 방법으로서,
    로컬 디바이스에 의해 광고될 서비스의 식별자에 기초하여 키/값 쌍을 생성하는 단계;
    상기 키/값 쌍의 키에 대해 해시 연산을 수행하여 비트마스크를 생성하는 단계 - 상기 비트마스크는 미리 정해진 논리값을 갖는 비트를 포함함 - ; 및
    무선 네트워크를 통해 원격 디바이스로부터 서비스를 검색하기 위한 조회 메시지에 응답하여, 상기 비트마스크를 상기 무선 네트워크를 통해 상기 원격 디바이스에 전송하여, 상기 원격 디바이스로 하여금 상기 비트마스크에 기초하여 상기 검색 중인 서비스를 상기 로컬 디바이스가 잠재적으로 제공할 수 있는지의 여부를 판정할 수 있게 하는 단계
    를 포함하는 머신-구현 방법.
  13. 제12항에 있어서,
    상기 원격 디바이스로부터의 요청에 응답하여 상기 무선 네트워크를 통해 상기 원격 디바이스와의 세션 접속을 확립하는 단계 - 상기 원격 디바이스가 상기 비트마스크에 기초하여 상기 검색 중인 서비스를 상기 로컬 디바이스가 잠재적으로 제공할 수 있는 것으로 판정하는 경우에 상기 세션 접속이 확립됨 - ; 및
    상기 키/값 쌍을 상기 무선 네트워크를 통해 상기 원격 디바이스에 전송하여, 상기 원격 디바이스로 하여금 상기 키/값 쌍에 기초하여 상기 검색 중인 서비스를 상기 로컬 디바이스가 실제로 제공할 수 있는지의 여부를 판정할 수 있게 하는 단계 - 상기 무선 환경은 IEEE 802.11 표준과 호환 가능한 디바이스들 간의 통신을 제공함 -
    를 더 포함하는 머신-구현 방법.
  14. 제12항에 있어서,
    상기 키/값 쌍은 광고 중인 서비스와 연관된 DNS(domain name system) 정보에 기초하여 생성되는 머신-구현 방법.
  15. 무선 환경에서 서비스를 광고하기 위한 장치로서,
    로컬 디바이스에 의해 광고될 서비스의 식별자에 기초하여 키/값 쌍을 생성하는 서비스 검색 유닛; 및
    상기 키/값 쌍의 키에 대해 해시 연산을 수행하여 비트마스크를 생성하기 위한, 상기 서비스 검색 유닛에 결합된 무선 처리 유닛 - 상기 비트마스크는 미리 정해진 논리값을 갖는 비트를 포함함 - ;
    을 포함하고,
    무선 네트워크를 통해 원격 디바이스로부터 서비스를 검색하기 위한 조회 메시지에 응답하여, 상기 무선 처리 유닛은, 상기 비트마스크를 상기 무선 네트워크를 통해 상기 원격 디바이스에 전송하여, 상기 원격 디바이스로 하여금 상기 비트마스크에 기초하여 검색 중인 서비스를 상기 로컬 디바이스가 잠재적으로 제공할 수 있는지의 여부를 판정할 수 있게 하도록 구성되는 장치.
  16. 제15항에 있어서,
    상기 무선 처리 유닛은,
    상기 원격 디바이스로부터의 요청에 응답하여 상기 무선 네트워크를 통해 상기 원격 디바이스와의 세션 접속을 확립하고 - 상기 원격 디바이스가 상기 비트마스크에 기초하여 상기 검색 중인 서비스를 상기 로컬 디바이스가 잠재적으로 제공할 수 있는 것으로 판정하는 경우에 상기 세션 접속이 확립됨 - ,
    상기 키/값 쌍을 상기 무선 네트워크를 통해 상기 원격 디바이스에 전송하여, 상기 원격 디바이스로 하여금 상기 키/값 쌍에 기초하여 상기 검색 중인 서비스를 상기 로컬 디바이스가 실제로 제공할 수 있는지의 여부를 판정할 수 있게 하도록 구성되며,
    상기 무선 환경은 IEEE 802.11 표준과 호환 가능한 디바이스들 간의 통신을 제공하는 장치.
  17. 무선 환경에서 서비스를 검색 및/또는 광고하기 위한 머신-구현 방법으로서,
    네트워크에서 액세스에 이용가능한 서비스를 식별하는 DNS 정보를 수신하는 단계;
    상기 수신된 DNS 정보에 기초하여 DNS 패킷을 생성하는 단계 - 상기 DNS 패킷은 전체 문자열을 인용하지 않고 상기 DNS 패킷의 이전에 출현하는 문자열들을 참조하는 포인터들을 갖는 하나 이상의 도메인 네임을 포함함 - ; 및
    상기 DNS 패킷으로부터 키 또는 키/값 쌍을 생성하는 단계 - 상기 키 또는 키/값 쌍은 상기 네트워크에서 액세스에 이용가능한 상기 서비스를 나타내는 데 사용됨 -
    를 포함하는 머신-구현 방법.
  18. 머신에 의해 실행되는 경우, 상기 머신으로 하여금 제1항 내지 제8항, 제12항 내지 제14항, 및 제17항 중 어느 한 항에 따른 방법을 수행하게 하는 명령어들이 저장된 머신-판독가능 저장 매체.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020127009029A 2009-09-08 2010-05-27 피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색 KR101374906B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US24050909P 2009-09-08 2009-09-08
US61/240,509 2009-09-08
US24958209P 2009-10-07 2009-10-07
US61/249,582 2009-10-07
US12/687,814 US8285860B2 (en) 2009-03-16 2010-01-14 Efficient service discovery for peer-to-peer networking devices
US12/687,814 2010-01-14
PCT/US2010/036490 WO2011031354A1 (en) 2009-09-08 2010-05-27 Efficient service discovery for peer-to-peer networking devices

Publications (2)

Publication Number Publication Date
KR20120049402A KR20120049402A (ko) 2012-05-16
KR101374906B1 true KR101374906B1 (ko) 2014-03-14

Family

ID=43334537

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009029A KR101374906B1 (ko) 2009-09-08 2010-05-27 피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색

Country Status (7)

Country Link
US (3) US8285860B2 (ko)
EP (2) EP2471001A4 (ko)
JP (1) JP5480972B2 (ko)
KR (1) KR101374906B1 (ko)
CN (1) CN102597982B (ko)
AU (1) AU2010293032B2 (ko)
WO (1) WO2011031354A1 (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10277683B2 (en) * 2009-03-16 2019-04-30 Apple Inc. Multifunctional devices as virtual accessories
US8285860B2 (en) 2009-03-16 2012-10-09 Apple Inc. Efficient service discovery for peer-to-peer networking devices
US20100233960A1 (en) * 2009-03-16 2010-09-16 Brian Tucker Service discovery functionality utilizing personal area network protocols
US8478812B2 (en) * 2009-09-29 2013-07-02 Core Wireless S.A.R.L. Method and apparatus for providing device compatibility information
US8621098B2 (en) * 2009-12-10 2013-12-31 At&T Intellectual Property I, L.P. Method and apparatus for providing media content using a mobile device
US7971782B1 (en) * 2010-03-08 2011-07-05 Apple Inc. Multi-point transaction system
TWI423691B (zh) * 2010-06-14 2014-01-11 Pixart Imaging Inc 藍芽僕裝置及其相關認證方法
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US10523804B2 (en) 2011-09-16 2019-12-31 Samsung Electronics Co., Ltd. Method and system for searching for object in network
KR101930510B1 (ko) * 2011-09-16 2018-12-19 삼성전자주식회사 네트워크 상의 객체 검색 방법 및 시스템
KR20130068795A (ko) * 2011-12-16 2013-06-26 삼성전자주식회사 이용 가능한 서비스를 탐색할 수 있는 디바이스 및 방법
KR101995546B1 (ko) * 2012-02-08 2019-07-02 마벨 월드 트레이드 리미티드 무선 디바이스들을 발견하기 위한 방법 및 장치
US20130290643A1 (en) * 2012-04-30 2013-10-31 Kevin T. Lim Using a cache in a disaggregated memory architecture
US8886782B2 (en) * 2012-05-03 2014-11-11 Nokia Corporation Method and apparatus for binding devices into one or more groups
US10152704B2 (en) * 2012-06-26 2018-12-11 Tempus Technologies, Inc. Cloud-based transaction processing
US9565622B2 (en) * 2012-07-05 2017-02-07 Qualcomm Incorporated Detecting services provided by a wireless node before device discovery and connection establishment
CN103718529A (zh) * 2012-07-31 2014-04-09 华为技术有限公司 广告存储方法、广告插入方法、设备和系统
CN103716776B (zh) * 2012-10-09 2018-01-02 华为技术有限公司 一种d2d的通信方法及用户设备
US9049578B2 (en) 2012-10-24 2015-06-02 Qualcomm Incorporated Profile based discovery engine configurations for neighborhood aware wi-fi networks
RU2648580C2 (ru) * 2012-11-05 2018-03-26 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ поиска услуги или объявления ее в системе прямой связи и устройство для него
WO2014081195A1 (ko) * 2012-11-20 2014-05-30 엘지전자 주식회사 직접 통신 시스템에서 서비스 탐색 또는 광고 방법 및 이를 위한 장치
CN103874047B (zh) * 2012-12-17 2017-08-04 华为终端有限公司 服务信息发现方法及设备
JP2014143637A (ja) 2013-01-25 2014-08-07 Canon Inc 通信装置、通信装置の制御方法、プログラム
US9173161B2 (en) * 2013-03-06 2015-10-27 Qualcomm Incorporated Peer-to-peer pre-association discovery operations
US9154934B2 (en) 2013-03-28 2015-10-06 Futurewei Technologies, Inc. System and method for pre-association discovery
CN104144465B (zh) * 2013-05-08 2017-12-15 华为终端有限公司 一种服务发现方法及装置
WO2014179952A1 (zh) * 2013-05-08 2014-11-13 华为终端有限公司 一种信息查询方法、设备及系统
US20150019681A1 (en) * 2013-07-10 2015-01-15 Qualcomm Innovation Center, Inc. Active computer service solicitation
WO2015009097A1 (en) 2013-07-18 2015-01-22 Samsung Electronics Co., Ltd. Method and system for providing multiple service discovery in a wireless environment
US9723545B2 (en) * 2013-11-01 2017-08-01 Qualcomm Incorporated Discovery of Wi-Fi direct services via discovery probe
KR101546729B1 (ko) * 2013-12-11 2015-08-24 한국과학기술원 에폭시 실록산 수지 조성물을 이용한 하드코팅막 및 이의 제조 방법
EP3114820B1 (en) * 2014-03-06 2019-06-26 Samsung Electronics Co., Ltd. Method and system for establishing a service session between seeker device and advertiser device
KR102079553B1 (ko) 2014-03-11 2020-04-07 삼성전자주식회사 단말간 직접통신에서 간섭 제어 방법 및 장치
US20160073250A1 (en) * 2014-09-05 2016-03-10 Qualcomm Incorporated System and method for providing discovery of a wireless device
KR102264992B1 (ko) 2014-12-31 2021-06-15 삼성전자 주식회사 무선 통신 시스템에서 서버 할당 방법 및 장치
WO2016132011A1 (en) * 2015-02-16 2016-08-25 Nokia Technologies Oy Service discovery
US10242015B1 (en) * 2015-08-18 2019-03-26 EMC IP Holding Company LLC Handling weakening of hash functions by using epochs
DE102015216284A1 (de) * 2015-08-26 2017-03-02 Robert Bosch Gmbh Verfahren zum Betreiben eines Gateways
US10430240B2 (en) * 2015-10-13 2019-10-01 Palantir Technologies Inc. Fault-tolerant and highly-available configuration of distributed services
US10873637B2 (en) 2016-05-02 2020-12-22 Microsoft Technology Licensing, Llc Controlling service discovery and activation among peers
US9998551B1 (en) 2016-10-24 2018-06-12 Palantir Technologies Inc. Automatic discovery and registration of service application for files introduced to a user interface
US10042620B1 (en) 2016-11-03 2018-08-07 Palantir Technologies Inc. Approaches for amalgamating disparate software tools
US10001982B1 (en) 2016-12-16 2018-06-19 Palantir Technologies, Inc. Imposing a common build system for services from disparate sources
US10721611B2 (en) 2017-01-02 2020-07-21 Lg Electronics Inc. Method and device for controlling device by using Bluetooth technology
US10263845B2 (en) 2017-05-16 2019-04-16 Palantir Technologies Inc. Systems and methods for continuous configuration deployment
US10353699B1 (en) 2017-06-26 2019-07-16 Palantir Technologies Inc. Systems and methods for managing states of deployment
US10949564B2 (en) * 2018-05-07 2021-03-16 Apple Inc. Contact discovery service with privacy aspect
US10558454B2 (en) 2018-06-04 2020-02-11 Palantir Technologies Inc. Constraint-based upgrade and deployment
US10516719B1 (en) * 2018-08-31 2019-12-24 Korea Electronics Technology Institute Wearable device registration system and method
WO2020111991A1 (en) * 2018-11-28 2020-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Data transmission from a machine device to a network node
US11016784B2 (en) 2019-03-08 2021-05-25 Palantir Technologies Inc. Systems and methods for automated deployment and adaptation of configuration files at computing devices
US11824772B2 (en) * 2020-12-18 2023-11-21 Ciena Corporation Optimized L2/L3 services over classical MPLS transport
CN112788600B (zh) * 2020-12-31 2022-12-27 中国人民银行数字货币研究所 蓝牙设备间实现认证以及安全连接的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020085920A (ko) * 2001-05-10 2002-11-18 나은주 지니 네트웍기술을 이용한 무선원격 실시간 데이타수집에의한 공정제어방법 및 시스템
US7249182B1 (en) * 2002-02-27 2007-07-24 Nokia Corporation Personal profile sharing and management for short-range wireless terminals
KR20100019410A (ko) * 2008-05-11 2010-02-18 노키아 코포레이션 정보 공유 방법, 컴퓨터 프로그램 제품, 장치, 칩셋 및 시스템

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852661A (en) * 1995-02-17 1998-12-22 Advanced Micro Devices, Inc. Adaptive echo cancellation used with echo suppression to reduce short and long duration echoes
FI106496B (fi) * 1995-06-15 2001-02-15 Nokia Mobile Phones Ltd Solukkoverkon matkapuhelimen monitasoinen kotialuehinnoittelu
US5794446A (en) * 1996-10-28 1998-08-18 Basic Resources, Inc. Power plant performance management systems and methods
WO1998044733A1 (en) * 1997-03-31 1998-10-08 Broadband Associates Method and system for providing a presentation on a network
US6463078B1 (en) * 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6578198B2 (en) 1998-08-13 2003-06-10 Koninklijke Philips Electronics N.V. Personal computer upgrade
US6898185B1 (en) 1999-10-20 2005-05-24 Broadcom Corporation Diagnostics of cable and link performance for a high-speed communication system
US6523108B1 (en) * 1999-11-23 2003-02-18 Sony Corporation Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
US7720908B1 (en) * 2000-03-07 2010-05-18 Microsoft Corporation System and method for multi-layered network communications
US7191236B2 (en) 2000-05-02 2007-03-13 Canon Kabushiki Kaisha Transparent telecommunications system and apparatus
JP4019160B2 (ja) * 2000-08-21 2007-12-12 富士フイルム株式会社 遠隔操作システム
US20030177187A1 (en) * 2000-11-27 2003-09-18 Butterfly.Net. Inc. Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications
US7171475B2 (en) * 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
WO2002059752A1 (en) 2001-01-23 2002-08-01 Pieter Charl Coetzee Communication arrangement
US7299257B2 (en) * 2001-02-06 2007-11-20 Lucent Technologies Inc. Apparatus and method for use in collaboration services
US8126982B2 (en) 2001-02-16 2012-02-28 International Business Machines Corporation Method, network device and computer program product for performing service discovery in a pervasive network
US6842460B1 (en) 2001-06-27 2005-01-11 Nokia Corporation Ad hoc network discovery menu
US6922725B2 (en) 2001-09-07 2005-07-26 Xerox Corporation Method and apparatus for processing document service requests originating from a mobile computing device
US20030145089A1 (en) * 2002-01-29 2003-07-31 Xerox Corporation System and method for enabling arbitrary components to transfer data between each other
US6997803B2 (en) * 2002-03-12 2006-02-14 Igt Virtual gaming peripherals for a gaming machine
AU2003239385A1 (en) * 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7103313B2 (en) * 2002-06-05 2006-09-05 Nokia Corporation Automatic determination of access point content and services for short-range wireless terminals
US7277946B2 (en) * 2002-06-28 2007-10-02 Microsoft Corporation Distributed session listing and content discovery
JP2004104774A (ja) * 2002-08-23 2004-04-02 Matsushita Electric Ind Co Ltd 無線通信システム
JP2005537710A (ja) * 2002-08-28 2005-12-08 シンボル テクノロジーズ インコーポレイテッド パーソナルエリアネットワーク
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US6909721B2 (en) * 2002-10-31 2005-06-21 Nokia Corporation Device detection and service discovery system and method for a mobile ad hoc communications network
US20040260701A1 (en) 2003-05-27 2004-12-23 Juha Lehikoinen System and method for weblog and sharing in a peer-to-peer environment
US7097562B2 (en) * 2003-06-03 2006-08-29 Wms Gaming Inc. Peer-to-peer distributed gaming application network
US20040253923A1 (en) * 2003-06-12 2004-12-16 Braley Richard C. System and method for electronically pairing devices
US7201984B2 (en) * 2003-06-26 2007-04-10 Delphi Technologies, Inc. Integrated self-cooling plant support module for a fuel cell system
US7685288B2 (en) * 2003-06-30 2010-03-23 Microsoft Corporation Ad-hoc service discovery protocol
US7415711B2 (en) * 2003-08-01 2008-08-19 Microsoft Corporation System and method for a transport independent gaming API for mobile devices
US20050071845A1 (en) * 2003-09-29 2005-03-31 Janne Kallio Terminal equipment, an accessory and a method of communication between terminal equipment and an accessory
KR100576935B1 (ko) * 2003-12-22 2006-05-10 한국전자통신연구원 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US7534169B2 (en) * 2005-07-08 2009-05-19 Cfph, Llc System and method for wireless gaming system with user profiles
US8086492B2 (en) * 2004-03-23 2011-12-27 Douglas Ashbaugh Frame-based network advertising and exchange therefor
US7827139B2 (en) * 2004-04-15 2010-11-02 Citrix Systems, Inc. Methods and apparatus for sharing graphical screen data in a bandwidth-adaptive manner
US7522549B2 (en) * 2004-04-16 2009-04-21 Broadcom Corporation Registering access device multimedia content via a broadband access gateway
GB2415325A (en) 2004-06-15 2005-12-21 Mitel Networks Corp Spontaneous discovery of remote service profiles
AU2005266943C1 (en) * 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US7491123B2 (en) * 2004-07-29 2009-02-17 Nintendo Co., Ltd. Video game voice chat with amplitude-based virtual ranging
US20060190715A1 (en) * 2005-02-22 2006-08-24 Microsoft Corporation Peer-to-peer network information retrieval
EP1864517A4 (en) * 2005-03-14 2013-08-21 Atmel Corp METHOD AND APPARATUS FOR OPERATING A PERSONAL NETWORK USING A RECOVERY PROTOCOL THAT ENHANCES COEXISTENCE WITH A WIRELESS LOCAL NETWORK
JP2007110186A (ja) 2005-10-11 2007-04-26 Yamaha Corp 電話端末
US8025572B2 (en) * 2005-11-21 2011-09-27 Microsoft Corporation Dynamic spectator mode
US8559350B2 (en) 2005-12-20 2013-10-15 Microsoft Corporation Mechanism to convey discovery information in a wireless network
TWI287383B (en) * 2005-12-30 2007-09-21 Acer Inc An instant messaging audio connection management system and method thereof
US7333464B2 (en) * 2006-02-01 2008-02-19 Microsoft Corporation Automated service discovery and wireless network set-up
US20070195760A1 (en) * 2006-02-23 2007-08-23 Mahfuzur Rahman Light weight service discovery protocol
US9931571B2 (en) * 2006-03-17 2018-04-03 Nintendo Co., Ltd. Systems, methods and techniques for safely and effectively coordinating video game play and other activities among multiple remote networked friends and rivals
US9028329B2 (en) * 2006-04-13 2015-05-12 Igt Integrating remotely-hosted and locally rendered content on a gaming device
US20070264991A1 (en) 2006-05-15 2007-11-15 Microsoft Corporation Services near me: discovering and connecting to available wireless services utilizing proximity discovery
KR100727897B1 (ko) * 2006-06-30 2007-06-14 삼성전자주식회사 와이어리스 개인 통신망에 위치한 디바이스 간의 접속 설정방법
US8036672B2 (en) * 2006-07-14 2011-10-11 Qualcomm Incorporated Methods and apparatus related to resource allocation in a wireless communications system
JP2008097297A (ja) 2006-10-11 2008-04-24 Nippon Telegr & Teleph Corp <Ntt> 通信装置、通信方法および通信プログラム
US20080220878A1 (en) * 2007-02-23 2008-09-11 Oliver Michaelis Method and Apparatus to Create or Join Gaming Sessions Based on Proximity
JP2008211507A (ja) 2007-02-26 2008-09-11 Texas Instr Japan Ltd 無線通信システム、出力装置、入力装置、および無線通信方法
US20080291916A1 (en) * 2007-05-22 2008-11-27 Bo Xiong Systems and methods for dynamic quality of service
US20080320041A1 (en) * 2007-06-21 2008-12-25 Motorola, Inc. Adding virtual features via real world accessories
US20090063686A1 (en) * 2007-08-30 2009-03-05 Schmidt Brian K Automated service discovery and dynamic connection management
JP5082763B2 (ja) * 2007-10-25 2012-11-28 ソニー株式会社 番組表提供システム、番組表提供装置、番組表提供方法及び番組表提供プログラム
US7831673B1 (en) * 2007-10-31 2010-11-09 Google Inc. Methods and systems for processing offline chat messages
US20090132935A1 (en) * 2007-11-15 2009-05-21 Yahoo! Inc. Video tag game
KR101376462B1 (ko) * 2007-11-23 2014-03-20 삼성전자주식회사 통신 시스템에서 연결 식별자 동기화 시스템 및 방법
US20090141692A1 (en) 2007-11-30 2009-06-04 Mika Kasslin Optimized ad hoc networking
US20090265661A1 (en) 2008-04-14 2009-10-22 Gary Stephen Shuster Multi-resolution three-dimensional environment display
US9700791B2 (en) * 2008-08-14 2017-07-11 Valve Corporation Overlaying interactive video game play with real-time chat sessions with game switching
US8285860B2 (en) 2009-03-16 2012-10-09 Apple Inc. Efficient service discovery for peer-to-peer networking devices
US20100235523A1 (en) 2009-03-16 2010-09-16 Robert Garcia Framework for supporting multi-device collaboration
US20100233960A1 (en) * 2009-03-16 2010-09-16 Brian Tucker Service discovery functionality utilizing personal area network protocols
US8972488B2 (en) * 2010-09-28 2015-03-03 Redis Labs Ltd. System, methods, and media for providing in-memory non-relational databases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020085920A (ko) * 2001-05-10 2002-11-18 나은주 지니 네트웍기술을 이용한 무선원격 실시간 데이타수집에의한 공정제어방법 및 시스템
US7249182B1 (en) * 2002-02-27 2007-07-24 Nokia Corporation Personal profile sharing and management for short-range wireless terminals
KR20100019410A (ko) * 2008-05-11 2010-02-18 노키아 코포레이션 정보 공유 방법, 컴퓨터 프로그램 제품, 장치, 칩셋 및 시스템

Also Published As

Publication number Publication date
US8285860B2 (en) 2012-10-09
US20100235525A1 (en) 2010-09-16
CN102597982A (zh) 2012-07-18
KR20120049402A (ko) 2012-05-16
WO2011031354A1 (en) 2011-03-17
AU2010293032B2 (en) 2014-02-20
JP5480972B2 (ja) 2014-04-23
EP2293517A1 (en) 2011-03-09
EP2471001A1 (en) 2012-07-04
JP2013504280A (ja) 2013-02-04
US9344339B2 (en) 2016-05-17
US20140052862A1 (en) 2014-02-20
CN102597982B (zh) 2015-05-13
US8572248B2 (en) 2013-10-29
US20130013779A1 (en) 2013-01-10
AU2010293032A1 (en) 2012-04-19
EP2471001A4 (en) 2014-10-01

Similar Documents

Publication Publication Date Title
KR101374906B1 (ko) 피어 투 피어 네트워킹 디바이스를 위한 효율적인 서비스 검색
US11871333B2 (en) Wireless network service type
JP5907709B2 (ja) コンテンツセントリックネットワークにおけるカストディアンベースのルーティングによるエネルギ効率のよいコンテンツキャッシング
US20090125637A1 (en) Method, Apparatus and Computer Program Product for Providing Data Management in a P2P Network
US10142915B2 (en) Method and system for providing multiple service discovery in a wireless environment
KR20120046547A (ko) 무선 네트워크에서 그룹 오너 결정 방법 및 그 디바이스
CN101350790A (zh) 基于即时通讯系统的文件传输方法及装置
CN102769640B (zh) 用户信息的更新方法、服务器以及系统
US20150088995A1 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
US9876862B1 (en) Service identification with reduced ambiguity
CN104092720A (zh) 播放列表的分享方法及装置
Lombera et al. Mobile ad-hoc search and retrieval in the iTrust over Wi-Fi Direct network
JP2016538769A (ja) 発見プローブを介したwi−fiダイレクトサービスの発見
WO2019242279A1 (zh) 一种消息处理方法及装置
JP6549127B2 (ja) 発見のためのハッシュ部分マッチング
CN105009543A (zh) 媒体项目的递送
US20120302266A1 (en) Communicate an internet protocol address to a mobile phone
JP2013073265A (ja) ファイル送受信システム、ファイル送受信方法、通信装置及びプログラム
JP2004236073A (ja) 電子メールシステム及び通信端末装置

Legal Events

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

Payment date: 20170220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 7