Method and system for reliable protocol tunneling over HTTP
First Claim
1. A computer-implemented method for extending functionality of a client by tunneling protocol data over a Hypertext Transfer Protocol (HTTP) through a relay server, the method comprising:
- receiving a communication at the relay server, from the client, to create a relay session with a remote endpoint;
authenticating the client, wherein authenticating the client comprises sending challenge response data to the client;
configuring the relay session;
generating a session identifier for the relay session;
sending the session identifier to the client; and
transferring HTTP requests and responses to the client to exchange data with the remote endpoint, wherein the HTTP requests comprise the session identifier, the HTTP responses comprising negative HTTP responses, the negative HTTP responses being treated to re-try the HTTP requests and promote lossless data transmission over HTTP.
2 Assignments
0 Petitions
Accused Products
Abstract
The embodiments described herein generally relate to methods and systems for tunneling arbitrary binary data between an HTTP endpoint and an arbitrary destination. Such tunneling of data is valuable in an environment, for example, in which a browser-based client communicates in the HTTP protocol and desires to exchange data with a remote endpoint understanding non-HTTP communications. A relay server is used as a “middle man” to connect the client to the destination, and components supporting the necessary protocols for data exchange are plugged into the relay server. To achieve reliable and ordered transmission of data, the relay server groups sessions through the assignment of session identifiers and tracks the exchange of messages through the assignment of sequence and acknowledgment numbers. Further, the relay server provides for authenticating the HTTP endpoint with the destination and for handling other operations not available in the constrained environment of the Web-based client.
101 Citations
20 Claims
-
1. A computer-implemented method for extending functionality of a client by tunneling protocol data over a Hypertext Transfer Protocol (HTTP) through a relay server, the method comprising:
-
receiving a communication at the relay server, from the client, to create a relay session with a remote endpoint; authenticating the client, wherein authenticating the client comprises sending challenge response data to the client; configuring the relay session; generating a session identifier for the relay session; sending the session identifier to the client; and transferring HTTP requests and responses to the client to exchange data with the remote endpoint, wherein the HTTP requests comprise the session identifier, the HTTP responses comprising negative HTTP responses, the negative HTTP responses being treated to re-try the HTTP requests and promote lossless data transmission over HTTP. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. One or more computer storage media not consisting of a signal, the one or more computer storage media storing computer-executable instructions that when executed by a processor perform a method for extending functionality of a client by tunneling protocol data over the Hypertext Transfer Protocol (HTTP) through a relay server, the method comprising:
-
receiving a communication at the relay server, from the client, to create a relay session with a remote endpoint; authenticating the client, wherein authenticating the client comprises sending challenge response data to the client; configuring the relay session; generating a session identifier for the relay session; assigning the session identifier to the client; transferring HTTP requests to exchange data with the remote endpoint, wherein the HTTP requests comprise the session identifier and a sequence number, and wherein the sequence number is received by the relay server as an HTTP header; transferring HTTP requests and responses to the client, wherein the HTTP requests to the client comprise the session identifier, the HTTP responses comprising negative HTTP responses, the negative HTTP responses being treated to re-try the HTTP requests and promote lossless data transmission over HTTP; consuming, by the relay server, the sequence number; generating an acknowledgment number; and passing the acknowledgment number with an HTTP response to the client. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A system configured to tunnel protocol data over the Hypertext Transfer Protocol (HTTP) through a relay server between a client and a remote endpoint, the system comprising:
-
a processor; and memory coupled to the processor, the memory comprising computer program instructions executable by the processor to provide; a session management component within the relay server, wherein the session management component generates a session identifier (session ID) to group HTTP requests and returns the session ID to the client; a relay engine component within the relay server, wherein the relay engine component assigns one or more sequence numbers and one or more acknowledgment numbers to HTTP requests and responses, the HTTP responses comprising negative HTTP responses, the negative HTTP responses being treated to re-try the HTTP requests and promote lossless data transmission over HTTP; a platform services component within the relay server, wherein the platform services component enables authentication of the client to extend functionality of the client; and a plug-in transport module within the relay server, wherein the plug-in transport module supports the protocol data tunneling. - View Dependent Claims (17, 18, 19, 20)
-
Specification