Performing application layer transactions during the connection establishment phase of connection-oriented protocols
First Claim
1. In a computer network that includes a client computer system that implements a client side data path that extends from a client side application layer, through a client side connection-oriented protocol layer, through a client side intermediate component, and to a client side network interface module, the computer network also including a server computer system that implements a server side data path that extends from a server side application layer, through a server side connection-oriented protocol layer, through a server side intermediate component, and to a server side network interface module, a method for the client computer system to initiate an application layer transaction during the connection establishment phase of a connection-oriented protocol rather than awaiting the completion of the connection establishment phase to thereby reduce the time needed to complete the application layer transaction, the method comprising the following:
- an act of the client side intermediate component receiving first client side connection establishment data from the client side connection-oriented protocol layer, the first client side connection establishment data being sufficient to elicit an acknowledgment from the server side connection-oriented protocol layer if received by the server side connection-oriented protocol layer;
an act of the client side intermediate component preventing the first client side connection establishment data from being delivered to the server computer system;
an act of the client side intermediate component sending second client side connection establishment data to the client side connection-oriented protocol layer, the second client side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first client side connection establishment data;
an act of the client side intermediate component receiving third client side connection establishment data along with an application layer request from the client side connection-oriented protocol layer, the application layer request originating from the client side application layer and originally causing the dispatch of the first client side connection establishment data from the client side connection-oriented protocol layer to the client side intermediate component, the third client side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the second client side connection establishment data from the server computer system;
an act of the client side intermediate component sending first network connection establishment data along with the application layer request to the client side network interface module, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server side connection-oriented protocol layer; and
an act of the client side intermediate component receiving second network connection establishment data along with an application layer response originating from the server side application layer, the second network connection establishment data representing an acknowledgement from the server side intermediate component that was generated in response to having received the first network connection establishment data, the application layer response representing a response to the application layer request.
2 Assignments
0 Petitions
Accused Products
Abstract
When a client issues a network transaction like HTTP requests to a server, such requests may require a connection to be established between the client and the server over a reliable transport like TCP (if no such connection is available). Such connection establishment takes time, and delays the completion of the transaction, thereby degrading user experience. This invention attempts to reduce this delay by transparently executing idempotent transactions in parallel with the connection establishment phase. In case the end hosts do not support the functionality of this invention, said functionality can be transparently added through software components between the client and server. Client and server side intermediate components simulate connection establishment making it appear to corresponding application layers that a connection is established. Accordingly, the application layers respond with application layer requests or responses when in fact no connection has yet been established to transmit the requests or responses.
74 Citations
29 Claims
-
1. In a computer network that includes a client computer system that implements a client side data path that extends from a client side application layer, through a client side connection-oriented protocol layer, through a client side intermediate component, and to a client side network interface module, the computer network also including a server computer system that implements a server side data path that extends from a server side application layer, through a server side connection-oriented protocol layer, through a server side intermediate component, and to a server side network interface module, a method for the client computer system to initiate an application layer transaction during the connection establishment phase of a connection-oriented protocol rather than awaiting the completion of the connection establishment phase to thereby reduce the time needed to complete the application layer transaction, the method comprising the following:
-
an act of the client side intermediate component receiving first client side connection establishment data from the client side connection-oriented protocol layer, the first client side connection establishment data being sufficient to elicit an acknowledgment from the server side connection-oriented protocol layer if received by the server side connection-oriented protocol layer;
an act of the client side intermediate component preventing the first client side connection establishment data from being delivered to the server computer system;
an act of the client side intermediate component sending second client side connection establishment data to the client side connection-oriented protocol layer, the second client side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first client side connection establishment data;
an act of the client side intermediate component receiving third client side connection establishment data along with an application layer request from the client side connection-oriented protocol layer, the application layer request originating from the client side application layer and originally causing the dispatch of the first client side connection establishment data from the client side connection-oriented protocol layer to the client side intermediate component, the third client side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the second client side connection establishment data from the server computer system;
an act of the client side intermediate component sending first network connection establishment data along with the application layer request to the client side network interface module, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server side connection-oriented protocol layer; and
an act of the client side intermediate component receiving second network connection establishment data along with an application layer response originating from the server side application layer, the second network connection establishment data representing an acknowledgement from the server side intermediate component that was generated in response to having received the first network connection establishment data, the application layer response representing a response to the application layer request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. In a computer network that includes a server computer system that implements a server side data path that extends from a server side application layer, through a server side connection-oriented protocol layer, through a server side intermediate component, and to a server side network interface module, the computer network also including a client computer system that implements a client side data path that extends from a client side application layer, through a side client connection-oriented protocol layer, through a client side intermediate component, and to a client side network interface module, a method for the server computer system to participate in an application layer transaction during the connection establishment phase of a connection-oriented protocol rather than awaiting the completion of the connection establishment phase to thereby reduce the time needed to complete the application layer transaction, the method comprising the following:
-
an act of the server side intermediate component receiving first network connection establishment data along with an application layer request from the server side network interface module, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server side connection-oriented protocol layer, the application layer request originating from the client side application layer and originally causing the dispatch of the first network connection establishment data from the client computer system to the server side network interface module;
an act of the server side intermediate component separating the application layer request from the first network connection establishment data;
an act of the server side intermediate component sending the first network connection establishment data to the server side connection-oriented protocol layer to elicit an acknowledgement from the server side connection-oriented protocol layer;
an act of the server side intermediate component receiving first server side connection establishment data from the server side connection-oriented protocol layer, the first server side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first network connection establishment data;
an act of the server side intermediate component preventing the first server side connection establishment data from being delivered to the client computer system;
an act of the server side intermediate component sending second server side connection establishment data along with the application layer request to the server side connection-oriented protocol layer, the second server side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the first server side connection establishment data;
an act of the server side intermediate component receiving an application layer response from the server side application layer, the application layer response representing a response to the application layer request; and
an act of the server side intermediate component sending second network connection establishment data along with the application layer response to the server side network interface module, the second network connection establishment data representing an acknowledgement from the server side intermediate component that was generated in response to having received the first network connection establishment data. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. In a client side intermediate computer system that is network connectable to the Internet and a local area network including one or more client computer systems, a method for the client side intermediate computer system to participate in an HTTP transaction during a TCP connection establishment phase rather than awaiting the completion of the TCP connection establishment phase to thereby reduce the time needed to complete the HTTP transaction, the method comprising the following:
-
an act of receiving a client side SYN packet from a client computer system, the SYN packet being sufficient to elicit an acknowledgment from a server computer system if received by the server computer system;
an act of preventing the client side SYN packet from being delivered to the Internet;
an act of sending a client side SYN-ACK packet to the client computer system, the client side SYN-ACK packet being a SYN-ACK packet that would normally be returned by the server computer system in response to having received the client side SYN packet;
an act of receiving a client side ACK packet along with an HTTP request from the client computer system, the client side ACK packet being an ACK packet that would normally be returned by the client computer system in response to receiving the client side SYN-ACK packet;
an act of sending a network SYN packet along with the HTTP request to the server computer system, the network SYN packet being sufficient to elicit an acknowledgment message from the server computer system;
an act of receiving a network SYN-ACK packet along with at least a portion of a Web page from the server computer system, the SYN-ACK packet representing an acknowledgement of the network SYN packet, the at least a portion of a Web page representing a response to the HTTP request. - View Dependent Claims (24)
-
-
25. In a server side intermediate computer system that is network connectable to the Internet and a server computer system, a method for the server side intermediate computer system to participate in an HTTP transaction during a TCP connection establishment phase rather than awaiting the completion of the TCP connection establishment phase to thereby reduce the time needed to complete the HTTP transaction, the method comprising the following:
-
an act of receiving a network SYN packet along with an HTTP request, the HTTP request originating at a client computer system;
an act of sending the network SYN packet to the server computer system;
an act of receiving a server side SYN-ACK packet, the server side SYN-ACK packet being a SYN-ACK packet that would normally be returned by the server computer system in response to having received the network SYN packet;
an act of preventing the server side SYN-ACK packet from being delivered to the Internet;
an act of sending a server side ACK packet along with the HTTP request to the server computer system, the server side ACK packet being an ACK packet that would normally be returned by the client computer system in response to having received server side SYN-ACK packet;
an act of receiving at least a portion of a Web page from the server computer system, the at least a portion of a Web page representing a response to the HTTP request; and
an act of sending a network SYN-ACK packet along with the at least a portion of a Web page to the client computer system, the network SYN-ACK packet representing an acknowledgement that was generated in response to having received the network SYN packet.
-
-
26. A computer program product for use in a computer network that includes a client computer system that implements a client side data path that extends from a client side application layer, through a client side connection-oriented protocol layer, through a client side intermediate component, and to a client side network interface module, the computer network also including a server computer system that implements a server side data path that extends from a server side application layer, through a server side connection-oriented protocol layer, through a server side intermediate component, and to a server side network interface module, the computer program product for implementing a method for the client computer system to initiate an application layer transaction during the connection establishment phase of a connection-oriented protocol rather than awaiting the completion of the connection establishment phase to thereby reduce the time needed to complete the application layer transaction, the computer program product comprising one or more computer-readable media having stored thereon the following:
-
computer-executable instructions for causing the client side intermediate component to receive first client side connection establishment data from the client side connection-oriented protocol layer, the first client side connection establishment data being sufficient to elicit an acknowledgment from the server side connection-oriented protocol layer if received by the server side connection-oriented protocol layer;
computer-executable instructions for causing the client side intermediate component to prevent the first client side connection establishment data from being delivered to the server computer system;
computer-executable instructions for causing the client side intermediate component to send second client side connection establishment data to the client side connection-oriented protocol layer, the second client side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first client side connection establishment data;
computer-executable instructions for causing the client side intermediate component to receive third client side connection establishment data along with an application layer request from the client side connection-oriented protocol layer, the application layer request originating from the client side application layer and originally causing the dispatch of the first client side connection establishment data from the client side connection-oriented protocol layer to the server computer system t, the third client side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the second client side connection establish data from the server computer system;
computer-executable instructions for causing the client side intermediate component to send first network connection establishment data along with the application layer request to the client side network interface module, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server side connection-oriented protocol layer; and
computer-executable instructions for causing the client side intermediate component to receive second network connection establishment data along with an application layer response originating from the server side application layer, the second network connection establishment data representing an acknowledgement from the server side intermediate component that was generated in response to having received the first network connection establishment data, the application layer response representing a response to the application layer request.
-
-
27. A computer program product for use in a computer network that includes a server computer system that implements a server side data path that extends from a server side application layer, through a server side connection-oriented protocol layer, through a server side intermediate component, and to a server side network interface module, the computer network also including a client computer system that implements a client side data path that extends from a client side application layer, through a client side connection-oriented protocol layer, through a client side intermediate component, and to a client side network interface module, the computer program product for implementing a method for the server computer system to participate in an application layer transaction during the connection establishment phase of a connection-oriented protocol rather than awaiting the completion of the connection establishment phase to thereby reduce the time needed to complete the application layer transaction, the computer program product comprising one or more computer-readable media have stored thereon the following:
-
computer-executable instructions for causing the server side intermediate component to receive first network connection establishment data along with an application layer request from the server side network interface module, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server side connection-oriented protocol layer, the application layer request originating from the client side application layer and causing the dispatch of the first network connection establishment data from the client computer system to the server side network interface module;
computer-executable instructions for causing the server side intermediate component to separate the application layer request from the first network connection establishment data;
computer-executable instructions for causing the server side intermediate component to send the first network connection establishment data to the server side connection-oriented protocol layer to elicit an acknowledgement from the server side connection-oriented protocol layer;
computer-executable instructions for causing the server side intermediate component to receive first server side connection establishment data from the server side connection-oriented protocol layer, the first server side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first network connection establishment data;
computer-executable instructions for causing the server side intermediate component to prevent the first server side connection establishment data from being delivered to the client computer system;
computer-executable instructions for causing the server side intermediate component to send second server side connection establishment data along with the application layer request to the server side connection-oriented protocol layer, the second server side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the first server side connection establishment data;
computer-executable instructions for causing the server side intermediate component to receive an application layer response from the server side application layer, the application layer response representing a response to the application layer request; and
computer-executable instructions for causing the server side intermediate component to send second network connection establishment data along with the application layer response to the server side network interface module, the second network connection establishment data representing an acknowledgement from the server side intermediate component that would have been generated in response to having received the first network connection establishment data.
-
-
28. A computer system configured to participate in an application layer transaction during the connection establishment phase of a connection-oriented protocol, comprising:
-
one or more processing units; and
one or more computer readable media having stored thereon a client side intermediate component, the client side intermediate component being configured to;
receive first client side connection establishment data from a client side connection-oriented protocol layer, the first client side connection establishment data being sufficient to elicit an acknowledgment from a server system if received by the server system;
prevent the first client side connection establishment data from being delivered to the server computer system;
send second client side connection establishment data to the client side connection-oriented protocol layer, the second client side connection establishment data being data that would normally be returned by the server computer system in response to having received the first client side connection establishment data;
receive third client side connection establishment data along with an application layer request from the client side connection-oriented protocol layer, the application layer request originating from a client side application layer and originally causing the dispatch of the first client side connection establishment data from the client side connection-oriented protocol layer, the third client side connection establishment data being data that would normally be returned by the client side connection-oriented protocol layer in response to having received the second client side connection establish data from the server computer system;
send first network connection establishment data along with the application layer request to the server computer system, the first network connection establishment data being sufficient to elicit an acknowledgment message from the server computer system; and
receive second network connection establishment data along with an application layer response originating from the server computer system, the second network connection establishment data representing an acknowledgement from the server computer system that was generated in response to having received the first network connection establishment data, the application layer response representing a response to the application layer request.
-
-
29. A computer system configured to participate in an application layer transaction during the connection establishment phase of a connection-oriented protocol, comprising:
-
one or more processing units; and
one or more computer readable media having stored thereon a server side intermediate component, the server side intermediate component being configured to;
receive first network connection establishment data along with an application layer request from a client computer system, the first network connection establishment data being sufficient to elicit an acknowledgment message from a server side connection-oriented protocol layer;
separate the application layer request from the first network connection establishment data;
send the first network connection establishment data to the server side connection-oriented protocol layer to elicit an acknowledgement from the server side connection-oriented protocol layer;
receive first server side connection establishment data from the server side connection-oriented protocol layer, the first server side connection establishment data being data that would normally be returned by the server side connection-oriented protocol layer in response to having received the first network connection establishment data;
prevent the first server side connection establishment data from being delivered to the client computer system;
send second server side connection establishment data along with the application layer request to the server side connection-oriented protocol layer, the second server side connection establishment data being data that would normally be returned by the client computer system in response to having received the first server side connection establishment data;
receive an application layer response from a server side application layer, the application layer response representing a response to the application layer request; and
send second network connection establishment data along with the application layer response to the client computer system, the second network connection establishment data representing an acknowledgement of the first network connection establishment data that was generated in response to having received the first network connection establishment data.
-
Specification