Source: http://www.google.com/patents/US20040044776?dq=5,966,702
Timestamp: 2017-04-23 20:39:56
Document Index: 327645158

Matched Legal Cases: ['arty 185', 'arty 185', 'arty 185', 'arty 185', 'arty 185', 'arty 185', 'arty 185', 'arty 185', 'arty 185']

Patent US20040044776 - Peer to peer file sharing system using common protocols - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsThere is provided a method for exchanging data between a first device and a second device via a network. The method includes (a) communicating a request for the data from the second device to the first device, (b) communicating an identifier for the data from the first device to the second device, (c)...http://www.google.com/patents/US20040044776?utm_source=gb-gplus-sharePatent US20040044776 - Peer to peer file sharing system using common protocolsAdvanced Patent SearchTry the new Google Patents, with machine-classified Google Scholar results, and Japanese and South Korean patents.Publication numberUS20040044776 A1Publication typeApplicationApplication numberUS 10/104,743Publication dateMar 4, 2004Filing dateMar 22, 2002Priority dateMar 22, 2002Publication number10104743, 104743, US 2004/0044776 A1, US 2004/044776 A1, US 20040044776 A1, US 20040044776A1, US 2004044776 A1, US 2004044776A1, US-A1-20040044776, US-A1-2004044776, US2004/0044776A1, US2004/044776A1, US20040044776 A1, US20040044776A1, US2004044776 A1, US2004044776A1InventorsMichael LarkinOriginal AssigneeInternational Business Machines CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (23), Referenced by (126), Classifications (9), Legal Events (1) External Links: USPTO, USPTO Assignment, EspacenetPeer to peer file sharing system using common protocols
US 20040044776 A1Abstract
There is provided a method for exchanging data between a first device and a second device via a network. The method includes (a) communicating a request for the data from the second device to the first device, (b) communicating an identifier for the data from the first device to the second device, (c) communicating the identifier from the second device back to the first device, and (d) communicating the data from the first device to the second device, after the communication of the identifier from the second device back to the first device. The request, the identifier, and the data are formatted in accordance with a protocol that is common to both of the first device and the second device. There is also provided a system for a first device to exchange data with a second device via a network. Images(5) Claims(22)
What is claimed is: 1. A method for exchanging data between a first device and a second device via a network, said method comprising: communicating a request for said data from said second device to said first device; communicating an identifier for said data from said first device to said second device; communicating said identifier from said second device back to said first device; and communicating said data from said first device to said second device, after said communicating of said identifier from said second device back to said first device, wherein said request, said identifier, and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 2. The method of claim 1, further comprising, prior to said communicating said data, authenticating that said second device is authorized to access said data. 3. A method for exchanging data between a first device and a second device via a network, said method comprising: communicating a status packet from said second device to said first device; communicating a reply to said status packet from said first device to said second device, wherein said reply includes a request for said data; and communicating said data from said second device to said first device, after said communicating said reply, wherein said status packet, said reply and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 4. The method of claim 3, further comprising periodically communicating said status packet from said second device to said first device. 5. The method of claim 3, further comprising, prior to said communicating said data, authenticating that said first device is authorized to access said data. 6. An apparatus for exchanging data between a first device and a second device via a network, said apparatus comprising: a module for communicating a request for said data from said second device to said first device; a module for communicating an identifier for said data from said first device to said second device; a module for communicating said identifier from said second device back to said first device; and a module for communicating said data from said first device to said second device, after communicating said identifier from said second device back to said first device, wherein said request, said identifier, and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 7. The apparatus of claim 6, further comprising a module for authenticating that said second device is authorized to access said data. 8. The apparatus of claim 6, wherein (a) said module for communicating said request, (b) said module for communicating said identifier from said first device to said second device, (c) said module for communicating said identifier from said second device back to said first device, and (d) said module for communicating said data, are components of an operating system. 9. The apparatus of claim 6, wherein said protocol comprises a hypertext transfer protocol (HTTP). 10. An apparatus for exchanging data between a first device and a second device via a network, said apparatus comprising: a module for communicating a status packet from said second device to said first device; a module for communicating a reply to said status packet from said first device to said second device, wherein said reply includes a request for said data; and a module for communicating said data from said second device to said first device, after communicating said reply, wherein said status packet, said reply and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 11. The apparatus of claim 10, further comprising a module for periodically communicating said status packet from said second device to said first device. 12. The apparatus of claim 10, further comprising a module for authenticating that said first device is authorized to access said data. 13. The apparatus of claim 10, wherein (a) said module for communicating said status packet, (b) said module for communicating said reply, and (c) said module for communicating said data, are components of an operating system. 14. The apparatus of claim 10, wherein said protocol comprises a hypertext transfer protocol (HTTP). 15. A storage media that contains instructions for controlling a processor to exchange data between a first device and a second device via a network, said storage media comprising: a module for controlling said processor to communicate a request for said data from said second device to said first device; a module for controlling said processor to communicate an identifier for said data from said first device to said to said second device; a module for controlling said processor to communicate said identifier from said second device back to said first device; and a module for controlling said processor to communicate said data from said first device to said second device, after communicating said identifier from said second device back to said first device, wherein said request, said identifier, and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 16. The storage media of claim 15, further comprising, a module for controlling said processor to authenticate that said second device is authorized to access said data. 17. A storage media that contains instructions for controlling a processor to exchange data between a first device and a second device via a network, said storage media comprising: a module for controlling said processor to communicate a status packet from said second device to said first device; a module for controlling said processor to communicate a reply to said status packet from said first device to said second device, wherein said reply includes a request for said data; and a module for controlling said processor to communicate said data from said second device to said first device, after communicating said reply, wherein said status packet, said reply and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 18. The storage media of claim 17, wherein said network includes a component that prevents communicating said reply from said first device to said second device unless said reply is solicited by said second device. 19. The storage media of claim 17, further comprising a module for controlling said processor to periodically communicate said status packet from said second device to said first device. 20. The storage media of claim 17, further comprising, a program module for controlling said processor to authenticate that said first device is authorized to access said data. 21. A method for exchanging data between a first device and a second device via a network, said method comprising: communicating a status packet from said second device to said first device; communicating a reply to said status packet from said first device to said second device, wherein said reply includes a request for said data; communicating an identifier for said data from said second device to said first device; communicating said identifier from said first device back to said second device; and communicating said data from said second device to said first device, after said communicating of said identifier from said first device back to said second device, wherein said status packet, said reply, said identifier, and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. 22. An apparatus for exchanging data between a first device and a second device via a network, said apparatus comprising: a module for communicating a status packet from said second device to said first device; a module for communicating a reply to said status packet from said first device to said second device, wherein said reply includes a request for said data; a module for communicating an identifier for said data from said second device to said first device; a module for communicating said identifier from said first device back to said second device; and a module for communicating said data from said second device to said first device, after said communicating of said identifier from said first device back to said second device, wherein said status packet, said reply, said identifier, and said data are formatted in accordance with a protocol that is common to both of said first device and said second device. Description
BACKGROUND OF THE INVENTION [0001] 1. Field of the Invention [0002] The present invention relates to file-sharing across a computer network, and more particularly, to a file-sharing arrangement in which a local system and a remote system engage with one another in a peer-to-peer relationship. [0003] 2. Description of the Prior Art [0004] Computer networking and, in particular, connectivity to “the web” via the Internet, has enabled many individuals and businesses to participate in the “online” world, and telecommuting is becoming more commonplace. A satisfactory telecommuting experience usually requires a transfer of files or other data between a first computer local to a user and second computer or memory system at a remote location. [0005] Conventional protocols for transferring data include (a) server message block (SMB), which is used by many Windows™ clients, (b) network file system (NFS), which is used by many UNIX™ variants, and (c) file transfer protocol (FTP), which is a relatively crude file exchange method available on many hardware platforms. Conventional protocols also include attaching data to e-mail. These conventional protocols are not universally employed because many corporate firewalls block data sent by a system that uses these protocols. Also, these protocols may have network topology constraints that limit their usefulness from remote locations (e.g., remote, roaming or telecommuting users) unless invasive changes are made to a user's computer. On the other hand, such firewalls nearly always allows web traffic, which uses hyper-text transfer protocol (HTTP) as its underlying protocol, to pass unmolested. [0006] However, none of these conventional protocols provide adequate flexibility for their employment in a robust telecommuting or remote computing environment. For example, SMB requires a WINS server for cross-subnet operation, and when implemented as a Windows™ “network neighborhood it cannot interface with a UNIX™ SMB, e.g., Samba, without registry patches on the Windows™ client. NFS, which is a UNIX™ network file system, requires costly client software for integration into a Windows™ environment. E-mail attachments are cumbersome to use when many files are to be transferred. [0007] Another system currently in use for peer to peer file sharing is Gnutella. Gnutella is a mini search engine and file transfer system. The actual file sharing is performed using HTTP, while the search is performed using a Gnutella-proprietary protocol. There is no program called “Gnutella”, instead, the term refers to a protocol used by various Gnutella-compliant client programs. With Gnutella clients, users of the Gnutella network can search for files shared by other users. Once a match is located, a file transfer is initiated between the interested parties. [0008] Gnutella, as described in “Gnutella Protocol Specification v0.4”, requires a primary connection to be established between Gnutella servants. This connection must be made over standard Transmission Control Protocol/Internet Protocol (TCP/IP) channels to a predetermined TCP port. It is unclear whether this would require a second port to be available, that is a first port for Gnutella search queries and a second port for HTTP file transfers. If a second port is required, it would imply that not only HTTP traffic is allowed to pass unmolested between participants, but that Gnutella traffic over the aforementioned TCP port would be allowed to flow unmolested as well. This may not be possible in a highly secure environment. [0009] With the current set of Gnutella clients, one has to use a search engine, which behaves in a similar capacity to other search engines, such as Napster™, to locate desired files, and then initiate manual transfers of the desired files. Consider a case of a user who is sharing music files with a stranger using Gnutella. Once the stranger locates and transfers the music files that the stranger desired from the remote user, there is typically no need for the stranger to re-download these music files again. Hence, the need for tight integration with the operating system (OS) to manipulate and query these files is not needed, since music files and other media files commonly transferred over Gnutella are static and generally do not change over time. [0010] Gnutella is a search-then-share system. Gnutella clients do not appear to be capable of providing, and they typically do not appear to have a need for, seamless client OS integration. For example, since Gnutella is a search-then-share system, there is typically no need for a Gnutella client to have a drive letter (on a Windows™ computer) or mount point (on a UNIX™ system) mapped to any particular set of files. [0011] Traditional file sharing systems, including protocols such as Gnutella or products such as Napster™, cannot ordinarily be integrated into a user's operating system and, because of this limitation, are not ordinarily transparent to a native application running on the user's computer. Instead, traditional file sharing systems rely on a proprietary interface to search for, find, and subsequently transfer the files desired. Protocols such as FTP are similarly restricted, sometimes relegated to command line interfaces or other non-seamless graphical user interface (GUI) front-ends. SUMMARY OF THE INVENTION [0012] The present invention to provides an improved method and system for sharing data between computers where the computers use a common protocol to exchange the data. The present invention also prevents unauthorized access to the shared data, and allows for a third party to authorize or deny a transfer of the data between the computers. [0013] A first embodiment of the present invention is a method for exchanging data between a first device and a second device via a network. The method includes (a) communicating a request for the data from the second device to the first device, (b) communicating an identifier for the data from the first device to the second device, (c) communicating the identifier from the second device back to the first device, and (d) communicating the data from the first device to the second device, after the communicating the identifier from the second device back to the first device. The request, the identifier, and the data are formatted in accordance with a protocol that is common to both of the first device and the second device. [0014] A second embodiment of the present invention is a method for exchanging data between a first device and a second device via a network. The method includes (a) communicating a status packet from the second device to the first device, (b) communicating a reply to the status packet from the first device to the second device, wherein the reply includes a request for the data, and (c) communicating the data from the second device to the first device, after the communication of the reply. The status packet, the reply and the data are formatted in accordance with a protocol that is common to both of the first device and the second device. [0015] A third embodiment of the present invention is a method for exchanging data between a first device and a second device via a network. The method includes (a) communicating a status packet from the second device to the first device, (b) communicating a reply to the status packet from the first device to the second device, wherein the reply includes a request for the data, (c) communicating an identifier for the data from the second device to the first device, (d) communicating the identifier from the first device back to the second device, and (e) communicating the data from the second device to the first device, after the communicating of the identifier from the first device back to the second device. The status packet, the reply, the identifier, and the data are formatted in accordance with a protocol that is common to both of the first device and the second device. [0016] The present invention also encompasses systems and storage media for controlling a processor to employ the aforementioned methods.
BRIEF DESCRIPTION OF THE DRAWINGS [0017] [0017]FIG. 1 is a block diagram of a system configured for employment of the present invention. [0018] [0018]FIG. 2 is a block diagram of a functional hierarchy of the present invention employing HTTP protocol. [0019] [0019]FIG. 3 is a block diagram of a functional hierarchy of the present invention employing a user defined, user supplied, and protocol. [0020] [0020]FIG. 4 is a block diagram of a functional hierarchy of the present invention employing SOAP protocol over various lower-level protocols.
DESCRIPTION OF THE INVENTION [0021] The present invention provides for a method and system for sharing of data or files between two computer systems that use a common protocol. When a common protocol is used, restrictions relating to a client operating system, client hardware platform and client software that might otherwise interfere with data sharing are overcome. In a case of a local user accessing data from a remote system, the relationship between the local user and the remote system is a peer-to-peer relationship, rather than a conventional client-server relationship. [0022] Client/server networking, in a strict sense, means that one system provides a service of some sort and another system, or perhaps multiple systems, consumes the service. The service provided could be file storage, database queries, authentication services, or any number of other services. Traditional client/server systems initially filled the need of housing and managing large amounts of data centrally. Instead of each user housing and managing its own data, the data and access controls on the data were stored on a central server where administrators could monitor a single system and ensure that service was not interrupted. This was the norm for many years until users began setting up their own networks at home and small office networks at work. It became desirable at that point for data sharing between these users without the need for a large server and administrative team. [0023] Peer-to-peer networking is an alternative to client/server networking. Peer to peer networking implies that all participants are “equal”. In other words, no single entity has to act as a “server” and provide service to the other users of the network. Instead, all users of the system act as mini-servers, providing service (usually sharing data and other files) but not having to maintain the overhead of server management in the traditional sense, as described above. In addition, the participants of a peer-to-peer system also act as clients, consumers of service, of other systems in the network. In a sense, in a peer-to-peer environment, everyone is both a client and a server, although not necessarily a server all the time, e.g., consider a case where there is no data to be “served”, and not necessarily a client all the time, e.g., when a particular user is only “serving” data and not consuming services from other peers. [0024] In its preferred embodiment, a system in accordance with the present invention uses commonly proxied HTTP to transfer the data. Most corporate firewalls and other Internet blocks allow passage of data transmitted in accordance with HTTP, and so, for example, such data can pass seamlessly from a corporate server to an employee or a contractor outside a corporate network. The present invention uses HTTP in a manner similar to that of a web browser or a web server, and as such, corporate firewalls and other Internet blocks allow passage of its traffic as well. Thus, in its preferred embodiment, the system provides for peer-to-peer sharing of files and other data, using HTTP as an underlying transfer protocol. [0025] A refinement of the present invention is an integration of a software module inside a device driver or file system driver that can be loaded into a user's operating system. This provides for a transparent use of the present invention by native software applications installed on the user's workstation. Native applications then need not be rewritten. In addition, a transparent mapping of data, that is, transparent to the user's operating system and native applications, allows native searching and indexing utilities to be used against the shared data. For example, the device driver could map a drive letter, or simulate a mount point. Thus, a local user of a system in accordance with the present invention can access remote corporate data in a manner similar to that of accessing local data by accessing the drive letter or mount point. [0026] Security is a major concern in a networked environment. To address security concerns, the present invention uses an encryption algorithm to ensure that data integrity is not compromised and to ensure that there is no opportunity for eavesdropping by an outside entity. [0027] The present invention employs a security framework that prevents unauthorized access to shared data. This security framework makes authentication decisions using one or more of several techniques. For example: [0028] (1) The system can make use of a security module present on the user's operating system to authenticate a foreign user. [0029] (2) The system can use a public key/private key to authenticate a foreign user. [0030] (3) The system can use an access control list (ACL) to authenticate a user based on simple rules such as a common name or an Internet protocol (IP) address. [0031] The security framework also allows for a third party to authorize a file transfer such that the third party can approve or reject the sharing of data between two users. This third-party authorization method is available in two embodiments. In the first embodiment, the third party is a security authority (SA) that acts as a centralized security manager. All access between users must authenticate to the SA, and the SA distributes security keys that allow the users to share files. In the second embodiment, the SA acts as a security inspector, and grants or denies sharing based on metadata about the files being shared and the two users. Security keys are shared directly by the two users. [0032] The present invention also contemplates a configuration tool that can be employed by a user to perform administrative tasks. For example, the user can (a) define which data on a local workstation is to be shared, (b) create, i.e., mount, a remote share from another user's workstation, and (c) manipulate security access controls on shared data. [0033] Note that the terms “local” and “remote” are used herein to distinguish between devices from the perspective of a generic user. That is, from the perspective of the user, one of the devices is a local device, and the other device is a remote device. However, the present invention does not require any specific geographic or spatial positioning of the devices. [0034] An “apparatus” in accordance with the present invention is a combination of hardware and software, typically embodied in, or associated with, a device, such as a workstation, coupled to a network. The term “communicating” can mean either “transmitting” or “receiving” depending on the perspective of the apparatus or the perspective of the device that is performing the communicating. For example, consider the phrase “communicating data from a first device to a second device.” If the apparatus is embodied within the first device, the phrase means “transmitting data from the first device to the second device.” On the other hand, if the apparatus is embodied in the second device, the phrase means “receiving data from the first device at the second device.”
[0035] [0035]FIG. 1 is a block diagram of a system 100 configured for a first device, e.g., a local device, to exchange data with a second device, e.g., a remote device, via a network in accordance with the present invention. The data can represent any form of text, graphics, video or audio information. [0036] System 100 includes two workstations 120, 130 configured for communication with one another via a network 125. As mentioned earlier, the meaning of the terms “local device” and “remote device” depend on one's perspective. As such, either of workstations 120, 130 may be regarded as the local device, and then the other would be regarded as the remote device. [0037] Network 125 can be any of a local area network (LAN), a wide area network (WAN), or a combination of networks, such as a corporate intranet coupled to the Internet. Workstations 120, 130 can connect to network 125 via a wire conductor, an optical link or a wireless link. [0038] Workstations 120, 130 are meant to include any processor or device configurable for exchanging data with another processor or device via network 125. By way of example, such a processor or device can be a general purpose microcomputer, such as one of the members of the Sun™ Microsystems family of computer systems, one of the members of the IBM Personal Computer family, or any conventional work-station or graphics computer device, a desktop computer, a laptop computer, or a personal digital assistant. Workstation 120 has an affiliated local storage device 105, and workstation 130 has an affiliated local storage device 145. In their preferred embodiment, storage devices 105 and 145, are disk storage media. [0039] Workstation 120 also includes a buffer 112, the purpose of which is described below. Buffer 112 is a data storage device. It can be implemented, for example, as a random access memory (RAM) and located either internal to workstation 120, as shown in FIG. 1, or external to workstation 120. Alternatively, it can be implemented as part of a storage system such as storage device 105, or on another storage system such as a separate disk drive. [0040] A software program module within which the present invention is embodied is installed in a memory on each of workstations 120 and 130. The software module includes instructions for execution by the processors within workstations 120 and 130 to implement a configuration tool 115, 135 and a file-sharing engine (FSE) 110, 140, as described herein. [0041] Consider a case of two users “A” and “B”, in this example two people. User A has workstation 120 and user B has workstation 130. In one embodiment of the present invention, a simple model using minimal security, a typical transaction might proceed as follows: [0042] (1.1) At some point in time, A decides to share a file 102 with B. [0043] (1.2) A uses configuration tool 115 to mark file 102 as shareable, and to permit B's access to file 102. [0044] (1.3) A's configuration tool 115 notifies A's FSE 110 of the new permission and share information as defined in step 1.2. [0045] (1.4) At some point, B uses configuration tool 135 to create a local reference to A's share, that is, to create a local reference on B's workstation 130 to A's file 102. [0046] (1.5) B's FSE 140 authenticates to A's FSE 110 using a suitable security mechanism. That is, B's FSE 140 provides some appropriate security information to A's FSE 110 in order to identify B as having authorization to access file 102. [0047] (1.6) A communication link is established between B's FSE 140 and A's FSE 110 across network 125. B's FSE 140 establishes a connection to A's FSE 110. B's FSE 140 sends A's FSE 110 a status packet 150, i.e., a “heartbeat” packet, at periodic, preferably regular, time intervals, until the communication link is terminated. In return, A's FSE 110 sends a status packet reply 175 to B's FSE. This round-trip exchange of status packet 150 and status packet reply 175 allows both A's FSE 110 and B's FSE 140 to recognize whether the other is “online”, and conversely to recognize whether the other is not connected to the network and/or to determine link congestion. Since a slow reverse link could skew the transit time of a packet, there may be situations where one wishes to consider a one-way transit time. For example, travel time of status packet 150 can be used to determine quality and congestion of network 125. [0048] (1.7) File access is passed through B's FSE 140 when B makes a request for data from file 102 or when one of B's local software applications attempts to access a remote reference or drive letter/mount point, which is mapped to A's workstation 120 at the time of the request. [0049] (1.8) At B's FSE 140, the request for data in step 1.7 is translated into an HTTP request 155 and sent to A's FSE 110. HTTP request 155 includes relevant information such as a file name and an indication of which data block is being requested. [0050] (1.9) A's FSE 110 decodes HTTP request 155 and sends a marker packet 160 to B's FSE. Marker packet 160 can be encoded as an HTTP cookie or it can be encoded using some other suitable encoding technique. A cookie is typically a small packet of information sent from one party to another party to be retrieved at a later time by the sending party. Marker packet 160 contains an identification number that B's FSE 140 stores on local storage device 145 for use in future communications. [0051] (1.10) A's FSE 110 reads B's requested data from A's local shared file 102 and encodes this data in an HTTP-suitable format. This encoded data is stored in a buffer 112 local to A's workstation 120, and marked with an identification matching that of marker packet 160, which was sent to B's FSE 140 in step 1.9. At some point, B's FSE 140 sends a second request, i.e., a request 165, to A's FSE 110 containing the identification for marker packet 160 and a request for retrieval of the data previously stored in buffer 112. By buffering the encoded data in buffer 112, it is possible to cache future requests for the same data, and also, if for some reason there is corruption on the link, it is possible for the requestor to re-request the data by resubmitting the same marker. This marker/buffering is described below in greater detail. Note that in some circumstances A's workstation 120 cannot initiate a connection to B's workstation 130, but once a connection is established from B's workstation 130 to A's workstation 120, A's workstation 120 can send data over the connection. Accordingly, A's FSE 110 does not send the encoded data directly back to B's workstation 130 because it cannot be assumed that A's workstation 120 can reach B's workstation 130. [0052] (1.11) A's FSE 110 receives request 165 and validates the marker packet identification included therein against a list of outstanding marker identifications. If the marker packet identification is valid, the data stored in buffer 112 is encoded in an HTTP-suitable format and sent as a data packet 170 to B's FSE 140. [0053] (1.12) If more data packets are required by B's FSE 140 from A's FSE 110 to fulfill the request for data in step 1.7, then steps 1.7-1.11 are repeated as necessary. The data block stored in buffer 112 by A's FSE 110 in step 1.10 is saved for a period of time to allow a retransmission of the data block if a network outage or other error, such as a data checksum error, occurs. [0054] (1.13) Assume that B's local storage device 145 contains a file 147 that user A is permitted to access. In situations where A's workstation 120 cannot initiate a connection to B's workstation 130, the periodic transmission of status packet 150 from B's FSE 140 to A's FSE 110 (see step 1.6), can be used for A's FSE 110 to request data from B's FSE 140. For example, B's workstation 130 may be located behind a component that blocks unsolicited incoming data, e.g., a firewall 127, and as such, would block a transmission from A's workstation 120. Status packet 175 includes a field within which a file request from A's workstation to B's workstation can be encoded. This permits system 100 to operate in an environment that only permits one-way communications channel initiations, as is the case for certain types of firewall software. [0055] (1.14) When B's FSE 140 finds that status packet reply 175 includes a request by A's FSE 110 for data from file 147, a sequence of steps similar to 1.51.12 is used to send data from B's FSE 140 to A's FSE 110. However, B's FSE 140, instead of holding data locally and waiting for a retrieval request from A's FSE, sends an HTTP encoded request 180 to A's FSE 110 that contains data blocks requested by A's FSE 110, along with a data checksum. [0056] As described in steps 1.1-1.14, B's workstation 130 initiates a communication session by sending a status packet 150 to A's workstation 120. However, this description is only exemplary, as it is possible for A's workstation 120 to initiate the session if the roles of the workstations are reversed, or if true bi-directional initiation is allowed. [0057] If A's FSE 110 determines that a threshold number of lost status packets is reached, then it purges data from buffer 112, and the marker packet identification, that corresponds to the lost status packets. If B's FSE 140 determines that a threshold number of lost status packets is reached, then it purges the marker packet identification that corresponds to the lost status packets. Users A and B may receive an error message on their respective workstations or on an operator panel. [0058] System 100 may employ encryption technology to protect the integrity of data being transferred between workstations 120 and 130 via network 125. For example, in step 1.11, FSE 110 may encrypt data contained within data packet 170, and in step 1.14, FSE 140 may encrypt data contained within HTTP encoded request 180. [0059] Authentication could be performed by a third party 185 at various times during the operation of system 100. Third party 185 may be implemented as a workstation in a manner similar to that of workstations 120, 130. Third party 185 includes a processor with an associated memory that holds a program module containing instructions for executing security features for system 100. In one embodiment, in step 1.5, third party 185 could perform the authentication of B's FSE 140 to A's FSE 110. This is known as key-pair authentication and is common in encryption technology. [0060] In another embodiment, in steps 1.11 and 1.14, third party 185 intervenes to inspect some or all of the data transmissions between A's FSE 110 and B's FSE 140. This is known as metadata based inspection. In this scheme, third party 185 inspects characteristics of subject data, such as filename, content type, checksum, date, etc. and, based on some rule, decides whether a transfer of the subject data between A's workstation 120 and B's workstation 130 should be allowed or denied. [0061] System 100 employs a security framework that affords a system designer considerable latitude when integrating the system within a given environment. A simple authentication mechanism consists of a basic rule based ACL as mentioned earlier. A second, more robust implementation involves an exchange of security keys between participants. This also grants the ability to use a third party authentication scheme, which would not be necessary under the ACL-based scheme. [0062] Although system 100 is described herein as having the instructions for the method of the present invention installed into the memories of workstations 120, 130 and third party 185, the instructions can reside on an external storage media 190 for subsequent loading into workstations 120, 130 and third party 185. Storage media 190 can be any conventional storage media, including, but not limited to, a floppy disk, a compact disk, a magnetic tape, a read only memory, or an optical storage media. Storage media 190 could also be a random access memory, or other type of electronic storage, located on a remote storage system and coupled to workstations 120, 130 and third party 185. [0063] [0063]FIG. 2 is a block diagram of a functional hierarchy of one embodiment of a system, in accordance with the present invention, employing HTTP protocol. With regard to the directionality of communication between two participants, when viewed from a purely functional sense, the present invention only requires an ability for one-way unmolested communication initiation between the two participants. HTTP is the preferred communications protocol because of the aforementioned benefits, such as the prevalent policy of allowing HTTP (web) traffic to flow through corporate firewalls and other Internet blocks. The system includes a client application, a client OS integration module, an HTTP driver, an operating system, a TCP/IP stack and a network. The operating system, TCP/IP stack and network operate in a conventional manner. [0064] The client application can be any generic software application running on either of A's or B's workstations. Examples of such generic software include Microsoft Word™, Microsoft Excel™, etc. The client application interfaces with the client OS integration module when a request is made for data stored on a drive letter or mount point. [0065] The client OS integration module interfaces with a protocol driver that is responsible for formulating the packets and requests described earlier. The protocol driver module uses features of the operating system to send network packets and requests over the network. The client OS integration module also provides a drive letter mapping or directory mount point to files located at a remote site. For example, A's workstation 120 would use this module to map a drive letter, e.g., J:\, to reflect the files that are available on B's workstation 130. Without such a module, a user at workstation 120 would need to search and then transfer or copy files of interest from workstation 130. Thus, the client OS integration module provides the aforementioned seamless integration with the operating system. [0066] The HTTP driver receives requests from the client OS integration module and translates the requests into HTTP format. It then uses the operating system's native technology to send messages from workstation 120 to workstation 130, or vice versa. [0067] [0067]FIG. 3 is a block diagram of a functional hierarchy of the present invention employing a user defined, user supplied, protocol. FIG. 3 illustrates an alternate scenario to that of FIG. 2 using a user-defined protocol that is forwarded and unmolested in the particular environment. The hierarchy of FIG. 3 differs from that of FIG. 2 in the way the data is formulated and sent across the network link. As shown in FIG. 3, depending on the particular user-defined protocol being used, it is possible that the client operating system (OS) may be bypassed via path 305 when the protocol interfaces with the network stack. One protocol that could be used in accordance with the hierarchy shown in FIG. 3 is Remote Procedure Call (RPC), for example, but others also exist. [0068] [0068]FIG. 4 is a block diagram of a functional hierarchy of the present invention employing Simple Object Access Protocol (SOAP) over various lower-level protocols. SOAP is a protocol in which a remote procedure call (RPC) can be characterized as an XML message and dispatched to a remote server. Since this scheme is RPC-based, the parameters in the procedure call include the various packets involved in the exchange, such as the status packet, the status reply packet, data packets, etc. Because SOAP itself relies on an underlying protocol, the present invention can employ SOAP over HTTP, SOAP over SMTP, or SOAP over any other suitable protocol. [0069] The present invention integrates seamlessly with a client OS, for example, by providing a drive letter or mount point to the client. This feature is represented in FIGS. 2-4 by a block denoted “Client OS integration module”. A local user would not have to use a search engine, and instead the local user would be able to browse files available at a remote location in a standard file explorer window. [0070] The status packet, i.e., status packet 150 in FIG. 1, is a specially formulated HTTP request. This packet is periodically sent at some time interval, preferably a regular time interval, from a requester of data to a provider of the data. The interval of time does not necessarily need to be firmly fixed, but rather, the time interval between two consecutive status packets should be less than some predetermined time interval so that each of workstations 120 and 130 will recognize that the other is “online”. The interval can be specified at compile-time. In one embodiment the interval is 60 seconds. The status packet serves a number of purposes: [0071] (1) It directly provides for an ability for multiplexed two-way sharing of files over a link that can only be initiated in one direction. [0072] (2) It is used by one end of a link to determine whether the other end of the link is still connected. [0073] (3) Timestamp information in the status packet can be used to diagnose link quality by checking transit time of the status packets across the network. [0074] (4) It provides the mechanism for file system metadata propagation, such as when files shared on the provider end are added or deleted. [0075] It should be understood that various alternatives and modifications of the present invention can be devised by those skilled in the art. The present invention is intended to embrace all such alternatives, modifications and variances that fall within the scope of the appended claims. Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5889951 *May 13, 1996Mar 30, 1999Viewpoint CorporationSystems, methods, and computer program products for accessing, leasing, relocating, constructing and modifying internet sites within a multi-dimensional virtual reality environmentUS5905492 *Dec 6, 1996May 18, 1999Microsoft CorporationDynamically updating themes for an operating system shellUS5920304 *Feb 18, 1997Jul 6, 1999International Business Machines CorporationRandom bounce cursor mode after cessation of user inputUS5987501 *Jul 14, 1998Nov 16, 1999Avid Technology, Inc.Multimedia system having server for retrieving media data as indicated in the list provided by a client computerUS6336115 *Dec 18, 1997Jan 1, 2002Fujitsu LimitedFile sharing system in a client/server environment with efficient file control using a www-browser-function extension unitUS6351776 *May 12, 2000Feb 26, 2002Xdrive, Inc.Shared internet storage resource, user interface system, and methodUS6658463 *Feb 4, 2000Dec 2, 2003Hughes Electronics CorporationSatellite multicast performance enhancing multicast HTTP proxy system and methodUS6711632 *Aug 11, 1998Mar 23, 2004Ncr CorporationMethod and apparatus for write-back caching with minimal interruptsUS6725381 *Aug 31, 1999Apr 20, 2004Tumbleweed Communications Corp.Solicited authentication of a specific userUS6782527 *Aug 30, 2000Aug 24, 2004Networks Associates, Inc.System and method for efficient distribution of application services to a plurality of computing appliances organized as subnetsUS6789204 *Apr 2, 2001Sep 7, 2004Sun Microsystems, Inc.Resource sharing on the internet via the HTTPUS6813641 *Jul 5, 2001Nov 2, 2004Sun Microsystems, Inc.Teamware server working over HTTP/HTTPS connectionsUS20020027567 *Apr 3, 2001Mar 7, 2002Niamir Bern B.Listing network for classified informationUS20020062285 *Oct 16, 2001May 23, 2002Amann Catherine L.System and method for executing cash payments via a computer networkUS20020062310 *Sep 18, 2001May 23, 2002Smart Peer LlcPeer-to-peer commerce systemUS20020143855 *Jan 22, 2002Oct 3, 2002Traversat Bernard A.Relay peers for extending peer availability in a peer-to-peer networking environmentUS20030055963 *Sep 14, 2001Mar 20, 2003Butt Alan B.Local application proxy arrangementsUS20030177422 *Mar 12, 2001Sep 18, 2003Tararoukhine Ilia ValerievichData transfer and management systemUS20040006586 *Apr 22, 2003Jan 8, 2004Secure Resolutions, Inc.Distributed server software distributionUS20040059822 *Sep 25, 2002Mar 25, 2004Xiaoye JiangNetwork block services for client access of network-attached data storage in an IP networkUS20040103280 *Nov 21, 2002May 27, 2004Xerox Corporation.Method and system for securely Sharing filesUS20040148434 *Jan 24, 2003Jul 29, 2004Hitachi, Ltd.Method and apparatus for peer-to peer accessUS20050114711 *Nov 13, 2004May 26, 2005Lambertus HesselinkManaged peer-to-peer applications, systems and methods for distributed data access and storage* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7036040 *Nov 26, 2002Apr 25, 2006Microsoft CorporationReliability of diskless network-bootable computers using non-volatile memory cacheUS7403995 *Jan 8, 2003Jul 22, 2008Outhink, Inc.Symmetrical bi-directional communicationUS7454653 *Jan 10, 2006Nov 18, 2008Microsoft CorporationReliability of diskless network-bootable computers using non-volatile memory cacheUS7499899 *Jul 2, 2004Mar 3, 2009Northrop Grumman CorporationDynamic software integration architectureUS7519614Aug 31, 2006Apr 14, 2009Sap AgData verification systems and methods using business objectsUS7526483 *Oct 23, 2003Apr 28, 2009Microsoft CorporationSystem and method for virtual folder sharing including utilization of static and dynamic listsUS7644239May 3, 2004Jan 5, 2010Microsoft CorporationNon-volatile memory cache performance improvementUS7650575Jul 13, 2005Jan 19, 2010Microsoft CorporationRich drag drop user interfaceUS7657224May 6, 2003Feb 2, 2010Syncronation, Inc.Localized audio networks and associated digital accessoriesUS7657846Apr 23, 2004Feb 2, 2010Microsoft CorporationSystem and method for displaying stack iconsUS7665028Jul 13, 2005Feb 16, 2010Microsoft CorporationRich drag drop user interfaceUS7673066 *Oct 12, 2004Mar 2, 2010Sony CorporationFile transfer protocol for mobile computerUS7685109Mar 29, 2006Mar 23, 2010Amazon Technologies, Inc.Method and apparatus for data partitioning and replication in a searchable data serviceUS7694236Jul 22, 2005Apr 6, 2010Microsoft CorporationStack icons representing multiple objectsUS7707197Oct 11, 2006Apr 27, 2010Microsoft CorporationSystem and method for filtering and organizing items based on common elementsUS7711754Jan 26, 2007May 4, 2010Microsoft CorporationSystem and method for managing data using static listsUS7712034Apr 22, 2005May 4, 2010Microsoft CorporationSystem and method for shell browserUS7742740Dec 4, 2006Jun 22, 2010Syncronation, Inc.Audio player device for synchronous playback of audio signals with a compatible deviceUS7747894 *Jun 6, 2005Jun 29, 2010Microsoft CorporationTransport-neutral in-order delivery in a distributed systemUS7756983Apr 24, 2008Jul 13, 2010Outhink, Inc.Symmetrical bi-directional communicationUS7769794Apr 22, 2005Aug 3, 2010Microsoft CorporationUser interface for a file system shellUS7801912Mar 29, 2006Sep 21, 2010Amazon Technologies, Inc.Method and apparatus for a searchable data serviceUS7823077Mar 24, 2003Oct 26, 2010Microsoft CorporationSystem and method for user modification of metadata in a shell browserUS7827561Mar 25, 2004Nov 2, 2010Microsoft CorporationSystem and method for public consumption of communication events between arbitrary processesUS7835689Dec 4, 2006Nov 16, 2010Syncronation, Inc.Distribution of music between members of a cluster of mobile audio devices and a wide area networkUS7853890Apr 22, 2005Dec 14, 2010Microsoft CorporationAddress bar user interface controlUS7865137Dec 4, 2006Jan 4, 2011Syncronation, Inc.Music distribution system for mobile audio player devicesUS7865904Oct 23, 2003Jan 4, 2011Microsoft CorporationExtensible user context system for delivery of notificationsUS7912967Jul 7, 2010Mar 22, 2011Outhink, Inc.Symmetrical bi-directional communicationUS7916877Dec 4, 2006Mar 29, 2011Syncronation, Inc.Modular interunit transmitter-receiver for a portable audio deviceUS7917082Dec 4, 2006Mar 29, 2011Syncronation, Inc.Method and apparatus for creating and managing clusters of mobile audio devicesUS7925682Mar 27, 2003Apr 12, 2011Microsoft CorporationSystem and method utilizing virtual foldersUS7992103Jul 22, 2005Aug 2, 2011Microsoft CorporationScaling icons for representing filesUS8023663Dec 4, 2006Sep 20, 2011Syncronation, Inc.Music headphones for manual control of ambient soundUS8024335Jul 9, 2004Sep 20, 2011Microsoft CorporationSystem and method for dynamically generating a selectable search extensionUS8041904Nov 30, 2009Oct 18, 2011Microsoft CorporationNon-volatile memory cache performance improvementUS8046821 *Feb 13, 2006Oct 25, 2011Qualcomm IncorporatedMechanism and method for controlling network access to a service providerUS8055753 *Jun 11, 2003Nov 8, 2011International Business Machines CorporationPeer to peer job monitoring and control in grid computing systemsUS8108430Jul 29, 2005Jan 31, 2012Microsoft CorporationCarousel control for metadata navigation and assignmentUS8108483 *Jan 30, 2004Jan 31, 2012Microsoft CorporationSystem and method for generating a consistent user namespace on networked devicesUS8195646Apr 22, 2005Jun 5, 2012Microsoft CorporationSystems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic informationUS8209624Mar 30, 2007Jun 26, 2012Microsoft CorporationVirtual address bar user interface controlUS8255645Sep 13, 2011Aug 28, 2012Microsoft CorporationNon-volatile memory cache performance improvementUS8315988 *Aug 31, 2006Nov 20, 2012Sap AgSystems and methods for verifying a data communication processUS8392400Mar 29, 2006Mar 5, 2013Amazon Technologies, Inc.Method and apparatus for stress management in a searchable data serviceUS8484167 *Aug 31, 2006Jul 9, 2013Sap AgData verification systems and methods based on messaging dataUS8489815Feb 2, 2012Jul 16, 2013Microsoft CorporationManaging cache data and metadataUS8490015Apr 15, 2005Jul 16, 2013Microsoft CorporationTask dialog and programming interface for sameUS8522154Apr 22, 2005Aug 27, 2013Microsoft CorporationScenario specialization of file browserUS8554758Mar 29, 2006Oct 8, 2013Amazon Technologies, Inc.Method and apparatus for monitoring and maintaining health in a searchable data serviceUS8560456 *Dec 2, 2005Oct 15, 2013Credigy Technologies, Inc.System and method for an anonymous exchange of private dataUS8631203Dec 10, 2007Jan 14, 2014Microsoft CorporationManagement of external memory functioning as virtual cacheUS8694649 *Nov 14, 2011Apr 8, 2014Symantec Operating CorporationDirect connections to a plurality of storage object replicas in a computer networkUS8694672 *Jan 12, 2012Apr 8, 2014Sony CorporationMethod and system for transferring files using file transfer protocols for palm OS mobile computerUS8707209Apr 22, 2005Apr 22, 2014Microsoft CorporationSave preview representation of files being createdUS8775411Feb 28, 2013Jul 8, 2014Amazon Technologies, Inc.Method and apparatus for stress management in a searchable data serviceUS8813186Sep 29, 2010Aug 19, 2014Amazon Technologies, Inc.Modular device authentication frameworkUS8909861Jul 21, 2011Dec 9, 2014Microsoft CorporationUsing external memory devices to improve system performanceUS8914557Dec 16, 2005Dec 16, 2014Microsoft CorporationOptimizing write and wear performance for a memoryUS8972342Aug 21, 2008Mar 3, 2015Microsoft CorporationMetadata editing controlUS9030688Feb 2, 2012May 12, 2015Y Soft Corporation, A.S.System for scalable processing of files in the cloudUS9032151Nov 14, 2008May 12, 2015Microsoft Technology Licensing, LlcMethod and system for ensuring reliability of cache data and metadata subsequent to a rebootUS9317209Oct 31, 2014Apr 19, 2016Microsoft Technology Licensing, LlcUsing external memory devices to improve system performanceUS9361183Apr 22, 2014Jun 7, 2016Microsoft Technology Licensing, LlcAggregation of write traffic to a data storeUS9361312Aug 30, 2005Jun 7, 2016Microsoft Technology Licensing, LlcSystem and method for filtering and organizing items based on metadataUS9361313Apr 26, 2010Jun 7, 2016Microsoft Technology Licensing, LlcSystem and method for filtering and organizing items based on common elementsUS9405693Jul 23, 2012Aug 2, 2016Microsoft Technology Licensing, LlcNon-volatile memory cache performance improvementUS9448890Jan 5, 2012Sep 20, 2016Microsoft Technology Licensing, LlcAggregation of write traffic to a data storeUS9529716Oct 18, 2013Dec 27, 2016Microsoft Technology Licensing, LlcOptimizing write and wear performance for a memoryUS20030126190 *Oct 7, 2002Jul 3, 2003Fujitsu LimitedService providing software system storage medium, service providing program storage medium, service providing system, and service providing deviceUS20040117607 *Dec 5, 2003Jun 17, 2004Swoboda Gary L.Apparatus and method for separating detection and assertion of a trigger eventUS20040143665 *Jan 8, 2003Jul 22, 2004Mace Paul B.Symmetrical bi-directional communicationUS20040153694 *Nov 26, 2002Aug 5, 2004Microsoft CorporationReliability of diskless network-bootable computers using non-volatile memory cacheUS20040189694 *Mar 24, 2003Sep 30, 2004Kurtz James BrianSystem and method for user modification of metadata in a shell browserUS20040189695 *Mar 24, 2003Sep 30, 2004James Brian KurtzExtensible object previewer in a shell browserUS20040193600 *May 16, 2003Sep 30, 2004Microsoft CorporationSystem and method for filtering and organizing items based on common elementsUS20040193672 *Oct 23, 2003Sep 30, 2004Microsoft CorporationSystem and method for virtual folder sharing including utilization of static and dynamic listsUS20040207666 *Apr 17, 2003Oct 21, 2004Microsoft CorporationVirtual address bar user interface controlUS20040230599 *May 16, 2003Nov 18, 2004Microsoft CorporationFile system shellUS20050015437 *Jun 11, 2003Jan 20, 2005International Business Machines CorporationPeer to peer job monitoring and control in grid computing systemsUS20050102537 *Oct 12, 2004May 12, 2005Sony CorporationFile transfer protocol for mobile computerUS20050188174 *Apr 19, 2005Aug 25, 2005Microsoft CorporationExtensible creation and editing of collections of objectsUS20050198385 *Jan 30, 2004Sep 8, 2005Aust Brian S.System and method for generating a consistent user name-space on networked devicesUS20050240878 *Apr 26, 2004Oct 27, 2005Microsoft CorporationSystem and method for scaling iconsUS20050240880 *Apr 23, 2004Oct 27, 2005Microsoft CorporationSystem and method for displaying stack iconsUS20050246487 *May 3, 2004Nov 3, 2005Microsoft CorporationNon-volatile memory cache performance improvementUS20050246643 *Apr 22, 2005Nov 3, 2005Microsoft CorporationSystem and method for shell browserUS20050246648 *Apr 22, 2005Nov 3, 2005Microsoft CorporationAddress bar user interface controlUS20050251748 *Apr 22, 2005Nov 10, 2005Microsoft CorporationSystem and method for viewing and editing multi-value propertiesUS20050283476 *Aug 30, 2005Dec 22, 2005Microsoft CorporationSystem and method for filtering and organizing items based on common elementsUS20050283742 *Jul 22, 2005Dec 22, 2005Microsoft CorporationStack icons representing multiple objectsUS20060005204 *Jul 2, 2004Jan 5, 2006Siegel Neil GDynamic software integration architectureUS20060020899 *Jul 22, 2005Jan 26, 2006Microsoft CorporationScaling icons for representing filesUS20060070007 *Jul 13, 2005Mar 30, 2006Microsoft CorporationRich drag drop user interfaceUS20060080340 *Sep 13, 2005Apr 13, 2006Hirokazu OiCommunication system, communication apparatus, and communication methodUS20060200466 *Apr 21, 2006Sep 7, 2006Microsoft CorporationSystem and Method for Filtering and Organizing Items Based on Common ElementsUS20060236244 *Apr 15, 2005Oct 19, 2006Microsoft CorporationCommand linksUS20060236252 *Apr 15, 2005Oct 19, 2006Microsoft CorporationTask dialog and programming interface for sameUS20060236253 *Apr 15, 2005Oct 19, 2006Microsoft CorporationDialog user interfaces for related tasks and programming interface for sameUS20060242585 *Apr 22, 2005Oct 26, 2006Microsoft CorporationScenario specialization of file browserUS20060274727 *Jun 6, 2005Dec 7, 2006Microsoft CorporationTransport-neutral in-order delivery in a distributed systemUS20060277092 *Jun 3, 2005Dec 7, 2006Credigy Technologies, Inc.System and method for a peer to peer exchange of consumer informationUS20070006021 *Jan 10, 2006Jan 4, 2007Microsoft CorporationReliability of diskless network-bootable computers using non-volatile memory cacheUS20070016872 *Jul 13, 2005Jan 18, 2007Microsoft CorporationRich drag drop user interfaceUS20070088849 *Oct 13, 2006Apr 19, 2007Akira SuzukiStructured document, terminal apparatus, and apparatus for generating structured documentUS20070129004 *Dec 4, 2006Jun 7, 2007David GoldbergMusic distribution system for mobile audio player devicesUS20070130070 *Dec 2, 2005Jun 7, 2007Credigy Technologies, Inc.System and method for an anonymous exchange of private dataUS20070142944 *Dec 4, 2006Jun 21, 2007David GoldbergAudio player device for synchronous playback of audio signals with a compatible deviceUS20070162377 *Dec 23, 2005Jul 12, 2007Credigy Technologies, Inc.System and method for an online exchange of private dataUS20070168886 *Mar 30, 2007Jul 19, 2007Microsoft CorporationVirtual Address Bar User Interface ControlUS20070203970 *Feb 13, 2006Aug 30, 2007Qualcomm IncorporatedMechanism and method for controlling network access to a service providerUS20080059517 *Aug 31, 2006Mar 6, 2008Sap AgData verification systems and methods using business objectsUS20080075246 *Aug 31, 2006Mar 27, 2008Sap AgSystems and methods for verifying a data communication processUS20080077549 *Aug 31, 2006Mar 27, 2008Sap AgData verification systems and methods based on messaging dataUS20080184332 *Jan 31, 2007Jul 31, 2008Motorola, Inc.Method and device for dual authentication of a networking device and a supplicant deviceUS20080263148 *Apr 24, 2008Oct 23, 2008Mace Paul BSymmetrical bi-directional communicationUS20090055428 *Aug 21, 2008Feb 26, 2009Microsoft CorporationMetadata editing controlUS20090150611 *Dec 10, 2007Jun 11, 2009Microsoft CorporationManagement of external memory functioning as virtual cacheUS20100070701 *Nov 14, 2008Mar 18, 2010Microsoft CorporationManaging cache data and metadataUS20100077197 *Nov 30, 2009Mar 25, 2010Microsoft CorporationNon-volatile memory cache performance improvementUS20100205186 *Apr 26, 2010Aug 12, 2010Microsoft CorporationSystem and method for filtering and organizing items based on common elementsUS20100274850 *Jul 7, 2010Oct 28, 2010Outhink, Inc.Symmetrical bi-directional communicationUS20120124158 *Jan 12, 2012May 17, 2012Jianyu Roy ZhengFile transfer protocol for mobile computerUS20130163513 *Jul 27, 2012Jun 27, 2013Samsung Electronics Co., Ltd.Method and device for transmitting and receiving informationWO2007079303A2 *Nov 30, 2006Jul 12, 2007Amazon Technologies, Inc.Method and apparatus for a distributed file storage and indexing serviceWO2007079303A3 *Nov 30, 2006Aug 23, 2007Patrick W RansilMethod and apparatus for a distributed file storage and indexing service* Cited by examinerClassifications U.S. Classification709/228International ClassificationH04L29/08, H04L29/06Cooperative ClassificationH04L69/329, H04L69/18, H04L67/06, H04L67/104European ClassificationH04L29/08N5, H04L29/06KLegal EventsDateCodeEventDescriptionMar 22, 2002ASAssignmentOwner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LARKIN, MICHAEL KEVIN;REEL/FRAME:012732/0608Effective date: 20020313RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services