Providing reliable communication over an unreliable transport layer in a hand-held device using a persistent session
First Claim
1. A method in a data processing system for transferring data between a client application program on a client and a server application program on a server via wireless communications, the client and the server each having a wireless communications subsystem for transferring the data, an internet protocol (IP) link layer for interfacing with the wireless communication subsystem, a user datagram protocol (UDP) layer for interfacing with the IP layer, and a UDP+ layer for providing reliable communications over the UDP layer, comprising:
- the client application program invoking the UDP+ layer of the client to create a connection between the UDP+ layer of the client and the UDP+ layer of the server;
responsive to the invocation, the UDP+ layer of the client creating a connect message requesting establishment of a connection with the UDP+ layer of the server, storing the connect message in a first packet suitable to the UDP layer of the client, and invoking the UDP layer of the client to send the packet to the UDP layer of the server as a first datagram message, wherein the UDP layer of the client passes the first datagram message to the IP layer of the client, and wherein the IP layer of the client sends the first datagram message to the server via the wireless communications subsystem of the client;
the UDP+ layer of the server receiving the connect message, establishing a connection with the UDP+ layer of the client, creating a response message indicating that the connection has been established, storing the response message into a second packet that is suitable to the UDP layer of the server, and invoking the UDP layer of the server to send the second packet to the UDP layer of the client as a second datagram message, wherein the UDP layer of the server passes the second datagram message to the IP layer of the server, and wherein the IP layer of the server sends the second datagram message to the client via the wireless communications subsystem of the server;
the UDP+ layer of the client receiving the response message such that the connection is established;
the client application program providing data to the UDP+ layer of the client;
the UDP+ layer of the client receiving the data, and sending a first portion of the received data to the UDP+ layer of the server in a first data message requesting a first acknowledgment that the first data message has been successfully received by the UDP+ layer of the server;
the UDP+ layer of the server receiving the first data message, transferring the data to the server application program, and sending the first acknowledgment to the UDP+ layer of the client indicating that the first data message has been successfully received;
the UDP+ layer of the client receiving the first acknowledgment and before a second portion of the received data can be sent, determining that the connection has terminated, reestablishing the connection responsive to determining that the connection has terminated, and sending the second portion of the received data to the UDP+ layer of the server in a second data message over the reestablished connection to complete the data transfer; and
the UDP+ layer of the server receiving the second data message over the reestablished connection and transferring the second portion of the received data to the server application program such that the data transfer is complete.
2 Assignments
0 Petitions
Accused Products
Abstract
The disclosed system provides a UDP+ connection-oriented protocol layer that reliably communicates over the UDP transport layer in a hand-held device. By providing reliable communication over the UDP transport layer instead of using the TAP transport layer, memory requirements are reduced, and applications running on the hand-held device have reliable data transfers performed on their behalf. Additionally, the UDP+ layer is designed to communicate using a "persistent session." A persistent session is a mode of communication where, when a connection terminates, the data associated with the connection, including the packets that have not yet been transferred, is not discarded. Instead, in using a persistent session, UDP+ retains the data associated with a connection after it terminates, reestablishes the connection, and completes the data transfer. By performing such a persistent session, application programs using UDP+ do not need to retain a copy of the packets passed to UDP+, and the code of the application programs is simplified, because the application programs do not need to keep track of which packets were successfully transferred when the connection terminates.
-
Citations
49 Claims
-
1. A method in a data processing system for transferring data between a client application program on a client and a server application program on a server via wireless communications, the client and the server each having a wireless communications subsystem for transferring the data, an internet protocol (IP) link layer for interfacing with the wireless communication subsystem, a user datagram protocol (UDP) layer for interfacing with the IP layer, and a UDP+ layer for providing reliable communications over the UDP layer, comprising:
-
the client application program invoking the UDP+ layer of the client to create a connection between the UDP+ layer of the client and the UDP+ layer of the server; responsive to the invocation, the UDP+ layer of the client creating a connect message requesting establishment of a connection with the UDP+ layer of the server, storing the connect message in a first packet suitable to the UDP layer of the client, and invoking the UDP layer of the client to send the packet to the UDP layer of the server as a first datagram message, wherein the UDP layer of the client passes the first datagram message to the IP layer of the client, and wherein the IP layer of the client sends the first datagram message to the server via the wireless communications subsystem of the client; the UDP+ layer of the server receiving the connect message, establishing a connection with the UDP+ layer of the client, creating a response message indicating that the connection has been established, storing the response message into a second packet that is suitable to the UDP layer of the server, and invoking the UDP layer of the server to send the second packet to the UDP layer of the client as a second datagram message, wherein the UDP layer of the server passes the second datagram message to the IP layer of the server, and wherein the IP layer of the server sends the second datagram message to the client via the wireless communications subsystem of the server; the UDP+ layer of the client receiving the response message such that the connection is established; the client application program providing data to the UDP+ layer of the client; the UDP+ layer of the client receiving the data, and sending a first portion of the received data to the UDP+ layer of the server in a first data message requesting a first acknowledgment that the first data message has been successfully received by the UDP+ layer of the server; the UDP+ layer of the server receiving the first data message, transferring the data to the server application program, and sending the first acknowledgment to the UDP+ layer of the client indicating that the first data message has been successfully received; the UDP+ layer of the client receiving the first acknowledgment and before a second portion of the received data can be sent, determining that the connection has terminated, reestablishing the connection responsive to determining that the connection has terminated, and sending the second portion of the received data to the UDP+ layer of the server in a second data message over the reestablished connection to complete the data transfer; and the UDP+ layer of the server receiving the second data message over the reestablished connection and transferring the second portion of the received data to the server application program such that the data transfer is complete. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method in a data processing system for transferring data between a source computer and a destination computer via a communication mechanism, the source computer and the destination computer having an application program and a connection-oriented protocol stack having a user datagram protocol ("UDP") layer, the connection-oriented protocol stack configured to transfer the data between the application program on the source computer and the application program on the destination computer, the method performed by the connection-oriented protocol stack on the source computer, comprising:
-
establishing a connection with the connection-oriented protocol stack on the destination computer; receiving data from the application program on the source computer, the received data to be transferred to the application program on the destination computer; sending at least one message containing a portion of the received data to the UDP layer in the connection-oriented protocol stack on the destination computer; sending the portion of the received data to the application program on the destination computer; determining that the connection has terminated after sending the at least one message; reestablishing the connection with the protocol stack on the destination computer responsive to the termination of the connection; and completing the data transfer after reestablishing the connection by sending to the connection-oriented protocol stack on the destination computer a plurality of messages containing remaining portions of the received data that have not already been sent to the protocol stack on the destination computer. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method in a data processing system for performing a data transfer between a source and a destination via wireless communications, the source and the destination having an application program and a connection-oriented protocol stack having a user datagram protocol ("UDP") layer, the connection-oriented protocol stack configured to transfer the data between the application program on the source and the application program on the destination, the method performed by the connection-oriented protocol stack of the destination, comprising:
-
establishing a connection with the source; receiving a first portion of data from the connection-oriented protocol stack on the source over the established connection, the data being received data that is received by the connection-oriented protocol stack of the source from the application program of the source; sending the first portion of data from the UDP layer to a connection-oriented protocol layer that sends the first portion of data to the application program of the destination; determining that the established connection has terminated after receiving the portion of the received data; reestablishing the connection; and receiving remaining portions of the received data to complete the data transfer. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method in a data processing system for transferring data between a source program and a destination program using a source communication mechanism having a user datagram protocol (UDP) layer and a destination communication mechanism, the method performed by the source program, comprising:
-
receiving data for transfer to the destination program; and providing the received data to the source communication mechanism, wherein the source communication mechanism establishes a connection to the destination communication mechanism and uses the UDP layer to transfer the received data to the destination communication mechanism even though the connection is terminated at least once while the data is being transferred, wherein the source communication mechanism transmits the received data in a plurality of portions and the destination communication mechanism transmits each received portion to the destination program. - View Dependent Claims (22, 23)
-
-
24. A method in a data processing system for transferring data between a source computer and a destination computer, the source computer and the destination computer having an application program and a connection-oriented protocol stack having a user datagram protocol (UDP) layer, the connection-oriented protocol stack configured to transfer the data between the source computer and the destination computer, the method performed by the application program of the destination computer, comprising:
-
receiving the data from the connection-oriented protocol stack of the source computer, the data originating from the application program of the source computer and the data passed to the connection-oriented protocol stack of the source computer by the application program of the source computer, wherein the connection-oriented protocol stack of the source computer sends the passed data to the connection-oriented protocol stack of the destination computer over a plurality of separately established connections and wherein the connection-oriented protocol stack of the source computer sends the passed data in a plurality of data portions such that the connection-oriented protocol stack of the destination computer transfers each data portion to the application program of the destination computer upon receipt; and storing the data onto the destination computer.
-
-
25. A bar-code scanner for transferring data to a computer application, comprising:
-
a radio communications subsystem for transferring the data to the computer application; a bar-code input device that reads bar codes and generates bar-code information; a memory, further comprising; an application program for receiving the bar-code information from the bar-code input device and for transferring the bar-code information to the computer application; a connection component for receiving the bar-code information from the application program, for establishing a first connection with the computer application, for transferring a first portion of the received bar-code information over the first connection to the computer application, for determining that the first connection has terminated, for establishing a second connection to the computer application, and for transferring a second portion of the received bar-code information over the second connection to the computer application to complete the transfer of the bar-code information to the computer application; and a user datagram protocol ("UDP") transport layer for transferring the first portion and the second portion of the received bar-code information to the computer application as a series of datagram messages via the radio communications subsystem; and a processor for running the UDP transport layer, the connection component, and the application program. - View Dependent Claims (26, 27)
-
-
28. A data structure encoded on a computer-readable memory device for use in maintaining a connection between a server and a plurality of clients in a data processing system when transferring data in data portions using a communication mechanism having a user datagram protocol ("UDP") transport layer, the communication mechanism configured to transmit data portions to the server upon receipt, the data structure having entries, each entry comprising:
-
a client identifier indicating one of the plurality of the clients; and a field containing an indication of whether the client is connected to the server, wherein the communication mechanism receives the data to be transferred from an application program and uses the UDP layer to transfer the received data regardless of whether a connection has terminated, wherein the communication mechanism completely transfers the received data by establishing a first connection to the client, storing in the field an indication that indicates that the client is connected to the server, transferring a first portion of the received data to the server, receiving an indication that the first connection has terminated, storing in the field an indication that the client and the server are disconnected, establishing a second connection with the client, storing in the field an indication that the client and the server are connected, and transferring a second portion of the received data to the server over the second connection.
-
-
29. A client device for transferring data to a server device via wireless communications, comprising:
-
a wireless communications subsystem for transferring the data to the server device; a memory, further comprising; an application program for transferring the data to the server device; a connection-oriented communication mechanism for receiving the data from the application program, and for establishing a persistent session with the server device such that the received data is completely transferred to the server device over a plurality of connections with the server device during the persistent session; and a user datagram protocol ("UDP") layer for transferring the data to the server device via the wireless communications subsystem, wherein the data is transmitted to the server device in a plurality of portions, with each portion being transferred to the server device upon receipt; and a processor for running the application program, the connection-oriented communication mechanism, and the UDP layer. - View Dependent Claims (30, 31, 32)
-
-
33. A destination computer for receiving data from a source computer having a source application program and a source connection-oriented protocol stack, comprising:
-
a communications subsystem for receiving the data from the source computer; a memory, further comprising; a destination connection-oriented protocol stack having a user datagram protocol ("UDP") layer, the connection-oriented protocol stack configured to establish a connection with the source connection-oriented protocol stack, configured to receive a first portion of data from the source connection-oriented protocol stack over the established connection program using the UDP layer and configured to transfer the first portion of data to the destination application program, the data being received data that is received by the source connection-oriented protocol stack from the source application, the destination connection-oriented protocol stack further configured to receive an indication that the established connection has terminated after receiving the first portion of the received data, to receive an indication that the connection has been reestablished, and to receive remaining portions of the received data over the reestablished connection to complete the data transfer and to transfer the remaining portions to the destination application program; and a destination application program configured to receive the first portion and the remaining portions of the received data from the destination connection-oriented protocol stack; and a processor for running the destination connection-oriented protocol stack and the destination application program.
-
-
34. A computer-readable medium containing instructions for controlling a data processing system to perform a method for transferring data between a source computer and a destination computer via a communication mechanism, the source computer and the destination computer having an application program and a connection-oriented protocol stack having a user datagram protocol ("UDP") layer, the connection-oriented protocol stack configured to transfer the data between the application program on the source computer and the application program on the destination computer, the method performed by the connection-oriented protocol stack on the source computer, comprising:
-
establishing a connection with the connection-oriented protocol stack on the destination computer; receiving data from the application program on the source computer, the received data to be transferred to the application program on the destination computer; sending at least one message containing a portion of the received data to the UDP layer in the connection-oriented protocol stack on the destination computer that then sends the received data to the destination application; determining that the connection has terminated after sending the at least one message; reestablishing the connection with the protocol stack on the destination computer responsive to the termination of the connection; and completing the data transfer after reestablishing the connection by sending to the connection-oriented protocol stack on the destination computer a plurality of messages containing remaining portions of the received data that have not already been sent to the protocol stack on the destination computer, wherein the connection-oriented protocol stack sends the remaining portions of the received data to the destination application upon receipt. - View Dependent Claims (35, 36, 37, 38)
-
-
39. A computer-readable medium containing instructions for controlling a data processing system to perform a method for performing a data transfer between a source and a destination via wireless communications, the source and the destination having an application program and a connection-oriented stack having a user datagram protocol (UDP) layer, the connection-oriented protocol stack configured to transfer the data between the application program on the source and the application program on the destination, the method performed by the connection-oriented protocol stack of the destination, comprising:
-
establishing a connection with the source; receiving a first portion of data from the connection-oriented protocol stack on the source over the established connection, the data being received data that is received by the connection-oriented protocol stack of the source from the application program of the source; determining that the established connection has terminated after receiving the portion of the received data; reestablishing the connection; and receiving remaining portions of the received data to complete the data transfer from the connection-oriented protocol layer of the source and sending the remaining portions to the application program of the destination. - View Dependent Claims (40, 41, 42, 43)
-
-
44. A computer-readable medium containing instructions for controlling a data processing system to perform a method for transferring data between a source program and a destination program using a source communication mechanism having a user datagram protocol (UDP) layer and a destination communication mechanism, the method performed by the source program, comprising:
-
receiving data for transfer to the destination program; and providing the received data to the source communication mechanism, wherein the source communication mechanism establishes a connection to the destination communication mechanism and uses the UDP layer to transfer the received data to the destination communication mechanism even though the connection is terminated at least once while the data is being transferred, wherein the source communication mechanism transfers the received data to the destination communication mechanism in portions and wherein the destination communication mechanism transfers each received portion to the destination program. - View Dependent Claims (45, 46)
-
-
47. A computer-readable medium containing instructions for controlling a data processing system to perform a method for transferring data between a source computer and a destination computer, the source computer and the destination computer having an application program and a connection-oriented protocol stack having a user data-gram protocol (UDP) layer, the connection-oriented protocol stack configured to transfer the data between the source computer and the destination computer, the method performed by the application program of the destination computer, comprising:
-
receiving the data from the connection-oriented protocol stack of the source computer, the data originating from the application program of the source computer and the data passed to the connection-oriented protocol stack of the source computer by the application program of the source computer, wherein the connection-oriented protocol stack of the source computer sends the passed data to the connection-oriented protocol stack of the destination computer over a plurality of connections; and transferring the data to the application program of the destination computer upon receipt.
-
-
48. A method in a data processing system for transferring data between a client application program on a client and a server application program on a server via wireless communications, the client and the server each having a wireless communications subsystem for transferring the data, an internet protocol (IP) link layer for interfacing with the wireless communication subsystem, a user datagram protocol (UDP) layer for interfacing with the IP layer, and a UDP+ layer for providing reliable communications over the UDP layer, comprising:
-
the client application program invoking the UDP+ layer of the client to create a connection between the UDP+ layer of the client and the UDP+ layer of the server; responsive to the invocation, the UDP+ layer of the client creating a connect message requesting establishment of a connection with the UDP+ layer of the server, storing the connect message in a first packet suitable to the UDP layer of the client, and invoking the UDP layer of the client to send the packet to the UDP layer of the server as a first datagram message, wherein the UDP layer of the client passes the first datagram message to the IP layer of the client, and wherein the IP layer of the client sends the first datagram message to the server via the wireless communications subsystem of the client; the UDP+ layer of the server receiving the connect message, establishing a connection with the UDP+ layer of the client, creating a response message indicating that the connection has been established, storing the response message into a second packet that is suitable to the UDP layer of the server, and invoking the UDP layer of the server to send the second packet to the UDP layer of the client as a second datagram message, wherein the UDP layer of the server passes the second datagram message to the IP layer of the server, and wherein the IP layer of the server sends the second datagram message to the client via the wireless communications subsystem of the server; the UDP+ layer of the client receiving the response message such that the connection is established; the client application program providing data to the UDP+ layer of the client; the UDP+ layer of the client receiving the data, and sending a first portion of the received data to the UDP+ layer of the server in a first data message requesting a first acknowledgment that the first data message has been successfully received by the UDP+ layer of the server; the UDP+ layer of the server receiving the first data message, transferring the data to the server application program, and sending the first acknowledgment to the UDP+ layer of the client indicating that the first data message has been successfully received; the UDP+ layer of the client receiving the first acknowledgement and before a second portion of the received data can be sent, determining that the connection has terminated, reestablishing the connection responsive to determining that the connection has terminated, and sending the second portion of the received data to the UDP+ layer of the server in a second data message over the reestablished connection to complete the data transfer; the UDP+ layer of the server receiving the second data message over the reestablished connection and transferring the second portion of the received data to the server application program such that the data transfer is complete; the server application program invoking the UDP+ layer of the server; the UDP+ layer of the server receiving the data, and sending a first portion of the received data to the UDP+ layer of the client in a third data message requesting a third acknowledgemnt that the third data message has been successfully received by the UDP+ layer of the client; and the UDP+ layer of the client receiving the third data message, transferring the data to the client application program, and sending the third acknowledgment to the UDP+ layer of the server indicating that the third data message has been successfully received.
-
-
49. A method in a data processing system for transferring data between a source program and a destination program using a source communication mechanism having a user datagram protocol (UDP) layer and a destination communication mechanism, the method performed by the source program, comprising:
-
receiving data for transfer to the destination program; providing the received data to the source communication mechanism, wherein the source communication mechanism establishes a connection to the destination communication mechanism and uses the UDP layer to transfer the received data to the destination communication mechanism even though the connection is terminated at least once while the data is being transferred, wherein the source communication mechanism transmits the received data in a plurality of portions and the destination communication mechanism transmits each received portion to the destination program; and receiving data from the source communication mechanism, wherein the source communication mechanism has received the data from the destination communication mechanism that has received the data form the destination program.
-
Specification