# US 9,438,696 B2 · Data communication protocol

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

- Number: US 9,438,696 B2
- Document ID: US9438696B2
- Status: Granted
- Kind: B2
- Application number: 13/946,550
- Filed: 2013-07-19
- Published: 2013-11-14
- Granted: 2016-09-06
- Earliest claimed: 2005-05-25
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: David Kruse; Ahmed Mohamed; Mathew George; Pradeep Madhavarapu; Sundar Subbarayan
- Web page: https://patentgrep.com/patent/US9438696B2

## CPC

- H04L 63/123: {received data contents, e.g. message integrity}
- G06F 16/182: Distributed file systems
- H04L 63/10: {for controlling access to devices or network resources}
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/14: Session management (for real-time applications in data packet communications networks H04L65/1066)
- H04L 67/147: Signalling methods or messages providing extensions to protocols defined by standardisation
- H04L 69/02: {Protocol performance}
- H04L 69/14: Multichannel or multilink protocols
- H04L 69/18: Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
- H04L 69/24: Negotiation of communication capabilities
- H04L 69/329: in the application layer [OSI layer 7]
- Y02D 30/50: in wire-line communication networks, e.g. low power modes or reduced link rate
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Described is a data communication protocol, in which a client and server negotiate in a manner that does not require the client to retry negotiation when servers are not capable of the client-desired protocol. In one example implementation, the desired protocol is SMB 2.0 or greater. The protocol describes a create command with possibly additional context data attached for built-in extensibility, and a compound command comprising a plurality of related commands or unrelated commands. A multi-channel command requests data transfer on a separate data channel, a signed capability verification may be used to ensure that a secure connection is established, and the protocol provides the ability to transfer extended error data from the server in response to a request.

## Claims

### Claim 1

A computer-implemented method for initiating a session allowing multiple connections in a file system and receiving transport information, the method comprising:
receiving a request to initiate a session between a client and a server;
determining available transports for establishing a connection between the client and the server;
selecting an initial transport for sending commands between the client and server;
establishing a first connection via the initial transport;
binding the first connection to the session;
establishing a second connection via a second transport of the available transports;
binding the second connection to the session;
sending a command received from the application through the first connection bound to the session, the command requesting data; and
receiving, in response to the command, the requested data via the second connection.

### Claim 2 (depends on 1)

The method of claim 1, wherein receiving the request comprises receiving a request from an application to access a file stored remotely on the server using Server Message Block (SMB) protocol.

### Claim 3 (depends on 1)

The method of claim 1, wherein receiving the request comprises setting up a session and sending one or more packets to the server to negotiate available dialects of the network protocol used to communicate between the client and server.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining available transports comprises identifying one or more addresses of the server.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining available transports comprises querying a client operating system to identify available network interfaces.

### Claim 6 (depends on 1)

The method of claim 1, wherein determining available transports comprises querying sending a capabilities request to the server to identify available network interfaces on the server.

### Claim 7 (depends on 1)

The method of claim 1, wherein selecting the initial transport comprises selecting based on application-specified criteria that establishes the application's connection preferences.

### Claim 8 (depends on 1)

The method of claim 1, wherein establishing the connection comprises sending a negotiate message over the selected transport that sets up a Server Message Block (SMB) connection.

### Claim 9 (depends on 1)

The method of claim 1, wherein binding the first connection comprises preparing the first connection for use by the session for sending commands from the client to the server.

### Claim 10 (depends on 1)

The method of claim 1, wherein binding the first connection comprises storing information for ending the session.

### Claim 11 (depends on 1)

The method of claim 1, wherein sending the command comprises selecting among multiple inbound connections to choose one or more connections suited to handling the current command.

### Claim 12 (depends on 1)

The method of claim 1, wherein the command includes an indication to the server to return the requested data via the second connection.

### Claim 13

A nontransitory computer-readable storage device comprising instructions which, when executed by a processor, cause the processor to perform a method, the method comprising:
receiving a request to initiate a session between a client and a server;
determining available transports for establishing a connection between the client and the server;
selecting an initial transport for sending commands between the client and server;
establishing a first connection via the initial transport;
binding the first connection to the session;
establishing a second connection via a second transport of the available transports;
binding the second connection to the session;
sending a command received from the application through the first connection bound to the session, the command requesting data; and
receiving, in response to the command, the requested data via the second connection.

### Claim 14

A system comprising:
at least one processor;
memory, operatively connected to the at least one processor, and containing instruction that, when executed by the at least one processor, cause the at least one processor to perform a method, the method comprising:
receiving a request to initiate a session between a client and a server;
determining one or more available transports available for establishing a connection between the client and the server;
selecting an initial transport for sending commands between the client and server;
establishing a connection via the selected transport;
binding the established connection to the initiated session; and
sending a command received from the application through the established connection bound to the session.

### Claim 15 (depends on 14)

The system of claim 14, wherein receiving the request comprises receiving a request from an application to access a file stored remotely on the server using Server Message Block (SMB) protocol.

### Claim 16 (depends on 14)

The system of claim 14, wherein receiving the request comprises setting up a session and sending one or more packets to the server to negotiate available dialects of the network protocol used to communicate between the client and server.

### Claim 17 (depends on 14)

The system of claim 14, wherein the command includes an indication to the server to return the requested data via the second connection.

### Claim 18 (depends on 14)

The system of claim 14, wherein determining available transports comprises identifying one or more addresses of the server.

### Claim 19 (depends on 14)

The system of claim 14, wherein determining available transports comprises querying a client operating system to identify available network interfaces.

### Claim 20 (depends on 14)

The system of claim 14, wherein determining available transports comprises querying sending a capabilities request to the server to identify available network interfaces on the server.
