Abstract:
A system, apparatus, and method for maintaining a socket connection over a wireless network. For example, one embodiment of the invention is a wireless data processing device for emulating a socket connection comprising: a wireless radio for establishing a wireless communication channel with a wireless service provider over a wireless network; a network protocol stack including at least one layer configured to establish a socket connection with a remote server over the wireless network, the network protocol stack further including an application layer for executing applications capable of transmitting and receiving data over the socket connection; and a resumable socket module configured to emulate an open socket connection transparently to applications within the application layer, even when the wireless communication channel is temporarily lost, the resumable socket module counting a number of bytes transmitted or to be transmitted to the remote server and maintaining a buffer containing the bytes transmitted or to be transmitted.

Description:
BACKGROUND 
       [0001]    1. Field of the Invention 
         [0002]    This invention relates generally to the field of data processing systems. More particularly, the invention relates to a system and method for maintaining a socket connection between a wireless device and a remote computer over a wireless network. 
         [0003]    2. Description of the Related Art 
         [0004]    1. TCP/IP Sockets 
         [0005]    The set of network protocols which enable communication over the Internet is sometimes referred to as the TCP/IP protocol suite, after its two most well known protocols: the Transmission Control Protocol (“TCP”) and the Internet Protocol (“IP”). The TCP protocol, which resides at the “transport” layer of the Internet protocol stack, is a reliable, connection-oriented protocol which ensures that data arrives at its destination undamaged and in order. In addition, the TCP layer continuously measures network load and throttles its sending rate in order to avoid overloading the network. The IP protocol performs the basic task of moving packets of data from source to destination using IP addresses. IP can carry data for a number of different higher level protocols, each of which are identified by a unique IP Protocol Number. 
         [0006]    In order to establish communication with a remote host on a TCP/IP network, a “socket” connection to the remote host must be established. A socket is defined by the combination of the IP address of the remote host and a port number identifying a remote application type. For example, port  80  is the standard port number for Hypertext Transport Protocol (“HTTP”) traffic, and port  80  packets are typically processed by a Web server. 
         [0007]    2. Wireless TCP/IP Networks 
         [0008]    A variety of wireless messaging and personal information management (PIM) devices have been introduced over the past few years including, for example, the T-Mobile Sidekick II designed by the assignee of the present application. The TCP/IP protocol is used by many of these devices to communicate over wireless networks (e.g., the General Packet Radio Service (“GPRS”) used on GSM networks). Consequently, in order to communicate with a remote host, these devices must open and maintain a socket connection to the remote host in the same manner as wired computer systems (e.g., PC desktops and notebooks). 
         [0009]    One problem with this scenario is that, due to the inherent unreliability of wireless networks, wireless socket connections may not be suitable for certain types of applications. For example, stream-based applications such as Secure Shell (“SSH”) connections require a significant amount of initialization overhead in order to establish (e.g., negotiating encryption variables, user authentication data, etc) and must be maintained over a relatively long period of time (i.e., in comparison to transaction-based applications such as Web browsing). For these types of connections, when a socket is closed (e.g., due to an unreliable wireless network) it is typically quite burdensome on the end user, who loses all state information associated with the connection and must then take the time to reestablish the connection with the remote server. 
         [0010]    Accordingly, what is needed is an improved mechanism for maintaining socket connections over a wireless network. 
       SUMMARY 
       [0011]    A system, apparatus, and method are described for maintaining a socket connection over a wireless network. For example, one embodiment of the invention is a wireless data processing device for emulating a socket connection comprising: a wireless radio for establishing a wireless communication channel with a wireless service provider over a wireless network; a network protocol stack including at least one layer configured to establish a socket connection with a remote server over the wireless network, the network protocol stack further including an application layer for executing applications capable of transmitting and receiving data over the socket connection; and a resumable socket module configured to emulate an open socket connection transparently to applications within the application layer, even when the wireless communication channel is temporarily lost, the resumable socket module counting a number of bytes transmitted or to be transmitted to the remote server and maintaining a buffer containing the bytes transmitted or to be transmitted. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]    A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which: 
           [0013]      FIG. 1  illustrates a service communicating with a data processing device according to one embodiment of the invention. 
           [0014]      FIG. 2  illustrates a system employing resumable socket functionality according to one embodiment of the invention. 
           [0015]      FIG. 3  illustrates a resumable socket module according to one embodiment of the invention. 
           [0016]      FIG. 4  illustrates a method for emulating an open socket connection according to one embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0017]    Throughout the description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the present invention. 
       Embodiments of a Data Processing Service  
       [0018]    Embodiments of the invention may be implemented on a wireless device  110  which communicates with a data processing service  100  as illustrated generally in  FIG. 1 . Embodiments of a service  100  and data processing device  110  are described in U.S. Pat. No. 6,721,804 entitled NETWORK PORTAL SYSTEM, APPARATUS AND METHOD, Ser. No. 09/714,897, filed Nov. 15, 2000, which is assigned to the assignee of the present application and which is incorporated herein by reference. Certain features of the service  100  and an exemplary data processing device  110  will now be described followed by a detailed description of a system and method for preserving socket connections over a wireless network. As an initial matter, however, it should be noted that the specific data processing device and system architecture described in U.S. Pat. No. 6,721,804 are not required for implementing the underlying principles of the invention. Rather, the embodiments of the invention described below may be implemented on virtually any type of data processing device including standard personal computers, personal digital assistants and wireless telephones. 
         [0019]    In one embodiment, the service  100  converts standard applications and data into a format which each data processing device  110  can properly interpret. Thus, as illustrated in  FIG. 1 , one embodiment of the service  110  includes content conversion logic  120  for processing requests for Internet content  140 . More particularly, the service  100  acts as a proxy for the data processing device  110 , forwarding Internet requests  140 ,  141  to the appropriate Internet site  130  on behalf of the data processing device  110 , receiving responses from the Internet site  130  in a standard Internet format (e.g., Web pages with embedded audio/video and graphical content, e-mail messages with attachments, . . . etc), and converting the standard Internet responses  124  into a format which the data processing device  110  can process (e.g., bytecodes as described in the co-pending applications). 
         [0020]    For example, the conversion logic  120  may include a hypertext markup language (“HTML”) rendering module (not shown) for interpreting HTML code and downloading any embedded content in the HTML code (e.g., graphics, video, sound, . . . etc) to the service  100 . The conversion logic  120  may then combine the HTML code and embedded content and generate a set of bytecodes for accurately reproducing the requested content on the data processing device  110 . As described above, in one embodiment, the bytecodes may be Java bytecodes/applets. However, the conversion logic  120  may generate various other types of interpreted and/or non-interpreted code, depending on the particular type of data processing device  110  being used (e.g., one with an interpreter module or one without). 
         [0021]    Because one embodiment of the service  100  maintains an intimate knowledge of the capabilities/configuration of each data processing device  110  (e.g., screen size, graphics/audio capabilities, available memory, processing power, user preferences, . . . etc) it can reconstruct the requested Internet content accurately, while at the same time minimizing the bandwidth required to transmit the content to the device  110 . For example, the conversion logic  120  may perform pre-scaling and color depth adjustments to the requested content so that it will be rendered properly within the data processing device&#39;s  110 &#39;s display. In making these calculations, the conversion may factor in the memory and processing power available on the data processing device  110 . In addition, the conversion logic  120  may compress the requested content using a variety of compression techniques, and thereby preserve network bandwidth. 
       System and Method for Preserving Socket Connections in a Wireless Network 
       [0022]    To solve the connectivity problems associated with wireless socket connections described above, one embodiment of the invention employs techniques for emulating an open socket connection even when wireless connectivity is temporarily lost. Specifically, as illustrated in  FIG. 2 , in one embodiment, a resumable socket module  202  is configured above the TCP/IP layer  203  of the network protocol stack  205  on the wireless device  222 . In this embodiment, the resumable socket module  202  acts as an interface between the TCP/IP layer  203  and applications  201  which require network communication (e.g., SSH clients, Web browsers, email clients, etc). The client-side protocol stack  205  also includes a set of wireless network layers  204  for supporting wireless communication at the data link/physical tier of the OSI protocol stack (e.g., GPRS/GSM wireless network layers). The technical details of these layers are well known and are not pertinent to the underlying principles of the invention. 
         [0023]    In one embodiment, the resumable socket module  202  coordinates with a corresponding service-side resumable socket module  220  at the data service  100  to emulate an open socket connection even when wireless connectivity is temporarily lost (illustrated in  FIG. 2  as a “virtual” socket connection  206 ). Specifically, in one embodiment, the resumable socket modules  202  and  220  on the wireless device  220  and service  100 , respectively, monitor the number of bytes transmitted and received between the application  201  and remote server  211 . Even when the wireless device  222  loses network connectivity (e.g., due to the user moving out of range), the service  100  maintains an open socket connection  230  with the remote server  211  on behalf of the user. In one embodiment, the service  100  maintains the open socket connection  230  for a specified time period (e.g., 5 minutes). If the wireless device  222  reconnects to the wireless network within this specified time period, the resumable socket module  202  on the client and the resumable socket module  220  on the service  100  communicate with one another to synchronize the data transmitted/received. Thus, because the user&#39;s session with the remote server  211  is preserved, the user will not lose any session state information and will not be burdened with re-connecting and re-authenticating with the remote server. 
         [0024]    In one embodiment, the TCP/IP layer  203  is implemented using the Java Application Programming Interface (“API”) for TCP sockets. The resumable socket module  202  then communicates with the TCP/IP module by invoking methods via the Java sockets API. See, e.g., Calvert, TCP/IP Sockets in Java: Practical Guide for Programmers (Morgan Kaufmann 2002) for additional detail related to Java TCP socket implementations. It should be noted, however, that the particular type of program code used within the network stack  205  is not pertinent to the underlying principles of the invention. 
         [0025]      FIG. 3  illustrates additional detail for implementing a virtual socket connection  300  between applications  201  and the resumable socket modules  202  and  220 . In this embodiment, the resumable socket modules  202  and  220  count the and maintain an indication of the last byte transmitted and received. Specifically, counter modules  311  and  321  track the last byte transmitted from the device&#39;s resumable socket module  202  and the service&#39;s resumable socket module  220 , respectively, and counter modules  312  and  322  maintain an indication of the last byte received from the device&#39;s resumable socket module  202  and the service&#39;s resumable socket module  220 , respectively. 
         [0026]    In addition, in one embodiment, retransmission buffers  310  and  320  are maintained by each of the resumable socket modules  202  and  220 , respectively. The retransmission buffers  310  and  320  may be implemented as predefined regions in memory which store a specified number of bytes transmitted from resumable socket module  202  and resumable socket module  320 , respectively (e.g., 32 kBytes, 16 kBytes, etc). This allows the resumable socket modules  202  and  220  to transmit the bytes stored therein in the event that the wireless connectivity of the wireless device is temporarily lost. 
         [0027]      FIG. 4  illustrates a method for emulating an open socket connection performed by the resumable socket modules  202  and  220  on the wireless device  222  and service  100 , respectively. At  401 , a user establishes a TCP socket connection with a remote server (e.g., an SSH session via an SSH client). As mentioned above, this may involve the exchange of authentication data (e.g., user name and password) and/or encryption data (e.g., public/private keys). 
         [0028]    At  402 , the resumable socket modules on the wireless device  222  and the service  100  begin counting the number of bytes transmitted and received over the new socket connection and temporarily buffering the bytes transmitted. As mentioned above, this may be accomplished via counter modules  311 ,  312 ,  321 , and  322 ; and retransmission buffers  310  and  320 . At  403 , the wireless device  222  loses it&#39;s connection to the wireless network. Nonetheless, at this stage, the resumable socket module  202  on the wireless device  222  emulates an open socket connection with the network application  201  on the wireless device and the resumable socket module  220  on the service  100  maintains the open socket connection with the remote server  211  on behalf of the wireless device  222 . Thus, the socket connection is preserved notwithstanding the fact that the wireless network is temporarily unavailable. 
         [0029]    As mentioned above, in one embodiment, the service  100  maintains the open socket connection  230  for a specified period of time (e.g., 5 minutes). If wireless connectivity is not reestablished with the wireless device  222  during that period of time, determined at  404 , then at  405 , the socket connection  230  with the remote server  211  is closed and the counter values and the raw data stored within the buffers  310 ,  320  within the resumable socket modules is cleared. 
         [0030]    If, however, the device&#39;s wireless connectivity is reestablished with the specified period of time then, at  406 , the resumable socket modules  202  and  220  communicate to identify the data that needs to be (re)transmitted from each of the retransmission buffers  310  and  320 , respectively, and synchronize this data at  407 . For example, in one embodiment, the resumable socket module  202  on the wireless device sends a message to the resumable socket module  220  on the service indicating the number of the last incoming byte that it received. The resumable socket module  220  on the service then transmits those bytes yet to be received by the resumable socket module  202  on the wireless device. For example, if the resumable socket module  202  on the wireless device indicates that the last byte that it received is byte # 502  and the outgoing byte number stored within the outgoing counter  321  on the service is # 2000 , as illustrated in  FIG. 3 , then the resumable socket module  220  transmits bytes # 503  to  2000  from the retransmission buffer  320 . Alternatively, in one embodiment, the resumable socket module  220  on the service may first transmit an indication that the outgoing byte number stored in its outgoing counter  321  is # 2000 . In response, the resumable socket module  202  on the wireless device may request byte #&#39;s  503  through  2000  from the resumable socket module  220  on the service  100 , which resumable socket module  220  will then transmit. Various alternate/additional synchronization mechanisms may be employed while still complying with the underlying principles of the invention. 
         [0031]    The resumable socket module  220  on the service may be brought up to date in the same manner as described above. For example, if the resumable socket module  220  on the service indicates that the last byte that it received is byte # 2  and the outgoing byte number stored within the outgoing counter  311  on the wireless device is # 21 , then the resumable socket module  202  transmits bytes # 3  through  21  from its retransmission buffer  310 . 
         [0032]    In one embodiment of the invention described above, the resumable socket module  202  appears as a normal TCP connection to the application, i.e., providing the same API as a standard TCP connection. As a result, these embodiments are implemented transparently to existing applications (i.e., without the need to modify the existing application and/or the socket API). When the underlying (i.e., real) TCP connection is broken, the application simply sees that no data has arrived for a period of time, and outgoing data is stored temporarily within the retransmission buffer. After the device reconnects to the wireless network, the application will see incoming data arriving again. If the device is not able to reconnect, the application simply sees the socket disconnected (i.e., a few minutes after it actually happened). 
         [0033]    Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions which cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. 
         [0034]    Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection). 
         [0035]    Throughout the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without some of these specific details. For example, although the embodiments described above are limited to a wireless implementation, the underlying principles of the invention may be employed in a variety of different types of networks. Similarly, while the protocol stack described above is implemented using Java, the underlying principles of the invention are not limited to any particular programming language. 
         [0036]    Accordingly, the scope and spirit of the invention should be judged in terms of the claims which follow.