System and method for reliable packet data transport in a computer network
6 Assignments
0 Petitions
Accused Products
Abstract
A system and method for reliably transmitting a request from a client application (50) running on a client system (13)to a server application (52) running on a server system (15) and receiving a reply to the request, in which functions that provide parameters governing the reliable transport mechanism and message forming and parsing services are provided by the application processes to and called from application-layer protocol stacks (58, 60).
82 Citations
70 Claims
-
1-11. -11. (canceled)
- 12. A client host computer for use in reliably transmitting a request wrapped in a request message over a computer network to a server protocol stack in a server host computer, the client host computer having a client protocol stack for receiving the request from a client application, wrapping the request into a request message, and transmitting the request message to the server host computer, the client protocol stack when so doing calling a set of functions external to the client protocol stack and that are provided by the client application, the set of functions providing reliable transport-related services to the client protocol stack that may pre-selected to meet the requirements of the client application.
- 29. A server host computer for use in providing reliable transport over a computer network, the server host computer having a server protocol stack for receiving a request message transmitted from a client host computer, providing a request wrapped in the request message to a server application running on the server host computer, wrapping a reply received from the server application in a reply message, and transmitting the reply message back to the client host computer, the server protocol stack when so doing calling a set of functions external to the server protocol stack and provided by the server application, the set of functions providing reliable transport-related services to the server protocol stack than may pre-selected to meet the requirements of the server application.
-
39-69. -69. (canceled)
-
70. A method for reliably transmitting over a network a request from a client application running on a client system to a server application running on a server system, the method comprising, in the client system:
-
(a) when a command is received from the client application to open a client socket, receiving from the client application a set of pointers to a set of personality functions provided by the client application, which include an open function, a connect function, a wrap request function, a retransmit timer function, a parse function, a retransmit date update function, an acknowledgement reply function, and a close function, and
calling the open function to obtain an initial sequence number, a range of allowable sequence numbers, a maximum number of retransmissions, and header and trailer sizes, and to allocate resources to needed to support the client socket;
(b) when a command is received from the client application to connect the client socket to the server application, calling the connect function to open a connection to the server application;
(c) when a command is received from the client application to transmit a request to the server application, determining the next sequence number, calling the wrap request function to wrap the request in a request message having a header containing the sequence number and a message type code indicating that the request message contains a request, calling the retransmit timer function to obtain a retransmit timer setting for setting a retransmit timer that counts down from the retransmit timer setting,
starting the retransmit timer at the retransmit timer setting,
sending the request message to the transport layer for transmission to the server application, and
if the command to transmit the request asked that sequence number assigned to the message to be returned, then returning the sequence number to the client application;
(d) when a message is received from the transport layer, calling the parse function to obtain the message type and sequence number of the message, and if the message type and sequence number indicate that the message is a provisional reply to the request, then modifying the retransmit timer to delay its expiration, and if the message type and sequence number indicate that the message contains a reply to the request, returning the reply to the client application if the command to transmit the request specified that the reply be returned to the client application upon its receipt from the transport layer, or the client application, since sending the command to transmit the request, has sent a command to return the reply upon its receipt from the transport layer, but otherwise storing the reply;
(e) when a command is received from the client application to return the reply to the request and the reply has been received and stored, returning the reply to the client application;
(f) when the reply is returned to the client application, calling the acknowledgement reply function to send a message to the transport layer for transmission to the server application acknowledging the return of the reply to the client application, the message containing the sequence number and an indication that the message is an acknowledgement to the reply message;
(g) if no message having a header containing the sequence number and a type code indicating that the message contains a reply has been received before the retransmit timer has expired, then repeatedly calling the retransmit timer function to obtain a new retransmit timer setting for setting the retransmit timer, setting and starting the retransmit timer, and sending the request message to the transport layer for transmission to the server application, until the retransmit timer has expired the maximum number of times or until a message having a header containing the sequence number and a type code indicating that the message contains a reply is received from the transport layer, but if the retransmit timer has expired the maximum number of times and no such message has been received, then reporting a transmission error to the client application and destroying any subsequent messages having a header containing the sequence number until the sequence number is assigned to a new request message;
(h) when a command is received from the client application to close the client socket, calling the close function to free up any resources allocated to support the client socket;
and in the server system;
(i) when a command is received from the server application to open a server socket, receiving from the server application a set of pointers to a set of personality functions, which include the open function, the parse function, a wrap reply function, a reply cache timer function, and the close function, and calling the open function to allocate resources needed to support the server socket;
(j) when a command is received from the server application to receive a request from the client application and then a message is received from the client application, calling the parse function to obtain the message type and sequence number of the message and, if the message type indicates that the message contains a request, the request, and then returning the request to the server application process;
(k) if, after delivery of the request to the server application, a command is received from the server application to send a provisional reply, then sending a message to the transport layer for transmission to the client application containing the sequence number and a message type code indicating that the message is a provisional reply to the request message;
(l) when a command is received from the server application to transmit a reply to the client application, calling the wrap reply function to wrap the reply in a header containing the sequence number and a message type code indicating that the request message contains a reply, calling the reply cache timer function to obtain a reply cache timer setting for setting a reply cache timer that counts down from the setting, starting the reply cache timer, sending the resulting message to the transport layer for transmission to the client application, and caching the reply message;
(m) when a further message is received from the client application, calling the parse function to obtain the message type and sequence number of the message and if the message type indicates that the message contains a request and a cached reply message has the same sequence number, then resending the cached reply message to the transport layer for transmission to the client application, and if a message contains an indication that the message is an acknowledgement to a cached reply message, then deleting everything except the sequence number from the cached reply message;
(n) when the reply cache timer expires, then deleting the cached reply message; and
(o) when a command is received from the server application to close the server socket, calling the close function to free up any resources allocated by the personality functions.
-
Specification