# US 8,572,248 B2 · Efficient service discovery for peer-to-peer networking devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,572,248 B2
- Document ID: US8572248B2
- Status: Granted
- Kind: B2
- Application number: 13/617,212
- Filed: 2012-09-14
- Published: 2013-01-10
- Granted: 2013-10-29
- Earliest claimed: 2009-03-16
- Assignees: Apple Inc.
- Applicants: Rory L. P. McGuire; Michael Van Milligan; Jason Conn; Joshua Graessley; Augustin Prats; Brian Tucker
- Inventors: Rory L. P. McGuire; Michael Van Milligan; Jason Conn; Joshua Graessley; Augustin Prats; Brian Tucker
- Web page: https://patentgrep.com/patent/US8572248B2

## CPC

- H04L 41/50: Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L 61/4511: using domain name system [DNS]
- H04L 61/4541: Directories for service discovery
- H04L 67/104: Peer-to-peer [P2P] networks
- H04L 67/1065: {Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] (pre-configuration of logical or physical connections H04L67/1053)}
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 2101/30: Types of network names
- H04W 4/00: Services specially adapted for wireless communication networks; Facilities therefor
- H04W 48/16: Discovering, processing access restriction or access information
- H04W 84/12: WLAN [Wireless Local Area Networks]
- H04W 92/18: between terminal devices
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Techniques for discovering and/or advertising services are described herein. A first bitmask is received from a remote device over a wireless network, the first bitmask having one or more bits that have a predetermined logical value. Each bit represents a particular service provided by the remote device. A logical operation is performed between the first bitmask and a second bitmask locally generated within a local device, where the second bitmask represents a service being searched by the local device. It is determined whether the remote device is potentially capable of providing the service being searched by the local device based on a result of the logical operation.

## Claims

### Claim 1

A machine-implemented method for discovering and/or advertising a service in a wireless environment, the method comprising:
receiving domain name system (DNS) information identifying a service available for access in a network;
creating a DNS packet based on the received DNS information, the DNS packet including one or more domain names having one or more pointers referenced to one or more character strings that previously appear in the DNS packet without reciting the entire character strings;
extracting a name, a type, and data from a name field, a type field, and a data field of a resource record of the DNS packet, respectively; and
generating a key/value pair from the DNS packet, wherein a key of the key/value pair is generated based on the extracted name and type of the resource record of the DNS packet, wherein a value of the key/value pair is generated based on the extracted data of the resource record of the DNS packet, and wherein the key/value pairs is used to represent the service to be available for access in the network.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the pointers specifies an offset from beginning of the DNS packet to a byte starting to encode a corresponding character string previously occurred in the DNS packet.

### Claim 3 (depends on 1)

The method of claim 1, wherein the resource record is a first resource record, and wherein the name field of the first resource record includes a first pointer pointing to a character string of a second resource record that occurs before the first resource record in the DNS packet.

### Claim 4 (depends on 3)

The method of claim 3, wherein the key includes information describing a compression method used to generate the key.

### Claim 5 (depends on 1)

The method of claim 1, wherein the DNS packet includes a first resource record and a second resource record, the second resource record being a subsequent resource record of the first resource record, wherein the second resource record includes a pointer referenced to a character string occurred in the first resource record without reciting the entire character string in the second resource record.

### Claim 6 (depends on 1)

The method of claim 1, wherein the DNS packet includes a resource record having a name field and a data field, and wherein the data field includes a first pointer pointing to a first character string of the name field, without reciting the first character string in the data field of the resource record.

### Claim 7 (depends on 6)

The method of claim 6, wherein the name field of the resource record further includes a second pointer pointing to a second character string located in a question entry of the DNS packet that is before the resource record, without reciting the second character string in the name field of the resource record.

### Claim 8

A non-transitory machine-readable medium having instruction stored therein, which when executed by a processor, cause the processor to perform a method for discovering and/or advertising a service in a wireless environment, the method comprising:
receiving domain name system (DNS) information identifying a service available for access in a network;
creating a DNS packet based on the received DNS information, the DNS packet including one or more domain names having one or more pointers referenced to one or more character strings that previously appear in the DNS packet without reciting the entire character strings;
extracting a name, a type, and data from a name field, a type field, and a data field of a resource record of the DNS packet, respectively; and
generating a key/value pair from the DNS packet, wherein a key of the key/value pair is generated based on the extracted name and type of the resource record of the DNS packet, wherein a value of the key/value pair is generated based on the extracted data of the resource record of the DNS packet, and wherein the key/value pairs is used to represent the service to be available for access in the network.

### Claim 9 (depends on 8)

The non-transitory machine-readable medium of claim 8, wherein each of the pointers specifies an offset from beginning of the DNS packet to a byte starting to encode a corresponding character string previously occurred in the DNS packet.

### Claim 10 (depends on 8)

The non-transitory machine-readable medium of claim 8, wherein the resource record is a first resource record, and wherein the name field of the first resource record includes a first pointer pointing to a character string of a second resource record that occurs before the first resource record in the DNS packet.

### Claim 11 (depends on 10)

The non-transitory machine-readable medium of claim 10, wherein the key includes information describing a compression method used to generate the key.

### Claim 12 (depends on 8)

The non-transitory machine-readable medium of claim 8, wherein the DNS packet includes a first resource record and a second resource record, the second resource record being a subsequent resource record of the first resource record, wherein the second resource record includes a pointer referenced to a character string occurred in the first resource record without reciting the entire character string in the second resource record.

### Claim 13 (depends on 8)

The non-transitory machine-readable medium of claim 8, wherein the DNS packet includes a resource record having a name field and a data field, and wherein the data field includes a first pointer pointing to a first character string of the name field, without reciting the first character string in the data field of the resource record.

### Claim 14 (depends on 13)

The non-transitory machine-readable medium of claim 13, wherein the name field of the resource record further includes a second pointer pointing to a second character string located in a question entry of the DNS packet that is before the resource record, without reciting the second character string in the name field of the resource record.

### Claim 15

A data processing system, comprising:
a processor;
a memory coupled to the processor;
a domain name system (DNS) processing unit executed from the memory by the processor to receive information identifying a service available for access in a network and to create a DNS packet based on the received DNS information, the DNS packet including one or more domain names having one or more pointers referenced to one or more character strings that previously appear in the DNS packet without reciting the entire character strings;
a key/value generator executed from the memory by the processor to extract a name, a type, and data from a name field, a type field, and a data field of a resource record of the DNS packet, and to generate a key/value pair from the DNS packet, wherein a key of the key/value pair is generated based on the extracted name and type of the resource record of the DNS packet, wherein a value of the key/value pair is generated based on the extracted data of the resource record of the DNS packet, and wherein the key/value pairs is used to represent the service to be available for access in the network.

### Claim 16 (depends on 15)

The system of claim 15, wherein each of the pointers specifies an offset from beginning of the DNS packet to a byte starting to encode a corresponding character string previously occurred in the DNS packet.

### Claim 17 (depends on 15)

The system of claim 15, wherein the resource record is a first resource record, and wherein the name field of the first resource record includes a first pointer pointing to a character string of a second resource record that occurs before the first resource record in the DNS packet.

### Claim 18 (depends on 15)

The system of claim 15, wherein the key includes information describing a compression method used to generate the key.

### Claim 19 (depends on 15)

The system of claim 15, wherein the DNS packet includes a first resource record and a second resource record, the second resource record being a subsequent resource record of the first resource record, wherein the second resource record includes a pointer referenced to a character string occurred in the first resource record without reciting the entire character string in the second resource record.

### Claim 20 (depends on 15)

The system of claim 15, wherein the DNS packet includes a resource record having a name field and a data field, and wherein the data field includes a first pointer pointing to a first character string of the name field, without reciting the first character string in the data field of the resource record.

### Claim 21 (depends on 20)

The system of claim 20, wherein the name field of the resource record further includes a second pointer pointing to a second character string located in a question entry of the DNS packet that is before the resource record, without reciting the second character string in the name field of the resource record.
